以前ORB SLAM3を動かしてみたが、それを参考に今回はスクラッチでやってみた。これをすべてやれば動くとこまで行くはず。何かエラーがあればコメントまで。
ORB_SLAM3のビルド
OpenCVはaptでインストールされるものだとバージョンが古いので、ソースからビルドする必要あり。22.04ならいけるかも。
#!/bin/bash -eu sudo apt update sudo apt install -y libgl1-mesa-dev libglew-dev cmake pkg-config libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libavdevice-dev libjpeg-dev libtiff5-dev libopenexr-dev python3-pip g++ git gcc libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libopencv-dev libssl-dev libopencv-dev libboost-filesystem-dev libboost-serialization-dev cmake ffmpeg python3 python3-dev libeigen3-dev build-essential libssl-dev libboost-filesystem-dev libboost-serialization-dev gedit mkdir SLAM export WORKDIR=`pwd`/SLAM # build opencv cd $WORKDIR # build Pangolin cd $WORKDIR git clone --recursive https://github.com/stevenlovegrove/Pangolin.git cd Pangolin mkdir build && cd build cmake .. cmake --build . # build ORB_SLAM3 cd $WORKDIR git clone https://github.com/UZ-SLAMLab/ORB_SLAM3 cd ORB_SLAM3 sed -i 's/++11/++14/g' CMakeLists.txt ./build.sh
GUIアプリ動作の準備
※11/26更新
echo 'export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '\''{print $2}'\''):0.0' >> ~/.bashrc source ~/.bashrc
サンプルの実行
※2022/11/06:データセットパス修正しました。
cd $WORKDIR mkdir -p Datasets/EuRoc/ cd Datasets/EuRoc/ wget -c http://robotics.ethz.ch/~asl-datasets/ijrr_euroc_mav_dataset/machine_hall/MH_01_easy/MH_01_easy.zip mkdir MH01 unzip MH_01_easy.zip -d MH01/ cd $WORKDIR/ORB_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
これで以下のような画面が出ればOK。
トラブルシューティング
データセットのパスが違うと、以下のようなログで停止する。(エラーは発生しない)この時はデータセットパスを修正。
$ ./Examples/Monocular-Inertial/mono_inertial_euroc_bak ./Vocabulary/ORBvoc.t xt ./Examples/Monocular-Inertial/EuRoC.yaml Datasets/EuRoc/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt datase t-MH01_mono num_seq = 1 file name: dataset-MH01_mono Loading images for sequence 0...LOADED!
参考
Setting up a virtual machine with ORB SLAM 3 | by Tristan BRAUD | Medium
error: ‘slots_reference’ was not declared in this scope · Issue #387 · UZ-SLAMLab/ORB_SLAM3 · GitHub