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ってやつを入れてあげないといけません

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はオフにしました.っていうのは結構必要なとこだったっぽい.

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

8 件のコメント:

  1. いつも参考にさせていただいております。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

    もしよろしければ回答お願いいたします。

    返信削除
  2. どうもですー
    parameter_generator.py

    check_description(description)
    をコメントアウトしてビルドしてもダメですかね?
    https://github.com/tum-vision/lsd_slam/issues/219

    返信削除
    返信
    1. あ、parameter_generator.pyは

      $ sudo vi /opt/ros/indigo/lib/python2.7/dist-packages/dynamic_reconfigure/parameter_generator.py

      とかでひらけます

      削除
  3. 返信遅くなってすみません。
    教えていただいた方法を試したところ、無事にlsd_slam_viewerのほうはビルドが通りました。coreの方でまた、エラーがでて失敗するようなのでもう少し調べてみたいと思います。ご丁寧な回答本当にありがとうございました。大学の研究で必要なので非常に助かりました。
    今後、またアドバイスをいただきに来るかもしれませんが...笑

    返信削除
    返信
    1. そっかー、うーん??

      力になれなくて申し訳ない、頑張って!

      削除
  4. こんにちは、先日お話していたlsd_slam_coreのビルドエラーですが、同様のエラーが出ている人が多数いたので、issuesを参考に進めているところです。しかし、手順はあっているはずなのに、うまく行きません...
    https://github.com/tum-vision/lsd_slam/issues/206

    返信削除
    返信
    1. 遅くなってすみません.この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をつかってコンパイルすることによって解決したらしいので試してみてはどうでしょう?

      削除
    2. ここ(http://www.luohanjie.com/2017-03-17/ubuntu-install-lsd-slam.html)も同じように解決してると思う.

      削除