Boundary Blur:球体型ロボットと複合現実を活用したマルチエージェントシステム

1. はじめに

ロボットを用いたデモンストレーションは展示会で数多く見受けられる。本作品の作者もSTEAM教育用の球体型のロボット omicroを自作し、それを用いたデモンストレーションを行ってる。手動で複数のロボットの複雑な操作を行うことは難しいため、群制御で行えるようにしたいと考えている。
一方で、球体型ロボットの群制御をハードウェア側で行う場合、プラスチック球体がセンシングデバイスに影響を与えるため、内部センサによる周辺の正確な位置の取得が難しい問題がある。また球体が透明なため機械学習による物体検出も精度が出づらいという問題もある。

本作品では、球体型ロボット omicroと複合現実を活用したマルチエージェントシステム Boundary Blur(旧名omicro balloid)を提案する。

2. 提案システム

2.1 設計方針

提案システムの目的は、球体型ロボットの制御を補助し、複雑な操作デモンストレーションを安定して行うことである。このために、スマートフォンやApple Watchから操作可能な球体型ロボットボール「omicro」と、複合現実及び自律型AIを用いた球体型ロボットの群制御補助システムの構築を行う。

2.2 システム構成

システムの利用手順は以下の通りである。

  1. 球型ロボットを設置する場所の選定を行い、床や壁が反射しやすい場合は、反射を避けるために黒のシートを床に敷く。LEDと同色の光を放つプロダクトの近くは避ける。
  2. 球型ロボットの電源を入れ、iPhoneアプリケーションとBLEで接続する。複数の球型ロボットと接続する際は、iPhoneアプリを複数接続モードに切り替える。
  3. 球型ロボットで電子コンパスのキャリブレーションを行う。このキャリブレーションはiOSアプリから実施する。
  4. iPad Proを三脚で固定し、球型ロボットがiPadのカメラの画角に入るように設置する。iPad Proの設定高さは地上から130cm前後にする。
  5. iPad ProでUnityアプリケーションを起動し、メッシュモードをオンにして床やオブジェクトをメッシュ化する。必要に応じて、移動可能エリアを指定する仮想障害物を空間に設置する。
  6. iPad Pro上で動作するUnityアプリと球体型ロボットの操作に使用しているiOSアプリをBluetoothで接続し、iOSアプリを経由して球体型ロボットの電子コンパスから取得した方位情報をUnityアプリに渡す。
  7. UnityアプリケーションでOpenCVモードをオンにし、球体型ロボットの中心点を取得する。動作環境が明るすぎたり暗すぎる場合は、OpenCVモードの2値化の色範囲を調整し、AR空間上に球型ロボットのデジタルツインを表示させる。環境光の影響で検出位置がずれるため、OpenCV検出位置の補正機能を用いて、奥行きや縦横の位置を手動で調整する。
  8. 球型ロボットをiOSやwatchOSアプリケーションで操作する。球型ロボットのデジタルツインがAR空間上で衝突した場合は、その状態をハードウェアの球型ロボットにフィードバックする。
  9. 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やゲームオブジェクトにも影響を与える。