本記事は Udemy Advent Calendar 2020 (12/6) 寄稿記事として掲載しています。
Advent Calendarには別テーマですが昨年も参加しており、以下の記事を書かせていただきました。
RCカーを自律走行化するためのOSS Donkeycar を流用して、タミヤのキャタピラ車を自律走行化させたという内容でした。
この Donkeycar のAIは、いわゆる「教師あり学習」という手法をとっていました。最初に手動で走行して学習データを取得してから、トレーニング処理にかけ、学習済みモデルファイルを生成、Raspberry Pi上にデプロイして自律走行させるプログラムを実行する、という流れになります。
学習データとして必要なデータ量は公式ドキュメントでは 2万件 ほど必要と書かれています(実際には1万件以上でも動作します)。1/20秒ごとに1件取得できるので、単純計算で17分弱の手動走行が必要になります。
..が、これがめんどくさくなってきたので、「強化学習」化しようと考えました。
注意
Donkeycarには Donkey Simulator を使ったOpenAI Gym準拠の強化学習環境 gym-donkeycar があります。
標準的な Donkeycar の場合はこちらで十分ですが、私のつくった車(?)はキャタピラ車なので、そのままでは使用できません。
ただ、DonkeycarのAIの引数は画像イメージなので、このデータをプログラムで生成しなくてはなりません。
つまり Unity や Unreal Engine などの物理エンジンの入った2D/3Dプログラム開発ツールを使ってシミュレータを作る必要があるのです。
でも..Unityなんてまったく知らない..
いろいろ考えた結果、以下のUdemy講座を見つけました。
この講座は、AIが操作する飛行機と、自分の飛行機とでコースを周回するゲームを構築するという内容です。
Blenderで飛行機や障害物(岩)、コース(地面)をモデリングして、Unity上にとりこみ、振る舞いをC++で実装、ML-Agentというプラグインを使って学習済みモデルファイルを作成し、ゲーム化していくという流れになっています。
AI本体は、Donkeycar上にあるのでこの講座で紹介している内容では、飛行機がUnityの物理エンジンで動作するシミュレータ環境を作るところまでが流用できそう..ということで早速受講しました。
ただ..この講座.. 英語 ..なんですよね..
でも、講座の内容がほぼほぼ手順紹介動画なので、操作している動画だけを見て、なんとなくわかる用語をちょこちょこ把握しながら内容を掴むことはできました(このUdemy講座はキャプションがつくのでありがたかったです)。
手順はわかったので..いざシミュレータを作ろうとしたのですが..作ったエージェント(つまり自分が作ったDonkeycar)が複雑すぎて...正直、Blenderのところで手が止まっています..
..キャタピラを Blenderで表現するのが..難しい!
ただ、通常の4輪であれば上記講座を流用してシミュレータは作れると思いますので、ためしてみるのはいかがでしょうか。
ゲームで敵プレイヤーをAIで実装したい人にも、おすすめです。
p.s.
今年は PyTorch Advent Calendar にも寄稿しております。
こちらも、よければご笑覧ください。