使用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。使用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的更多相关文章
- Android Camera系列开发 (二)通过Intent录制视频
Android Camera系列开发 (二)通过Intent录制视频 作者:雨水 2013-8-18 CSDN博客:http://blog.csdn.net/gobitan/ 概述 使用Camera ...
- Intel RealSense Depth Camera D435安装ROS 驱动——Ubuntu16.04
官方教程 软件包下载链接 https://github.com/IntelRealSense/realsense-ros Download/Clone librealsense github repo ...
- <realsense D400>同步采集深度图和彩色图
利用深度相机采集深度图和彩色图会面临一个问题,如何实现同步采集数据? 以下是我搜集到的两点方法: 1)高翔博士提到他的orbslam2教程有这么一步工作,具体目录为 example/RGBD/. (等 ...
- 利用 Intel Realsense做SLAM开发(一)
最近手里拿到一台Realsense D435,就是这个: https://click.intel.com/intelr-realsensetm-depth-camera-d435.html 所以准备拿 ...
- Realsense深度相机资料
1.Realsense SDK 2.0 Ubuntu 16.04 安装指导网址 https://github.com/IntelRealSense/librealsense/blob/master/d ...
- Ubuntu14.04(indigo)实现RGBDSLAMv2(数据集和实时Kinect)
Ubuntu14.04(indigo)实现RGBDSLAMv2(数据集和实时Kinect v2) 一.在.bag数据集上跑RGBDSLAMv2 RGBDSLAMv2指的是Felix Endres大神在 ...
- android从应用到驱动之—camera(2)---cameraHAL的实现
本文是camera系列博客,上一篇是: android从应用到驱动之-camera(1)---程序调用流程 本来想用这一篇博客把cameraHAL的实现和流程都给写完的.搞了半天,东西实在是太多了.这 ...
- Intel realSense ubuntu 16.04+python 环境配置指南
1. 安装librealsense2-dkms 以及librealsense2-utils 1.Register the server's public key: sudo apt-key adv - ...
- Ubuntu小记
一. Ubuntu分区记忆 参考教程调整: 1. /boot用于安装grub,设为主分区 2. /根目录20G一般足够 3. /home剩下的给home 4. swap空间=物理内存 挂载点 大小 类 ...
随机推荐
- php设计模式课程---2、为什么会用到简单工厂设计模式
php设计模式课程---2.为什么会用到简单工厂设计模式 一.总结 一句话总结: 比如调用数据库的语句,如果调用的数据库名字改了,或者调用的数据库类型改了(比如从Mysql用到了Mysqli),那么要 ...
- Jquery 取值,赋值学习总结
<h2>获取和设置文本框值:</h2> <input type="button" value="赋值文件框" id="v ...
- C语言链表结构体(学习笔记)
#include <stdio.h> #define LENTEST 100 // 采取逐步删除的方法求的素数 //先假设1-100都是素数,然后剔除2的倍数, //3的倍数,直到剔除所有 ...
- getline()函数详解 (2013-03-26 17:19:58)
学习C++的同学可能都会遇到一个getline()函数,譬如在C++premer中,标准string类型第二小节就是“用getline读取整行文本”.书上给的程序如下: int main() { ...
- jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
http://www.poluoluo.com/jzxy/201312/253059.html 在这个sprint中,因为要写前端UI,所以用到了jQuery,但是jQuery在向上遍历DOM树的AP ...
- $.ajax()方法详解(转)
以下内容转自:http://www.cnblogs.com/tylerdonet/p/3520862.html 尊重原创,请访问原创文章 jquery中的ajax方法参数总是记不住,这里记录一下. ...
- Python中深拷贝与浅拷贝区别
浅拷贝, list值是可变的,str值不可变,只能重新赋值 a=b=c='wjx'print(a,b,c)c= 'jmy'#重新赋值了,所以内存分配了新的地址print(a,b,c)print(id( ...
- Tomcat_异常_02_IOException while loading persisted sessions: java.io.EOFException
异常原因: EOFException表示输入过程中意外地到达文件尾或流尾的信号,导致从session中获取数据失败. 这是由于tomcat上次非正常关闭时有一些活动session被持久化(表现为一些临 ...
- hdu-5637 Transform(位运算+bfs)
题目链接: Transform Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
- C++11特性 gcc源码包
1.下载gcc最新的源码包 2.解压缩 tar -xf gcc-4.9.1.tar.gz 3. cd gcc-4.9.1 4.运行download_prerequisites脚本, ./contri ...