2025-08-26 14:28

(5)パラメータチューニング

生成AIツールを活用した、自動運転AIチャレンジへの取り組みを解説しています。
GoogleのNotebook LMを使った対話形式の音声解説でお届けします。
Qiita記事
https://qiita.com/covao/items/9818fe751ccfc6eaa52b

サマリー

自動運転AIチャレンジ第5回では、AIツールの活用方法や特にパラメータチューニングに焦点が当てられ、シミュレーター環境の変化や具体的な調整プロセスが紹介されています。また、AI参謀のGPT-5を活用した手法やトレードオフについても詳しく考察されています。このエピソードでは、自動運転AIチャレンジにおけるパラメータチューニングの重要性と、AIとの協業による効率的な改善提案が紹介されます。さらに、オンライン提出による競技結果の可視化や他の参加者の走行分析を通じて、さらなる学びを得る方法が探求されています。

自動運転AIチャレンジの概要
AIツール三種の神器ではじめる自動運転AIチャレンジ第5回です。
この配信では、皆さんがAIツールをどのように活用して、自動運転AIチャレンジという競技に挑んでいくか、
その具体的なノウハウとか、試行錯誤の様子をお届けしています。
私たちは、AIツールを戦略を練る参謀、作業記録とか整理をする書記、
そして定型作業をこなす執事、この3つの役割、いわばAIツール三種の神器として捉えて活用しているんですよね。
前回は、その指南書作りとか書記としてのAI活用に触れました。
そうですね。そして今回は、特にその参謀、AIチャットですね。
この力を借りて、チャレンジ攻略のまあ、肝ともいえるパラメータチューニングにどう取り組むか。
それから実際にチューニングした結果をオンライン提出するところまでを、皆さんと一緒に見ていきたいなと思っています。
パラメータチューニングですか。言葉だけ聞くとちょっと身構えちゃう感じもありますけど、
AI参謀がどう活躍するのかすごく興味ありますね。
その前に、シミュレーター環境に最近変更があったという話でしたよね。
そうなんです。8月14日にアップデートがありまして、より本番に近い車庫からスタートするという仕様に変わりました。
なので、ちょっと注意点として、使っているシミュレーター、特にAWSIM、オーシムですね。
これのバージョンが古いとカートが動かない可能性があるんですよね。
ああ、なるほど。
ですので、最新版に更新しておくというのが前提になりますね。
最新環境、了解です。
さて、本題ですけど、このAIチャレンジ。提供されたサンプルコードとか設定値、つまりパラメータを自分たちで調整していく必要があると。
はい、まさにその通りです。公式サイトには基本的なセットアップの方法は書いてあるんですが、
じゃあどうやったら速く走れるの?みたいな具体的なチューニング方法については、実はあまり詳しく書かれてないんですね。
ある意味、ここから先は参加者が手探りで試行錯誤しながら解き明かしていくっていう、一種の謎解きゲームみたいな側面があるんですね。
へえ、手探りの部分が多いんですね。
そこで、参謀としてのAI、今回はGPT-5の出番と、具体的にはどうアプローチしたんですか?
えっとですね、まずは、まあ適応するじゃないですけど、システム全体の構造を把握するところから始めました。
このチャレンジで使われている自動運転ソフトウェアの基盤、ROSですね。
このパッケージ構成を理解するために、設定ファイルがあるんですけど、reference.launch.xml。
このURLをGPT-5に渡して、このファイルを解析して、主要なコンポーネントの役割と、あとその依存関係を図で示してみてってお願いしたんです。
単にリストアップしてもらうんじゃなくて、関係性を可視化してほしかったんですね。
なるほど。単に機能が並んでいるだけじゃなくて、それらがどう繋がっているかまで含めて理解しようとしたと。
それで、AIの解析結果どうでした?何か意外な発見とかあるんですか?
解析によるとですね、システム自体はGNSS、皆さんがよく使うGPSみたいな衛星測位システムですね。
それとIMU、慣性計測装置。これは動きとか傾きを検知するセンサーです。
この情報だけで自分の位置を推定して、事前に用意された経路を追いかけるという、比較的シンプルな構成でした。
AIに構造を解析させることで、単に部品リストをもらうんじゃなくて、機能が並んでいるだけじゃなくて、
そういうボトルネックになりそうな箇所とか、調整の勘所みたいなものが見えてくるわけですね。
これは面白い使い方ですね。
全体像等、ある程度勘所がつかめたと。
そこで、AI参謀は具体的に、どこから手をつけるのが効果的だ、みたいなアドバイスはありましたか?
はい。まずは既存のアルゴリズム、特に経路追従制御のPure pursuit
これのパラメータ調整から始めるのが定石だし、最も効果が出やすいだろうと。
これは実は、公式の手引きでも推奨されている最初のステップなんですけど、
AIも同じ結論でしたね。
自分で全く新しい制御ロジックを作るのは、それはその後でも遅くないだろうと。
Pure Pursuit、名前はよく聞きますね。
Pure Pursuitとは何かというと、
古典的な手法とのことですけど、改めてどんな考え方のアルゴリズムなんでしょうか?
基本はすごくシンプルなんです。
車両のちょっと先方、このちょっと先を先読み距離、ルックアヘッドディスタンスと呼ぶんですけど、
その距離だけ先にある経路上の目標点を見つけます。
で、現在の車両の位置からその目標点に向かうような滑らかな円弧の経路を見つけます。
で、現在の車両の位置からその目標点に向かうような滑らかな円弧の経路を描くには、
ハンドルをどれくらい切ればいいかっていうのを計算して車を誘導する。
そういう考え方ですね。
なるほど。そのPure Pursuitのパラメータ調整が鍵になると。
どんなパラメータがあって、その調整っていうのはやっぱり一筋縄ではいかないものなんですかね。
よくある落とし穴とかトレードオフみたいなものってあるんでしょうか?
いや、いい質問ですね。まさにトレードオフの連続なんですよ。
特に重要なのがいくつかあって、例えばlookahead_gain。
パラメータ間のトレードオフと調整
lookahead_gainですね。
これは車の速度に応じて先読みくりをどれだけ長く取るかを決めるケース、ゲインなんです。
これを上げると遠くのカーブを早くから見せるんで反応は良くなるんですけど、
上げすぎると今度はステアリングが過敏になっちゃって、
神経質な小動物みたいに左右にフラフラし始めちゃうんです。
なるほど。
逆に下げすぎると安定はするんですけど、
今度はカーブで大回りしすぎて曲がりきれなくなっちゃったりとか。
安定性と追従性のトレードオフって感じですね。
実際に調整してみてどうでした?
いやー、このlookahead_gainは正直苦労しましたね。
シミュレーターで試してて、ちょっと値を上げたら急にコースアウトしちゃったり、
逆に下げたらコーナーで壁に当たり性になったり、
ちょうどいい塩梅を見つけるのに結構な試行回数が必要でした。
結局、少し控えめの値から始めて、
様子見ながら徐々に上げていくのが安全かなという感じでしたね。
もう一つ密接に関わってくるのがあって、
それがスピードプロポーショナルゲイン、速度比例ゲインです。
はいはい。
これは目標速度に対してどれだけスバイク加速したり減速したりするかっていう
応答性を決めるPゲインなんです。
これを上げると、もちろんキビキビ走るようになるんですけど、
さっきのルックアヘッドが高めでフラついている時に、
こっちも上げちゃうと、もうぎっこんばったんって感じで
前後に揺さぶられるような動きになっちゃう。
うわー。
ハンドルのフラつきと速度のぎくしゃくが合わさると、
それはもう目も当てられない状態になりそうですね。
まさにその通りです。
なので、この2つのパラメーターはお互いに影響し合うので、
片方を調整したらもう片方も見直すみたいな感じになっています。
というような作業が必要でしたね。
他にも、低速時の最低限の先読み距離を決める
lookahead_min_distanceとか、
目標速度を固定値にするか、経路データに従うかを切り替える
use_external_target_velと
external_target_velのペアとか、
いろいろあるんですが、
まずはそのlookahead_gainと
スピードプロポーショナルゲインのバランスを取るっていうのが、
走り全体を安定させる上ではすごく重要だなと感じました。
なるほど。
パラメーター一つ一つの意味だけじゃなくて、
その相互作用とか調整の難しさ、
勘どころみたいなものがすごくよく分かりました。
単なるリストの説明よりずっと実践的で分かりやすいです。
それからですね、
Pure Pursuitの挙動を左右するもう一つの
すごく重要な要素があって、
それが参照する経路データ、トラジェクトリ、
トラジェクトリそのものなんです。
これはCSVファイルで提供されていて、
コース上の座標と各地点での目標速度
なんかが記録されているんですね。
Pure Pursuitはこのデータ、
点列を追いかけるわけですから、
このデータ自体の質、
特に目標速度の設定っていうのが
タイムに直結してくるんです。
デフォルトのデータだと、
確か直線もカーブも同じ速度が
設定されているんでしたって、
それは確かに改善の余地がありそうですね。
そうなんですよ。
専用のエディターがあって、
それで細かく調整することもできるんですが、
今回はちょっと実験的に、
AIによるパラメータチューニング
ここでもAI参謀、
チャットGPT5に手伝ってもらいました。
元のCSVデータを提示して、
この経路データの直線部分では
目標速度を10%上げて、
カーブでは曲がり具合に応じて
速度を下げてほしい。
ただし、スタート直後の車庫入れ区間は
低速のまま変更しないでね、
CSVの形式はちゃんと維持して、
みたいなかなり具体的な指示を出してみたんです。
データ編集までAIに、
それはかなり高度な使い方ですね。
ちゃんと意図通りにやってくれました?
いや、これがですね、
ちゃんとカーブのきつさ、
曲率ですね。
それに応じて速度を適切に落としてくれて、
直線では加速するっていう、
よりメリハリのついた速度プロファイルを持つ
新しいCSVデータを出力してくれたんです。
へー。
で、これを適用してシミュレーションしてみると、
以前よりスムーズにカーブを抜けられるようになって、
走行がかなり安定したんですよ。
AIが単なる作業代行だけじゃなくて、
データに基づいた改善提案までできるんだなっていう、
その可能性を感じましたね。
ローカルでの試験で、
パラメーターと経路データの良い組み合わせが
オンライン提出と学び
見つかったら、いよいよオンライン提出ですね。
これはどういったプロセスなんですか?
はい。
手順に従って、
変更を加えたプログラムコードを含む開発環境、
ワークスペースっていうんですけど、
それを丸ごとZIPファイルに圧縮します。
そして、大会のウェブサイトから
そのファイルをアップロードするだけです。
そうすると、
サーバー側で自動的にビルドして、
シミュレーションを実行して、
結果の評価までやってくるんです。
ただ、提出は1日20回までっていう制限があるので、
計画的に試す必要はありますね。
オンライン提出後の結果確認は
どんな感じなんでしょう?
すぐにフィードバックがあるんですか?
そこが結構面白いところで、
自動運転AIチャレンジ2025ライブっていう
サイトがあるんです。
そこで自分の提出結果が
ランキング形式で
ほぼリアルタイムに表示されるんですよ。
おお。
さらに、自分のカートが
構成されているときに
ドライバー視点の綺麗な3D映像の
リプレイも見ることができるんです。
ローカル環境では
負荷を考えて3D描画を
切っていることが多いんですけど、
ここではしっかり確認できます。
それだけじゃなくて、
画面の右側には
コース全体を上から見た
2Dマップも表示されていて、
自分の走行軌跡とか、
あとPure Pursuitが
どの点を先読み目標、
ルッカーヘッドポイントにしていたか
っていうのが可視化されるんです。
へー。
自分の走りだけじゃなくて、
他の参加者の走りも
リプレイで見られるんですよね。
そうなんです。
それがもしかしたら
最大のメリットかもしれないですね。
ランキング上位のチームが
どんなパラメーター設定で
どんな走行軌跡を描いて
コーナーをどう攻略しているのか
っていうのをかなり詳細に観察できるんです。
彼らのリプレイを見て、
このカーブはもっと内側を攻められるのか
とか、この直線では
具体的な改善ヒントを
たくさん得られるんですよ。
これは一人でやっていると
なかなか得られない貴重な情報源ですね。
なるほど。
AI参謀の助けで
効率的にチューニングを進めて
オンライン提出で客観的な評価と
あと他の人からの学びを得る
このサイクルを回していくのが
チャレンジ攻略の鍵っていうわけですね。
まさにそういうことです。
AIにコード解析とか
データ整形みたいな
ある意味でちょっと面倒くさい作業を
自分たち人間は
どのパラメータをどう変えるのがいいかな
っていう戦略的な試行錯誤とか
他の参加者の優れた走りから
何を学んで
どう自分の走りに取り入れようか
みたいなより創造的で
本質的な部分に集中できる。
今回の取り組みは
AIとの協業がもたらす可能性の
飛誕を示せたのかなと思いますね。
複雑な課題に対して
AIと人間がそれぞれの得意分野を
活用して協力することで
一人でやるよりもずっと早く
人気を進められる
なんだかそんな未来を感じさせる
エピソードでした。
このチャレンジ収録している時点で
予選終了まで残り1週間を
切っているそうなんですけど
まさにこのパラメータチューニングと
オンラインでの試行錯誤のサイクルを
どれだけ高速に回せるかっていうのが
最後の追い込みでは重要になりそうですね。
さて今回の探究から
皆さんに一つ投げかけてみたい
問いがあります。
今日見てきたような
AIとの協業
そして活用するっていう
アプローチですね。
これはエンジニアリングの世界だけじゃなくて
皆さんの日々の学習とか
お仕事の中で
どのように活かせるでしょうか。
自分がちょっと苦手な分析とか
定型的な作業を
AIに任せてみることで
どんな新しい視点が生まれたり
より本質的な課題に
取り組む時間ができたりするのか
少し考えてみると
何か面白い発見があるかもしれませんよ。
今回の探究はここまでです。
また次回
さらに皆さんの知的好奇心を
くすぐるような世界でお会いしましょう。
14:28

コメント

スクロール