一、前期准备
1.安装ROS环境
2.安装kinect v2驱动以及ROS下运行
二、安装rtabmap-ros包
deb 安装
sudo apt-get install ros-kinetic-rtabmap-ros
三、运行测试
①运行kinect v2指令:
roslaunch kinect2_bridge kinect2_bridge.launch publish_tf:=true
这时,kinect2的红外灯会亮一会然后熄灭, 白灯也会过一段时间熄灭。
出现打印 INFO] [1478769022.036459690]: [Kinect2Bridge::main] waiting for clients to connect,表示kinect2启动成功
kinect2成功启动后可以查看topic :
rostopic list
出现结果:
/kinect2/bond
/kinect2/hd/camera_info
/kinect2/hd/image_color
/kinect2/hd/image_color/compressed
/kinect2/hd/image_color_rect
/kinect2/hd/image_color_rect/compressed
/kinect2/hd/image_depth_rect
/kinect2/hd/image_depth_rect/compressed
/kinect2/hd/image_mono
/kinect2/hd/image_mono/compressed
/kinect2/hd/image_mono_rect
/kinect2/hd/image_mono_rect/compressed
/kinect2/hd/points
/kinect2/qhd/camera_info
/kinect2/qhd/image_color
/kinect2/qhd/image_color/compressed
/kinect2/qhd/image_color_rect
/kinect2/qhd/image_color_rect/compressed
/kinect2/qhd/image_depth_rect
/kinect2/qhd/image_depth_rect/compressed
/kinect2/qhd/image_mono
/kinect2/qhd/image_mono/compressed
/kinect2/qhd/image_mono_rect
/kinect2/qhd/image_mono_rect/compressed
/kinect2/qhd/points
/kinect2/sd/camera_info
/kinect2/sd/image_color_rect
/kinect2/sd/image_color_rect/compressed
/kinect2/sd/image_depth
/kinect2/sd/image_depth/compressed
/kinect2/sd/image_depth_rect
/kinect2/sd/image_depth_rect/compressed
/kinect2/sd/image_ir
/kinect2/sd/image_ir/compressed
/kinect2/sd/image_ir_rect
/kinect2/sd/image_ir_rect/compressed
/kinect2/sd/points
/rosout
/rosout_agg
其中,hd 表示1080P(1920x1080),qhd表示hd的四分之一大小 960x540,sd 大小应该是640x480, 实际大小是 height: 424 width: 512.可以看到其中主要的是hd,qhd,sd三类,每一类都包含相机信息、彩色、深度、红外等数据,再加上最后的输出.
如果启动遇到下面的问题:
请执行:
source ~/catkin_ws/devel/setup.bash
②执行官方给的指令tf:
rosrun tf static_transform_publisher 0 0 0 -1.5707963267948966 0 -1.5707963267948966 camera_link kinect2_link 100
该指令主要是前半部分涉及静态转换(本人猜测是坐标转换或者标定,没有细查),后半部分涉及传感器选择的帧来源。
该指令默认的是qhd,即默认960*540.其对应的帧是kinect2_rgb_optical_frame,这一点可以不用管它。
如果使用的是hd, 那么对应的frame也是kinect2_rgb_optical_frame,hd和qhd的尺寸图像都是基于rgd镜头的,所以它们的frame是彩色镜头的frame。
如果使用的是sd, 那么对应的frame是kinect2_ir_optical_frame, 红外镜头的frame。
③启动rtabmap_ros
roslaunch rtabmap_ros rtabmap.launch rtabmap_args:="--delete_db_on_start" rgb_topic:=/kinect2/qhd/image_color_rect depth_topic:=/kinect2/qhd/image_depth_rect camera_info_topic:=/kinect2/qhd/camera_info
roslaunch 启动文件,rtabmap_args:="–delete_db_on_start" 是说启动前先删除数据库db下的数据, topic分别对应好rgb彩色数据、depth深度数据、相机参数信息.
rtabmap.launch参数解析:
地图数据保存在 ~/.ros/rtabmap.db
可利databaseViewer工具查看数据库
rtabmap-databaseViewer ~/.ros/rtabmap.db
注意:
①在三维点云地图中右键取消Z轴锁定,即可以上帝视角查看三维模型
②indigo版本和kinect版本之间的mapdata格式存在差异,不同版本之间发布和订阅会出现无tf输出的情况(没明白)