シナリオの記述方法について解説します。
シナリオはjson形式で記述します。
サンプルのシナリオファイルが~/ScenarioExecutor/scenariosフォルダ内にありますので、参考にしてください。
シナリオの記述内容は大きく4つのブロックに分かれています。
| ブロック | 記述内容 |
|---|---|
| map_id | RoadEditorのIDを指定します。 |
| actors | シナリオに登場する自車両、他車両、歩行者、障害物の情報を記述します。 |
| scenario | さまざまなシーンを定義し、シーン中にアクターがどのように振舞うか、シーン間をどのような条件で遷移するかを記述します。 |
| stop_condition | シナリオの終了条件を記述します。 |
map_id
RoadEditorのIDを指定します。

"map_id": "highway"
actors
シナリオ内に登場するアクターを定義します。
ros-bridge/carla_spawn_objects/config/objects.json内で自車両の車種を指定します。actor_id (int) - egoのactor_idと同じです。
model_id (string)
他車両として指定できるIDは以下になります。
| model_id |
|---|
vehicle.audi.a2 |
vehicle.audi.etron |
vehicle.audi.tt |
vehicle.bmw.grandtourer |
vehicle.chevrolet.impala |
vehicle.charger2020.charger2020 |
vehicle.garden.gambulancejp |
vehicle.garden.gpolicecarjp |
vehicle.garden.gpumperjp |
vehicle.lincoln2020.mkz2020 |
vehicle.mercedesccc.mercedesccc |
vehicle.mini.cooperst |
vehicle.nissan.micra |
vehicle.tesla.model3 |
vehicle.toyota.prius |
vehicle.volkswagen.t2 |
vehicle.kawasaki.ninja |
color (string) - egoのcolorと同じです。
"actors": {
"ego": {
"actor_id": 0,
"model_id": "vehicle.toyota.prius",
"color": "000000"
},
"others": [
{
"actor_id": 1,
"model_id": "vehicle.nissan.micra",
"color": "ff0000"
},
{
"actor_id": 2,
"model_id": "vehicle.kawasaki.ninja",
"color": "00ff00"
}
]
}
scenario
シナリオを定義します。
シナリオはオープニングシーンから始まり、さまざまなシーンへの遷移を経て、最終的にエンディングシーンに遷移して終了となります。
opening_scene
各アクターの初期状態を定義します。
wp_idとwp_idxで指定したウェイポイントの座標が自車両の初期位置になります。


