RTABMAPの使い方


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 #ダウンロードしたディレクトリで

すると以下のようなGUIが立ち上がります。

このサンプルではロボットが部屋の中を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