先端技術部の渡邊です。テクノロジーリサーチグループでは、公益社団法人自動車技術会が主催する自動運転AIチャレンジ2024に参加しており、現在はバーチャル環境で行われる予選にチャレンジしています。
今年の自動運転AIチャレンジでは、サーキットでEVカートを速く走らせることが課題になっています。そこで、パフォーマンス分析のためのログ可視化について紹介したいと思います。
はじめに
パラメータチューニングを進める上で、速度が速すぎるとカートがコーナーを曲がり切れず、壁に衝突してしまうことがありました。曲がり切れない原因は、タイヤのグリップが足りない、またはステアリングの切れ角が足りていないと考えましたが、シミュレーターの可視化(rviz)画面を見ているだけでは原因を突き止めることができませんでした。
そこで、カートのコーナリング限界を調査するために、ステアリングの切れ角や横Gの変化などを可視化したいと考えました。実現方法を調査したところ、Autowareにコントローラーモジュールの性能を評価するためのモジュール「Control Performance Analysis」があり、様々なグラフをプロットできることがわかりました。
今回は、このモジュールを自動運転AIチャレンジ2024のAutoware-Microで動かすための方法を紹介したいと思います。ROSやAutowareに熟練している方には当たり前のことも多いと思いますが、初学者にとってはAutoware Universeのモジュール全般を動かすための参考になるはずです。
なお、先に結果から言うと、残念ながらグラフをすべて表示させることはできませんでした。これらについては、表示させることができたら改めて紹介させていただこうと思います。
Autoware Universeのモジュールはどこ?
Autoware-Microのモジュールは"aichallenge-2024/aichallenge/workspace/src/aichallenge_submit/"以下にソースが用意されています。
しかし、公式サイトの構成図や、rpt_graphなどで出力したノードグラフを見ると、aichallenge_submit以下にソースが用意されている以外のモジュールも動いているようです。どこにあるのでしょうか?
これらは開発コンテナ内での"/autoware"にインストールされているようでした。
launchファイルの編集
Autoware-Microの実行時に起動されるモジュールは以下で定義されているようです。中身を読んでみると、別のlaunchファイルを読み込んで引数などを置き換える記述が並んでいました。これを真似すればControl Performance Analysisモジュールを起動できそうです。
aichallenge-2024/aichallenge/workspace/src/aichallenge_submit/aichallenge_submit_launch/launch/reference.launch.xml
Control Performance Analysisモジュールのlaunchファイルは以下の場所にありました。
/autoware/install/control_performance_analysis/share/control_performance_analysis/launch/controller_performance_analysis.launch.xml
Control Performance Analysisモジュールが起動できるよう、以下のような記述を追加しました。
<group> <include file="$(find-pkg-share control_performance_analysis)/launch/controller_performance_analysis.launch.xml"> </include> </group>
最新版のAutoware Universeでは修正されているようですが、launchファイルのファイル名だけ"control"ではなく"controller"になっていたため、少し悩みました。これでControl Performance AnalysisモジュールがAutoware-Microと一緒に起動するはずです。試してみましょう。
Autoware-MicroとPlot Jugglerの起動
aichallengeディレクトリに移動します。
$ cd /aichallenge
Autoware-Microをビルドします。
$ ./build_autoware.bash
AWSIMとAutoware-Microを起動します。
$ ./run_evaluation.bash
別のターミナルでコンテナを起動し、plotjugglerを起動します。
$ ros2 run plotjuggler plotjuggler
- Plot Jugglerの画面上で「ROS2 Topic Subscriber」をスタートさせます。
- Maximum size of arraysを100に設定します。
- 以下のTopicを選択し、OKを押します。/control_performance/*がControl Performance AnalysisモジュールがPublishしているものだと思われます。
- /localization/kinematic_state
- /vehicle/status/steering_status
- /control_performance/driving_status
- /control_performance/performance_vars
- Open Layoutから以下のファイルを開きます。
- /autoware/install/control_performance_analysis/share/control_performance_analysis/config/controller_monitor.xml
- データが無くてプロットできないという警告が出た場合は、画面左下の「Timeseries List」にてメッセージが受信できていることを確認した後に、Layoutをロードし直すとグラフがプロットされるはずです。
結果
Driving Statusタブではsteering_tire_angleを可視化することができました。 XY Positionタブでは車両の位置を可視化することができました。 ほかのタブでは、データを部分的に受信・表示した後、更新が止まっているようでした。
まとめ
Autoware UniverseのControl Performance Analysisモジュールを起動し、Plot JugglerでPublisherの存在を確認する事ができましたが、正しくメッセージをSubscribeできていないようでした。
一方で、ステアリングアングルや車両位置は正しく可視化することができました。これらはControl Performance Analysisモジュールとは関係ないTopicですので、Control Performance Analysisモジュールの導入は失敗という結果になってしまいました。
しかし、この記事を書いている間に大会リポジトリに更新があり、最高速度が引き下げられたため、コントローラーのパフォーマンス分析の必要性は下がったと感じています。
ですが、Trajectoryを正しくトレースできているか、といった点は今後も分析が必要ですので、今後はライン取りに重点を置いた可視化に挑戦したいと思います。