##目的
単眼カメラでも動く、Visual-SLAMのソフトウェアORB-SLAM2 を動かしてみた。
ORB-SLAM2は、単眼カメラの他に、ステレオカメラ・RGB-Dカメラにも対応しているが、ここでは単眼カメラで動かしてみた。
##環境
Ubuntu16.04 (x64)
ROS Kinetic
##ROSのインストール
ROSのKineticをインストールする。
http://wiki.ros.org/kinetic/Installation/Ubuntu
##必要なパッケールのインストール
予め必要なパッケージをapt-getでいれる。
$ sudo apt-get install python-rosinstall
$ sudo apt-get install libglew-dev
$ sudo apt-get install cmake
$ sudo apt-get install libpython2.7-dev
$ sudo apt-get install libjpeg-dev libpng12-dev libtiff5-dev libopenexr-dev
##作業フォルダの作成
$ mkdir ~/ros_dev
.bashrcにROSへのパスを追加
$ vi .bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/ros_dev/ORB_SLAM2/Examples/ROS
##Pangolinのインストール
描画ライブラリPangolinをいれる。
cd ~/ros_dev
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
make -j
sudo make install
###ORB_SLAM2のインストール
gitからダウンロードする。
cd ~/ros_dev
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
ORB_SLAM2をコンパイルする
cd ORB_SLAM2
chmod +x build.sh
./build.sh
ORB_SLAM2のROSノードをコンパイルする
chmod +x build_ros.sh
./build_ros.sh
##テストデータで動作確認する。
LSD_SLAMのテストデータで動作確認する。
カメラの内部パラメータがあっていないので、あくまで動作確認。
cd ~/ros_dev
wget http://vmcremers8.informatik.tu-muenchen.de/lsd/LSD_room.bag.zip
unzip LSD_room.bag.zip
LSD_SLAMのBAGデータを読みこませる
rosbag play LSD_room.bag /image_raw:=/camera/image_raw
rosrun ORB_SLAM2 Mono Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml
##Web カメラで動かす
コンソールを3つ立ち上げ、以下の3つのコマンドを実行する。
roscore
rosrun usb_cam usb_cam_node /usb_cam/image_raw:=/camera/image_raw
rosrun ORB_SLAM2 Mono Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml
カメラをゆっくり動かすと、青い矩形が追従して動くことが確認できる。
精度悪い場合は他のyamlを試すか、きちんとカメラをキャリブレーションしてyamlファイルを作成し、ORB_SLAM2の引数で与えれば精度改善する。