Step1:场景编写
基于 OpenSCENARIO 2.0 的场景描述简短易读,且表达能力丰富,如对于一个 NPC 变道场景,其描述如下:
import basic.oscscenario top:path: Pathpath.set_map("Town04")path.path_min_driving_lanes(3)ego_vehicle: Model3npc: Rubiconevent startevent endevent leftevent rightdo serial:get_ahead: parallel(duration: 15s):ego_vehicle.drive(path) with:speed(20kph)lane(1, at: start)npc.drive(path) with:lane(right_of: ego_vehicle, at: start)position(15m, behind: ego_vehicle, at: start)position(20m, ahead_of: ego_vehicle, at: end)change_lane: parallel(duration: 5s):ego_vehicle.drive(path)npc.drive(path) with:change_lane(lane_changes:[1..2], side: left)slow: parallel(duration: 20s):ego_vehicle.drive(path)npc.drive(path) with:speed(20kph)
Step2:运行Carla
docker run -d --privileged --gpus all -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:rw -p "2000-2003":"2000-2003" carlasim/carla:0.9.14 ./CarlaUE4.sh -nosound

Step3:运行场景
git clone git@github.com:carla-simulator/scenario_runner.gitcd scenario_runnerpython manual_control.py -a --rolename=ego_vehicle
打开另一个终端运行编写的场景文件:
python scenario_runner.py --openscenario2 srunner/examples/change_lane.osc
示例场景代码简要说明
scenario top - 场景执行入口path: Path - 场景运行的路径path.set_map("Town04") - 内置函数,设置地图path.path_min_driving_lanes(3) - 内置函数,用于约束场景发生的路同一方向至少有三条车道。ego_vehicle: Model3 - 定义主车为Model3npc: Rubicon - 定义NPC车辆为Rubicon# start事件和end事件分别表示某个时间段的开始和结束。left事件和right事件可以用在变道函数中。event startevent endevent leftevent right# 场景事件可以为serial:顺序执行;parallel:并行执行;one_of:执行其中一个# 此场景中有三个顺序事件,get_ahead, change_lane, slow, 可以自定义名称do serial# duration 指定此阶段时间持续15sget_ahead: parallel(duration: 15s):...# 主车保持正常行驶,npc执行change_lane的变道操作。# npc会从2车道变道到1车道,并且在5秒内完成。change_lane: parallel(duration: 5s):...# 主车和npc正常行驶20秒,然后场景结束slow: parallel(duration: 20s):...
本文通过OpenScenario2.0场景描述和Carla运行示例,帮助您应用更先进的标准概念和自动驾驶仿真工具链,促进开发符合业务需求和复杂场景的应用。
参考链接
OpenSCENARIO V2.0.0标准发布地址:https://www.asam.net/standards/detail/openscenario/v200

再获殊荣!深信科创荣获「年度智能汽车软件及数据工具链平台TOP10供应商」奖项
领跑创新阵线!深信科创精彩亮相Testing Expo China 2023展会
继英伟达之后,深信科创成为CARLA第五位理事单位

