見出し画像

Unity ML-Agents と toio によるサッカーロボットの強化学習

「AI・人工知能EXPO 2021 【春】」の「ギリア」ブースにて、「Unity ML-Agents」 と「toio」によるサッカーロボットの強化学習を展示しました。

動画を撮ってくれた人がいました。ありがとうございます。

「toio」はiPhoneでBluetooth経由で制御されており、1台のiPhoneで8台分の「toio」の推論を行っています。

今回は、「Unity ML-Agents」と「toio」によるサッカーロボットの強化学習の作成の流れを紹介します。

【ステップ1】 Unity ML-Agentsのみでサッカーロボットを強化学習

はじめに、「Unity ML-Agents」のみでサッカーの強化学習を行いました。「Unity ML-Agents」にはサッカーの強化学習のサンプルがあるので、それをベースとしました。

画像1

主な変更点は、次のとおりです。

・2 vs 2だと寂しいので4 vs 4に人数増やす。
・toioは横移動できないので横移動はなしに。
・周囲をより観察できるようにレイを増やす。

・コートを実世界で作るレゴのコートの形に変更。

画像2

この学習環境で強化学習して、問題なく学習できることを確認しました。

【ステップ2】 toio SDK for UnityのCubeとMatを学習環境に組み込む

次に、「toio SDK for Unity」の「Cube」と「Mat」を学習環境に組み込みました。これによって、Unityのシミュレータで「toio」の動きを正確にシミュレートできるだけでなく、iOSビルドするだけでiPhoneから実機の「toio」を動かすことができるようになります。

画像3

この学習環境で学習して、問題なく学習できることを確認しました。

「Unity ML-Agents」と「toio SDK for Unity」を組み合わせる 方法は、以下で紹介しています。

【ステップ3】 iPhoneから実機のtoioを動かす

次に、学習環境をiOSビルドして、iPhoneから実機の「toio」を動かします。

この時、iPhone上で動くシミュレータの「toio」と実機の「toio」は、「toio SDK for Unity」によって自動的に同期されますが、「ボール」は同期しないので、「OpenCV for Unity」を使ってiPhoneのカメラ映像からボールの位置を計算するようにしました。

さらに、「ボール」がゴールに入ったら、「toio」を初期位置に整列するように、ルールベースの命令を追加しました。

「OpenCV for Unity」の使い方は、以下で紹介しています。

【ステップ4】 シミュレータと実機のギャップの調整

最後に、シミュレータのみでの「toio」と、実機を組み合わせた時の「toio」の動作を目視で確認して、異なる点を調べ、同じになるように調整します。

・床の微妙な傾きの調整
・ボールの重さやバウンドの調整
・toioの移動速度と回転速度の調整

・推論と画像処理のチューニング

調整済みの学習環境で2・3日学習させて完成になります。

関連



いいなと思ったら応援しよう!