Ubuntu18.04下使用D435i跑ROS包和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
首先检测一下这里最后面两个版本是否相同(下图是正确的情况):
如果你的不一样,根据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!
后续有问题继续更新…