0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

自動運転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ノードで使用されているようです。

https://github.com/AutomotiveAIChallenge/autoware.universe/blob/awsim-stable/vehicle/raw_vehicle_cmd_converter

※ もう少し抽象的にとらえると、車両インターフェースのパラメータで、
一般的な制御指令値 → 車両固有の制御指令値の変換、といったところでしょうか。

image.png

https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-interfaces/components/vehicle-interface/

※ 運営の方が書いてくださった、以下記事も非常に参考になりそうです。

https://zenn.dev/ttanaka3/articles/4c1b6dea256ea5

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環境内で以下のコマンドを打ちます。

Terminal 1
ros2 bag play /output/0920_demo_interface_only/0920_demo_interface_only_0.db3 --clock --start-offset 415.0
Terminal 2
ros2 launch accel_brake_map_calibrator accel_brake_map_calibrator.launch.xml rviz:=true use_sim_time:=true
Terminal 3
ros2 run tf2_ros static_transform_publisher 0 0 0 0 0 0 map base_link

以下のRViz2画面が出ればOKです、車速に応じてセルが移動すると思います。

image.png

ただ初期設定だとセルが赤いままでほぼキャリブレーションが進みませんでしたので、
以下のパラメータ調整が必要そうです。

他、以下の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文章校正ツール「ちゅらいと」で校正されています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?