运行D435i相机录制的bag包跑可回环的稠密建图ORB-SLAM2_RGBD_DENSE_MAP-master


前言

之前使用D435i相机录制过自己的bag包,然后提取了rgb图和depth图,保存成tum格式的数据集。以离线的形式运行数据集是没问题的;启动ros驱动,以ros在线的形式运行也是没问题的。运行录制好的bag包,以ros在线的形式运行出问题了,窗口能打开,但是没有画面,后面一想,可能是没有接收到话题。


一、Inter-realsense SDK 和 realsense-ros驱动话题对比

1.查看用Inter-realsense SDK录制的bag包话题信息

rosbag info 20220723_202328.bag

在这里插入图片描述
在这里插入图片描述
发rgb图像话题和depth图像话题分别是

#rgb图像话题
/device_0/sensor_1/Color_0/image/data

#depth图像话题
/device_0/sensor_0/Depth_0/image/data

2.查看realsense-ros发布的话题信息

新建终端打开ros驱动

source devel/setup.bash

roslaunch realsense2_camera rs_rgbd.launch

查看话题

rostopic list

在这里插入图片描述

发rgb图像话题和depth图像话题分别是

#rgb图像话题
/camera/color/image_raw

#depth图像话题
/camera/aligned_depth_to_color/image_raw

二、运行rosbag包,以ros在线的情况下运行ORB-SLAM2_RGBD_DENSE_MAP-master

1.新建一个文件

新建一个节点,程序内容和ros_rgbd.cc一样,只是接收的话题改一下
Examples/ROS/ORB_SLAM21/src/ros_rgbd.cc文件复制一份重命名为ros_rgbd_with_my_bag.cc放在同一目录下
在这里插入图片描述
将ROS节点名称改成RGBD_WITH_MY_BAG

ros::init(argc, argv, "RGBD_WITH_MY_BAG");

将接收rgb图像话题和depth话题改成

#rgb图像话题
/device_0/sensor_1/Color_0/image/data

#depth图像话题
/device_0/sensor_0/Depth_0/image/data

在这里插入图片描述

2.修改CMakeLists.txt

打开Examples/ROS/ORB_SLAM21/CMakeLists.txt文件,在最后面添加

# Node for my D435i bag
rosbuild_add_executable(RGBD_WITH_MY_BAG
src/ros_rgbd_with_my_bag.cc
)

target_link_libraries(RGBD_WITH_MY_BAG
${LIBS}
)

在这里插入图片描述

3.重新编译

ORB-SLAM2_RGBD_DENSE_MAP-master/路径下打开终端

./build_ros.sh

4.运行

首先新建终端打开roscore

roscore

接着运行程序,在ORB-SLAM2_RGBD_DENSE_MAP-master/路径下打开终端

rosrun ORB_SLAM21 RGBD_WITH_MY_BAG Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM21/MyD435i.yaml

最后运行录制好的rosbag包

rosbag play 20220724_164343.bag

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_60355964/article/details/128041841
今日推荐