Literature Review: 基于稀疏直接法的建图

LR: Direct Sparse Mapping

Abstract

Photometric bundle adjustment (PBA).前端

目前的PBA无法处理reobservation.后端

咱们提出DSM(direct sparse mapping).session

1. Introduction

边缘化策略经过移除旧的相机和点来减小计算量, 可是还保持系统对于不可观的自由度(绝对的位姿和pose)的一致性.app

一般光度收敛半径在1-2个像素. 因此一个标准的PBA不能补偿drift. 因此, 咱们提出了multi-scale PBA来成功处理收敛性的难题.框架

咱们须要保证PBA对于spurious(假的) observations的鲁棒性. 他们主要由稀疏的关键帧形成, 会致使阻挡和场景的reflections这样会破坏光度一致性的假设. 咱们用基于t-distribution的influence function融合进PBA来处理.dom

  • 能够重复使用已存地图信息的地图(用光度的)
  • Local Map Covisibility Window(LMCW)来选择一样场景下的关键帧, 即便不是时间上连续的.
  • coarse-to-fine的优化scheme来提高PBA的收敛半径. 这个策略能够利用丰富的几何信息.
  • 用t-distribution来作外点处理.
  • 在EuRoC数据上的验证
  • make our implementation publicly available

VINS-mono的前段和OKVIS相似, 可是用了额外的BRIEF来作回环检测.ide

LSD-SLAM用了FAB-MAP.函数

LDSO在DSO上接了一个ORB-DBoW.oop

他们都有如下缺点:学习

  • A different objective function and points to those of the odometry
  • loop closure detection relies on feature repeatability, missing many corrections
  • 偏差是均匀分配的, 颇有可能不是最优解.
  • 尽管轨迹在空间里被修正了, 可是地图点没有被重复使用.

一直相对的, Full SLAM像ORB-SLAM和DSM复用了地图.

DVO提出了probabilistic formulation给直接法的关联. [16]提出了用t-distribution鲁棒性. [17]提出在光度偏差李t-distribution好使, 可是几何偏差很差使.

3. Direct mapping

有front-end和back-end.

前端跟踪帧和点, 也提供了粗略的初始化.

后端决定用哪些帧构成局部滑窗, 共同优化全部的关键帧和地图点.

每一个地图点有一个主帧, in which it was spawn, 由逆深度表示.

投影: \(\mathbf{u}=\pi(\mathbf{p})=\mathbf{K}\left(p_{x} / p_{z}, p_{y} / p_{z}, 1\right)^{T}\)

反投影: \(\mathbf{p}=\pi^{-1}(\mathbf{u}, \rho)=\rho^{-1} \mathbf{K}^{-1}\left(u_{x}, u_{y}, 1\right)^{T}\)

A. Photometric Model

\(E_{p}=\sum_{\mathbf{u}_{k} \in \mathcal{N}_{p}} w_{k}\left(\left(I_{i}\left[\mathbf{u}_{k}\right]-b_{i}\right)-\frac{e^{a_{i}}}{e^{a_{j}}}\left(I_{j}\left[\mathbf{u}_{k}^{\prime}\right]-b_{j}\right)\right)\)

\(w_{g_{k}}=\frac{c^{2}}{c^{2}+\|\nabla I\|_{2}^{2}}\)

B. Photometric Bundle Adjustment

\(E=\sum_{I_{i} \in \mathcal{K}} \sum_{\mathbf{p} \in \mathcal{P}_{i}} \sum_{j \in \operatorname{obs}(\mathbf{p})} \sum_{\mathbf{u}_{k} \in \mathcal{N}_{p}} w_{k} r_{k}^{2}(\boldsymbol{\xi})\)

LMCW复用地图点, 其中的初始解不在收敛半径内, PBA也无法优化.

因此提出了coarse-to-fine的优化框架over all active keyframes. 在每一层, 咱们迭代直道收敛, 结果做为下一层的初值.

咱们用LM. 每一次迭代的增量为: \(\delta \boldsymbol{\xi}^{(t)}=-\mathbf{H}^{-1} \mathbf{b}\)

这里\(\mathbf{H}=\mathbf{J}^{T} \mathbf{W} \mathbf{J}+\lambda \operatorname{diag}\left(\mathbf{J}^{T} \mathbf{W} \mathbf{J}\right), \mathbf{b}=\mathbf{J}^{T} \mathbf{W} \mathbf{r}\), \(\mathbf{W} \in \mathbb{R}^{m \times m}\)是对角阵, 由权重\(\omega_k\)组成.

