目录
前言
之前使用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