OpenVSLAMをmacOSにインストールする手順(2021年版)

作成日
キーワード
OpenVSLAM macOS SLAM

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/を実施した後にcmakemakeを実行します。

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がインストールできて動作することを確認できました。

図1: aist_living_lab_1のデータを使用してOpenVSLAMのtrackign and mappingの例を実行している様子