4. LMCW: Local Map Covisibility Window

是用来选择active关键帧和地图点的策略.

LMCW包括两部分: 1. temporal. 2. covisible

\(N_t\)很重要, 由于至关于探索, 初始新的点. 当一个新的关键帧被插入, 咱们把它插入到temporal part, 而后移除另外一个. 因此咱们维护了固定大小的temporal KFs.

  1. 永远保持最新的两个关键帧, 保证里程计的精度.
  2. 剩下的关键帧在空间中均匀的分布. 咱们丢掉关键帧最大化: \(s\left(I_{i}\right)=\sqrt{d\left(I_{1}, I_{i}\right)} \sum_{j=3}^{N_{t}}\left(d\left(I_{i}, I_{j}\right)\right)^{-1}\)
    1. 这里\(d(I_i, I_j)\)是关键帧i和j的\(L_2\)距离. 这个策略偏心高度共视的.

第二个部分是\(N_c\)共视的关键帧. 咱们但愿选择和temporal part共视的帧.

  1. 计算distance map来定义depleted(废弃的)区域. temporal part的全部地图点投影到最近的关键帧, 这样distance map注册了, 对于每个像素, 有最近地图点投影的距离.
  2. 在旧关键的list中选择一个关键帧. 选择最大化在depleted area投影点数的帧. 咱们丢弃掉视角大于一个阈值的点来检测和移除可能被遮挡(occluded)的点.
  3. 更新distance map来定义新的depleted areas.
  4. 从(2)迭代直道\(N_c\)共视关键帧被选择了, 或者没有合适的帧.

5. Robust Non-Linear PBA

LMCW选择了widely separated关键帧可是没有考虑任何光度一致性. 因此有可能有些点不能产生广度一致的图像. 他们多是由于遮挡或者是场景反光致使的.

为了使得PBA对于缺乏光度一致的状况的鲁邦, 咱们提出了一种外点管理策略 based on photometric error distribution.

最大后验几率MLP等价于最小化负对数几率(negative log-likelihood). \(\boldsymbol{\xi}^{*}=\underset{\boldsymbol{\xi}}{\operatorname{argmin}}-\sum_{k}^{n} \log p\left(r_{k} | \boldsymbol{\xi}\right)\)

上面的式子等价于让导数为0. 也就是re-weighted最小二乘. \(w\left(r_{k}\right)=-\frac{\partial \log p\left(r_{k}\right)}{\partial r_{k}} \frac{1}{r_{k}}\)

因此这个解直接被光度偏差的分布\(p(r_k)\)(看[15])影响. 而后咱们考虑不一样的分布.

Gaussian Distribution: 若是偏差s被认为是在0附近的正态分布\(\mathcal{N}(0, \sigma^2_n)\), 那么偏差分布的模型就是: \(p\left(r_{k}\right) \propto \exp \left(r_{k}^{2} / \sigma_{n}^{2}\right)\). 这个模型致使constant distribution of weights, 也就是标准的最小二乘. 可是它等价的对待全部点, 这样外点也不能被neutralized. \(w_{n}\left(r_{k}\right)=\frac{1}{\sigma_{n}^{2}}\)

Student's t-distribution: [15] 分析了RGB-D里程计的稠密光度偏差. 它展现说t-distribution解释了稠密光度偏差比正态分布更好, 权重函数是: \(w_{t}\left(r_{k}\right)=\frac{\nu+1}{\nu+\left(\frac{r_{k}}{\sigma_{t}}\right)^{2}}, \quad\) when \(\mu=0\)

咱们学习了稀疏光度偏差, 而后结论是t-distribution也合理的解释了稀疏模型.

与正态分布相比, t-distribution快速的下降权重由于errors move to the tail, 外点被分配了一个更小的权重.

除此之外, [15]固定了\(\nu=5\), 咱们学习了当\(\nu\)和尺度\(\sigma_t\)切合时的表现.

为了切合t-distribution, we minimize the negative log-likelihood of the probability density function with respect to ν and σt using the gradient free iterative Nelder-Mead method [20].

Besides, we filter out the gross outliers before fitting the t-distribution. We approximate the scale value \(\hat{\sigma}\) using the Median Absolute Deviation (MAD) as \(\hat{\sigma}=1.4826\) MAD and reject errors that \(r_{k}>3 \hat{\sigma}\)

