【无人机自主导航7 SLAM】大疆Manifold2C平台及Intel Realsense D435i RGB-D相机实现ORB-SLAM3

发布于 2021-04-02  1091 次阅读


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

file

file