はじめに
自動運転AIチャレンジ2024決勝 @ 11月初旬 に向けて開発を進めています。
実車競技となる決勝では、車両固有パラメータ の調整が1つ大きな課題になってきそうです。ここで 車両固有パラメータ とは、以下の accel_map.csv
/ brake_map.csv
/ steer_map.csv
などと理解しています。
Autowareには、前述の accel_map.csv
/ brake_map.csv
を自動キャリブレーションしてくれるノードaccel_brake_map_calibrator
が用意されているようです。さすが!
早速、使ってみましょう!
[ 補足や他参考資料 ]
※ これらのパラメータは、以下のraw_vehicle_cmd_converter
ノードで使用されているようです。
※ もう少し抽象的にとらえると、車両インターフェースのパラメータで、
一般的な制御指令値 → 車両固有の制御指令値の変換、といったところでしょうか。
※ 運営の方が書いてくださった、以下記事も非常に参考になりそうです。
accel_brake_map_calibrator
の使い方
ノード概要
accel_brake_map_calibrator
は、
既にAIチャレンジ2024リポジトリに取り込まれているようなので、
まずは以下のように Sub / Pub 等を確認してみました。
/vehicle/status/actuation_status
, /vehicle/status/steering_status
, /vehicle/status/velocity_status
が必要なようです。
$ ros2 node info /accel_brake_map_calibrator
/accel_brake_map_calibrator
Subscribers:
/parameter_events: rcl_interfaces/msg/ParameterEvent
/vehicle/status/actuation_status: tier4_vehicle_msgs/msg/ActuationStatusStamped
/vehicle/status/steering_status: autoware_auto_vehicle_msgs/msg/SteeringReport
/vehicle/status/velocity_status: autoware_auto_vehicle_msgs/msg/VelocityReport
Publishers:
/accel_brake_map_calibrator/debug/data_average_occ_map: nav_msgs/msg/OccupancyGrid
/accel_brake_map_calibrator/debug/data_count_occ_map: nav_msgs/msg/OccupancyGrid
/accel_brake_map_calibrator/debug/data_count_self_pose_occ_map: nav_msgs/msg/OccupancyGrid
/accel_brake_map_calibrator/debug/data_std_dev_occ_map: nav_msgs/msg/OccupancyGrid
/accel_brake_map_calibrator/debug/occ_index: visualization_msgs/msg/MarkerArray
/accel_brake_map_calibrator/debug/offset_covariance: std_msgs/msg/Float32MultiArray
/accel_brake_map_calibrator/debug/original_occ_map: nav_msgs/msg/OccupancyGrid
/accel_brake_map_calibrator/debug/original_raw_map: std_msgs/msg/Float32MultiArray
/accel_brake_map_calibrator/debug/update_occ_map: nav_msgs/msg/OccupancyGrid
/accel_brake_map_calibrator/output/calibration_status: tier4_external_api_msgs/msg/CalibrationStatus
/accel_brake_map_calibrator/output/current_map_error: tier4_debug_msgs/msg/Float32Stamped
/accel_brake_map_calibrator/output/debug_values: tier4_debug_msgs/msg/Float32MultiArrayStamped
/accel_brake_map_calibrator/output/map_error_ratio: tier4_debug_msgs/msg/Float32Stamped
/accel_brake_map_calibrator/output/update_raw_map: std_msgs/msg/Float32MultiArray
/accel_brake_map_calibrator/output/update_suggest: std_msgs/msg/Bool
/accel_brake_map_calibrator/output/updated_map_error: tier4_debug_msgs/msg/Float32Stamped
/diagnostics: diagnostic_msgs/msg/DiagnosticArray
/parameter_events: rcl_interfaces/msg/ParameterEvent
/rosout: rcl_interfaces/msg/Log
Service Servers:
/accel_brake_map_calibrator/describe_parameters: rcl_interfaces/srv/DescribeParameters
/accel_brake_map_calibrator/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/accel_brake_map_calibrator/get_parameters: rcl_interfaces/srv/GetParameters
/accel_brake_map_calibrator/list_parameters: rcl_interfaces/srv/ListParameters
/accel_brake_map_calibrator/set_parameters: rcl_interfaces/srv/SetParameters
/accel_brake_map_calibrator/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
/accel_brake_map_calibrator/update_map_dir: tier4_vehicle_msgs/srv/UpdateAccelBrakeMap
Service Clients:
Action Servers:
Action Clients:
オフラインキャリブレーション
今回は、事前に運営から共有されたbagファイル0920_demo_interface_only_0.db3
を使ってオフラインキャリブレーションをしてみます。
ターミナルを3つ立ち上げて、docker環境内で以下のコマンドを打ちます。
ros2 bag play /output/0920_demo_interface_only/0920_demo_interface_only_0.db3 --clock --start-offset 415.0
ros2 launch accel_brake_map_calibrator accel_brake_map_calibrator.launch.xml rviz:=true use_sim_time:=true
ros2 run tf2_ros static_transform_publisher 0 0 0 0 0 0 map base_link
以下のRViz2画面が出ればOKです、車速に応じてセルが移動すると思います。
ただ初期設定だとセルが赤いままでほぼキャリブレーションが進みませんでしたので、
以下のパラメータ調整が必要そうです。
他、以下のissueも参考になりそうでした。
マップの途中保存は以下コマンドで可能です。
ros2 service call /accel_brake_map_calibrator/update_map_dir tier4_vehicle_msgs/srv/UpdateAccelBrakeMap "path: '<accel/brake map directory>'"
おわりに
車両固有パラメータ accel_map.csv
/ brake_map.csv
の自動キャリブレーションノードaccel_brake_map_calibrator
を使ってみました。
実車でのキャリブレーションツールまで揃っているのはさすがAutoware!という感じです。
steer_map.csv
はどうしようかなあ…
steer_offset_estimator
なるものがありそうですが… offset だしなあ…と悩んでいます。
実機適合はなかなか大変ですが、楽しんでいきましょう!
この記事は、AI文章校正ツール「ちゅらいと」で校正されています。