wp_idとwp_idxで指定したウェイポイントの座標が自車両の終了位置になります。start_positionのwp_idと同じです。start_positionのwp_idxと同じです。waypointを指定します。アクター間の距離で指定する場合はdistanceを指定します。egoのstart_postionと同じです。egoのstart_postionと同じです。centerを指定します。アクターの表面からの距離で指定する場合はsurfaceを指定します。
absoluteを指定します。相対速度の場合はrelativeを指定します。
absoluteのとき相対速度の基準となる相手のアクターを指定します。absoluteのときは絶対速度、typeがrelativeのときは相対速度を意味します。absoluteのとき加速度を指定します。specifyを指定します。即時valueの速度にしたい場合はgods_handを指定します。
"opening_scene": {
"ego": {
"start_position": {
"wp_id": "Waypoint01",
"wp_idx": 0
}
}
"others": [
{
"actor_id": 1,
"start_position": {
"wp_id": "Waypoint01",
"wp_idx": 20
},
"start_speed": {
"type": "relative",
"target_actor_id": 0,
"vlaue": 0,
},
"next_scenes": [
1, 2
]
}
]
}
scenes
シーンを定義します。遷移条件、アクション、遷移先から構成されます。
scene_id (int)
シーンIDを指定します。
duration (double)
ここで指定した時間(s)、強制的にシーンにとどまり続けます。
次のシーンへの遷移条件がtrueになっても、ここで指定した時間が経過するまで遷移しません。
conditions
遷移条件を定義します。
orで判定するかandで判定するかを指定します。
reachを指定します。現在はreachのみ指定できます。reachのときウェイポイントのIDを指定します。reachのときウェイポイントのインデックスを指定します。reachのときwp_id、wp_idxで指定した座標の許容範囲の半径を指定します。straightを指定します。道路の中心線を基準にした距離の場合はtraveledを指定します。
>、>=、=、<=、<のいずれかを指定します。現在は<=、<のみ指定できます。centerを指定します。アクターの表面からの距離で指定する場合はsurfaceを指定します。absoluteを指定します。相対速度の場合はrelativeを指定します。relativeのとき相対速度の基準となるアクターを指定します。現在は自車のみ指定できます。>、>=、=、<=、<のいずれかを指定します。現在は>=のみ指定できます。absoluteのときは絶対速度、typeがrelativeのときは相対速度を意味します。>、>=、=、<=、<のいずれかを指定します。現在は<=のみ指定できます。>=のみ指定できます。"conditions": {
"or": [
{
"position": {
"actor_id": 1,
"type": "reach",
"wp_id": "Waypoint01",
"wp_idx": 125,
"tolerance": 1
}
},
{
"speed": {
"actor_id": 1,
"type": "absolute",
"comparison": "<=",
"value": 0.1
}
}
]
}
actions
シーンに遷移したときに実行するアクションを定義します。
lane_change
レーンチェンジのアクションを定義します。
lane_offset
レーンの中心線から左右にオフセットするアクションを定義します。
speed
速度変更のアクションを定義します。
absoluteを指定します。相対速度の場合はrelativeを指定します。relativeのとき相対速度の基準となるアクターを指定します。absoluteのときは絶対速度、typeがrelativeのときは相対速度を意味します。specifyを指定します。即時valueの速度にしたい場合はgods_handを指定します。specifyのとき加速度(m/s2)を指定します。traveled_distance
車間距離を維持するアクションを定義します。
centerを指定します。アクターの表面からの距離で指定する場合はsurfaceを指定します。route_move
指定した地点に移動させるアクションを定義します。地点は複数指定できます。
waypointを指定します。(現在はアクターが歩行者の場合のみ有効です)wp_offsetを指定します。wp_offsetの場合、レーンの中心線から左右にオフセットする距離(m)を指定します。左にオフセットする場合は+、右にオフセットする場合は-です。0はレーンの中心線を走行します。"route_move": {
"actor_id": 1,
"type": "waypoint",
"route": [
{
"time": 7.2,
"wp_id": "Waypoint02",
"wp_idx": 500,
"wp_offset": 5
}
]
}
light_state
ライトの点灯/消灯のアクションを定義します。
true、消灯するときはfalseを指定します。true、消灯するときはfalseを指定します。true、消灯するときはfalseを指定します。sound_state
サイレンの鳴動/停止のアクションを定義します。
true、停止するときはfalseを指定します。"actions": [
{
"lane_change": {
"actor_id": 1,
"type": "lane",
"wp_id": "Waypoint02",
"time": 5
}
}
]
next_scenes - opening_sceneのnext_scenesと同じです。
ending_scene
最終シーンを定義します。
このシーンに到達したらシナリオが終了になります。
scenesのscene_idと同じです。scenesのconditionと同じです。"scenario": {
"opening_scene": {
"ego": {
...
},
"others": [
...
],
"next_scenes": [
1
]
},
"scenes": [
{
"scene_id": 1,
"conditions": {
...
},
"actions": [
...
],
"next_scenes": [
2
]
},
{
"scene_id": 2,
"conditions": {
...
},
"actions": [
...
],
"next_scenes": [
3
]
}
],
"ending_scenes": [
{
"scene_id": 3,
"conditions": {
...
}
}
]
}
stop_conditions - scenesのconditionsと同じです。
シナリオの終了条件を定義します。
条件が成立したら強制的にシナリオを終了します。
"stop_conditions": {
"or": [
{
"simulation_time": {
"comparison": ">=",
"value": 300
}
}
]
}