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. c语言代码风格2

    1.注释 注释的目的是为了说明做了什么,而不是怎么做,所以注释表达应该准确而又简洁.注释要放在被注释内容的上方或右方.注释一般采用/*.........*/或//........ 对代码源文件和函数应 ...

  2. string(未完待续)

    1.string字符串的长度     可以用   a.length()  来测,或者是a.size() 来测 不可以用strlen(a)来求其长度, sizeof(a)是固定值16, 求的是strin ...

  3. JavaUtil_02_二维码的生成与解析

    1.引入jar包 zxing-core-1.7.jar  :   http://viralpatel.net/blogs/download/jar/zxing-core-1.7.jar zxing-j ...

  4. java是用utf-16be编码方式编的。中文和英文都是两个字节

  5. POJ1904 King's Quest

    King's Quest Language:Default King's Quest Time Limit: 15000MS Memory Limit: 65536K Total Submission ...

  6. bzoj 1242 弦图判定 MCS

    题目大意: 给定一张无向图,判断是不是弦图. 题解: 今天刚学了<弦图与区间图> 本来写了一个60行+的学习笔记 结果因为忘了保存重启电脑后被还原了... 那就算了吧. MCS最大势算法, ...

  7. python实现redis三种cas事务操作

    cas全称是compare and set,是一种典型的事务操作. 简单的说,事务就是为了存取数据库中同一数据时不破坏操作的隔离性和原子性,从而保证数据的一致性. 一般数据库,比如MySql是如何保证 ...

  8. oracle 12c 列式存储 ( In Memory 理论)

    随着Oracle 12c推出了in memory组件,使得Oracle数据库具有了双模式数据存放方式,从而能够实现对混合类型应用的支持:传统的以行形式保存的数据满足OLTP应用:列形式保存的数据满足以 ...

  9. 2018.10.30 一题 洛谷4660/bzoj1168 [BalticOI 2008]手套——思路!问题转化与抽象!+单调栈

    题目:https://www.luogu.org/problemnew/show/P4660 https://www.lydsy.com/JudgeOnline/problem.php?id=1168 ...

  10. Sublime Text2中Evernote 插件的使用

    Sublime Text2是个强大的编辑器, 有好多插件供我们使用, 其中有个插件SublimeEvernote, 可以把代码发送到Evernote里. 但是没找见使用说明, 今天看了下Sublime ...