使用Realsense D400 camera系列跑rgbdslamv2

Ubuntu16.04,kinetic

在之前写的博文《如何使用ROS查找rgbdslam代码包框架的输入》中提到,一开始不知道整体框架,只用感性认识去跑rgbdslamv2的包,是一个天大的错误。

修改launch文件对应不同camera的topic,显然就是小白的做法。为什么呢?因为,经过测试后,发现rgbdslamv2调用的根本就不只是如下两个topic,分别是彩色图和深度图:

<!-- Input data settings-->
    <!-- rgbd_dataset_freiburg1_xyz.bag -->
    <param name="config/topic_image_mono"              value="/camera/rgb/image_color"/>
    <param name="config/topic_image_depth"             value="/camera/depth/image"/>

感性认知上,以为修改这两个,换了一个不同的传感器,还是一样的做法。

之后,录制的rosbag,因为在rviz下,需要选择frame id,才能查看图像流。因此怀疑是录取的数据包的问题(见《How to modify rosbag?如何修改rosbag?》),实质上也并不是。

只能往回走,看看能否用老方法来解决问题。幸亏手头上有xtion,在使用xtion能实时跑rgbdslamv2,但是同样只在bagfile中record彩色图和深度图信息的包,离线同样跑不动。

因此,不用查阅整个框架,就能知道,rgbdslamv2订阅的肯定不只是那两个topic了。

使用

rosbag info [bagfile]

查看rgbd_dataset_freiburg1_xyz.bag,里面有好几种messages,

path:         catkin_ws/src/rgbdslam_v2/bagfiles/rgbd_dataset_freiburg1_xyz.bag
version:      2.0
duration:     30.4s
start:        May 10 2011 20:38:18.38 (1305031098.38)
end:          May 10 2011 20:38:48.81 (1305031128.81)
size:         480.4 MB
messages:     25626
compression:  bz2 [1598/1598 chunks; 29.14%]
uncompressed:   1.6 GB @ 54.1 MB/s
compressed:   479.4 MB @ 15.8 MB/s (29.14%)
types:        sensor_msgs/CameraInfo         [c9a58c1b0b154e0e6da7578cb991d214]
              sensor_msgs/Image              [060021388200f6f0f447d0fcd9c64743]
              sensor_msgs/Imu                [6a62c6daae103f4ff57a132d6f95cec2]
              tf/tfMessage                   [94810edda583a504dfda3829e70d7eec]
              visualization_msgs/MarkerArray [f10fe193d6fac1bf68fad5d31da421a7]
topics:       /camera/depth/camera_info     798 msgs    : sensor_msgs/CameraInfo        
              /camera/depth/image           798 msgs    : sensor_msgs/Image             
              /camera/rgb/camera_info       798 msgs    : sensor_msgs/CameraInfo        
              /camera/rgb/image_color       798 msgs    : sensor_msgs/Image             
              /cortex_marker_array         3034 msgs    : visualization_msgs/MarkerArray
              /imu                        15158 msgs    : sensor_msgs/Imu               
              /tf                          4242 msgs    : tf/tfMessage

根据topics的情况,应该重新在launch文件中remap一下,修改为

    <!-- remap from xtion/kinect1 to realsense -->
    <remap from="/camera/depth/camera_info" to="/camera/aligned_depth_to_color/camera_info"/>
    <remap from="/camera/depth/image" to="/camera/aligned_depth_to_color/image_raw"/>
    <remap from="/camera/rgb/camera_info" to="/camera/color/camera_info"/>
    <remap from="/camera/rgb/image_color" to="/camera/color/image_raw"/>
    <!-- lack of topic /cortex_marker_array & /imu -->
    <remap from="/tf" to="/tf_static"/>

中间注释的那行,是缺少的两个topic信息。

而且,听说/tf和/tf_static还是不一样的,所以有可能后期有什么问题,还需要追踪回来此修改。

修改完之后,就可以使用realsense d400系列相机跑实时的rgbdslamv2了,是不是很激动!

后记:

1. 没有学在《如何使用ROS查找rgbdslam代码包框架的输入》中提到的各种调试工具,相信以后也还是会用到的。因此不要忘记还有这些方法。

2. 没有一不懂就直接联系作者,这也“得益”于我蹩脚的英语水平。同时,我觉得不懂就直接问,而且问解决方法,不是我一贯作风,能不做伸手党就不做。

3. 前前后后花了差不多20来天,虽然当中也有些乱七八糟的杂事,但是还是觉得编程效率不高。

4. 成就感杠杆的,可能只是一个小bug,没有搜到相关的资料,可能本来就是很基础的编程问题。但是整个过程下来,动手能力和编程能力还是提升不少。

猜你喜欢

转载自www.cnblogs.com/williamc17/p/9319727.html