使用D415相机运行ORB_SLAM2

配置及实测

使用Realsense D435实测orb_slam2 https://blog.csdn.net/Carminljm/article/details/86353775
该博客对realsense ros、orb_slam2的环境进行了详细的说明,可以按此博客完成D435的实测,但该博客没有给出测试效果,以及单目的效果,下面将分别实测基于D415的orb_slam2的RGBD模式和Mono模式
实测D415单目:

cd /home/(user name)/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/
vi ros_mono.cc
(将64行话题"/camera/image_raw"替换成"/camera/color/image_raw")
roslaunch  realsense2_camera rs_rgbd.launch 
rosrun ORB_SLAM2 Mono /home/(user name)/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/(user name)/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/realsense_d415.yaml

(注:realsense_d415.yaml参数可根据引用的博客进行更改)
测试结果如下

use realsense D415 on orb

实测D415 RGBD:

cd /home/(user name)/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/
vi ros_rgbd.cc
(将68行话题"/camera/image_raw"替换成"/camera/color/image_raw")
(将69行话题"camera/depth_registered/image_raw"改成"/camera/depth/image_rect_raw")
roslaunch  realsense2_camera rs_rgbd.launch 
rosrun ORB_SLAM2 RGBD /home/(user name)/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/(user name)/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/realsense_d415.yaml

测试结果如下

use realsense D415 on orb

结论:
基于D415的orb_slam2的mono模式:轨迹精度较高,但特征捕获性能较差,重定位性能较好
基于D415的orb_slam2的rgbd模式:轨迹精度较差,跳动严重,但特征捕获能力较好,重定位性能较好

基础知识

ORB特征: ORB特征原理解读

ORB特征采用FAST算法检测特征点,采用BRIEF算法描述特征点,并解决BRIEF算法的不具备旋转不变性的问题.
FAST算法过程
(1)从图片中取出一个像素点,并获取灰度值;
(2)设定一个阈值t,用于判断是否是相同点,当两个像素点灰度值大于该阈值,则视为不同点;
(3)将当前选取的像素的灰度值与其周围一圈像素的灰度值进行阈值比较;
(4)如果有连续的n个点与所选择的选取的像素点不相同,则所选取像素点为特征点.
BRIEF算法过程
(1)以特征点为圆心,并以半径r选取一片圆形区域;
(2)在圆形区域内以某一模式选取n个点对;
(3)对比每个点对,若点对中前像素灰度值大于后像素的灰度值,则对比结果为1,否则为0;
(4)按顺序将每个点对的结果集合起来即获得描述子(类似100101...二进制形式)
解决不具备旋转不变性问题
在BRIEF算法中以某一模式选取n个点对的过程中,是基于图像坐标系来选取的,因此,只要保证对象旋转过程中,能准确确定对象坐标系不变,则就可以保证算法获取的描述子相同.对象坐标系确定方法:在以特征点为圆心选取的圆形图片区域内,计算像素质心,并将特征点与质心之间的连线作为x轴,从而确定对象坐标系.由于对象在旋转过程中,其质心分布是不变的,因此通过这种确定对象坐标系的方法可以有效解决对象特征点不具备旋转不变性问题.

图像特征: 图像处理之特征提取

词袋模型: 浅谈回环检测中的词袋模型

你可能感兴趣的:(视觉slam,视觉&OpenCV)