Perception Reproducerの評価#
rosbagから再現された感知データを用いた閉ループ条件下で、指定されたルートを完走できるか評価する。 perception_reproducerノードは現在の自車位置に基づいてrosbagから感知オブジェクトを再現し、閉ループテストを可能にする。
評価方法#
launch を立ち上げると以下のことが実行され、評価される。
- launch で評価ノード(
perception_reproducer_evaluator_node)とplanning_simulator.launch、perception_reproducerノードを立ち上げる perception_reproducerノードは現在の自車位置に基づいてrosbagから感知オブジェクトを読み取り、パブリッシュする- AutowareがDRIVING状態(ENGAGE)に入ると車両が走行を開始する
- 評価ノードが topic を subscribe して、各基準を満たしているかを判定して結果をファイルに記録する
- すべてのpass条件が満たされるか、いずれかのfail条件がトリガーされると自動で launch が終了して評価が終了する
評価結果#
condition_group#
condition_groupはpass_conditionsとfail_conditionsの両方で使用できる。ネストされた条件グループもサポートされる。
| フィールド | 説明 |
|---|---|
group_name |
このグループの一意な識別子。他グループのstart_at / end_atから参照される。 |
group_type |
all_ofまたはany_of。condition_list内の条件の結合方法。 |
start_at |
任意のgroup_name。参照先グループがpassすると、このグループの評価を開始する。nullの場合はENGAGE時に開始。 |
end_at |
任意のgroup_name。参照先グループがpassすると、このグループの評価を停止する。nullの場合はtimeout_sで終了。 |
ignore_areas |
任意の円形エリア(baselink)のリスト。自車がいずれかのエリア内にいる間、このグループとネストされた子グループのframe収集と判定をスキップする。start_at / end_atと同様に子グループへカスケードする。既にトリガー済みのtriggered状態は巻き戻されない。スキップ中は評価サマリーにStatus: Ignoredが表示される。 |
condition_list |
条件またはネストされたcondition_groupのリスト。 |
ignore_areasの各要素は他ユースケースと同じArea形式を使用する。
| フィールド | 説明 |
|---|---|
x, y |
マップ座標系における円の中心。 |
range |
円の半径 [m]。 |
area_condition |
inside(デフォルト): 自車が円内にいる間、判定を無効化。outside: 自車が円外にいる間、判定を無効化。 |
- group_name: check_safety_conditions
group_type: all_of
start_at: wait_after_engage_5s
ignore_areas:
- x: 30180.0
y: 29560.0
range: 5.0
area_condition: inside
condition_list:
- condition_class: metric
...
Pass条件#
pass_conditions内のすべての条件グループが一度満たされると、テストが成功して終了する。
ego_kinematic_trigger#
自車両が指定されたエリアに到達したかを評価する。
- シナリオにarea条件がある場合、自車両のx,y位置がシナリオで指定したx,y座標からrangeの範囲に入っている。
- シナリオにvelocity条件がある場合、自車両の速度がシナリオで指定した範囲に入っている。
- シナリオにacceleration条件がある場合、自車両の加速度がシナリオで指定した範囲に入っている。
time_wait_trigger#
指定された待機時間が経過したかを評価する。
- アクティベーションからの経過時間が
wait_secondsに達すると条件が満たされる。
condition_group#
上記のcondition_groupを参照。
Fail条件#
fail_conditions内のいずれかの条件グループが一度満たされないと、テストが失敗し、terminated_after_fail_s秒後に終了する。
metric#
メトリクスを評価する。planning_controlのユースケースと同じ。
diagnostic#
診断ステータスを評価する。diagnosticsのユースケースと同じ。
planning_factor#
計画因子を評価する。planning_controlのユースケースと同じ。
ego_kinematic#
アクティブ期間中、自車両の運動学条件(位置、速度、加速度)を継続的に評価する。
- シナリオにarea条件がある場合、自車両のx,y位置がシナリオで指定したx,y座標からrangeの範囲内/外にある。
- シナリオにvelocity条件がある場合、自車両の速度がシナリオで指定した範囲に入っている。
- シナリオにacceleration条件がある場合、自車両の加速度がシナリオで指定した範囲に入っている。
condition_group#
上記のcondition_groupを参照。
評価結果の出力先ファイル#
perception_reproducerにおいては、以下の3つのファイルにそれぞれresult.jsonlが作成される。 result.jsonlは必ず出力されるが、pass_result.jsonlとfail_result.jsonlはシナリオで指定した場合にのみ出力される
result.jsonl#
output_dir/result.jsonlに出力される。 passとfail評価からまとめされた評価結果が記述される。
Evaluatorで実行する場合は、このファイルの最終行が参照されて成否が決定される。 このため、pass_result.jsonlとfail_result.jsonlの結果をマージした最終的な成否の情報がpost_processで書き込まれる。
pass_result.jsonl#
output_dir/result_archive/pass_result.jsonlに出力される。 pass条件の評価結果が記述される。
fail_result.jsonl#
output_dir/result_archive/fail_result.jsonlに出力される。 fail条件の評価結果が記述される。
評価ノードが使用する Topic 名とデータ型#
Subscribed topics:
| Topic name | Data type |
|---|---|
| /localization/kinematic_state | nav_msgs/msg/Odometry |
| /localization/acceleration | geometry_msgs/msg/AccelWithCovarianceStamped |
| /control/control_evaluator/metrics | tier4_metric_msg/msg/MetricArray |
| /planning/planning_evaluator/metrics | tier4_metric_msg/msg/MetricArray |
| /system/processing_time/metrics | tier4_metric_msg/msg/MetricArray |
| /planning/planning_factors/** | autoware_internal_planning_msgs/msg/PlanningFactorArray |
| /diagnostics | diagnostic_msgs/msg/DiagnosticArray |
| /autoware/state | autoware_system_msgs/msg/AutowareState |
Published topics:
| Topic name | Data type |
|---|---|
| /driving_log_replayer/perception_reproducer/results | std_msgs/msg/String |
| /driving_log_replayer/perception_reproducer/pass_results | std_msgs/msg/String |
| /driving_log_replayer/perception_reproducer/fail_results | std_msgs/msg/String |
simulation#
シミュレーション実行に必要な情報を述べる。
入力 rosbag に含まれてはいけない topic#
Planning Simulator#
このユースケースは、車両が実際に走行できる閉ループテストを可能にするため、logging_simulator.launchの代わりにplanning_simulator.launchを使用する。
Perception Reproducerノード#
planning_debug_toolsパッケージのperception_reproducerノードは、現在の自車位置に基づいてrosbagから感知オブジェクトを再現する。
詳細については、perception_reproducerを参照。
設定オプション:
noise: 感知オブジェクトにノイズを適用するreproduce_cool_down: 再パブリッシュのクールダウン時間(デフォルト: 80.0)tracked_object: 追跡オブジェクトをパブリッシュするsearch_radius: rosbagの自車オドメトリメッセージを検索する検索半径(デフォルト: 1.5)
ルート設定方法#
走行ルートはシナリオYAMLのデータセットレベルにある goal_method フィールドで設定できる。
goal_method が set_goal_from_scenario かつGoalPoseを設定しない場合、 perception_reproducer の--replay-route フラグを使う。
goal_method の詳細についてはシナリオフォーマットを参照。
evaluation#
評価に必要な情報を述べる。
シナリオフォーマット#
サンプル参照
評価結果フォーマット#
サンプル参照