環境
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,即在開始運作時清除的資料。
效果如下
在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相機相對于參考系的移動。