Ubuntu18.04下使用D435i跑ROS包和ORB-SLAM2

Ubuntu18.04下使用D435i跑ROS包和ORB-SLAM2相关问题

  • 前言
  • 主要问题及解决方法汇总
    • 一、realsense包版本问题
    • 二、无法定位安装包问题
    • 三、警告问题
    • 四、如何检测是否发布
    • 五、利用D435i跑ORB-SLAM2一点注意
  • 后言

前言

简述

最近想用D435i跑ORB-SLAM2(或者3),但是跑的前提就是,D435i的ROS包发布相关的话题出来,然后ORB-SLAM2这边的节点接受;但是我在使用D435i的ROS包(准确的说应该是realsense-ros)中产生了很多问题,中间花了很多时间,最后在realsense官方github的维护者MartyG-RealSense 解决了问题,感谢;本篇博文是我总结的几个问题点,希望能够帮助到正在使用这套平台的你。

原始资料

  • 1、https://github.com/GRF-Sunomikp31/SLAM/blob/main/VSLAM/test_SLAM/ORB-SLAM2-test.md
  • 2、https://blog.csdn.net/qq_44847636/article/details/116200626
  • 3、https://github.com/IntelRealSense/realsense-ros/issues/1824

[1]为我前几天解决无法定位包的一个博文,[2]是我用D435i跑ROS包、ORB-SLAM2的原始笔记内容,[3]是我有些问题和realsense官方的交流。

主要问题及解决方法汇总

一、realsense包版本问题

当你启动launch文件,有如下报错:

[camera/realsense2_camera_manager-2] process has died [pid 15807, exit code -11, cmd /opt/ros/melodic/lib/nodelet/nodelet manager __name:=realsense2_camera_manager __log:=/home/gipsy/.ros/log/11d336c6-a707-11eb-a69d-505bc2cc4003/camera-realsense2_camera_manager-2.log].
log file: /home/gipsy/.ros/log/11d336c6-a707-11eb-a69d-505bc2cc4003/camera-realsense2_camera_manager-2*.log

首先检测一下这里最后面两个版本是否相同(下图是正确的情况):

Ubuntu18.04下使用D435i跑ROS包和ORB-SLAM2_第1张图片

如果你的不一样,根据https://github.com/IntelRealSense/realsense-ros/releases下版本的realsense-ros包;

二、无法定位安装包问题

这里我出现了下述报错:

[camera/realsense2_camera_manager-2] process has died [pid 15807, exit code -11, cmd /opt/ros/melodic/lib/nodelet/nodelet manager __name:=realsense2_camera_manager __log:=/home/gipsy/.ros/log/11d336c6-a707-11eb-a69d-505bc2cc4003/camera-realsense2_camera_manager-2.log].
log file: /home/gipsy/.ros/log/11d336c6-a707-11eb-a69d-505bc2cc4003/camera-realsense2_camera_manager-2*.log

查找网上方法就是:sudo apt-get install ros-melodic-rgbd-launch,但是我一直定位不到这个包,解决方法就是我上面的那个博文:https://blog.csdn.net/qq_44847636/article/details/116200626;

这里再补充一下,其实上面那个错误是一个通用的错误类型 =-=

三、警告问题

启动之后,没有报错,只有警告:

[ WARN] [1619530196.570821098]:
27/04 09:29:56,572 WARNING [139988041905920] (messenger-libusb.cpp:42) control_transfer returned error, index: 768, error: No data available, number: 61
27/04 09:29:56,622 WARNING [139988041905920] (messenger-libusb.cpp:42) control_transfer returned error, index: 768, error: No data available, number: 61

这里MartyG-RealSense告诉我:

If control_transfer returned warnings only occur during launch and then stop, or only appear once or twice a minute after launch, then they can be safely ignored.

If the warnings continuously generate after launch then this can indicate that there is a serious communication problem wth the device.

我的这个是没影响的,只是一个warning。

四、如何检测是否发布

如果你想查看相关ROS包是否能发布相机的数据,你可以通过如下方式去查看:

  • roslaunch realsense2_camera rs_camera.launch

  • 然后在另一个终端中使用rivz启动rivz可视化软件;

  • 然后add-camera,再在订阅的topic中选择上面realsense包发布的话题;

  • 这里还要就得修改一下rivz中的全局坐标系,默认是/map,这里修改成相机的就行

完成上述操作之后,如何rviz中能出现相机画面,说明话题中数据正常发布的。

五、利用D435i跑ORB-SLAM2一点注意

在按照四能用rviz查看到D435i的图像时,说明你的D435i的ROS包是将相关数据发布出去了,这时候就可以跑ORB-SLAM2了,但这里千万要记得查看D435i的ROS包发布的话题和ORB-SLAM2接触的话题是否对应,虽然很对博文有提示去修改ORB-SLAM订阅节点的名称,但是这样完成之后用catkin_make是不够德,需要重新对这个ORB-SLAM2的包 编译 ./build_ros.sh,这样才可以;如何你不确定,可以先启动两个包,之后用rosnode info相关命令看ORB-SLAM2订阅的话题和D435i接受的话题是否相同。

这里ORB-SLAM2节点没有输出,现象就是启动之后没有图像画面。

后言

以上内容均为个人出现的问题以及分析解决,对用realsense(或者一些大牌子的其他传感器)使用者来说,我觉得出现问题合理的解决途径就是:首先是百度/google/CSDN,找不到的话可以在相关产品的github查看以往的issue,或者提交自己的issue,这里再次感谢MartyG-RealSense!

后续有问题继续更新…

你可能感兴趣的:(VSLAM,ORB-SLAM2,D435i,realsense)