ORB_SLAM3
1. 综述
- ORB_SLAM是第一个支持视觉,视觉惯导和多地图的slam系统(单目,双目,RGB-D)(pin-hole和fisheye)
- 亮点一:基于特征的紧耦合视觉惯导系统(基于最大后验估计)—优点:系统在实时,大小场景以及室内外环境下都有很好的鲁棒性,且整体精确度更高
- 亮点二:基于新位置识别的方法实现多地图系统(multiple map system)—优点:丢失后,可与之前时刻的地图进行融合,能利用更早时刻的地图信息
- 结果:stereo-inertia slam 3.6cm EuRoc
9mm TUM-VI (手持测量)
2. 要点
- 基于最大后验估计(MAP)的单目、双目惯导SLAM系统
- 高召回的位置识别算法(先检测候选关键帧的空间一致性,再检测与其他三个共视关键帧的时间一致性)—提高了召回率,地图准确度,但会轻微的增加计算量
- ORB_SLAM Atlas(地图集)–表示一系列非连接的地图,并在Atlas中可以实现位置检测,重定位,回环,地图融合的操作。分为激活地图(active map)和未激活地图(non-active map)。通过构建DBOW2数据库来实现重定位,回环检测和地图融合。
- Tracking线程:1.获得并处理传感器信息,计算并更新active map中的当前帧位姿,对匹配地图特征进行最小化重投影误差。2.判断当前帧是否为关键帧。3.(视觉惯导中)通过惯性残差估计速度和IMU的bias。4.追踪丢失时,在Atlas map中重定位当前帧。一旦重定位完成,两种选择:a. 更换新的active map. b. 一段时间后将active amp放入non-active map中,并获得一个新的active map
- Local Mapping 线程:1.向active map中添加关键帧和对应的地图点,移除冗余的地图点,并对地图点进行BA优化(当前帧附近的一定范围内)。2.(Inertia中)使用MAP最大后验估计进行IMU的参数初始化。
- Loop and map merging线程:1.识别active和Atlas之间的公共区域,a.公共区域在active map中,则回环get b.公共区域在active之外,把此Map和active map融合为新的active map. 2. 回环检测后,全局BA优化地图点(独立线程中,目的:不影响其他线程的实时性)。
3.地图融合和回环检测
A。 位置识别
-
DBOW2候选关键帧
– Atlas的DBow2中寻找三个与当前关键帧(Ka)最相似的关键帧(Km),不包含Ka的共视帧 -
构建局部窗口
–窗口中包括Km,Km中每一帧的best共视帧以及共视地图点。DBOW2对Ka和窗口中的关键帧的进行2D-2D匹配,3D-3D匹配。 -
3D 点转换
–RANSAC计算最佳的Tam(Ka和window中的关键帧地图点)。
–纯单目或是单目惯导尺度还未确定时,Tam ∈ Sim(3),否则Tam ∈ SE(3)。
–使用Horn算法使用最少三队3D-3D匹配点计算Tam。
–根据Tam,计算Ka的重投影误差。当重投影误差<阈值,给该假设投票。当票数大于一定阈值,选定该假设。 -
匹配优化
–窗口内所有的地图点通过Tam寻找更多与Ka的匹配点。同时进行反向操作,寻找Ka在窗口内更多的匹配点。使用所有的匹配点,非线性优化Tam(双向重投影误差)。
–Huber核增加鲁棒性。
–若inliers>阈值,则重复迭代(匹配寻找和非线性优化),使用更小的搜索窗口。 -
验证(三个共视关键帧)
-
VI 重力方向验证(Visual-inertia情况)
–通过验证roll和pitch角,若两角<阈值,则完全确定识别到的帧。
B。 视觉地图融合
- 窗口合成
–Ka+Ka共视关键帧+Km+Km共视关键帧+所有观察到的地图点
–Ma中的关键帧和地图点通过Tma对齐到Mm。 - 地图融合
–Ma和Mm融合为新的active map
–Ma和Mm中的匹配,Ma中的匹配点被移除,Mm中的匹配点继承观测关系
–更新共视图和essential graph(更新帧与地图点间edge) - BA
–对Ma和Mm中的关键帧进行局部BA(固定Mm中关键帧的共视帧) - 位姿图优化