Planning Controlの評価#
Metrics、PlanningFactorsが指定の条件で出力されているか評価する。 include_use_caseでdiagnosticsを指定すれば、diagnosticsの評価も可能。
評価方法#
launch を立ち上げると以下のことが実行され、評価される。
- launch で評価ノード(
planning_control_evaluator_node)とlogging_simulator.launch、ros2 bag playコマンドを立ち上げる - bag から出力されたセンサーデータを autoware が受け取って、metrics型、PlanningFactor型のメッセージを出力する
- 評価ノードが topic を subscribe して、各基準を満たしているかを判定して結果をファイルに記録する
- bag の再生が終了すると自動で launch が終了して評価が終了する
評価結果#
Metric#
Metric.msgが利用されているtopicを利用する。
主に、/control/control_evaluator/metrics, /planning/planning_evaluator/metrics, /system/processing_time/metricsを想定している。
評価対象となるtopic内のnameはmetric_nameにて指定する。
以下条件を評価できる。
- 指定メトリクスがシナリオ指定の範囲内か
- 指定メトリクスがシナリオ指定の値となるか
Metric正常(judgement: positive)#
value_type=numberの場合に、メトリクスTopic中の指定metricがvalue_rangeの範囲に入ってると正常となる。
value_type=stringの場合に、メトリクスTopic中の指定metricがvalue_targetと一致すると正常となる。
Metric正常(judgement: negative)#
value_type=numberの場合に、メトリクスTopic中の指定metricがvalue_rangeの範囲外であると正常となる。
value_type=stringの場合に、メトリクスTopic中の指定metricがvalue_targetと一致しないと正常となる。
Metric正常異常#
Metric正常の条件を満たさないとき
PlanningFactor#
/planning/planning_factors/**のtopicを利用する。評価対象のtopicはシナリオファイルでtopic名を指定する。
以下の条件を評価できる。
- PlanningFactorのcontrol_pointの位置がシナリオに指定された条件を満たすか
- PlanningFactorのbehaviorが指定のbehaviorになってるか
PlanningFactor正常(judgement: positive)#
/planning/planning_factors/**が以下の条件を全部満たす場合に正常となる。
- シナリオにarea条件がある場合、control_points[0].poseのx,yの位置がシナリオで指定したx,y座標からrangeの範囲に入っている。
- シナリオにbehavior条件がある場合、planning_factorのbehaviorがシナリオで指定したbehaviorにある。
- シナリオにdistance条件がある場合、planning_factorのdistance(Egoからcontrol_pointまでの距離)がシナリオで指定した範囲に入っている。
PlanningFactor正常(judgement: negative)#
/planning/planning_factors/**が以下の任意条件を満たさない場合に正常となる。
- シナリオにarea条件がある場合、control_points[0].poseのx,yの位置がシナリオで指定したx,y座標からrangeの範囲に入っている。
- シナリオにbehavior条件がある場合、planning_factorのbehaviorがシナリオで指定したbehaviorにある。
- シナリオにdistance条件がある場合、planning_factorのdistance(Egoからcontrol_pointまでの距離)がシナリオで指定した範囲に入っている。
PlanningFactor異常#
PlanningFactor正常の条件を満たさないとき
評価結果の出力先ファイル#
planning_controlにおいては、以下の3つのファイルにそれぞれresult.jsonlが作成される。 result.jsonlは必ず出力されるが、planning_factor_result.jsonlとmetric_result.jsonlとdiag_result.jsonlはシナリオで指定した場合にのみ出力される
result.jsonl#
output_dir/result.jsonlに出力される。 planning_factorとmetricとdiag評価からまとめされた評価結果が記述される。
Evaluatorで実行する場合は、このファイルの最終行が参照されて成否が決定される。 このため、planning_factor_result.jsonlとmetric_result.jsonlとdiag_result.jsonlの結果をマージした最終的な成否の情報がpost_processで書き込まれる。
planning_factor_result.jsonl#
output_dir/result_archive/planning_factor_result.jsonlに出力される。 planning_factorの評価結果が記述される。
metric_result.jsonl#
output_dir/result_archive/metric_result.jsonlに出力される。 metricsの評価結果が記述される。
diag_result.jsonl#
output_dir/result_archive/diag_result.jsonlに出力される。 diagnosticsの評価結果が記述される。
評価ノードが使用する Topic 名とデータ型#
Subscribed topics:
| Topic name | Data type |
|---|---|
| /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 |
Published topics:
| Topic name | Data type |
|---|---|
| N/A | N/A |
simulation#
シミュレーション実行に必要な情報を述べる。
入力 rosbag に含まれてはいけない topic#
| topic 名 | データ型 |
|---|---|
| /clock | rosgraph_msgs/msg/Clock |
clock は、ros2 bag play の--clock オプションによって出力しているので、bag 自体に記録されていると 2 重に出力されてしまうので bag には含めない
evaluation#
評価に必要な情報を述べる。
シナリオフォーマット#
サンプル参照 #TODO
評価結果フォーマット#
metric#
サンプル参照 #TODO
planning_factor#
サンプル参照 #TODO
diagnostics#
diagnosticsのユースケースと同じ