LOAM: Lidar Odometry and Mapping in Real-time阅读笔记
概述
由于众多解析文章的存在,在全面深入探讨每一篇是不可能的情况下
将雷达划分为二维与三维两类,在二维模式下仅存在一条单一的扫描轨迹;而在三维系统中则能够同时处理多条独立的扫描线。因此,在实际应用中若希望模拟出三维效果就必须进行连续多次的扫描操作;这通常被称为一次完整的sweep过程;同样地,在三维系统中,则只需执行单次的scan操作即可。
在一次雷达扫描过程中,系统会横向覆盖180度或360度的范围,并每隔大约0.2度的角度进行一次距离测量。然而由于雷达同时接收回波信号会受到干扰的原因,在每次扫描中无法完成所有角度的数据采集工作。因此为了保证数据的完整性必须逐一进行测量操作。完成这一系列数据采集所需的时间虽短 通常在几毫秒至数秒之间。
畸变处理
雷达的一次扫描过程中, 因一些时间消耗而产生运动型的畸变, 即使在雷达扫描前后的点进行距离测量, 因为雷达并非静态, 会有一定差异。具体如图.

线与面
利用雷达技术获取了物体的角度信息及其距离信息,从而明确障碍物的位置信息。然而如何区分不同障碍物的具体形状仍是一个挑战性问题。在我的上一篇博客中已经提及过与此问题相关的判别方法,并本文的核心思路是一致的即通过分析障碍物的"曲率"来判断形状特点由于"曲率"值越大表明物体表面弯曲程度越高因而不可能呈现平面形态相反则表明物体表面较为平整另一种判别方法则是计算物体沿三个维度的空间扩展情况如果一个维度的空间扩展明显大于其他维度则该物体呈现为直线形态即λ1远大于λ2且λ2远大于λ3;若仅在一个平面上扩展则可视为平面形状即λ1大于λ2且λ2远大于λ3;而当物体向三个维度空间均进行扩展时则表现为球体特征即λ1>λ2>λ3;
点与线或面之间的距离
在这里应用了向量叉乘的概念。根据右手法则确定的方向为将四指从a转向b时大拇指所指的方向,并且其大小等于a与b所围成平行四边形区域的面积的一半。因此通过计算1/2(ab×ac),我们能够获得由三角形abc所围成区域的面积值。另一方面,则可以通过将该面积表示为1/2bc与a至bc方向上距离s相乘的结果来得到同样的数值。因此为了求得a至bc直线段距离s的具体值,则需将上述结果除以1/2bc长度即可得出最终结果s即为所求之点与线之间的距离值。类似的方法也可以用于计算一点至某一平面内的最短距离值。具体而言,则是先找出该点至某条直线(如ab)上的垂足e之后再计算该垂足e至目标平面内的另一条直线(如ce)上的垂直距离df即可得到最终结果。

梯度下降算法
将雷达图像在同一时刻进行投影分析,则理论上对应点应处于同一位置。然而由于雷达自身处于运动状态,在时间变化上存在紧密关联性。假设将其视为匀速直线运动进行处理,则(这里我的理解是:由于雷达相对于一个scan的时间跨度极短,在此短时间内所产生角度的变化可被近似认为是匀速直线运动),其运动距离与时间成正比关系。当设定一个初始速度矢量的模值后,则可计算出在同一时刻内雷达到特定位置的距离差值;这个距离差值越小,则表明当前设定的速度越接近真实速度值。通过反向迭代过程(即利用梯度下降算法),最终可逼近最优解以获得最佳速度参数;其中梯度下降算法的核心在于求导运算并逐步逼近最优解。
理论如图:
R(t) = \text{radar position at time } t
\Delta R(t) = R(t+\Delta t) - R(t)

流程
基于这些知识储备后,则可初步构建论文的核心思路。随后我们获取前一帧中带有运动畸变特征的点云数据集。接着设定初始速度参数,并选择零速度假设作为初始值进行运算。通过设定的速度参数对点云进行去畸变处理,并识别出具有持续跟踪价值的关键边缘线和表面特征(这些特征能够在下一帧中继续被有效扫描,并排除近似平行或被遮挡的情况)。随后在下一帧雷达数据采集过程中,在固定速度前提下对当前扫描结果进行去畸变处理,并将其纳入整体框架内的特征向量集合中完成更新迭代运算。整个算法通过不断修正速度参数大小以优化两帧间的时空一致性关系,在收敛状态下能够获得较为精确的速度估计值以及去畸变后的高质量雷达图像数据输出结果
