D435i相机在前一章节内容已有提及。
一、环境配置与相机参数修正
相关内容参见之前的文章,本文测试的相机配置如下:
二、参看相机发布话题
2.1 直接获取
D435i相机为Intel realsense的产品,其提供的ORS功能包有相关的launch启动文件,可以从对应相机类型的launch中获知话题名。
2.2 间接获取
编译 Intel realsense功能包后,执行对应的launch文件,通过:
rostopic list
获取所有发布的话题,确定相机话题。
三、修改ORB-SLAM3的订阅话题
在ORB-SLAM3路径下:
catkin_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src
ganahe@ganahe-Nitro-AN515-51:~/catkin_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src$ tree
.
├── AR
│ ├── ros_mono_ar.cc
│ ├── ViewerAR.cc
│ └── ViewerAR.h
├── ros_mono.cc
├── ros_mono_inertial.cc
├── ros_rgbd.cc
├── ros_stereo.cc
└── ros_stereo_inertial.cc
选择对应更改的文件,此处即对应相机的种类:
文件 | 说明 | 备注 |
---|---|---|
AR | AR体感相机文件目录 | 暂时用不到,忽略 |
ros_mono.cc | 单目相机 | - |
ros_mono_inertial.cc | 带有IMU的单目相机 | - |
ros_rgbd.cc | RGB-D深度相机 | 一般有自带IMU,如D435i |
ros_stereo.cc | 双目相机 | - |
ros_stereo_inertial.cc | 双目IMU相机 | - |
本文以Interl realsense D435i作视觉传感器数据来源,故编辑ros_rgbd.cc ,将话题订阅改为:
//注释原代码
// message_filters::Subscriber<sensor_msgs::Image> rgb_sub(nh, "/camera/rgb/image_raw", 100);
// message_filters::Subscriber<sensor_msgs::Image> depth_sub(nh, "camera/depth_registered/image_raw", 100);
//更改话题订阅
message_filters::Subscriber<sensor_msgs::Image> rgb_sub(nh, "/camera/color/image_raw", 100);
message_filters::Subscriber<sensor_msgs::Image> depth_sub(nh, "/camera/depth/image_rect_raw", 100);
根据相机参数文件发布的话题来修改即可。
三、运行ORB-SLAM3
运行ORB-SLAM3
需要如下:
- 修改的相机订阅话题:
xxx.cc文件
- 相机参数文件:
/ORB_SLAM3/Examples/ROS/ORB_SLAM3/xxx.yaml
- 启动文件:
/realsense2_camera/launch/*.launch
运行步骤如下:
3.1 开启相机
roslaunch realsense2_camera rs_d435i.launch
3.2 启动ORB-SLAM3
cd ~/catkin_ws/
# 双目相机
rosrun ORB_SLAM3 ORBD /home/ganahe/catkin_ws/src/ORB_SLAM3/Vocabulary/ORBvoc.txt /home/ganahe/catkin_ws/src/ORB_SLAM3/Examples/ROS/RGB-D.yaml
Comments NOTHING