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. 封装 oschina.net 表情选择

    1. [代码]jquery.facial.js //从OSCHINA.NET 提取出来的 表情选择 插件 by zhouxiang //如果有不满足的地方 可以自己改改 没事随便写写的 style 和 ...

  2. ajax经典案例--省市联动

    ajax的省市联动案例 如果我们的代码比较复杂,可以通过file_put_contents来输出信息到某个日志. 在一个元素中添加另一个元素使用的方法是:appendChild(). 函数append ...

  3. mysql delete数据时报Error Code 1175

    我们在学校mysql的时候,在更新或者删除数据的时候,会遇到以下错误: Error Code: . You are using safe update mode and you tried to up ...

  4. java.sql.SQLException: Column count doesn't match value count at row 1 Query: insert into category values(null,?,?,?) Parameters: [1111111, 1111, 软件]

    java.sql.SQLException 问题: java.sql.SQLException: Column count doesn't match value count at row 1 Que ...

  5. cf 429B Working out(简单dp)

    B. Working out time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  6. 两个stack实现一个queue

    package com.hzins.suanfa; import java.util.Stack; /** * 两个stack实现一个queue * @author Administrator * * ...

  7. ajax stream 一边下载二进制数据一边处理

    最近有在做 stream 下载,并且边下载 stream 边处理功能.解析二进制的功能.最初参考了 flv.js 的 flv stream 下载处理功能,发现他并没有使用的 XMLHttpReques ...

  8. 数据库连接池(connection pool)

    1.JDBC数据库连接池的必要性  在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: –      在主程序(如servlet.beans)中建立数据库连接. –      进行sql ...

  9. Arc073_F Many Moves

    传送门 题目大意 有$n$个格子从左到右依次挨着,一开始有两枚棋子分布在$A,B$某一个或两个格子里,有$m$个操作,第$i$次操作要求你把其中一个棋子移到$X_i$上,移动一个棋子的代价是两个格子之 ...

  10. C++ STL, set用法。 待更新zzzzz

    set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值:另外,还 ...