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。使用ros命令行(见《如何使用ros命令行显示图片》)查看过D435和rgbd_dataset_freiburg1_xyz.bag文件中的图像流,发现无论是图像大小合适数据格式,完全都是一样的,这就很奇怪了。后来还曾怀疑过是不是launch文件中,rgbdslamv2从bagfile中获得的特征不够多(我自己使用D435record的bagfile纹理比较少,实际因为我想做的就是单一纹理的测试),因此不再GUI中显示。在使用rgbd_dataset_freiburg1_xyz.bag跑rgbdslamv2,同时查看图像流,发现GUI上的图像,和image_view的UI上的图像,是同时出现的,因此排除launch文件提取特征的相关参数对不能在GUI显示图像的影响。

只能先对bagfile进行测试。因此,使用xtion,同样只在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 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 -->

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

测试过,跟/tf这个topic,没什么关系

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

经常会在想,如果当时不是觉得麻烦,先从rosbag开始跑起,就不知道需要修改rgbdslam.launch文件中的topic。如果不是因为修改之后,发现只修改这两个topic是不够的,学习了remap的做法。

直接跳过这个步骤,如果直接从使用xtion或者kinect1,跑实时的rgbdslam,那我应该就不可能知道,如何把RealsenseD435集成进包里。

反过来,我可能会直接使用rqt_graph来查看topic之间的关系,也不是没有可能找到方法的。

后记:

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

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

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

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

使用Realsense D400 camera系列跑rgbdslamv2的更多相关文章

  1. Android Camera系列开发 (二)通过Intent录制视频

    Android Camera系列开发 (二)通过Intent录制视频 作者:雨水  2013-8-18 CSDN博客:http://blog.csdn.net/gobitan/ 概述 使用Camera ...

  2. Intel RealSense Depth Camera D435安装ROS 驱动——Ubuntu16.04

    官方教程 软件包下载链接 https://github.com/IntelRealSense/realsense-ros Download/Clone librealsense github repo ...

  3. <realsense D400>同步采集深度图和彩色图

    利用深度相机采集深度图和彩色图会面临一个问题,如何实现同步采集数据? 以下是我搜集到的两点方法: 1)高翔博士提到他的orbslam2教程有这么一步工作,具体目录为 example/RGBD/. (等 ...

  4. 利用 Intel Realsense做SLAM开发(一)

    最近手里拿到一台Realsense D435,就是这个: https://click.intel.com/intelr-realsensetm-depth-camera-d435.html 所以准备拿 ...

  5. Realsense深度相机资料

    1.Realsense SDK 2.0 Ubuntu 16.04 安装指导网址 https://github.com/IntelRealSense/librealsense/blob/master/d ...

  6. Ubuntu14.04(indigo)实现RGBDSLAMv2(数据集和实时Kinect)

    Ubuntu14.04(indigo)实现RGBDSLAMv2(数据集和实时Kinect v2) 一.在.bag数据集上跑RGBDSLAMv2 RGBDSLAMv2指的是Felix Endres大神在 ...

  7. android从应用到驱动之—camera(2)---cameraHAL的实现

    本文是camera系列博客,上一篇是: android从应用到驱动之-camera(1)---程序调用流程 本来想用这一篇博客把cameraHAL的实现和流程都给写完的.搞了半天,东西实在是太多了.这 ...

  8. Intel realSense ubuntu 16.04+python 环境配置指南

    1. 安装librealsense2-dkms 以及librealsense2-utils 1.Register the server's public key: sudo apt-key adv - ...

  9. Ubuntu小记

    一. Ubuntu分区记忆 参考教程调整: 1. /boot用于安装grub,设为主分区 2. /根目录20G一般足够 3. /home剩下的给home 4. swap空间=物理内存 挂载点 大小 类 ...

随机推荐

  1. Spring4自动装配(default-autowire) (转)

    原文地址:http://blog.csdn.net/conglinyu/article/details/63684957 Spring 自动装配 通过配置default-autowire 属性,Spr ...

  2. 理解SetCapture()和ReleaseCapture()及GetCapture()作用

    正常情况下,鼠标指针位于哪个窗口区域内,鼠标消息就自动发给哪个窗口.如果调用了SetCapture,之后无论鼠标的位置在哪,鼠标消息都发给指定的这个窗口,直到调用ReleaseCapture或者调用S ...

  3. codeforces 631A A. Interview

    A. Interview time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  4. leetcode 231 Power of Two(位运算)

    Given an integer, write a function to determine if it is a power of two. 题解:一次一次除2来做的话,效率低.所以使用位运算的方 ...

  5. SQLite优化方法

    1.建表优化 SQLite的数据库本质文件读写操作,频繁操作打开和关闭是很耗时和浪费资源的: 优化方法事务机制: 这里要注意一点:事务的开启是要锁定DB的,其他对DB的写入操作都是无法成功的. db. ...

  6. hdu2196 Computer待续

    #include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #i ...

  7. CH#56C 异象石 和 BZOJ3991 [SDOI2015]寻宝游戏

    异象石 CH Round #56 - 国庆节欢乐赛 描述 Adera是Microsoft应用商店中的一款解谜游戏. 异象石是进入Adera中异时空的引导物,在Adera的异时空中有一张地图.这张地图上 ...

  8. ACM学习历程—SGU 275 To xor or not to xor(xor高斯消元)

    题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=275 这是一道xor高斯消元. 题目大意是给了n个数,然后任取几个数,让他们xor和 ...

  9. 【LeetCode】012. Integer to Roman

    Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...

  10. Velocity下面的Velocimacros设置

    Velocimacros #macro script element允许模板设计者定义一段可重用的VTL template.Velocimacros广泛用于简单和复杂的行列.Velocimacros的 ...