![見出し画像](https://assets.st-note.com/production/uploads/images/49954518/rectangle_large_type_2_f72649504d42127dade46ae6d36bc1db.png?width=800)
Unity ML-Agents と toio によるサッカーロボットの強化学習
「AI・人工知能EXPO 2021 【春】」の「ギリア」ブースにて、「Unity ML-Agents」 と「toio」によるサッカーロボットの強化学習を展示しました。
動画を撮ってくれた人がいました。ありがとうございます。
ソニー、強化学習により自律的に動く8台のサッカーロボットを展示。Unity-MLで学習した後、iphone単体で推論を行うらしい。8台の自律ロボット、すごい。
— S Choe (@wireless_power) April 9, 2021
個人的にAI Expoの中で最も面白い展示だった。#AI #Expo #Sony #強化学習 pic.twitter.com/OJRBSnI8Ta
「toio」はiPhoneでBluetooth経由で制御されており、1台のiPhoneで8台分の「toio」の推論を行っています。
今回は、「Unity ML-Agents」と「toio」によるサッカーロボットの強化学習の作成の流れを紹介します。
【ステップ1】 Unity ML-Agentsのみでサッカーロボットを強化学習
はじめに、「Unity ML-Agents」のみでサッカーの強化学習を行いました。「Unity ML-Agents」にはサッカーの強化学習のサンプルがあるので、それをベースとしました。
![画像1](https://assets.st-note.com/production/uploads/images/49971918/picture_pc_9c9cd53da7b8e000e163a1018fd8bf67.png?width=800)
主な変更点は、次のとおりです。
・2 vs 2だと寂しいので4 vs 4に人数増やす。
・toioは横移動できないので横移動はなしに。
・周囲をより観察できるようにレイを増やす。
・コートを実世界で作るレゴのコートの形に変更。
![画像2](https://assets.st-note.com/production/uploads/images/49972697/picture_pc_1897509e2788f1c67860e4b668395f2b.png?width=800)
この学習環境で強化学習して、問題なく学習できることを確認しました。
【ステップ2】 toio SDK for UnityのCubeとMatを学習環境に組み込む
次に、「toio SDK for Unity」の「Cube」と「Mat」を学習環境に組み込みました。これによって、Unityのシミュレータで「toio」の動きを正確にシミュレートできるだけでなく、iOSビルドするだけでiPhoneから実機の「toio」を動かすことができるようになります。
![画像3](https://assets.st-note.com/production/uploads/images/49973034/picture_pc_17e7eb5ff1655bb4f71a3e5d4b02ec03.png?width=800)
この学習環境で学習して、問題なく学習できることを確認しました。
「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日学習させて完成になります。
関連
この記事が気に入ったらサポートをしてみませんか?