一起作rgbd-slam之使用realsense相机从rosbag包中导出rgb图和depth图

使用数据集跑rgbd-slam

使用相机实时进行rgbd-slam,会经常容易跟丢,可以通过先录制数据集,然后使用数据集进行slam建图,效果会好很多。
除了可以在tum官网上获取rgbd数据集,也可以通过自身相机获取rgbd数据集,本文所使用的相机为intel realsense d435i相机,官方自带sdk没有保存对齐的色彩和深度图的功能,因此决定借助rosbag包进行数据采集。
在安装好相机驱动后,可以先打开相机

roslaunch realsense2_camera rs_camera.launch align_depth:=true

一起作rgbd-slam之使用realsense相机从rosbag包中导出rgb图和depth图_第1张图片

并在rviz下查看效果

rosrun rviz rviz

rviz中坐标系选择相机坐标系,点击add,添加topic中的颜色和深度图像信息。
由于rgbdslam需要颜色图和对齐深度图,因此我们仅需要记录颜色和深度图即可:

一起作rgbd-slam之使用realsense相机从rosbag包中导出rgb图和depth图_第2张图片
记录颜色话题,和颜色深度话题.通过在rviz中可以查看到当前情况下的相机视角,可以人工进行移动,对所需建图环境进行扫描。建图结束后ctrl + c关闭终端即可,可以在当前目录下查看到一个当前时间命名的bag包.

rosbag record /camera/color/image_raw  /camera/aligned_depth_to_color/image_raw

一起作rgbd-slam之使用realsense相机从rosbag包中导出rgb图和depth图_第3张图片

rosbag info <file_name>

一起作rgbd-slam之使用realsense相机从rosbag包中导出rgb图和depth图_第4张图片

通过输入上述代码可以查看当前bag包的详细信息,若出现图片数据数量不同时,是丢包造成的,需要检查usb接口处,或者重新进行记录,一般来说颜色图和深度图数量仅差一张
通过python代码可以对该bag包中的颜色和深度信息进行提取,提取时需要修改代码中的保存路径和包文件路径。数据会分别保存在两个文件夹中,命名格式可以在py代码中进行修改,默认为下列格式。
一起作rgbd-slam之使用realsense相机从rosbag包中导出rgb图和depth图_第5张图片
获取到rgb和depth数据集之后,可以使用该数据集跑rgbdslam,若跑的过程中,单个图片质量模糊可以将该图片和深度图都进行删除,复制前一张或者后一张数据进行替代即可。有问题的可以评论去留言,学生需要代码的在评论区可以留个邮箱。

你可能感兴趣的:(slam)