AIチャレンジの進め方
開発ワークフロー
開発は以下のサイクルで進めます。
- コードを編集 —
aichallenge/workspace/src/aichallenge_submit/配下を変更 - ビルド —
make autoware-build - 動作確認 —
make devでシミュレータを起動し、挙動を確認 - 評価 —
make evalで定量評価し、output/latest/の結果を確認 - 提出 — 提出手順に従ってアップロード
ワークスペースのディレクトリ構造
aichallenge-racingkart/
└── aichallenge/
└── workspace/
└── src/
└── aichallenge_submit/ # ← ここを編集します
├── aichallenge_submit_launch/
│ └── launch/
│ └── reference.launch.xml # パラメータ・起動設定
├── simple_pure_pursuit/ # ルールベース制御
├── simple_trajectory_generator/ # 経路生成
└── ...
AIチャレンジではオープンソースソフトウェアを駆使しています。運営から提供されるコードとウェブプラットフォームを利用することで、初期開発フェーズをスキップし、競技のテーマに合わせた開発をすぐに開始できます。 このアプローチには、「車輪の再発明」を避けることができるという大きな利点があります。さらに、誰でも気軽に大会に参加でき、一貫した評価基準で大会を運営できるというメリットもあります。
初めて参加される方々は、先人たちが築き上げた基盤の上に立ち、自動運転に必要な機能がほとんど揃っている状態からスタートします。これからは、コミュニティによる「取り組みの公開」を通じて、競技領域での独自の開発を深めるチャンスです。 さらに、自動運転の理解を深めるために、運営が用意した「Autoware Practice」やROS 2のコミュニティが提供する「ROS 2」の学習プログラムを活用することをお勧めします。
既にチャレンジに参加された方々には、ご自身の経験を公開し、コミュニティに貢献して大会の発展に寄与していただければと思います。皆さんの積極的な参加が、大会をさらに充実させることに繋がります。
参加者の皆様にはこちらのコードやパラメータをカスタマイズすることで開発を進めていただきますが、Autowareに不慣れな方はまずは入門講座を一通りやっていただくことをお勧めします。
※リポジトリ内のコードを使わず独自に開発する方など、各種仕様について知りたい方はインターフェース仕様、シミュレータ仕様のページを参照してください。
参加者有志の参考記事を読んでみる
参加者有志が取り組んでくださった取り組みはAdvent Calendarにまとめられていますので参考にしてみてください。
どれから読もうか迷った方は2023年度コミュニティ貢献賞を受賞した田中新太さんが記載してくれたこちらの記事から読み進めると良いと思います。
パラメータを変更してみる
環境構築後何をして良いのかわからない方向けに、まずパラメータを調整してみましょう。 今回は制御モジュールのsimple_pure_pursuitのパラメータを変更してみることにします。
$HOME/aichallenge-racingkart/aichallenge/workspace/src/aichallenge_submit/aichallenge_submit_launch/launch/reference.launch.xml内の以下のvalue値を調整してみましょう。
<node pkg="simple_pure_pursuit" exec="simple_pure_pursuit" name="simple_pure_pursuit_node" output="screen">
<param name="use_external_target_vel" value="true"/>
<param name="external_target_vel" value="8.0"/>
<param name="lookahead_gain" value="0.4"/>
<param name="lookahead_min_distance" value="5.0"/>
<param name="speed_proportional_gain" value="1.0"/>
調整が終わったら再びビルド・実行してみましょう。挙動が変わったことが確認できたかと思います。
制御モードを切り替えてみる
reference.launch.xmlのcontrol_mode引数を変更することで、制御方式を切り替えることができます。
rule_based(デフォルト):simple_pure_pursuitによるPure Pursuit制御e2e:tiny_lidar_net_controllerによるEnd-to-End制御(LiDAR 1080点から加速度と操舵角を直接出力)joycon: 手動テレオペ操作
例えば、End-to-End制御を試すには、reference.launch.xml内のcontrol_modeをe2eに変更してビルド・実行してください。
評価結果を確認してみる
make evalを実行すると、評価結果がoutput/<timestamp>/d<domain_id>/配下に保存されます。output/latest/d<domain_id>/からシンボリックリンクでもアクセスできます。
主な出力ファイル:
result-summary.json: ラップタイムの結果サマリー(min_time,total_lap_time,num_laps)d<domain_id>-result-details.json: 詳細な走行データ(ラップごとのタイム、走行軌跡)autoware.log: Autowareの実行ログmotion_analytics-<timestamp>.html: 速度・加速度のインタラクティブ可視化(ブラウザで開けます)rosbag2_autoware/: ROSBag記録(MCAP形式、rosbag有効時)capture/: 画面キャプチャ動画(capture有効時)ros/log/: 各ノードの個別ログ
評価フロー:
sequenceDiagram
participant User as ユーザー
participant Make as make eval
participant AWSIM as AWSIM
participant AW as Autoware
participant Post as 後処理
User->>Make: make eval
Make->>AWSIM: コンテナ起動
Make->>AW: コンテナ起動
AWSIM->>AW: センサデータ配信
AW->>AWSIM: 制御コマンド送信
Note over AWSIM,AW: 6周走行 or タイムアウト
AWSIM->>AWSIM: result-details.json生成
AWSIM->>Post: 走行終了通知
Post->>Post: result-summary.json生成
Post->>Post: motion_analytics.html生成
Post->>Make: 全コンテナ停止・片付け
新規パッケージを作成してみる
新たに自作パッケージを作成してみましょう。まずはオープンソースのパッケージやautoware practiceをコピーしてみましょう。 以下のように進めると良いと思います。
- 元のパッケージをコピーして、下記を変更
- パッケージ名
- フォルダ名
- コード
- package.xml
- CMakeLists.txt
- aichallenge_submitの中に配置
- aichallenge_submit_launch内のlaunchファイル(reference.launch.xml)を変更
※コピー元のパッケージのライセンスを違反しないよう各自確認お願いいたします。
[任意]Trajectoryの編集をしてみる
2025年度のAIチャレンジでは岐阜大学のチームが作成してくれたTrajectory Editorなどのツールを使ってTrajectoryの編集をしていきます。
Readmeにステップバイステップのインストラクションなどがあるので参考にしてみてください。
作成したlanelet2 mapはaichallenge/workspace/src/aichallenge_submit/simple_trajectory_generator/dataに格納してください。
提出してみる
ワークスペースのカスタマイズを行ったらここを参考に提出をしてみましょう。