【论文阅读5】LEGO LOAM:可变地形下,轻量级和地面优化的激光里程计和建图

补充LEGO LOAM的论文解读。这里做记录的主要目的也是方便自己查阅,督促阅读。文献管理的软件推荐Mendeley,多平台云同步,非常好用。

image-20200904210534198

LEGO LOAM这篇文章发在18年的IROS上,因为其代码开源以及对设备性能要求低等优点,到现在依然用的比较多。论文里面主要是和LOAM对比,其相比LOAM具有以下三个特点,

  • 轻量级,能在嵌入式设备上实时运行。
  • 地面优化,在点云处理部分加入了分割模块,这样做能够去除地面点的干扰,只在聚类的目标中提取特征。
  • 两步L-M优化法估计6个维度的里程计位姿,匹配方式还是scan2scan。

此文的主要对比对象是LOAM,在以上三点的基础上,还添加了回环检测和后端优化的模块。可以看出,作者的主要思路是基于LOAM并提升其性能。

一、介绍与概述

在介绍部分,作者先将SLAM分为lidar-based以及vision-based两类方法,其中vision-based方法在回环检测时有一定的优势,但对光线敏感,很难适应视角变化。lidar-based方法360度观测,稳定,并且在夜间也能使用。

之后阐述了用ICP方法寻找两帧之间的转换,以及其一些升级版本,比如点面ICP、GICP等,其计算量很大。继续介绍了feature-based的一些匹配方法,比如提取PFH、VFH,以及一些corner、曲率等特征。最后介绍了LOAM,引出了本文的亮点。

在UGV运动的场景中,由于地形的变化采集到的数据经常是畸变比较大的,并且UGV自身性能有限,难以负担过大的计算,在一些树木草丛较多的地方,基于几何特征的提取方法噪声太大。LEGO-LOAM有以下特点:

  • 点云分割,有效的去除噪声点,保证提取特征的质量。
  • 两步L-M优化,提取相邻帧的平面特征进行匹配用来计算t_z、roll、pitch,通过线特征匹配获取t_x、t_y和yaw。
  • 回环检测和后端优化来修正里程计的偏移。

系统的整体架构图如下,其硬件设备图中能得到其坐标轴方向,x前,y左,z上

image-20200904203553307

二、核心模块

分割

分割模块,这里的主要思路是将点云投影成二维深度图,然后在图像上进行地面提取,对非地面点云进行聚类,然后在聚类簇中提取曲率较大的特征点,作者认为这样能够显著提升点云匹配的效率和精度。

在点云投影部分,这里参考的文献是以下两篇。采用的是VLP16的激光雷达,因为激光的线束为16,横向解析度为0.2,那么一圈360度就可以分成1800个角度的线束。因此投影的深度图尺寸为1800*16,其像素值存储的是当前点的深度。

1
2
[13]M. Bosse and R. Zlot, “Keypoint Design and Evaluation for Place Recognition in 2D Lidar Maps,” Robotics and Autonomous Systems, vol. 57(12): 1211-1224, 2009.
[14] R. Zlot and M. Bosse, “Efficient Large-scale 3D Mobile Mapping and Surface Reconstruction of an Underground Mine,” Proceedings of the 8th International Conference on Field and Service Robotics, 2012.

地面分割部分,文章并没有假设地面是平坦的,根据深度图中相邻的列的高度变化,设定阈值,来判断每个像素点是否为地面点,这一步的分割比较粗糙。

聚类部分,这里只对非地面点进行BFS聚类,并在聚类簇上提取线特征,进一步选择曲率较大的30个点。

特征提取

特征提取沿用LOAM的方法,有一点区别的就是,LEGO LOAM在地面点云上提取平面特征,而在聚类簇上提取线特征。这里粗糙度的计算公式如下,r代表点的深度,s代表点前后的相邻的点个数,这里取10,大致就是计算点到其相邻点的深度平均差,用来衡量点在局部区域的一个起伏情况。认为粗糙度较大的是边缘点,粗糙度较小的是平面点。显然在判断的时候,设定阈值。这里论文里面还用到一个技巧,就是在为了保证能够在各方向上均匀提取特征,将深度图划分为300*16的6个子图,在每个子图上分别提取特征,平面点40个,边缘点20个,这里还进一步特征了较为突出的边缘特征,即粗糙度最大的2个点,和较为平坦的平面点,这里指粗糙度最小的4个点。

