WSLでORB SLAM3を動かす(完成版)

以前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