自動運転ミニカーバトル2023で優勝するまでにやった事

AIミニカー

自動運転ミニカーバトルとは?

トヨタ技術会が2019年から開催している自動運転タイムトライアルレースです。近年では、DonkeyCarやJetRacerなどのAI RCカーが主流になりつつあります。

自動運転ミニカーバトル2023

自動運転ミニカーバトル2023の競技ルールは、予選(タイムトライアル)と決勝戦(バトル)によりレースが実施されています。2023年のルールやレギュレーションは、自動運転ミニカーバトル2023のページに詳細がのっています。

https://autonomous-minicar-battle.studio.site/dev-1

FaBoの参加

株式会社FaBoでは、自動運転ミニカーバトルに、招待枠で2021年から参加させていただいています。招待枠では予選会が免除となり本戦からの参加になります。2021年は、JetRacerベースの車体で優勝、2022年のレースでは、6位の成績となっています。

自動運転ミニカーバトル2023 決勝レースの様子

自動運転ミニカーバトル2023 決勝レースの様子です。決勝レースでは、バトル形式でおこなわれ、5週周回するとゴールです。2週目と4週目はコースのショートカットが可能なルールとなっています。

決勝レースの様子の推論の様子

続いて、決勝レースの推論の様子です。モデルは、resnet18の転移学習をベースに、3つのモデルを用いて構築しています。

  • 通常走行モデル(1,3,5週目用) [回帰]
  • ショートカット走行用モデル(2,4週目用) [回帰]
  • 環境情報用モデル(周回カウント用) [分類]
環境情報用モデル(周回カウント用)で今何周目かを認識し、その結果で、通常走行モデル(1,3,5週目用)とショートカット走行用モデル(2,4週目用)を切り替えてつかっています。3つのモデルをGPUメモリ上には展開していますが、同時に起動するのは2つのモデルとなり、カメラの読込みに合わせて60fps(Jetson Orin Nanoの場合)の周期で動作しています。

通常走行モデル(1,3,5週目用)とショートカット走行用モデル(2,4週目用)では、青い◯はハンドルの角度、右側にでているオレンジ色のバーが速度の推論をおこない、環境情報用モデル(周回カウント用)では、左側にでているのがクラス分類の結果から何周目を走行中か識別しています。

車体

車体は、NVIDIA社がオープンソースとして公開しているJetRacer(https://github.com/NVIDIA-AI-IOT/jetracer)をベースに、FaBoでキット化したFaBo JetRacer Kitを用いました。

FaBo JetRacer Kitは、NVIDIA社の公開しているJetRacerをベースに、教育のユースケースでも使用できるように改造していったものになります。拡張したNotebook等は https://github.com/FaBoPlatform/jetracer
で公開しています。

今回は、レース用に新しいカーボンをおこし、Jetson Orin Nanoを搭載してレース専用車両を開発しました。

走行モデルの学習方法

続いて、学習方法の解説です。昨年度のレースは、当日の車体調整に失敗して、完敗してしまったので、その教訓から、様々なNotebookの新規に作成して、今回のレースに挑んでいます。

まずは、データセットを作成するにあたってRCカーを使って走行動画を撮影します。

撮影した走行動画をつかって、アノテーションを実施します。アノテーションは、RCカーの向かわせたいポイントと、速度を指定してデータセットを作成していきます。JetRacerでは、車体搭載のJetson上で、resnet18の転移学習をおこない学習させます。

初期の段階では150データセットぐらいのデータセットができたら、モデルを保存し、TensorRT形式に変換します。

変換済みモデルをつかって走行をします。150枚程度のデータで、コース1週が可能になります。

自動運転ミニカーバトル2023では、このような方法で、通常走行とショートカット走行用のデータを作成していきました。最終的には、通常走行 3000データセット、ショートカット走行 3000データセットの合計 6000データセットをアノテーションし作成しました。

データセットが大きくなっている理由ですが、平常走行に加え、通常の走行を外れた場合のリカバリー等のデータや、環境の違いなどを吸収するために、この規模になっていった感じです。

3000データセットの規模ですと、Jetson上での学習が難しくなるために、Colab上での学習をおこないました。

[Colab Notebook] FaBo Jetracer Cloud

また、当日作成したデータセットも下記URLで公開していますので、参考にしてください。

自動運転ミニカーバトル データセット

環境情報の学習方法

周回の認識は、resnet18の転移学習で、クラス分類のモデルを用いて識別しています。

  • スタート
  • コース
  • その他

を3分類で、分類しスタートのが連続して出現する個所で、Lapの更新をして周回を認識しました。

ここで認識した周回で、1,3,5週目は通常走行のモデル、2,4週目はショートカット走行のモデルに切り替え走行をおこなっています。

走行モデルと環境情報モデル

走行モデルと環境情報モデルついては、NVIDIA Deep Learning Institute の入門者向けの教材で使われているモデル(分類と回帰)と同じものを使用しています。 もっと詳しく知りたい方は、NVIDIA Deep Learning Institute を受講してみてください。Jetson Nanoがあれば、動作させる事ができます。

来年のレースに向けての課題

現在のJetRacerの仕組みは、直感的な認識をベースにした走行になっており、高度な空間認識ができているわけではありません。次年度に向けてはTransformerでの学習モデルをベースに、RCカーの走行履歴、IMUの値、距離センサー、カメラ画像などの学習を通して、RCカーの空間認識にトライしていく予定です。Transfomerモデルで、非言語情報の大規模学習を通して、昆虫のような空間認識を構築できないかと妄想中です。

また、JetRacerは、Sim2Realもうまく動く事がわかっています。Sim2Realのレースへの応用や、強化学習にもトライしていきたいと考えています。