image-20200906123632296

如下图a,b,c,d中,a为原始点云,b中即为做了分割的点云,红色的表示地面点,竖着的是一个个的聚类簇。c中即为提取特征的示意,黄色的是平面特征点,蓝色的是边缘特征点。

image-20200906123918549

里程计

如图,这里里程计部分主要是scan2scan方法,对连续帧之间的点云提取的特征进行匹配。主要用到以下两个技巧。

label matching:匹配的时候只在label一致的特征中点进行,比如边缘点和边缘点匹配,平面点和平面点匹配。

两步L-M优化:连续两帧间的运动,可以认为地面保持一致,先用地面点匹配,得到的roll pitch和t_z,作者认为是比较可靠的,之后以此为初值,计算边缘点匹配的结果t_x ty 和yaw。这样一次优化3个自由度,相比于直接优化6自由度,能显著减小迭代次数,提升匹配速度。

image-20200906130533110

看一下这部分的实验结果,两步L-M优化法能达到精度类似,性能提升35%。

image-20200906131211903

建图

根据里程计部分得到的10hz的odom,继续进行scan2localmap的匹配,直接用线面特征进行匹配,然后LM法得到精准的位姿,其频率较低,为1hz。

将此时估计的位姿作为节点加到位姿图里面,将提取的特征点作为约束边,用GTSAM进行整体的平滑优化。此外,通过空间距离、时间限制、里程距离约束+ICP来检测回环,检测到了回环,则计算回环帧与当前帧的相对位姿,作为约束边继续加入到位姿图中,来减小漂移。

三、实验

测试设备及环境:Jetson TX2 with a Cortex-A57, and a laptop with an i7-4710MQ.

实验目标:主要和LOAM对比,在一些草丛树林较多的地方,会影响特征提取的效果导致建图失败,然后对比性能和精度。

线面特征提取数量

在一些树木、草丛比较多的地方,首先激光扫描就会产生一定的噪声,此外粗糙度计算的噪声也比较大,此时提取的线面特征是不可行的,如下图的人行道部分,LOAM直接建图失败,而LEGO LOAM在加入了分割模块之后,能够滤除一部分噪声,因此提取的特征相对稳定可靠。

image-20200906141834545

下面是其提取的特征数量,在三个数据集上对比,显著减少。

image-20200906142206383

L-M迭代次数

这里主要证明两步优化的方法能够减少迭代次数,结合上一步特征数量减少,整体性能提升比较显著。

image-20200906142511442

相对位姿误差

这里主要对比的是相对的平移和旋转误差,即位姿初值和建图之后的最终位姿对比。可以证明LEGO LOAM在获得更高精度的情况下,计算时间还减少了。

image-20200906142653053

在KITTI上的测试结果如下

image-20200906143035709

四、总结

LEGO LOAM是比较经典的激光SLAM系统,在LOAM的基础上改进而来。就现在来看,里程计部分scan2scan的匹配是不够平稳的,此外其对IMU的使用也是比较松的耦合,仅限于去畸变和提供位姿旋转初值。回环检测部分也是比较简单,可以改进的空间较大。

-------------    本文结束  感谢您的阅读    -------------
胡想成 wechat
欢迎关注个人公众号!
您的支持,是我装逼的最大动力!

本文标题:【论文阅读5】LEGO LOAM:可变地形下,轻量级和地面优化的激光里程计和建图

文章作者:胡想成

发布时间:2020年09月04日 - 20:09

最后更新:2020年09月07日 - 14:09

原始链接:xchu.net/2020/09/04/2legoloam/

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0许可协议,转载请注明出处!