OpenVSLAMをmacOSにインストールする手順(2021年版)
OpenVSLAMのドキュメントのインストール手順に沿ってOpenVSLAMをmacOSにインストールしようとすると、g2oのインストールの際に'omp.h' file not found
、OpenVSLAMのビルドの際にld: library not found for -lfbow
のエラーとなり、OpenVSLAMをインストールすることができません。
そこで、2021年8月時点のmacOS 11.4にOpenVSLAMのmainブランチ(ccaff30)をインストールできた際の手順を残しておきます。
リポジトリーのクローン
cd /path/to/working/dir
git clone https://github.com/OpenVSLAM-Community/openvslam.git
cd openvslam
git submodule update -i --recursive
依存するライブラリー等のインストール
OpenVSLAMのインストールに必要なpkg-config、cmake、git、suite-sparse、eigen、ffmpeg、opencv、yaml-cpp、glog、gflags、glewをHomebrewを使ってインストールします。
brew update
brew install pkg-config cmake git
brew install suite-sparse
brew install eigen
brew install ffmpeg
brew install opencv
brew install yaml-cpp glog gflags
brew install glew
FBoWのインストール
cd /path/to/working/dir
git clone https://github.com/OpenVSLAM-Community/FBoW.git
cd FBoW
mkdir build && cd build
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
..
make -j4
make install
g2oのインストール
macOSのコンパイラーはOpenMPをサポートしていないため、'omp.h' file not found
のエラーとなります。
そこで、LLVMの中でClangを使用するとこの問題を解決できます。
cmakeのオプションに-DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang -DCMAKE_CXX_COMPILER=/usr/local/opt/llvm/bin/clang++
を追加し、次のような手順を実行します。
cd /path/to/working/dir
git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o
mkdir build && cd build
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DCMAKE_CXX_FLAGS=-std=c++11 \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_UNITTESTS=OFF \
-DG2O_USE_CHOLMOD=OFF \
-DG2O_USE_CSPARSE=ON \
-DG2O_USE_OPENGL=OFF \
-DG2O_USE_OPENMP=ON \
.. -DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang -DCMAKE_CXX_COMPILER=/usr/local/opt/llvm/bin/clang++
make -j4
make install
これでg2oをインストールできました。
PangolinViewerのインストール
cd /path/to/working/dir
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build && cd build
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
..
make -j4
make install
OpenVSLAMのビルド
Build Instructionsのとおりにビルドを実行すると、ld: library not found for -lfbow
のエラーとなりビルドが完了しません。
この問題を解決するためにexport LIBRARY_PATH=/usr/local/lib/
を実施した後にcmake
、make
を実行します。
cd /path/to/openvslam
mkdir build && cd build
export LIBRARY_PATH=/usr/local/lib/
cmake \
-DUSE_PANGOLIN_VIEWER=ON \
-DINSTALL_PANGOLIN_VIEWER=ON \
-DUSE_SOCKET_PUBLISHER=OFF \
-DUSE_STACK_TRACE_LOGGER=ON \
-DBUILD_TESTS=ON \
-DBUILD_EXAMPLES=ON \
..
make -j4
これでOpenVSLAMのビルドが完了しました。
テストのために./run_kitti_slam -h
を実行し、次のような出力が得られることを確認します。
$ ./run_kitti_slam -h
Allowed options:
-h, --help produce help message
-v, --vocab arg vocabulary file path
-d, --data-dir arg directory path which contains dataset
-c, --config arg config file path
--frame-skip arg (=1) interval of frame skip
--no-sleep not wait for next frame in real time
--auto-term automatically terminate the viewer
--debug debug mode
--eval-log store trajectory and tracking times for evaluation
-p, --map-db arg store a map database at this path after SLAM
OpenVSLAMの公式サイトのTracking and Mappingの例を試して動作を確認します。
./run_video_slam \
-v ./orb_vocab.fbow \
-c ../example/aist/equirectangular.yaml \
-m ./aist_living_lab_1/video.mp4 \
--frame-skip 3 \
--map-db aist_living_lab_1_map.msg
図1のように、Pangolinでマップが表示され、macOS 11.4にOpenVSLAMがインストールできて動作することを確認できました。