毕业论文设计:第二部分—激光雷达里程计研究
激光雷达里程计
1. LOAM
传感器采用:2轴激光雷达(6个自由度运动)
使用激光雷达的一个主要优势是它对环境照明和场景中的光学纹理不敏感。激光雷达的最新发展缩小了它们的尺寸和重量。激光雷达可以由穿越环境的人携带,甚至可以连接到微型飞行器。本文所要解决的问题是利用三维激光雷达感知的点云进行自运动估计,并为穿越的环境建立地图。
提出了一种实时的里程计和地图绘制方法,使用在6个自由度上移动的2轴激光雷达的距离测量。这个问题难点在于:距离测量是在不同的时间接收的,运动估计中的误差会导致结果点云的误配准。该方法实现了低漂移和低计算复杂度,而不需要高精度测距或惯性测量。关键思想是同时定位和映射的复杂问题的划分,该问题寻求通过两种算法同时优化大量变量。一种算法以高频率但低保真度执行里程计,以估计激光雷达的位姿。另一种算法以低一个数量级的频率运行,用于点云的精细匹配和配准。这两种算法的结合允许该方法实时建图。该方法已经通过大量实验以及KITTI里程计基准进行了评估。结果表明,该方法可以达到离线批处理方法的水平。
具体来说,两种算法都提取位于锐边和平面上的特征点,并将特征点分别匹配到边缘线段和平面面片。在里程计算法中,通过保证快速计算找到特征点的对应关系。在建图算法中,通过检查局部点簇的几何分布,利用相关的特征值和特征向量来确定对应关系。
1.1 符号定义
概念: 点云,3D点,坐标系
两个坐标系:激光坐标系
L
{L}
L,世界坐标系
W
{W}
W
P k {P_{k}} Pk :表示 k {k} k 时刻激光雷达扫描获取的点云,其中 k ∈ Z + {k \in Z^+} k∈Z+;
X ( k , i ) L {X_{(k,i)}^{L}} X(k,i)L :表示在激光坐标系 L {L} L下, k {k} k时刻获取的点云中第 i {i} i个点的坐标;
X ( k , i ) W {X_{(k,i)}^{W}} X(k,i)W :表示在世界坐标系 W {W} W下, k {k} k时刻获取的点云中第 i {i} i个点的坐标;
要解决的问题: 给定一系列连续时刻的点云 P k , k ∈ Z + {P_k, k \in Z^+} Pk,k∈Z+,计算激光雷达每次扫描 k {k} k 时刻的运动状态;并利用扫描点云 P k P_k Pk 构建环境地图。
1.2 系统结构
流程如下:由激光雷达获取点
P
{P}
P,每次激光雷达扫描将获取到的点
P
P
P 存储到
{
L
}
\{L\}
{L} 中,因此在
k
k
k时刻接收到的点便组成了点云
P
k
P_k
Pk。之后点云
P
k
P_k
Pk 被两个算法进行处理。
- 激光雷达里程计获取点云,并计算激光雷达在两次连续扫描之间的运动,估计的运动被用来校正点云 P k P_k Pk 的失真。此时激光里程计算法以10Hz运行;
- 将由里程计校正后未失真的点云 P k {P_k} Pk ,以及估计的位姿,输入到建图算法中,以实现更精细的位姿估计结果,并以1Hz输出三维地图。
- 最后,由两种算法发布的位姿变换被整合生成关于激光雷达相对于地图的姿态,并以10Hz的变换输出,得到最终的激光雷达位姿。
1.3 激光里程计
1.3.1 特征提取
从每一帧激光点云
P
k
P_k
Pk 上提取特征,并定义一个术语来评估局部表面的平滑度。
扫描中的点根据
c
c
c 值排序,然后选择具有最大
c
c
c 值(边缘点)和最小
c
c
c 值(平面点)的特征点。为了在环境中均匀分布特征点,我们将扫描分成四个相同的子区域。每个子区域最多可以提供2个边缘点和4个平面点。只有当点
i
i
i 的
c
c
c 值大于或小于阈值,并且所选点数不超过最大值时,点
i
i
i 才能被选为边或平面点。
总之,特征点被选择为从最大 c c c 值开始的边缘点,以及从最小 c c c 值开始的平面点,如果选择了一个点,所选边缘点或平面点的数量不能超过子区域的最大值,并且其周围的点都没有被选择,它不能在大致平行于激光束的曲面片上,或者在遮挡区域的边界上。
1.3.2 寻找特征点对应关系
里程计算法估计激光雷达在扫描范围内的运动。假设 t k t_k tk 是一次扫描的开始时间 k k k 。在每次扫描结束时,扫描过程中感知到的点云 P k P_k Pk 被重投影到 t k + 1 t_{k+1} tk+1。将重新投影的点云表示为 P k ′ P_k^{'} Pk′。在下一次扫描 t k + 1 t_{k+1} tk+1期间, P k ′ P_k^{'} Pk′ 与新接收的点云 P k + 1 ′ P_{k+1}^{'} Pk+1′一起用于估计激光雷达的运动。
找到特征点的对应关系后,现在导出表达式来计算从特征点到其对应关系的距离。
点到线的距离:
点到面的距离:
1.3.3 运动估计
T k + 1 L {T_{k+1}^L} Tk+1L = [ t x , t y , t z , θ x , θ y , θ z ] T [t_x,t_y,t_z,\theta_x,\theta_y,\theta_z]^T [tx,ty,tz,θx,θy,θz]T.
在时间段
[
t
k
+
1
,
t
]
[t_{k+1},t]
[tk+1,t]内,位姿变换可通过线性差值得到:
1.3.4 激光里程计算法
1.4 激光建图
建图算法的运行频率低于里程计算法,每次扫描只调用一次。在扫描 k + 1 k+1 k+1结束时,激光雷达里程计生成一个不失真的点云 P k + 1 P_{k+1} Pk+1,同时生成一个姿态变换 T k + 1 L T_{k+1}^{L} Tk+1L,包含激光扫描期间的雷达运动,介于 [ t k + 1 , t k + 2 ] [t_{k+1},t_{k+2}] [tk+1,tk+2]之间。建图算法主要是在世界坐标系下进行点云的配准,以点云拼接累积的形式完成建图。
特征点的提取方法与第五章相同,但使用了10倍的特征点。为了找到特征点的对应关系,我们将点云存储在地图 Q k Q_k Qk上,面积为10m。立方体中与 Q k + 1 Q_{k+1} Qk+1相交的点被提取并存储在3D KD树中。在特征点周围的特定区域中找到 Q k {Q_k} Qk 中的点。设 S ′ S' S′为一组包围点。对于一个边缘点,只在 S ′ S' S′ 中的边缘线上保持点,对于一个平面点,我们只在平面面片上保持点。然后计算 S ′ S' S′ 的协方差矩阵,表示为 M M M,以及 M M M 的特征值和特征向量,分别表示为 V V V和 E E E。如果 S ′ S' S′ 分布在一条边缘线上, V V V 包含一个显著大于其他两个的特征值, E E E 中与最大特征值相关的特征向量代表边缘线的方向。另一方面,如果 S ′ S' S′ 分布在平面补片上, V V V 包含两个较大的特征值,第三个显著较小,而 E E E中与最小特征值相关联的特征向量表示平面补片的方向。边缘线或平面补片的位置通过穿过 S ′ S' S′ 的几何中心来确定。