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」にはサッカーの強化学習のサンプルがあるので、それをベースとしました。
主な変更点は、次のとおりです。
この学習環境で強化学習して、問題なく学習できることを確認しました。
【ステップ2】 toio SDK for UnityのCubeとMatを学習環境に組み込む
次に、「toio SDK for Unity」の「Cube」と「Mat」を学習環境に組み込みました。これによって、Unityのシミュレータで「toio」の動きを正確にシミュレートできるだけでなく、iOSビルドするだけでiPhoneから実機の「toio」を動かすことができるようになります。
この学習環境で学習して、問題なく学習できることを確認しました。
「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」の動作を目視で確認して、異なる点を調べ、同じになるように調整します。
調整済みの学習環境で2・3日学習させて完成になります。