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ってやつを入れてあげないといけません
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
動いた人、お疲れ様でした
停止するときはctrl+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はオフにしました.っていうのは結構必要なとこだったっぽい.
いつも参考にさせていただいております。SLAMもROSも初心者なので低レベルな質問にはなりますが、一つお聞きしたいことがあります。
返信削除LSD-SLAMをいれたあとに、rosmakeでビルドしようとしたら、エラーがでます。
ちなみに、エラーはこれです。
ERROR [gendeps] 1 Finding dependencies for /home/labo/rosbuild_ws/package_dir/lsd_slam/lsd_slam_viewer/cfg/LSDSLAMViewerParams.cfg
もしよろしければ回答お願いいたします。
どうもですー
返信削除parameter_generator.py
の
check_description(description)
をコメントアウトしてビルドしてもダメですかね?
https://github.com/tum-vision/lsd_slam/issues/219
あ、parameter_generator.pyは
削除$ sudo vi /opt/ros/indigo/lib/python2.7/dist-packages/dynamic_reconfigure/parameter_generator.py
とかでひらけます
返信遅くなってすみません。
返信削除教えていただいた方法を試したところ、無事にlsd_slam_viewerのほうはビルドが通りました。coreの方でまた、エラーがでて失敗するようなのでもう少し調べてみたいと思います。ご丁寧な回答本当にありがとうございました。大学の研究で必要なので非常に助かりました。
今後、またアドバイスをいただきに来るかもしれませんが...笑
そっかー、うーん??
削除力になれなくて申し訳ない、頑張って!
こんにちは、先日お話していたlsd_slam_coreのビルドエラーですが、同様のエラーが出ている人が多数いたので、issuesを参考に進めているところです。しかし、手順はあっているはずなのに、うまく行きません...
返信削除https://github.com/tum-vision/lsd_slam/issues/206
遅くなってすみません.このissueでもまだ解決していないっぽいですね.
削除ここ(https://stackoverflow.com/questions/36360879/rosmake-lsd-slam-failed-during-building/37184956)によると
同じエラーを,このサイト(http://visbot.blogspot.com/2014/11/tutorial-building-of-lsd-slam-on-ros.html)
にしたがってlsd-slamをrosbuildでなくてcatkin_makeをつかってコンパイルすることによって解決したらしいので試してみてはどうでしょう?
ここ(http://www.luohanjie.com/2017-03-17/ubuntu-install-lsd-slam.html)も同じように解決してると思う.
削除