ちゅらデータアドベントカレンダー8日目の記事です
先日開催された「自動運転AIチャレンジ2024」に参加したのでその話を書きます
参考:ちゅらデータチームが自動運転AIチャレンジ2024決勝に参加してきました。
ちゅらデータは「とっとこちゅら太郎」というチーム名で参加しました
「ちゅら太郎」はちゅらデータのロゴに描かれているシーサーの名前です
決勝大会では事前練習会が事前にあり、事前練習会ではなかなかうまく走れませんでした
事前練習会の後にいくつか改良を行った結果、決勝大会ではそれなりにうまく走ることができました
この記事では事前練習会の後に行った改良についてざっくり紹介します
事前練習会で壁にぶつかりまくっていたとっとこちゅら太郎
事前練習会の後に行った改良1:ルートの改良
今回の自動運転のプログラムではあらかじめMapで理想のルートを指定してあり、カートはそのルートに沿って走ろうとします
事前練習会では主催側が用意したデフォルトルートで走っていたのですが、デフォルトルートではコーナーの角度がきつかったためルートを改良しました
デフォルトルート
緑色の部分がコースでコースの中心に引かれている線がルートです
ルートの改良にはvector_map_builderを使いました
ルートのPointを選択してキーボードの上下左右キーで位置を調整します
もしくはLinestring(Pointの集合)を選択して位置を調整します
Linestringは複数Pointをまとめて移動させることができます
事前練習会の後に行った改良2:目標速度の変更
デフォルトでは目標速度はreference.launch.xmlのexternal_target_velの値が使用されます
設定を変更することで目標速度をMapで指定することができます
Mapに設定された目標速度を使用するにはreference.launch.xmlのuse_external_target_velをfalseにします
するとMapのLaneletのSpeedLimitの値が目標速度として使われます
Laneletの分割
デフォルトではLaneletは結構大雑把に分割されているので、Laneletを更に分割することでコース上の細かい位置に応じた目標速度を設定することができます
Mapファイル(.osmファイル)はxml形式なので適当なエディタで直接編集してLaneletを分割しました
タグが3種類あります
ndタグ:ノードを定義する
wayタグ:ndタグで定義されたノードを複数集めて線にする
relationタグ:wayタグで定義された線を3つ集めてLaneletにする
既存のwayタグを分割して新しいwayをつくり、それを新しいLaneletとして定義します
決勝大会でそれなりにうまく走ってくれたとっとこちゅら太郎
決勝大会の様子はYoutubeでも見ることができます!
https://www.youtube.com/live/_wxX7OjICFk?si=kvKGZHmAQb0sZ7H_&t=21874
まとめ
Mapをいろいろ修正することでなかなかいい感じに走ることができました!