有没有被OpenScenario里的各种参数绕晕过?这份思维导图帮你把天灵盖掀开
倘若您还没接触过Openscenario场景搭建,那么您可以用vscode打开我给您准备的follow_stop_and_run.xosc 这是跟车停止又加油前进的场景,对着这个场景内部的关键字,结合思维导图就能理解自动驾驶虚拟仿真原来是这么搭建出来的了。OpenScenario场景仿真结构思维导图, OpenScenario是 自动驾驶仿真软件carla推出来的场景仿真标准,可配合carla一起
OpenScenario场景仿真结构思维导图, OpenScenario是 自动驾驶仿真软件carla推出来的场景仿真标准,可配合carla一起完成整套自动驾驶的闭环仿真过程,将场景搭建变成可编程化的方式。 可以模拟出自动驾驶真实环境中出现的各种各样的路况环境,例如:被动超车场景、跟车变道场景、换道场景等等。 该思维导图是我们两位自动驾驶仿真工程师耗时一个多月整理出来的。 倘若您具备Openscenario 场景编辑的基础,但是又觉得很多场景无法进行编辑复现,那么该思维导图将是您进行关键词查阅的极佳助手。 倘若您还没接触过Openscenario场景搭建,那么您可以用vscode打开我给您准备的follow_stop_and_run.xosc 这是跟车停止又加油前进的场景,对着这个场景内部的关键字,结合思维导图就能理解自动驾驶虚拟仿真原来是这么搭建出来的了。 倘若您还想动手实时观察场景搭建的效果,请您关注我们的另一个项目,OpenScenario场景仿真搭建。
玩过OpenScenario的同学都知道,这玩意儿就像个乐高积木盒子——参数多到爆炸,拼起来却总差那么几块关键零件。去年我和同事为了搞明白"跟车时前车突然刹车再加速"这种看似简单的场景,硬生生把xosc文件翻烂了三个版本,最后发现原来Storyboard里的Act和ManeuverGroup在玩俄罗斯套娃。

这里有个现成的案例(followstopand_run.xosc):
<Storyboard>
<InitActions>
<PrivateAction>
<TeleportAction>
<Position>
<WorldPosition x="15" y="165" z="0"/>
</Position>
</TeleportAction>
</PrivateAction>
</InitActions>
<Act name="Act1"> <!-- 场景舞台的大幕 -->
<ManeuverGroup> <!-- 演员们的小分队 -->
<Actors selectTriggeringEntities="false"/>
<Maneuver name="FollowSequence">
<Event maximumExecutionCount="1" name="FollowEvent">
<Action name="SpeedAction"> <!-- 油门踏板在这里 -->
<PrivateAction>
<LongitudinalAction>
<SpeedAction>
<SpeedActionTarget>
<AbsoluteTargetSpeed value="10"/>
</SpeedActionTarget>
</SpeedAction>
</LongitudinalAction>
</PrivateAction>
</Action>
<StartTrigger> <!-- 舞台灯光亮起的瞬间 -->
<ConditionGroup>
<Condition delay="0" name="SimulationTimeCondition">
<ByValueCondition>
<SimulationTime value="1" rule="greaterThan"/>
</ByValueCondition>
</Condition>
</ConditionGroup>
</StartTrigger>
</Event>
</Maneuver>
</ManeuverGroup>
</Act>
</Storyboard>
看到那个了吗?在思维导图的"动态行为层→纵向控制→速度控制"分支下,我们还标注了三个隐藏属性:acceleration和continuous这两个参数不填的话,车辆会瞬移加速到你设定的速度——这坑我们踩过,结果测试时车辆直接闪现,把毫米波雷达都整懵了。
OpenScenario场景仿真结构思维导图, OpenScenario是 自动驾驶仿真软件carla推出来的场景仿真标准,可配合carla一起完成整套自动驾驶的闭环仿真过程,将场景搭建变成可编程化的方式。 可以模拟出自动驾驶真实环境中出现的各种各样的路况环境,例如:被动超车场景、跟车变道场景、换道场景等等。 该思维导图是我们两位自动驾驶仿真工程师耗时一个多月整理出来的。 倘若您具备Openscenario 场景编辑的基础,但是又觉得很多场景无法进行编辑复现,那么该思维导图将是您进行关键词查阅的极佳助手。 倘若您还没接触过Openscenario场景搭建,那么您可以用vscode打开我给您准备的follow_stop_and_run.xosc 这是跟车停止又加油前进的场景,对着这个场景内部的关键字,结合思维导图就能理解自动驾驶虚拟仿真原来是这么搭建出来的了。 倘若您还想动手实时观察场景搭建的效果,请您关注我们的另一个项目,OpenScenario场景仿真搭建。

新手建议从Trigger条件树开始解剖。比如当你想让前车在距离路口20米时突然变道,思维导图的"事件触发层→条件判定"里藏着三种触发方式:ByEntity(特定实体触发)、ByValue(数值触发)、UserDefined(自己写脚本)。上次有个哥们把ByValue里的SimulationTime错用成StoryboardTime,导致整个场景的触发时机完全错乱,调试时差点以为撞鬼了。
对着代码和导图比划比划你会发现,OpenScenario最妙的是它的"洋葱结构"——最外层Storyboard是总导演,里面层层包裹的Act是分镜头脚本,最内核的Condition就是场记板。我们甚至给导图加了颜色标签:红色是死亡陷阱(比如不兼容的触发器嵌套),绿色是常用捷径(像复用ManeuverGroup的模板),黄色代表需要配合Carla API使用的混合模式。

最后说个冷知识:导图的"环境层→天气系统"分支里,雾浓度参数的单位是米(visibilityDistance),但Carla实际渲染时用的是百分比。这个参数映射问题我们花了三天才从源码里刨出来,现在导图上直接标注了换算公式:雾浓度%=(1000-实际距离)/10,能帮你省下至少两杯咖啡的时间。
更多推荐
所有评论(0)