#RTABMAPの使い方
前回の記事ではIntel Realsense d435を使ってSLAMをやってみました。
インストール方法等はこちら
https://qiita.com/k65c1/items/0d9039c021ecbb26b04e
今回はサンプルを使って具体的な使い方を見ていきます。
#サンプルファイルで動かしてみる。
まずはDEMOのrosbagファイルをここからダウンロードします。
https://docs.google.com/uc?id=0B46akLGdg-uadXhLeURiMTBQU28&export=download
次のコマンドで、DEMOを立ち上げます。
ターミナル1
roslaunch rtabmap_ros demo_robot_mapping.launch
ターミナル2
rosbag play --clock demo_mapping.bag #ダウンロードしたディレクトリで
このサンプルではロボットが部屋の中をSLAMしながら進んで、マッピングをしていきます。
これだけでもみていて楽しいですね。
#RTABMAPのシステム構造
RTABMAPのシステムの基本的な構造は以下のようになっています。
まずカメラによるvisual odometry、Lidarによるicp odometryなどによりオドメトリを計算し、それをSLAMのノードに送信します。そして、SLAMのノードでは、RGB画像、深度画像をsubscribeして、一定の周期でマップに登録していきます。
このサンプルではレーザーによるオドメトリのみでカメラのオドメトリは使われていません。
#使い方
それでは具体的な使い方を見ていきます。
まずGUIの見方から。
左上の画像にはvisual odometryの特徴点が表示されます。
このサンプルではレーザーのみのオドメトリのため特徴点は表示されていません。
その下のLoop closure detectionの下には、現在最新のノードの画像、その下にはLoop closureの最も一致度の高いノードの画像が表示されています。
Loop closureが検出されたときにはここが緑色で表示されます。
Loop closureが検出されたが、閾値を超えなかったときなどは赤色で表示されます。
そして右側には3Dマップが表示されています。このマップをよく見ると、点と線でつながっていることがわかると思いますが、この点はノードと呼ばれています。
そして各ノードは以下の情報を持っています。
ID
姿勢
画像、レーザーなどのセンサーデータ
他のノードとの関連情報(近くのノード、Loop closureが検出された他のノードなど)
この情報を積み重ねて、マップを作っていきます。
そしてここで、rtabmapを終了させてみます。
するとマップのデータベースが保存されます。(デフォルトではホームディレクトリ下の~/.ros/rtabmap.db)
このデータベースの情報を見るには
rtabmap-databaseviewer ~/.ros/rtabmap.db
で確認することができます。
するとこのようなviewerが立ち上がり、さっき作ったマップのデータを見ることができます。
今回はここまでとします。
リクエスト等あればコメント欄までおねがいします。
次回はrtabmapの詳しい構造を論文から見ていきます。
https://qiita.com/k65c1/items/0e9918cc94cc531a5295
#参考にしたサイト
rtabmap_ros - ROS Wiki
http://wiki.ros.org/rtabmap_ros