轻量级激光雷达里程计和建图方法

系统框架

整体框架如下:
在这里插入图片描述

  • 输入:三维激光点云
  • 输出:六自由度位姿估计

整个系统可以分为五个模块:

  • 分割:指获取单次扫描的点云,并将其投影到距离图像上进行分割。_16_1800个点用cvmat来对点进行初步管理*
  • 特征提取:分割的点云被发送到特征提取模块。
  • 激光雷达里程计:使用从先前模块中提取的特征点进行帧间位姿估计
  • 激光建图部分:这些特征在激光建图部分被转换到全局点云地图中进一步处理。
  • 变换集成模块:融合来自激光雷达里程计和激光雷达建图的姿态估计结果,并输出最终的姿态估计。以里程计高频率输出精确位姿

相对于LOAM中的原始通用框架,该系统旨在提高地面车辆的效率和精度。

点云分割

分割方法
Pt是t时刻的一帧点云数据
在这里插入图片描述
pi是Pt中的一个点

首先需要把Pt映射到深度图像上去

映射的深度图像的分辨率是 1800*16 .1800就是一帧激光雷达点云里面的每一个scan上有1800个点,16就是有16个scan
VLP的水平分辨率为0.2° 垂直分辨率为2°
在这里插入图片描述
每个有效的点为深度图像的一个像素,像素的值就是该点到雷达中心的距离
在这里插入图片描述
就相当于:
在这里插入图片描述
在这里插入图片描述

地面点分类

由于在场景中可能是在斜坡上面进行运动,所以没有假设地面点是一个水平面

通过深度图像的每一列进行地面点的提取,然后再做点云的分类。

在后面的点云分类中,地面点就不参与了,因为它已经分完了

其它点分类及过滤

之后基于图像的分割方法,将点云分成很多簇

同一簇的点分配上唯一的标签

地面点是一种特殊类型的簇

对点云进行聚类分割可以提高处理效率和特征提取精度

假设机器人在一个噪声很大的环境下,有些物体的尺寸很小比如树叶,或者其它不可靠的特征点。相邻帧几乎不可能看到同一个树叶
所以做好先去掉这些点

为了实现快速和可靠的特征提取,把小于30个点的聚类进行过滤,即不会在这些点中进行特征提取

测试

其可视化的效果 如下
在这里插入图片描述
a图是原始的点云可视化效果

在这里插入图片描述
做完聚类之后,去除聚类小于30的点后保留的点,红色的点是地面点

在聚类之后剩下的点,代表比较大的目标,比如建筑物、树干、地面点,可以用这些点做里程计的位姿估计
同时这些点会被存储到深度图像中去,过滤的点则会被深度图像删去。

保留的点会存储三种属性

  • 是否是地面点的标签
  • 在深度图像的行列索引
  • 距离,点到雷达中心的距离

然后利用这些信息再做特征提取

特征提取

这一部分和LOAM差不多

区别是 LeGO-LOAM 不是从原始点云中提取特征,而是从地面点和分割点中提取特征。

先算一个曲率
在这里插入图片描述
这个曲率和一个阈值比较

大于阈值就是角点,小于阈值就是面点

和LOAM一样,也把每个scan分成6段子图
那每个子图就是
300*16的点
在每个子图中选取

  • 角点 2 个
  • 面点4个
  • 弱角点 40个
  • 弱面点 80个
    在这里插入图片描述

激光雷达里程计

激光雷达里程计模块的功能就是:估计相邻帧之间的位姿变换。

估计的方式:在相邻帧之间做点到线的约束和点到面的约束
具体的方式和LOAM一样

针对LOAM的改进

  • 1 基于标签的匹配
    在特征提取部分提取的特征点都会有个标签(在点云分割时分配的)
    因此在找对应点时,标签必须一致
    对于面点仅在上一帧中找地面点与之匹配
    对于角点在上一帧对于的标签中找对应得角点
    这种特征点匹配得方式会提高匹配精度

  • 2 两步LM优化
    首先做地面点得优化,再做角点得优化。该方法实现了相邻帧间得位姿估计
    具体两步LM优化方法如下
    (1)第一步通过当前帧地面点和上一帧匹配得地面点估计出 z roll pitch
    (2)第二步通过当前帧角点和上一帧匹配得角点估计出 x y yaw,并利用第一步估计得 z roll pitch
    虽然在第一步就可以估计出x y yaw,但是其精度步高,不能用于第二步得估计
    最后把两步估计得结果加起来,就是6自由度得位姿变换结果
    优化方法意义:通过这种方式得优化,计算时间相比于原始LOAM可以减少35%。

激光雷达建图

原理和LOAM一样:当前帧和地图进行低频率得配准,得到最优得当前帧位姿变换

和原始LOAM不一样地方: 地图得存储。
LOAM是通过一个栅格地图进行局部地图得管理。
LeGO-LOAM是通过关键帧得概念进行局部地图管理,保存了激光雷达一些帧,和该帧的位姿。
局部地图建立就是通过根据当前帧的位置,提取与当前帧位置小于100m的关键帧拼接(根据每帧的位姿拼接)在一起作为局部地图

进行回环检测集成位姿图优化
最后将SLAM里面的位姿图优化集成到了LeGO-LOAM中

  • 回环检测的方法:就是通过检测历史帧的位姿和当前帧的位姿比较接近,则认为形成一个回环。(因为激光雷达里程计在短时间内的漂移比较小)
  • 优化的方法就是通过ICP计算历史帧和当前帧的位姿变换,然后通过LM的优化方法就行 GT-SAM的位姿图优化。

实验对比

户外小场景下

在这里插入图片描述
户外的小场景,其中
i是一个树
ii 石头墙
iii UGV
在这里插入图片描述
LOAM把一些树叶提取成了面点,这种面点很不稳定
在这里插入图片描述
LeGO-LOAM通过距离滤波的方式把树叶去除了
在这里插入图片描述
LOAM把草地上的草提取成了角点,这种角点也不稳定

LeGO-LOAM不提取地面上的角点

所以LeGO-LOAM提取的特征点相比于LOAM更加稳定

在这里插入图片描述
最后形成的地图LOAM中杂点多,且一个树形成了3个数,
LeGO-LOAM效果更好些

户外大场景

在这里插入图片描述
在大范围场景下,LOAM的杂点要多些