Direct Sparse Mapping
Introduction
- 滑窗的会边缘化掉离开视场的点,同时来保证可观性的一致,不能重用边缘化的地图点
- 特征点法一般根据共视关系选固定位置的**关键帧和地图点,通过固定一帧的策略保证可观性
- 选择以前的关键帧,结合时间和共视关系来选择**的关键帧
- 时间上远的帧会受drift影响,因此使用多尺度优化,来增加收敛半径
- 由于距离远伪观测(外点)会增加,使用t分布来更鲁棒地处理
DSO和LDSO的缺点:
- 使用了不同的目标函数和点类型来完成里程计估计
- 闭环检测依赖于特征点的可重复性,损失一些可以用来矫正的点
- 闭环的误差较正均匀分布在关键帧上,这可能不是最优解
- 地图点的信息没有被reuse
Direct Mapping
- 跟踪线程以帧率速度输出位姿,会判断是否加入关键帧
- 建图线程处理新的帧,来跟踪关键帧上的点(候选点逆深度更新),插入关键帧会重新计算local window,**新的点,优化motion和structure。然后为了保证全局一致,移除外点,检测遮挡,避免点的重复。
使用固定其它帧的方式来保证不可观自由度的一致性。
LMCW的初始解不在收敛半径内,所以使用粗到精的方式来优化,估计的几何作为下一层的初始值。
LMCW: Local Map Covisibility Window
由时间和共视策略组成,都是相对于最新关键帧的。
时间窗口主要目的是来优化新的点(初始化新点),并且保证里程计精度。
固定时间窗口的大小,从时间窗口移除关键帧的策略:
- 总是保留上两个关键帧(和),这保证里程计在挑战环境下(如大旋转)也能保证精度。避免关键帧过早的固定,保证被充分优化。
- 其他的关键帧要均匀分布在空间中,丢弃有最大距离的,使得视差最大:
共视窗口是和时间窗口有共视关系的关键帧,要找到那些在最新关键帧空白区域有地图点投影的关键帧,具体的策略:
- 计算距离地图来确定耗尽区域,将时间窗口投影到最新关键帧,计算每个像素到最近地图点的距离。
- 选择具有最大数目投影点的旧关键帧,会剔除大于一定视角的点,来防止遮挡等情况。
- 更新距离地图
- 迭代执行第二步,直到选出足够数目,或者没有关键帧。
**新地图点前,共视点已经完成投影,避免了提取重复的地图点,保证地图的一致性。
Robust Non-Linear PBA
LMCW的关键帧选取范围广,忽略了实际光度的不一致性,比如由于遮挡,光反射等
提出根据光度误差的分布来剔除外点:
均匀分布
若给定且均匀分布的误差,求导等于0,得到re-weight的最小二乘:
高斯分布
如果符合高斯分布,得到一个常数权重,所有点的同等对待,没法处理外点。
Student t分布
稠密和稀疏光度误差都比较适合,权重函数
t分布能快速处理误差,给一个低权重。
使用gradient free iterative Nelder-Mead method(NM单纯形替换法,速度慢)来最小化概率密度函数拟合分布,确定这个参数和,而不是固定一个值(如维度)。在拟合t分布之前会剔除异常值,此时 的确定是Median Absolute Deviation (MAD),即,拒绝大于3倍方差的值。
M估计(Huber)
for ,这个值可以固定,也可以动态调节。
A. Implementation of the probabilistic model into the PBA
由于内点和外点的判定是动态的,会自动学习每个关键帧的误差分布,因此可以适用于不同的场景。在普通的关键帧上被认为是外点的,在一些挑战场景下会被认为是内点。
把这个误差分布作为权重加到目标函数,可能会每次迭代都改变目标函数,会使得优化降级。我们只在每个金字塔层的最开始计算误差分布,之后优化过程就固定。PBA结束最后会计算一次误差分布。
B. Outlier management
低于目标帧95%的误差分布结果,被认为是内点。对于挑战的关键帧上,阈值会更高,相对宽松。对于普通帧,阈值降低,会更加严格。外点率大于30%就直接扔掉这个观测,如果优化中外点率大于60%就直接放弃这个优化。
要保留一个新点,必须在创建新关键帧后在所有新关键帧中对其进行观察,而在三个关键帧中对其进行观察则将其视为成熟点。 如果观察次数少于三个,则将删除成熟点。
Front-End
新的帧跟踪局部地图,地图点和参考关键帧被固定。使用coarse-to-fine优化,同时使用逆向组合法来避免jacobian的重新计算。
关键帧的判断(相对于最新关键帧):
- 地图点的可视率(visibility ratio)
其中是最新关键帧可见点总数,分别是最新关键帧和跟踪帧的点逆深度。这个的作用是当相机靠近一个物体时,会创建更多的关键帧。
- 跟踪帧的基线长度
定义为帧间位移和跟踪局部地图上平均逆深度的比。作用相当于平移的距离足够大,超出视线范围
- 光照变化
如果加权后的满足,则设置为关键帧。
跟踪新地图点
点会更新几帧后有低不确定性才被加入PBA,这种推迟的策略需要较好的初始值。为了保证有足够的点来**,候选点在移出LMCW时才会被清除。**的点是投影在空白区域的,当回到来过的地方,**的点很少。
Discussion
需要一个重识别的功能,因为对于大场景,当误差累积较大时,可能有些点是没法重新投影过来的。