还是不要看了,高翔的科普读物已经出版了,读他的《slam十四讲》就可以了。
ORB_SLAM整个工程中冗长的数据关联策略使分析起来非常困难,闭环检测作为整个优化误差策略的方法并未得到显而易见的效果
三维重建过程中,滤波方法可以看做是一种追踪方法。EM方法的长期使用造成在相对整个世界坐标系中累计误差的指数级增长。若是检测到可信的闭环,闭环之内的标记帧的位姿可以全部进行误差矫正,重新调整在世界坐标系中的位置。
BA方法对两两关键帧之间的位姿误差和世界地图误差累计进行共同优化,而闭环检测对检测到闭环之后,对所有闭环关键帧以及世界地图所有点进行位姿优化。
闭环检测在整个重建过程中的地位...............闭环检测是如何降低地图总误差的?
1. 在滤波方法中添加的闭环检测
类似于PTAM方法中,一般使用闭环检测在另一个线程里面,BOW方法是使用恰当的。可以对所有得到的特征点即时构建词包,在滤波优化的并行过程中,对每一帧进行闭环检测。
在SLAM中,闭环检测是一种强数据关联,置信度应该比VO描述子匹配的置信度要高。
增量词包方法:
根据闭环检测的定义,与地图构建类似,构建词包理应是一个增量的过程。记录VO过程中的特征点描述子,运行于平行于VO的另一个线程里。词包的数量量级理论上等同于世界地图标记点的量级。
对每一帧的描述子进行记录,并在新的一帧描述子到来之后重构词包,力图覆盖已观测到的整个环境。
地图是数据关联完成的最终形式,词包是完成闭环检测数据关联的一个工具。
固定词包方法:
BOW的构建是一个非监督机器学习的过程,构建合适结构的词包需要一定的训练时间,词包重构有可能重构整个词汇树,并不一定能实时完成。许多SLAM工程使用固定词包方法,对一个特定的数据集(例如TMU室内场景数据集)构建一个硕大无比的词包模型, 只进行场景的相似度计算,而不进行模型更新。
流传已久的ORB_SLAM方法即使用了固定词包的方法,在工程运行之前,会提前载入一个硕大无比的词包模型到内存中。
2. SFM方法中的闭环检测
SFM方法为离线结构恢复的方法,丢失了帧间关系,因此不能预先完成VO过程,需要重建轨迹,即重新恢复离散数据为图结构。步骤需要两次优化:寻找最优序列结构;根据最优序列结构重建整个地图。
从无序图片提取图像特征描述子,用树模型去计算两张图片特征点之间的欧式距离进行特征点的匹配,从而找到特征点匹配个数达到要求的图像对,此过程为关系重建。对于每一个图像匹配对,计算对极几何,估计F矩阵并通过ransac算法优化改善匹配对。这样子如果有特征点可以在这样的匹配对中链式地传递下去,一直被检测到,那么就可以重新形成轨迹。
若已重建轨迹可以被假定是最优的,则SFM的后期处理与在线SLAM别无二致,使用BA算法和闭环检测重建局部地图和全局关联。
闭环检测的CNN方法
闭环检测是一种模式识别过程,可以使用CNN方法,并且当下有这样的趋势。CNN模型在普遍数据集如ImageNet上,特征点检测和场景相似度计算已远超过传统的BOW算法,因此可以在使用固定BOW的场合,使用CNN模型取代BOW模型。
对SLAM的改造体现在对BOW模型的替换上,对已标记的关键帧,使用CNN模型取代BOW计算关键帧之间的相似度,使用ANN方法和NN方法,检测是否产生闭环。完成闭环检测,并应用于后续的BA过程。
名满天下的残差网络和MaskRCNN网络,对特征点和目标的分割检测上已经远超过传统检测方法和DPM方法,在新的闭环检测过程中可以直接使用其网络结构。
3.闭环检测是如何降低总残差的?
闭环有场景闭环和Agent/相机pose闭环两种情况,但场景闭环和整体闭环不是充要条件,因此使用Pose闭环表示检测闭环,表现为Agent/相机的位姿图产生闭环。在机器人学中,释义为机器人又走到了原来的位置,这比机器人又看到了相同的场景表示闭环可信,但此方法严重依赖于已构建世界地图的可信度。
场景闭环优化残差一般应用于对相机没有太过关注点的纯粹三维重建之中。在SLAM中,长时间后的大闭环检测也是使用场景闭环检测的方式(关键帧的相似度计算),同时需要更多的判定条件。
二维环,闭环检测一般使用二维环,即假设Agent/机器人的六自由度运动限定在在同一个海拔或者一个水平或者倾斜的平面上。
先决条件:
1.已观测的世界地图的误差已经降低到置信范围;2.Agent又回到以往的pose附近,即将要形成闭环。
闭环的判断条件:测地距离阈值(稀疏图的大环和小环)、欧式多边形的面积(大闭环和小闭环);
使用Agent位姿获取闭环可信状态,对场景匹配完成链接闭环,完成闭环检测。
残差优化:
检测闭环之后,可清楚的得到一个拓扑闭环-稀疏拓扑图,或者进而得到一个欧式多边形闭环-欧式空间二维多边形,可使用此环进行误差优化。此闭环并非完全可信,优化的时候需要对地图和位姿同时优化。
ORB_SLAM中闭环检测的优化方式:在场景闭环链接处,使用RANSAC和ICP等方法匹配链接闭环。矫正闭环上链接的所有关键帧。对每一个关键帧的点云都进行更新。若需要构建更准确的地图,则再次更新整个Agent轨迹和每个pose处的观测地图。
借用一张图:https://blog.youkuaiyun.com/u010128736/article/details/53409199
残差优化方程:
2.4 闭环处的Sim3位姿优化
当检测到闭环时,闭环连接的两个关键帧的位姿需要通过Sim3优化(以使得其尺度一致)。优化求解两帧之间的相似变换矩阵,使得二维对应点(feature)的投影误差最小。
如下图所示,Pos6和Pos2为一个可能的闭环。通过和之间的投影误差来优化。
2.3 全局优化
在全局优化中,所有的关键帧(除了第一帧)和三维点都参与优化。
更新整个位姿轨迹和全部关键帧以及所有的地图位置之后,闭环检测完成。