天天看點

ZED入門:利用RTAB-MAP做SLAM

環境

JETPACK 3.2

Cuda 9.0

Cudnn 7.2.1

ROS kinetic

Opencv 3.3.1

RTAB-MAP是一種基于RGB-D的SLAM方法

ROS上rtabmapp_ros的安裝參見

https://github.com/introlab/rtabmap_ros

啟動zed

// A) With rtabmap odometry:
$ export ROS_NAMESPACE=camera
$ roslaunch zed_wrapper zed_camera.launch publish_tf:=false

// B) With zed odometry:
$ export ROS_NAMESPACE=camera
$ roslaunch zed_wrapper zed_camera.launch
           

這裡的namespce要和rtabmap.launch中的保持一緻。

<!-- RGB-D related topics -->
  <arg name="rgb_topic"               default="/camera/rgb/image_rect_color" />
  <arg name="depth_topic"             default="/camera/depth_registered/image_raw" />
  <arg name="camera_info_topic"       default="/camera/rgb/camera_info" />
  <arg name="depth_camera_info_topic" default="$(arg camera_info_topic)" />
           

啟動rtab_map

// A) With rtabmap odometry
 $ roslaunch rtabmap_ros rtabmap.launch rtabmap_args:="--delete_db_on_start" depth_topic:=/camera/depth/depth_registered frame_id:=zed_camera_center approx_sync:=false

 // B) With zed odometry
 $ roslaunch rtabmap_ros rtabmap.launch rtabmap_args:="--delete_db_on_start" depth_topic:=/camera/depth/depth_registered frame_id:=zed_camera_center approx_sync:=false visual_odometry:=false odom_topic:=/camera/odom
           

後面的參數直接參用預設值也是可以的,比如

$ roslaunch zed_rtabmap_example zed_rtabmap.launch 
           

這裡"--delete_db_on_start" 的意思是delete database on the start,即在開始運作時清除的資料。

效果如下

ZED入門:利用RTAB-MAP做SLAM

在rviz中可以顯示不同要求的topic,包括點雲,深度圖等。

這樣的map都儲存在~/.ros/rtabmap.db,這個檔案夾系統預設是隐藏的,可以直接利用ls顯示,或者ctrl+H可以取消隐藏。不過.db檔案不能直接打開,rtabmap提供了一款工具databaseViewer

$ rtabmap-databaseViewer ~/.ros/rtabmap.db
           

另外rtabmap還提供了localization模式,可以通過圖像的比對來定位。

有兩種方法可以進入localization,一種是直接修改launch檔案

$ roslaunch rtabmap_ros rtabmap.launch localization:=true
           

另一種是在rtabmapviz(GUI)的detection中選擇localization。

在localization模式下,我們可以通過

$rostopic echo /tf
           

來觀測zed相機相對于參考系的移動。

繼續閱讀