Boundary Blur:球体型ロボットと複合現実を活用したマルチエージェントシステム
1. はじめに
現実空間に存在する球体型ロボットと仮想空間のAIエージェントが連携してタスクを遂行することを目指している。しかし、物理空間と仮想空間をシームレスに接続することは困難である。さらに、球体ロボットの動きを正確に制御し、物理ロボットと仮想AIエージェントの双方向の相互作用を実現するためには高度なAI技術が必要である。また、直感的な操作体験を提供するためのインターフェースを開発する際にも技術的な課題が存在する。
本作品では、球体型ロボット omicroと複合現実を活用したマルチエージェントシステム Boundary Blurを提案する。
2. 提案システム
2.1 設計方針
提案システムの目的は、現実空間と仮想空間のエージェントが連携してタスクを遂行することである。このために、スマートフォンやApple Watchから操作できる球体型ロボットボール「omicro」と、複合現実を活用したマルチエージェントシステム「Boundary Blur」を構築する。
2.2 システム構成
システムの利用手順は以下の通りである。
- 球型ロボットを設置する場所の選定を行い、床や壁が反射しやすい場合は、反射を避けるために黒のシートを床に敷く。LEDと同色の光を放つプロダクトの近くは避ける。
- 球型ロボットの電源を入れ、iPhoneアプリケーションとBLEで接続する。複数の球型ロボットと接続する際は、iPhoneアプリを複数接続モードに切り替える。
- 球型ロボットで電子コンパスのキャリブレーションを行う。このキャリブレーションはiOSアプリから実施する。
- iPad Proを三脚で固定し、球型ロボットがiPadのカメラの画角に入るように設置する。iPad Proの設定高さは地上から130cm前後にする。
- iPad ProでUnityアプリケーションを起動し、メッシュモードをオンにして床やオブジェクトをメッシュ化する。必要に応じて、移動可能エリアを指定する仮想障害物を空間に設置する。
- iPad Pro上で動作するUnityアプリと球体型ロボットの操作に使用しているiOSアプリをBluetoothで接続し、iOSアプリを経由して球体型ロボットの電子コンパスから取得した方位情報をUnityアプリに渡す。
- UnityアプリケーションでOpenCVモードをオンにし、球体型ロボットの中心点を取得する。動作環境が明るすぎたり暗すぎる場合は、OpenCVモードの2値化の色範囲を調整し、AR空間上に球型ロボットのデジタルツインを表示させる。環境光の影響で検出位置がずれるため、OpenCV検出位置の補正機能を用いて、奥行きや縦横の位置を手動で調整する。
- 球型ロボットをiOSやwatchOSアプリケーションで操作する。球型ロボットのデジタルツインがAR空間上で衝突した場合は、その状態をハードウェアの球型ロボットにフィードバックする。
- AR空間上で球体型ロボットを追尾するゲームAIを稼働させる。ゲームAIが現実空間に存在する球体型ロボットと接触すると、現実の球体型ロボットは回避行動を起こす。追尾と回避を繰り返し、結果として球体型ロボットが自動で動き続ける。
2.2.1 球型ロボット
詳細については以下をご参照ください。
omicro:自走式球体型ロボット
2.3.4 Unityアプリケーション
本システムの中核をなす「Boundary Blur」と名付けられた複合現実アプリは、Unityで開発されている。ARFoundationを用いてARKitの機能を活用し、PlaneDetection、LiDAR情報に基づく空間のMesh化、HumanStencilを用いた人間の位置取得、仮想オブジェクトの設置、そしてShaderやVFXGraphを用いた視覚効果は全てARFoundationと組み合わせて行っている。
球体型ロボットの位置取得は、OpenCVを用いて行われる。アプリケーションで取得した画像をもとに、球体型ロボットのLEDの青色を基準にして2値化し、ボール型ロボットの中心座標を取得する。取得した中心座標に対してARFoundationでRaycastを行い、ボールの奥行き情報を取得する。AR空間上の仮想座標に球型ロボットのデジタルツインを配置し、デジタルツインがAR空間内でARによって出現させた別のGameObjectと衝突した場合は、ハードウェアの球型ロボットにもフィードバックを返すようにしている。
球型ロボットの向きの取得は、このアプリケーションでは行えないので、ハードウェア側でデジタルコンパスを用いて方位を計算し、それをUnityアプリ側に返す形をとっている。
Boundary Blurは、iPad ProのLiDARやコンピュータビジョンライブラリを用いて現実空間の上にデジタルツインをリアルタイムで作成し、その上で動くゲームAIが起こした事象が現実空間に存在する球体型ロボットに反映される。また、現実に存在する球体型ロボットに仮想空間上での質量を与えており、現実のロボットが動くと、仮想空間上のゲームAIやゲームオブジェクトにも影響を与える。