LOAM

Zhang 2014 · 论文

一句话总结 —— LOAM确立了LiDAR SLAM的基础方案——提取边缘和平面特征,然后将估计拆分为高频的扫描到扫描里程计和低频的扫描到地图精细化——几乎所有后续的LiDAR系统都在此基础上构建,或是与之相对而设计。

问题

LiDAR SLAM面临两个相互竞争的需求:实时运行要求处理速度快,而精度要求将每次扫描与一张大型、一致的全局地图配准——同时还要消除移动扫描仪在每次扫描上留下的运动畸变。朴素的扫描到地图匹配对于实时运行来说太慢;而纯粹的帧到帧里程计则会产生漂移。LOAM(RSS 2014)通过将问题拆分为两个以不同频率并行运行、相互协作的算法来化解这一矛盾:粗略、快速的里程计,以及精细、缓慢的建图。

方法与架构

特征提取。 每次扫描中的点根据其同一扫描内邻居集合 SS 上的局部表面平滑度项来打分,

c=1SX(k,i)LjS,ji(X(k,i)LX(k,j)L),c = \frac{1}{|S| \cdot \big\| X^{L}_{(k,i)} \big\|} \, \Big\| \sum_{j \in S,\, j \neq i} \big( X^{L}_{(k,i)} - X^{L}_{(k,j)} \big) \Big\|,

其中 X(k,i)LX^{L}_{(k,i)} 是第 kk 次扫描中在LiDAR坐标系 LL 下的第 ii 个点。cc 值最大的点成为边缘点,cc 值最小的点成为平面点;每次扫描被划分为四个子区域,每个子区域最多提供2个边缘点和4个平面点,位于与光束平行的表面或遮挡边界上的点则被视为不可靠而排除在外。

LiDAR里程计(约10 Hz)。 上一次扫描的点云被重新投影到扫描边界处,存储在一个KD树中。每个新的边缘点会与来自不同扫描的两个最近边缘点 j,lj, l 所构成的直线相匹配,每个平面点则与三个点 j,l,mj, l, m 所构成的平面相匹配。残差为点到直线和点到平面的距离

dE=(X~(k+1,i)LXˉ(k,j)L)×(X~(k+1,i)LXˉ(k,l)L)Xˉ(k,j)LXˉ(k,l)L,dH=(X~(k+1,i)LXˉ(k,j)L)((Xˉ(k,j)LXˉ(k,l)L)×(Xˉ(k,j)LXˉ(k,m)L))(Xˉ(k,j)LXˉ(k,l)L)×(Xˉ(k,j)LXˉ(k,m)L).d_{\mathcal{E}} = \frac{\big| (\tilde{X}^{L}_{(k+1,i)} - \bar{X}^{L}_{(k,j)}) \times (\tilde{X}^{L}_{(k+1,i)} - \bar{X}^{L}_{(k,l)}) \big|}{\big| \bar{X}^{L}_{(k,j)} - \bar{X}^{L}_{(k,l)} \big|}, \qquad d_{\mathcal{H}} = \frac{\big| (\tilde{X}^{L}_{(k+1,i)} - \bar{X}^{L}_{(k,j)}) \cdot \big( (\bar{X}^{L}_{(k,j)} - \bar{X}^{L}_{(k,l)}) \times (\bar{X}^{L}_{(k,j)} - \bar{X}^{L}_{(k,m)}) \big) \big|}{\big| (\bar{X}^{L}_{(k,j)} - \bar{X}^{L}_{(k,l)}) \times (\bar{X}^{L}_{(k,j)} - \bar{X}^{L}_{(k,m)}) \big|}.

一次扫描内的运动被建模为恒定角速度/线速度,因此每个点在其自身时刻 tit_i 的位姿是从扫描变换 Tk+1L=[tx,ty,tz,θx,θy,θz]T^{L}_{k+1} = [t_x, t_y, t_z, \theta_x, \theta_y, \theta_z]^{\top} 中线性插值得到的:

T(k+1,i)L=titk+1ttk+1Tk+1L,T^{L}_{(k+1,i)} = \frac{t_i - t_{k+1}}{t - t_{k+1}} \, T^{L}_{k+1},

这同时也实现了对点云的去畸变。将每个特征的一行残差堆叠成 f(Tk+1L)=df(T^{L}_{k+1}) = d,该位姿通过带双平方(bisquare)权重的鲁棒Levenberg–Marquardt法求解(大残差特征被降权,超过阈值则被置零):

Tk+1LTk+1L(JJ+λdiag(JJ))1Jd.T^{L}_{k+1} \leftarrow T^{L}_{k+1} - \big( J^{\top} J + \lambda \, \mathrm{diag}(J^{\top} J) \big)^{-1} J^{\top} d.

LiDAR建图(1 Hz)。 每次扫描一次,去畸变后的点云会使用10倍数量的特征点与累积的地图配准。地图以10米的立方体存储;对应关系来自对每个特征在地图邻域内协方差矩阵的特征分解(一个主特征值对应一条边缘线,两个对应一个平面块,相应的特征向量给出方向),最小化的是同样的距离残差,地图以5厘米的体素网格下采样。最终输出的位姿以里程计10 Hz的频率,将建图位姿 TkWT^{W}_{k} 与里程计运动 Tk+1LT^{L}_{k+1} 融合起来。按设计没有回环检测。

实验结果

对SLAM的意义

LOAM对于LiDAR SLAM的地位,正如PTAM对于视觉SLAM的地位:它是架构上的模板。LeGO-LOAM和LIO-SAM直接继承了它基于曲率的边缘/平面特征提取以及里程计/建图分离的思路;FAST-LIO2则通过完全去除特征提取,将自己定义为与之相对的方案。运动去畸变成为了每一个后续旋转式LiDAR流水线所必需的预处理步骤,而LOAM在KITTI排名上多年保持领先,同时仍是标准基线。如果你只读一篇经典的LiDAR论文,就读这一篇——“边缘特征""平面特征”和”扫描到地图精细化”这些贯穿整个领域的词汇,都源自这里。

相关条目