UnityでOBR SLAM3を動かしてみた。環境はWindows上でUnityを動かし、WSL上でOBR SLAM3を動かしている。
動作としては以下のような感じ。動いてはいるものの、マップ生成は全くうまくいっていない。
前準備
以下に通信用のコード(Linon_SDK)が置いてあるのでダウンロードしておく。
GitHub - wooolwooolwoool/Linon_SDK
OBR SLAM3側
以下のページを参考に、WSLにOBR SLAM3をインストールする。
WSLでORB SLAM3を動かす(完成版) - ぼうびろく
build.sh実行前に、Linon_SDKに以下のコードが入っているので差し替えておく。
- mono_inertial_euroc.cc
Unity側
今回は町として以下のパッケージを使うのでインポートしておく。特に制限はないので、使いたい街を使ってもOK。
File -> Open Sceneから以下のファイルを開く。
- Assets/CityVoxelPack/DemoScenes/Demo.unity
CubeObjectを作成して、CubeMove.csをアタッチする。
CubeObjectにカメラを追加し、カメラにcamera_udp.csをアタッチし、ip_addをWSLのIPアドレス(172.21..となっているもの)に変更する。(アップデートでlocalhostでも通信できるようになったらしいので不要かも。)
オブジェクトの向き、位置、方向を調整する。
実行
- Unity側で再生を押す。
OBR SLAM3側で以下のコマンドを実行する。
$ ./Examples/Monocular-Inertial/mono_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular-Inertial/EuRoC.yaml ../Datasets/EuRoc/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt dataset-MH01_mono
- ウィンドウが表示された後、Unity側でCubeを動かすとFrameとMapが表示される。