EnsekiTT Blog

EnsekiTTが書くブログです。

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

前回までのえんせき

意気揚々とLSD-SLAMをrosmakeしようと思ったら、
load_module did not return. Unable to determine dependencies for file listed above.
とか言って怒られ、ふて寝する。
ensekitt.hatenablog.com

つまりなにしたの?

問題をよく読んで解決し、VirtualBoxではリソース不足に気づきUbuntu16.04マシンに開発環境をうつすことを決意した
f:id:ensekitt:20170814213805p:plain


問題解決編

エラー文をちゃんと読む。

Exception: quotes not allowed in description string `log10 of threshold on point's variance, in the respective keyframe's scale. `

Descriptionにクォート(”とか')をつかったらダメだよってエラーを吐き出しているみたい。
クォートを直せば良さそうだけど、公式(?)にはこう直したよみたいなのがないか調べに行く。
github.com
あった。
このIssueで👍を5つも貰っているのは
/opt/ros/kinetic/lib/python2.7/dist-packages/dynamic_reconfigure/parameter_generator.py
の、

-     raise Exception(r"""quotes not allowed in description string %s""" % description)
+    description = description.replace(quote, "");
+    #raise Exception(r"""quotes not allowed in description string %s""" % description)

いやいやいや、ROSそのもののコード改変してあまつさえException握りつぶしてるやんけ…
ってことで当てにするのをやめて、
LSD-SLAMのcfgに手を加えた。

lsd_slam/lsd_slam_viewer/cfg/LSDSLAMViewerParams.cfg
からは
20行目のscaledDepthVarTHの

from:
"log10 of threshold on point's variance, in the respective keyframe's scale. "
to:
"log10 of threshold on point`s variance, in the respective keyframe`s scale. "

また、21行目、24行目も同じように'を`に変更
lsd_slam/lsd_slam_core/cfg/LSDDebugParams.cfg
からは
11行目、12行目、48行目も同じように'を`に変更

これで再度

~/rosbuild_ws/package_dir
rosmake lsd_slam

でうまくいきました。
これ、みんなハマる話じゃないのかな?ってことで
もう少し調べてみたらハマってる人がIssueを立てていたので拙い英語でコメントしておいた。
github.com

LSD-SLAM準備継続編

openFabMapの準備

SURFなどを使って、ちゃんと戻ってきたときにマップを閉じる(元の位置と同じだと認識して全体を修正しなおす?)処理をするための準備
広い範囲で自己位置推定をするために必要らしい。
coffeegkgk.hatenablog.com
こちらをそのまま参考にさせていただいた。

サンプル動画による動作確認

サンプル動画を用意する

vision.in.tum.de
この本家サイトの下のほうにサンプルの動画がある。

Video: 🌏[.bag] 🌏[.png]
の🌏[.bag]をダウンロードしてくる。bagというのはROSに流れたデータをまとめて保存したやつみたい。

mkdir ~/lsdslam_ws
cd ~/lsdslam_ws
wget http://vmcremers8.informatik.tu-muenchen.de/lsd/LSD_room.bag.zip
unzip LSD_room.bag.zip

結構重いし時間がかかる。

実行する

ターミナルを4つ開いておく

# Terminal1
roscore

# Terminal2
rosrun lsd_slam_viewer viewer

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

# Terminal4
rosbag play ~/lsdslam_ws/LSD_room.bag

これでマップができあがるはず!
と思ったら、リソース不足のせいかフレームレートが安定していないみたいでうまくマップが生成されないし自己位置は吹っ飛んでいく。
何よりキャリブレーションとかしてない。

そこで、ホスト側のUbuntu16.04にインストールすることにした。

Day3はこちら
ensekitt.hatenablog.com


Day1はこちら
ensekitt.hatenablog.com