ORB_SLAM2 環境構築

今回はORB-SLAM2をPCに導入していきます。
 ORB-SLAM2は、スペインのサラゴサ大学の研究機関が論文ソースコードを公開しているプロジェクトです。プロジェクトのウェブページもあります。単眼カメラ、ステレオカメラ、RGB-Dカメラのいずれかを使ってリアルタイムで特徴点ベースのSLAMが行えます。カメラ映像からオドメトリや疎な点郡で3D空間を再現します。LSD-SLAMよりもおそらくオドメトリの精度は上がります。
 導入はLSD-SLAMに比べるとかなり大変でした。terminalを使って導入します。自分はUbuntu14.04でもUbuntu16.04でも試しました。導入途中で出たエラーについては別のページにまとめました。
sh090.hatenablog.com

導入に必要なライブラリと、その依存関係は大体こんな感じかと思います。

ORB-SLAM2
	|-Pangolin
	|	 |-LIBUVC
	|	 |-OpenGL
	|-g2o
	|   |-Eigen3
	|   |-OpenGL
	|-DBoW2
	|     |-OpenCV
	|-(ROS)
  • Pangolinの依存ライブラリのインストール

OpenGLのインストール

sudo apt-get update
sudo apt-get install libglu1-mesa-dev 
sudo apt-get install libglew-dev

LIBUVCの依存ライブラリのインストール

// https://packages.ubuntu.com/ja/source/bionic/libuvc
sudo apt-get install libjpeg-dev
sudo apt-get install cmake
sudo apt-get install libusb-1.0-0-dev

LIBUVCのインストール

sudo apt-get install git
cd ~
git clone git://github.com/ktossell/libuvc.git
cd libuvc
mkdir build
cd build
cmake ..
make
sudo make install

その他のPangolinの依存ライブラリのインストール

sudo apt-get install libpython2.7-dev
sudo apt-get install libavcodec-dev libavutil-dev libavformat-dev libswscale-dev
sudo apt-get install libdc1394-22-dev libraw1394-dev
sudo apt-get install libpng12-dev libtiff5-dev libopenexr-dev
  • Pangolin(描画ライブラリ)のインストール
cd ~
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .
sudo make install
  • Eigen3(行列計算ライブラリ)のインストール

自分は一番新しい3.3.7のリリース版を入れました。以下のサイトからEigenの3.3.7のtarファイルのリンクを探しました。make checkでいくつかエラーが発生しましたが、構わずにインストールしました。それでも問題なくORB_SLAM2は動きました。make checkはなくてもインストールできました。異様に長いので飛ばしても大丈夫かと思います。
http://eigen.tuxfamily.org/index.php?title=Main_Page

cd ~
wget https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz
tar xvf eigen-3.3.7.tar.gz
mkdir build
cd build
cmake ..
make check
sudo make install
  • OpenCV(コンピュータビジョンのライブラリ)のインストール

OpenCVの依存ライブラリのインストール

sudo apt-get install build-essential
sudo apt-get install libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libpng-dev libtiff-dev libjasper-dev

Ubuntu 14.04の場合はOpenCV 2.4.8~2.4.x
Ubuntu 16.04の場合はOpenCV 3.x
を使用しないとROS実行時にエラーが出るかもです。
自分は3.1.0を入れました。以下のサイトからOpenCVのリリース版のtarファイルのリンクを探しました。
https://opencv.org/releases/

cd ~
wget https://github.com/opencv/opencv/archive/3.1.0.tar.gz
tar xvf 3.1.0.tar.gz
cd opencv-3.1.0
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j4
sudo make install
  • g2oのインストール

g2o依存ライブラリのインストール

sudo apt install libsuitesparse-dev - qtdeclarative5-dev - qt5-qmake - libqglviewer-dev

g2oのインストール

cd ~
git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o
mkdir build
cd build
cmake ..
make
sudo make install
  • DBoW2のインストール

「Ubuntu14.04の場合」
Ubuntu14.04だと少し厄介です。16.04では大丈夫です。
OpenCV 3.xのバージョンだとDBoW2の最新バージョンのインストールは行えます。しかし、それがUbuntu14.04+ROS indigoの環境だと、結局ROS実行時にエラーが出て動きませんでした。なのでOpenCV2.4.xを使うと今度はDBoW2の最新バージョンが入りません。DBoW2の古いバージョンを使うことになります。その場合は以下のDLibとDLoopDetectorをインストールしてから、DBoW2 v1.0を入れてください。
https://github.com/dorian3d/DLib/releases/tag/v1.0
https://github.com/dorian3d/DLoopDetector/releases/tag/v1.0
https://github.com/dorian3d/DBoW2/releases/tag/v1.0

cd ~
wget https://github.com/dorian3d/DBoW2/archive/v1.0.tar.gz
cd DBoW2-1.0
mkdir build
cd build
cmake ..
make
sudo make install

「Ubuntu16.06の場合」
DBoW2の最新バージョンならインストールする際にDLibなども一緒に入ってくれますので以下のコマンドだけでいけます。

cd ~
git clone https://github.com/dorian3d/DBoW2.git
cd DBoW2
mkdir build
cd build
cmake ..
make
sudo make install
  • ROSのインストール

Ubuntu14.04の場合はROS indigo(http://wiki.ros.org/ja/indigo/Installation/Ubuntu)
Ubuntu16.04の場合はROS kinetic(http://wiki.ros.org/ja/kinetic/Installation/Ubuntu)
に従ってインストールを行なってください。以下のコマンドはROS indigoをインストールした際のコマンドです。

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list'
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
sudo apt-get update
sudo apt-get install ros-indigo-desktop-full
sudo rosdep init
rosdep update
echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
source ~/.bashrc
sudo apt-get install python-rosinstall
  • ORB_SLAM2のインストール
cd ~
git clone https://github.com/raulmur/ORB_SLAM2.git
cd ORB_SLAM2
chmod +x build.sh
./build.sh

ここまででも一応ROSを利用せず、単独でなら動かせるので動作確認してもみてもいいかもしれません。
次にROS上でのビルドです。

cd ~/ORB_SLAM2
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/ORB_SLAM2/Examples/ROS
chmod +x build_ros.sh
./build_ros.sh

cd ~/ORB_SLAM2/Examples
rosws init . /opt/ros/indigo
rosws set ./ROS -t . 
source ./setup.bash
source ~/ORB_SLAM2/Examples/setup.bash
cd ./ROS
rosmake ORB_SLAM2

ようやくインストール完了です。