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

LR: Direct Sparse Mapping

Abstract

Photometric bundle adjustment (PBA).

目前的PBA没法处理reobservation.

我们提出DSM(direct sparse mapping).

1. Introduction

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

通常光度收敛半径在1-2个像素. 所以一个标准的PBA不能补偿drift. 所以, 我们提出了multi-scale PBA来成功处理收敛性的难题.

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

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

2. Related Work

VINS-mono的前段和OKVIS类似, 但是用了额外的BRIEF来做回环检测.

LSD-SLAM用了FAB-MAP.

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

他们都有以下缺点:

  • 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

原文地址:https://www.cnblogs.com/tweed/p/12141935.html

时间: 2024-10-08 09:49:30

Literature Review: 基于稀疏直接法的建图的相关文章

基于hokuyo雷达的cartographer建图实现

最近这一周的时间一直在调试基于北洋hokuyo雷达的Cartographer建图,参考了网上的相关教程,但是在实际操作的过程中出现了建立的地图无法保存的现象,折腾了将近一周的时间,今天算是终于能够正常的建图了,虽然建立的地图的效果不太理想,但是根本的问题解决了.下一步的工作就是调试优化了.因此本文主要目的在于记录在实际测试时碰到的一些问题. 1.由于采用的是主从机模式,所以一定要配置好相关的网络,并且不要忘记在编译bashrc文件,最重要的是不要忘了关键字export; 2.在bashrc文件中

UML model refactoring: a systematic literature review

一.基本信息 标题:UML model refactoring: a systematic literature review 时间:2015 出版源:Empirical Software Engineering 领域分类:模型重构:模型转换:系统文献综述:UML 二.研究背景 问题定义:UML模型重构 难点:模型的转换与术语的重构: 相关工作:模型重构:审核流程 三.创新方法 1.提供了模型重构的背景,描述了用于审查的方法. 2.收集并分析了选定的研究,讨论了结果,并回答了系统评价中提出的研究

建图方式一 之 ”前向星“ BFS&amp;&amp;DFS 简单应用

三种建图方式,邻接矩阵.前向星(边表集).邻接链表! 耗时一晚上 ,好好研究了一下 前向星,因为我的指针用的实在是很烂,所以还是 入赘 前向星吧. 问了学长,看了大牛们的博客,终于有点收获了,个人认为 前向星Very Well. 前向星 建图方法: 以储存边的方式来储存图.在构造图时,把边存放在数组里,不需使用指针,只需一个 next  即可是整个图构建完成 . 适用条件: 点集特别多的稀疏图,边数多且繁杂,开邻接矩阵会浪费大量内存. 时间复杂度: O(m),并不比邻接链表差. #include

【BZOJ-2879】美食节 最小费用最大流 + 动态建图

2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1366  Solved: 737[Submit][Status][Discuss] Description CZ市为了欢迎全国各地的同学,特地举办了一场盛大的美食节.作为一个喜欢尝鲜的美食客,小M自然不愿意错过这场盛宴.他很快就尝遍了美食节所有的美食.然而,尝鲜的欲望是难以满足的.尽管所有的菜品都很可口,厨师做菜的速度也很快,小M仍然觉得自己桌上没有已经摆在别人

二分图最大匹配,最小路径覆盖,最小点覆盖,最大独立集,最小边覆盖与建图方法

转载请注明出处(别管写的好坏,码字也不容易):http://blog.csdn.net/hitwhacmer1 前言:         有自己写的,有摘的别人的,前面是摘的,也是无心整理,出错是难免的,反正我都不会证明,智人见智,别被我误导了. §1图论点.边集和二分图的相关概念和性质 点覆盖.最小点覆盖 点覆盖集即一个点集,使得所有边至少有一个端点在集合里.或者说是"点" 覆盖了所有"边"..极小点覆盖(minimal vertex covering):本身为点覆

【建图+最短路】Bzoj1001 狼抓兔子

Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: 左上角点为(1,1),右下角点为(N,M)(上图中N=4,M=5).有以下三种类型的道路 1:(x,y)<==>(x+1,y) 2:(x,y)<==>(x,y+1) 3:(x,y)<==>(x+1,y+1) 道路上的权值表示这条路上最多能够通过的兔子数,道路是

初识视觉SLAM:用相机解决定位和建图问题

引言:视觉SLAM 是指用相机解决定位和建图问题.本文以一个小机器人为例形象地介绍了视觉SLAM的功能及特点.本文选自<视觉SLAM十四讲:从理论到实践>. SLAM 是Simultaneous Localization and Mapping 的缩写,中文译作"同时定位与地图构建".它是指搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境的模型,同时估计自己的运动.如果这里的传感器主要为相机,那就称为"视觉SLAM". 假设我们组装

SLAM+语音机器人DIY系列:(六)SLAM建图与自主避障导航——3.ros-navigation机器人自主避障导航

摘要 通过前面的基础学习,本章进入最为激动的机器人自主导航的学习.在前面的学习铺垫后,终于迎来了最大乐趣的时刻,就是赋予我们的miiboo机器人能自由行走的生命.本章将围绕机器人SLAM建图.导航避障.巡航.监控等内容展开.本章内容: 1.在机器人上使用传感器 2.google-cartographer机器人SLAM建图 3.ros-navigation机器人自主避障导航 4.多目标点导航及任务调度 5.机器人巡航与现场监控 3.ros-navigation机器人自主避障导航 前面的学习教程打好

UESTC30-最短路-Floyd最短路、spfa+链式前向星建图

最短路 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的T-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗? Input 输入包括多组数据. 每组数据第一行是两个整数NN ,MM (N≤100N≤100 ,M≤10000M≤1000