EnsekiTT Blog

EnsekiTTが書くブログです。

【7Days自由研究】Visual SLAMとROSを使えるようになる話 Day-4

前回までのえんせき

LSD_SLAMをUbuntu16.04上で動かそうとして見事撃沈。長引きそうなのでORB_SLAM2にターゲットチェンジすることにした。
どっちがいいのかとかまではよくわかっていないけど、外で使うならORB_SLAM2が今は一番良さそうらしい。
ensekitt.hatenablog.com

つまりなにしたの?

Ubuntu16.04で動くVisual SLAMがやってみたくてLSD_SLAMを諦めてORB_SLAM2に手を出した話。
f:id:ensekitt:20170815003250p:plain

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はもともと入っていたので割愛。ない人もいるしね。。。)

普通に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 

youtu.be

うごいたー!

次回

ROSから動かしてみます。
ensekitt.hatenablog.com

Day1はこちら
ensekitt.hatenablog.com