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. HTML5坦克大战

    在JavaScript中,不要在变量为定义之前去使用,这样很难察觉并且无法运行. 颜色不对. 当我的坦克移动时,敌人坦克消失. tankGame3.html <!DOCTYPE html> ...

  2. jQuery查找子元素与后代元素

    1. 子元素: $().children('选择器')  如选择type为file的子元素  $(this).children("input[type=file]") 或者 $(& ...

  3. PL/SQL Developer 的 SQL 编辑窗口显示行号

    版权声明:本文为博主原创文章,未经博主允许不得转载. 一直奇怪为什么 PL/SQL 6 系列的版本可以显示行号,为什么到了 7 .8 版本之后反而还不行了?而且我都已经设置了“显示行号”的呀. 如图: ...

  4. HihoCoder 1636

    /** * 题目链接:https://cn.vjudge.net/problem/HihoCoder-1636 * 题目意思,石子合并,每次可以合并相邻的石子.每次可以x堆合并为一堆. * x属于[l ...

  5. linux命令学习笔记(21):find命令之xargs

    xargs是一条Unix和类Unix操作系统的常用命令.它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题 xargs的作用一般等同于大多数Unix shell中的反引号,但更 ...

  6. 直播推流实现RTMP协议的一些注意事项

    —— 2017-2-12 更新RTMP 协议整理了一下,包括rtmp 消息类型,rtmp 如何分块,rtmp分块例子. 用脑图整理了一下,使用Xmind 打开,URL: https://github. ...

  7. Mybatis generator配置文件及说明

    项目采用sring mvc + mybatis 组合,这里简单介绍下mybatis的应用: 我的IDE是STS(Spring + Tool + Suite), 安装Mybatis Generator插 ...

  8. python中string和bool的转换

    python中字符串"True" 和 "False"转为bool类型时, 不能通过bool(xx)强转. 注意是因为在python中,除了&apos;& ...

  9. spring IOC 注解@Resource

    1.@Resource(重要)a)加入 :j2ee/common-annotations.jar b)默认按名称,名称找不到,按类型 默认按照名称setName1到xml中找和id相同的,没有的话再找 ...

  10. POJ2513(字典树+图的连通性判断)

    //用map映射TLE,字典树就AC了#include"cstdio" #include"set" using namespace std; ; ;//26个小 ...