环境
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相机相对于参考系的移动。