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
ようやくインストール完了です。