M-estimators: 当偏差的分布难以获知的时候, 或者它被认为是正态分布的. 只用M-estimator是一个流行的方案. 就是huber estimator. 由于它没有彻底移除高偏差的观测, 只是下降了他们的影响力, 这个对于再观测处理很关键. \(w_{h}\left(r_{k}\right)=\left\{\begin{array}{ll}{\frac{1}{\sigma_{n}^{2}}} & {\text { if }\left|r_{k}\right|<\lambda} \\ {\frac{\lambda}{\sigma_{n}^{2}\left|r_{k}\right|}} & {\text { otherwise }}\end{array}\right.\)

这里\(\lambda\)通常是固定的, 或者动态的改动让\(\lambda = 1.345\sigma_n\) 对应 \(\mathcal{N}(0, \sigma_n^2)\). 这样的话, huber给外点线性的影响.

A. Implementation of the probabilistic model into the PBA

咱们研究了在每一个关键帧的偏差分布, 结论说他们之间是有区别的. 这些变化可能来自于运动模糊, 遮挡或者是噪声. 因此, 咱们对于每个关键帧来拟合偏差分布. 这样使得PBA对于不一样的场景能够有调节, 好比一个特定的偏差可能在常规的状况是外点, 可是在motion blur的状况下是内点.

B. Outlier Management

每一个观测有8个像素. 为了考虑一个像素观测是否是内点, 它须要在目标关键帧的偏差分布的95%内. 对于比较挑战的关键帧, 这个阈值能够高一些, 更permissive(许可的). 当局部的PBA完成的时候, 咱们会在mask里计算内点的个数. 当一个观测的外电像素大于30%的时候, 这个观测会被标记为外点, 并从地图点的观测list中移除. 另外, 在优化的时候, 若是外点像素超过60%, 这个观测会直接被舍弃, i.e. \(\omega(r) = 0\).

6. Front-End

Frame-tracking: 每一帧用local map来跟踪. 初始估计由速度模型给出. 咱们用coarse-to-fine的优化策略, 跟在PBA里同样, 来估计初始估计比较粗糙的状况. 对于大偏差的物理和session 5同样. 另外, 咱们用[21]里的inverse compositional approach来处理每次迭代重复计算雅克比的过程.

New Keyframe Decision: 当移动至没有探索过的区域的时候, 会插入新的关键帧.

  1. 地图可见比率和最新关键帧, i.e. \(s_{u}=N^{-1} \sum \min \left(p_{z} / p_{z}^{\prime}, 1\right)\). \(N\)是在上一个关键帧总可见点.
  2. 跟踪帧和上一帧的视差, 由translation \(t\) 和local map的平均逆深度\(\bar{\rho}: s_{t}=\|\mathbf{t} \bar{\rho}\|_{2}\)定义
  3. 光度变化: 由relative brightness transfer function(跟踪帧和上一关键帧), i.e. \(s_a = |a_k - a_i|\).

一个综合的分数会被用于肯定是否插入关键帧: \(w_{u} s_{u}+w_{t} s_{t}+w_{a} s_{a}>1\)

New Map Point Tracking: 每个关键帧有一列候选点. 咱们用新跟踪的帧初始化候选点的逆深度. 在极线上搜索最小光度偏差的匹配. 只有distinctive points with low uncertainty会被激活.

记住, 这个延迟的策略会要求几个匹配来得到一个好的初始化, 当极线比较小的时候, 同时也产生比较小的视差. 为了保证有足够的初始化好的点来激活, 咱们保持keyframe的候选点直道这个关键帧掉出滑窗.

7. Results

A. Parameter analysis and tuning

1. Coarse-to-fine PBA: 咱们衡量了金字塔层数\(N_p\).

没有金字塔的时候, DSM-SM(滑窗版本) 比DSM效果好. 这时候DSM无法从reobservation获利. 可是DSM在有更多金字塔层级的时候, 能够复用地图点从而得到更高的准确度.

尽管coarse-to-fine的策略对DSM提高明显, 对于DSM-SW却没有啥提高. 这个也是可预见的, 由于DSM须要更大的收敛半径, 可是DSM-SW缺不须要.

注意DSM在80%的runs下得到低于0.1m的RMS ATE的精度, 可是DSM-SW只有40%.

2. Robust Influence Function: 咱们研究了model和权重的选择.

3. Number of covisible keyframes in the LMCW:

B. Quantitative results

8. Discussion & Future Work

即便用persistent map, 咱们也知道不可能处理全部的再观测. 在大场景下, 累计偏差使得重复检测地图点再观测成为不可能.

9. Conclusion

相关文章
相关标签/搜索