ドローンをVRHMDで操作するアプリの開発
OVERVIEW
TelloとMetaQuestをソケット通信で繋げ、ドローンのカメラ映像を仮想空間に表示し、コントローラで操作出来るようなアプリをUnityで製作
開発の動機
修士1年の春頃にTelloを購入。カメラ搭載であるため、VRと組み合わせることで実際に飛んでいるような体験ができるのではと考え、開発を開始した。
開発過程
Telloは特定のポートにコマンドを送ればその通りに動く仕組みのため、コントローラによる操作はすぐにできたが、カメラ映像をVRHMDに表示する処理に大変苦しんだ。Tello公式が提供するサンプルスクリプトはPythonで作られたもので、描画処理にはOpenCVを使用していたが、Unityにはリアルタイムにデコードし描画するアセットが存在しなかった。そのため、デコードおよび描画の処理を自作する必要が生じた。そこでAndroidAPIのMedia Codecに目をつけ、プラグインを製作した。しかし、仮想空間に表示された映像は崩れていたり色ずれが起きていた。この問題の原因は7分割して送られてくる映像データを誤った分割数でデコード処理していたことであった。Wire Sharkを使用してTelloから送られてくるデータを解析することで判明した。

失敗したプラグインを使用した際の映像。色ずれやノイズが発生していました。

正常に動作した際の映像。しっかりとドローンのカメラ映像が表示されました。
完成したアプリを試したところ、空を飛んでいるような体験ができ、大変満足のいくものになりましたが、人によってはVR酔いを生じさせたり、ドローン側の制御やカメラ位置に課題があることがわかりました。 今後はこうした課題を解決し、オープンキャンパスなどで公開できるようにしていきたいと考えています。
