前回までのえんせき
LSD_SLAMをUbuntu16.04上で動かそうとして見事撃沈。長引きそうなのでORB_SLAM2にターゲットチェンジすることにした。
どっちがいいのかとかまではよくわかっていないけど、外で使うならORB_SLAM2が今は一番良さそうらしい。
ensekitt.hatenablog.com
つまりなにしたの?
Ubuntu16.04で動くVisual SLAMがやってみたくてLSD_SLAMを諦めてORB_SLAM2に手を出した話。
ORB_SLAMについて
どうやらわりと最高レベルの精度を持っている様子
(なんでこっちを最初にやらなかったのかというと、LSD_SLAMのほうがプリミティブなアルゴリズムで動いていて理解しやすそうだったから。
理解できたとは言っていない。理解できていたら自前で実装してる。)
というわけで将来的に全天球カメラとかも試してみたいので、ORB_SLAM2を触ってみたいと思います。
github.com
依存関係のインストール
Pangolin
OpenGLでUIを作りやすくするためにあるものみたい。
Pangolinはアリクイみたいな見た目の哺乳類の名前だって。日本語だとセンザンコウ。初めて聞いた。
github.com
Pangolinのインストール
- apt-getで入れられる系
sudo apt-get install libglew-dev sudo apt-get install cmake sudo apt-get install libpython2.7-dev sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev sudo apt-get install libdc1394-22-dev libraw1394-dev sudo apt-get install libjpeg-dev libpng12-dev libtiff5-dev libopenexr-dev
すでに入れてあったものも含まれているけど気にせずインストールする。
(CUDAはもともと入っていたので割愛。ない人もいるしね。。。)
- OpenGLのインストール
普通にmesa-utilsとmesa-utils-extraをインストールしたらエラーをはいたので、対処する。
askubuntu.com
sudo apt purge nvidia-367 nvidia-opencl-icd-375 nvidia-375 nvidia-prime nvidia-settings sudo apt-get install --reinstall xserver-xorg-video-intel libgl1-mesa-glx libgl1-mesa-dri xserver-xorg-core
nvidia関連のパッケージを軒並みパージしてX関連のパッケージとOpenGL関連のパッケージをインストールした。
- LIBUVCのインストール
mkdir ~/libuvc_ws cd ~/libuvc_ws git clone git://github.com/ktossell/libuvc.git cd libuvc mkdir build cd build cmake .. make sudo make install
ディレクトリ(libuvc_ws)は勝手に決めただけなのでなんでも良い。
- Pangolin本体のインストール
mkdir ~/pangolin_ws cd ~/pangolin_ws git clone https://github.com/stevenlovegrove/Pangolin.git cd Pangolin mkdir build cd build cmake .. cmake --build . sudo make install
ディレクトリ(pangolin_ws)は勝手に決めただけなのでなんでも良い。
OpenCVのインストール
画像処理(コンピュータビジョン)に関するライブラリ
OpenCV: Installation in Linux
を見ながらやる。
ほとんどすでに入れてあると思うけど、順番に実行していく。
- apt-getで入れられる系
sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
- OpenCV本体のインストール
mkdir ~/opencv_ws cd ~/opencv_ws git clone https://github.com/opencv/opencv.git cd opencv mkdir build cd build cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. make -j7 sudo make install
Eigen3のインストール
線形代数をやるなら入っているであろうライブラリ。
Eigen: Getting started
を見ながらやる。
mkdir ~/eigen_ws cd ~/eigen_ws wget http://bitbucket.org/eigen/eigen/get/3.3.4.tar.gz tar -zxf 3.3.4.tar.gz cd eigen-eigen-5a0156e40feb mkdir build cd build cmake .. make check sudo make install
g2oのインストール
グラフベースの非線形最適化をやるためのライブラリ。
github.com
を見ながらやる。
依存しているライブラリ(すでに入れてある): cmake, eigen3
- Optionだけど一応入れるものたち(Day-4 でややこしくなったQtを清算した形)
sudo apt install libsuitesparse-dev - qtdeclarative5-dev - qt5-qmake - libqglviewer-dev mkdir ~/g2o_ws cd ~/g2o_ws git clone https://github.com/RainerKuemmerle/g2o.git cd g2o mkdir build cd build cmake .. make sudo make install
DBoW2のインストール
特徴量記述のためのBRIEFとか、それの回転不変性をもたせたORBを扱うためのライブラリ。
歪んだり回転したりしててもこれで出した特徴量ならかなり早くマッチングできるらしい。
github.com
sudo apt-get install libboost-dev mkdir ~/DBoW2_ws cd ~/DBoW2_ws git clone https://github.com/dorian3d/DBoW2.git cd DBoW2 mkdir build cd build cmake .. make sudo make install
ROSのインストール
Day-4のROS部分参照
ORB-SLAM2のインストール
やっとORB-SLAM2のインストールに着手(LSD_SLAMの苦い思い出でなんかうまくいかないんじゃないかと不安な気持ちで始めた)。
mkdir ~/orb_slam2_ws cd orb_slam2_ws git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2 cd ORB_SLAM2 chmod +x build.sh ./build.sh
神かよ。
インストール完了(Blogのネタにすらならないレベル)
サンブルのデータセットで動作確認
vision.in.tum.de
こちらを使わせていただいた。
mkdir ~/orb_slam2_ws/dataset cd ~/orb_slam2_ws/dataset wget https://vision.in.tum.de/rgbd/dataset/freiburg1/rgbd_dataset_freiburg1_xyz.tgz tar -zxf rgbd_dataset_freiburg1_xyz.tgz ./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml ../dataset/rgbd_dataset_freiburg1_xyz
うごいたー!