シナリオの記述方法について解説します。
シナリオは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
}
}
]
}