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,即在开始运行时清除的数据。

效果如下

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

猜你喜欢

转载自blog.csdn.net/banzhuan133/article/details/81876739