最近阅读了Raúl Mur-Artal and Juan D. Tardós写的ORB_SLAM2论文,并做了一些小结
ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras
以下是本人对这篇文章的一些小结,仅供参考。
一 、摘要部分
ORB_SLAM2是一套基于单目、双目以及RGB-D的完整方案,可以实现地图重用、回环检测以及重新定位的功能。后端主要采用BA优化方法,内部包含了一个轻量级的定位模型,实现利用VO 追踪未建图区域和与地图点匹配实现零漂移定位。
这篇文章是在单目ORB-SLAM的基础上提出ORB-SLAM2,主要有以下贡献:
1. 这是首个基于单目,双目和RGB-D相机的开源SLAM方案,这个方案包括,回环检测,地图重用和重定位。
2. 结果说明,BA优化比ICP或者光度和深度误差最小方法的更加精确。
3. 通过匹配远处和近处的双目匹配的点和单目观测,双目的结果比直接使用双目系统更加精确。
4. 针对无法建图的情况,提出了一个轻量级的定位模式 ,能够更加有效的重用地图。
二、ORB_SLAM2
1、简介
ORB_SLAM2由3+1个平行线程组成,包括跟踪、局部建图、回环检测以及在回环检测后的全局BA优化。之所以说是3+1,因为第四个线程仅在回环检测并确认后才执行。
前三个主要并行线程:
a、跟踪:通过寻找对局部地图特征进行匹配,利用纯运动BA最小化重投影误差进行定位每帧图片的相机;
b、局部建图:通过执行局部BA管理局部地图并优化;
c、回环检测:检测大的环并通过执行位姿图优化更正漂移误差。这个线程触发第四线程;
d、全局BA:在位姿图优化之后,计算整个系统最优结构和运动结果。
该系统运用了基于DBOM2嵌入式位置识别模型进行重定位,来防止跟踪失败、或已知地图场景重初始化、回环检测等。系统使用ORB特征进行追踪、建图和位置识别任务,该特征的优点是具有旋转不变性和尺度不变性。并且能够迅速的提取特征和进行匹配,能够满足实时操作的需求,能够在基于词袋的位置识别过程中,显示出良好的精度。
2、单目、近处双目和远处双目特征点
ORB-SLAM2作为一种基于特征提取的方法,系统的所有运行都是基于输入图像的特征展开,而不依赖于双目或者RGB-D的相机。系统处理单目或者双目的特征点,分成远处特征点和近处特征点两类。
双目特征点 通过三个坐标定义(uL,vL,uR),(uL,vL)是左图的坐标,(uR,vL)是右图坐标。对于双目相机而言,我们提取两幅图像当中的ORB特征,对于每个左边的ORB特征我们对其匹配到右边的图像中。由于极线是水平的,所以这对于建设双目图像校正十分有效。在左边的图像产生双目的ORB特征点,和一条水平的线向右边的图像进行匹配,通过修补相关性来重新定义亚像素。对于RGB-D相机在ORB图像通道上提取ORB特征点,将该点坐标作为左图坐标,将深度转换为虚拟的右图坐标,转换关系如下式:其中d为深度 ;fx为水平焦距 ; b为结构光投影仪 与水平相机之间的基线。
近双目特征点与远双目特征点:
近双目特征点的定义是:匹配的深度值小于40倍双目或者RGB-D的基线,否则的话,是远特征点。
近特征点:能够由一帧图像直接三角测量化,得到的深度是精确的估计,并且能够提供尺度,平移和旋转的信息。
远特征点:仅仅能够提供精确的旋转信息,但是很少的尺度和平移信息。当提供多视图的时候,我们才能三角化那些远的点。
单目的特征点通过左图的两个坐标xm=(uL,vL)定义,必须保证所有的ORB特征是一致的,这些点仅能够从多视图中三角测量化并且不能够提供尺度信息,但是可以提供旋转和平移的估计信息。
使用双目以及RGBD相机的优点在于:
a、直接获得深度信息,而不需像单目一样需做SFM初始化;
b、系统初始化更方便,首帧即为关键帧,且由于知道深度信息,可以从立体点中直接构建初始化地图
3、用单目或者双目进行BA
BA主要用在以下几个地方:在跟踪线程中使用BA优化相机位姿(纯运动BA);优化关键帧的本地窗口和局部建图线程中的点(局部BA);在闭环检测后优化所有关键帧和点(全局BA)。
纯运动BA优化,优化的是相机的R,t,通过最小化重投影误差的方法,通过最小化3D点Xi与图像上的关键点xi之间的重投影误差,ρ这里表示鲁棒核函数,鲁棒核函数主要作用是平衡误差不让二范数误差增长过快,π(.)类似于相机内参比上一个尺度,将3D转为2D:
局部BA相较于纯运动BA,增加了优化该点在地图中的3D坐标,即优化了一些主要的关键帧以及关键帧中可见的所有点,具体问题描述如下:
其中PL为所有关键帧中可观察到的点; KL关键帧中所有的covisible关键帧, KF为除KL外的关键帧,两者之集合即为所有关键帧; XK为PL中的点与关键帧k中的关键点匹配后的集合。
全局BA是局部BA的特殊形式,即所有得关键帧和地图点都要被优化。
4、回环检测和BA优化
回环检测:
回环检测主要分两步:a.回环信息的检测与确认;
b.修正和优化位姿图。
单目ORB会出现尺度漂移的问题,而双目/RGBD可以测得深度信息,所以尺度已知,所以在几何校验与位姿图优化无需处理尺度漂移的问题,是基于刚体变换而非相似度。
全局BA:
在图优化之后进行全局BA优化;
全局BA是一个独立的线程,这使得允许系统在BA优化的同时进行建图和回环检测环节,但这会影响BA优化与当前地图 状态合并,如其他线程运行中产生的新的关键帧与关键点以及在BA过程中回环检测线程检测到了新的环等问题。当检测到新的回环时,将终止当前的全局BA优化,因为新的回环会引发新的回环检测,所以把这次的停了也无所谓。
全局BA优化之后需要将全局BA优化的关键帧和点的子集进行升级,同时与优化时插入的未优化的关键帧和点相融合,融合方式:通过生成树的方式将关键帧的更正“规律”延伸至未更新关键帧来完成,未更新点根据其参考关键帧的校正进行变换。
5、关键帧的插入
基本遵循ORB_SLAM方式,即经常插入关键帧并移除多余的关键帧。
利用远近关键点设置关键帧的插入条件:
因为已知近关键点相较于远关键点能够提供平移信息,所以需要大量的近关键点用于精确估计平移,所以设置插入帧条件为,当跟踪的近关键点小于一定数目或者帧中出现的新的近关键点大于一定数目时插入新的关键帧。
6、定位模型
该模型适用于地图轻量级且已知的情况下长期运行。定位过程,局部建图与回环检测线程停止,通过追踪线程进行重定位,通过VO匹配图像与点云。该方法用于未建图区域时会造成漂移累计,在已知地图中利用点云地图匹配能够实现在地图中的无漂移定位。
ORB-SLAM2贡献:
系统架构: