2016/12/09

LSD-SLAMをROSで試す1-インストールとビルドとクイックスタート-

ROSそのものの話も続けたいと思うのですが、

ROSは所詮ロボットを動かすためのツールです

せっかくROS と visual SLAMのブログなのでまずはvisual SLAMを試してみましょう



visual SLAMに必要なのはカメラとROSの入ったPCだけです

スカイプやってる人はUSBついてるカメラ持っていませんか?それでできます。

またはPCにカメラ元々ついてませんか?それでできます

カメラがない?じゃあ動画ダウンロードしてそれでできます。

やってみましょう

今回試すのはLSD-SLAMです

2014年に発表された論文で、現時点でもvisual SLAMの中でかなりの精度を誇っています

一番の特徴は、通常、visual SLAMを行う場合は、カメラ画像のうち特徴的な点を用いて行うため、できる画像がぽつぽつとした点であることが多い中(疎であるという)、



LSD-SLAMは激しく色の変わる画素を直接扱うため、人の目で見てわかりやすい地図ができるということです(密であるという)



では、実際にインストールしていきましょう

github に書いてあるように従えばはいりますが、英語なので説明していきます

対応しているのは
ROS indigo + Ubuntu 14.04
または
ROS fuerte + Ubuntu 12.04

です

ROSindigo+ Ubuntu 14.04で前回まで説明していたのでそれでいきます

ROSindigoではビルドシステムはcatkinが普通ですが、LSD-SLAMでは旧来のビルドシステムrosbuildを使用しているので、そのワークスペースをまず作ります

はいどーん

mkdir ~/rosbuild_ws
cd ~/rosbuild_ws
rosws init . /opt/ros/indigo
mkdir package_dir
rosws set ~/rosbuild_ws/package_dir -t .
echo "source ~/rosbuild_ws/setup.bash" >> ~/.bashrc
bash
cd package_dir

1行ずつうっていってください

次にLSD-SLAM本体以外に必要なライブラリを入れます

sudo apt-get install ros-indigo-libg2o ros-indigo-cv-bridge liblapack-dev libblas-dev freeglut3-dev libqglviewer-dev libsuitesparse-dev libx11-dev

LSD-SLAMいれます

git clone https://github.com/tum-vision/lsd_slam.git lsd_slam

ビルドします

rosmake lsd_slam

以上!簡単!説明通りにコマンド打つだけ!ROS最高!

さて、以前loop closingの話を少ししたことを覚えているでしょうか?

これ の、最後の図のやつです

これが、デフォルトだと働いてくれないので、ある程度広い環境でやるならそれを有効にしないといけません

そんな広くないならめんどくさいのでやらなくていいです

まず、ubuntuが14.04ならopencvってやつを入れてあげないといけません

ROSじゃないのでめんどくさいですが以下のブログがすごくわかりやすく教えてくれます

Goodbye, World ROS indigo for Ubuntu 14.04へのOpenCV nonfree moduleの導入

僕が書いてもかぶるのでopencvの部分は割愛させてもらいます
ちなみにここでQtはオフにしました。
さて、opencvを入れたらあとは楽です

左のタブにあるファイルを押すと

rosbuild_wsってファイルができてると思います。その中にpackage_dirがあって、その中にlsd_slamがあってその中にlsd_slam_coreがあって、その中にCMakeLists.txtがあると思います

これをちょっと変えます

#add_subdirectory(${PROJECT_SOURCE_DIR}/thirdparty/openFabMap)
#include_directories(${PROJECT_SOURCE_DIR}/thirdparty/openFabMap/include)
#add_definitions("-DHAVE_FABMAP")
#set(FABMAP_LIB openFABMAP )

って書いてあるところの#を全部取っ払って保存し直してください

で、もう一回コマンドラインで

rosmake lsd_slam

以上でインストール部分は終了です

まずはデータセットを使って試してみましょう

データセット をダウンロードしてきて

これを解凍してhomeディレクトリ(rosbuild_wsとかがあるところ)に移動します

まずROS起動

roscore

次に表示用プログラムを起動

rosrun lsd_slam_viewer viewer

そしてSLAM実行

rosrun lsd_slam_core live_slam image:=/image_raw camera_info:=/camera_info

データセット再生

rosbag play ~/LSD_room.bag

動いた人、お疲れ様でした

停止するときはそれぞれの端末でコントロール+cです

次回はLSD-SLAMを自分のカメラで試すためにカメラをROSで動かします

https://noshumi.blogspot.jp/2016/12/lsd-slamros2.html



追記
なんかエゴサしたらこれだけじゃ動かない人もいるみたいですが,以下のように解決できるそうです.

ROSMAKEに失敗してCMake Errorが出る場合dynamic_reconfigureの修正が必要

ROSのLSD-SLAMを動かしてみた。 - Qiita


実行しても自己位置しか表示されず,マップが表示されない場合,lsd_slam/lsd_slam_core/src/IOWrapper/OpenCV/ImageDisplay_OpenCV.cpp
の修正が必要

あと,さらっと書いていた,LOOP CLOSEを実装するのに必要なOPENCVの導入のときの,Qtはオフにしました.っていうのは結構必要なとこだったっぽい.

LSD SLAMをやってみた | GUSUGUSU.NET

0 件のコメント:

コメントを投稿