0
点赞
收藏
分享

微信扫一扫

LOAM: Lidar Odometry and Mapping in Real-time阅读笔记

waaagh 2022-01-23 阅读 115
算法

概述

本文的解析文章很多,因此我就不在所有都详细分析,只记录核心思想。
知识

  1. 雷达scan和sweep
    简单来说,雷达分为二维和三维雷达,二维只有一条扫描线,三维有多条扫描线,所以二维雷达要想获得三维的效果,就需要多次扫描,也就是多次scan,被成为一次sweep。而对应于三维则是一次scan。

  2. 一次scan的过程
    在一次scan中,雷达会扫描过一定角度,一遍是水平的180度或360度,每隔一定角度测量一个距离值,一般是0.2度左右。但这么多点对于雷达来说是无法同时测量的,因为雷达的声音回波很可能发生干扰。所以就只能一个一个测量。因此测完这些数据是需要一定时间的,尽管时间很短。

  3. 畸变处理
    雷达的一次扫描过程中,由于需要一些时间,所以会产生运动的畸变,也就是在雷达扫描之前的点和后面的点时测量的距离时,由于雷达并不是静止的,会产生一定的差别。具体如图。
    在这里插入图片描述

  4. 线与面
    在雷达中我们可以获得角度和距离,进而知道障碍物的位置。但障碍物的形状该如何区分呢?我上一篇博客有一些相关的判断,和本文的核心思想是匹配的,就是判断障碍物的“曲率”物体的因为“曲率”越大,说明障碍物的弯曲程度越大,那就更不可能是平面了。反之,则为一个平面。另一种方法是通过计算特征向量,可以理解为物体向三个维度的扩展情况。如果只向一个维度扩展,那显然就是直线,即λ1 >> λ2 > λ 3;向两个方向扩展的就可以理解为一个平面,即λ1 > λ2 >> λ3;最后向三个面都扩展的就是球了,即λ1 > λ2 > λ3;

  5. 点到线或面的距离
    这里用到了一个叉乘的知识,a×b根据右手定则,得到的向量方向为右手四指从ab大拇指向上,即为叉乘向量的方向,大小为ab围成的平行四边形的面积。因此点a到线bc的距离就用**1/2(ab×ac)**得到三角形abc的面积,而三角形abc的面积又可以写成1/2bc×a到bc的距离。因此除以1/2bc的长度,就可以得到a到bc的距离大小,也就是点到线的距离。点到面的距离思路相同。求点d到平面abc的距离,就先求出点d到直线线ab的距离s,交点为e,在求点d到ce的距离df即为所求。如图:在这里插入图片描述

  6. 梯度下降
    如果把雷达图像投影到同一时刻的话,那么理论上对应点因该在同一位置。而雷达是在运动的,而运动又是与时间紧密关联,当我们把运动当作匀速直线运动处理时,(对于为什么可以处理为匀速直线,这里我的理解是,雷达的运动速度相比于一个scan来说毕竟是短的,这么短的时间极限的角度即可认为是在做匀速直线运动。)运动的距离直接与时间成正比,当我们设定一个初值的速度(矢量)大小,就可以得到雷达在同一时刻到同一特殊位置的距离之差,这个差值越小,就说明我的速度越接近真实速度。再反向迭代,用梯度下降的方法获得最佳速度值,梯度下降就是求导,逼近最优。理论如图:
    在这里插入图片描述

流程

有了这些知识,这篇论文的核心思想就已经齐全了。下面就是组合了。我们首先获得雷达在前一帧中得到的有运动畸变的点云图,然后预测一个初始的速度,可以是0,也可以是之前计算出的速度,文章的算法初始化为0。接着我们根据这个速度去去除畸变,得到这一帧结束时我们根据假设的速度去畸变后的障碍物状态,并找出所有可以作为标志性点的边缘线和边缘面,当然要保证大概率在下一帧中可以继续扫描到(去除近似平行和被遮挡),这时接着下一帧雷达中,我们继续用这个假设的速度把每次扫描的点去畸变到这一帧开始的状态,以保证可比性。这样我们去比较上面说的那些标志性的点,并不断的修正速度大小,使得两帧在同一时刻的投影尽可能的相近。当算法收敛的时候,我们就可以得到一个相对准确的预测速度,和基本正确的去畸变的雷达图像,再放入全局中使用特征向量,进行更加可靠的比对,得出精确的速度,完成建图。

举报

相关推荐

0 条评论