激光雷达SLAM方法汇总 | 自动驾驶和移动机器人领域

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心技术交流群

后台回复【SLAM综述】获取视觉SLAM、激光SLAM、RGBD-SLAM等多篇综述!

机动车里程计是自动驾驶系统的重要组成部分,它计算车辆的位置和方向。里程计模块在全球导航卫星系统(GNSS)信号较弱且有噪声的城市地区有较高的要求和影响。传统的视觉里程计方法在姿态估计过程中受到不同光照状态的影响,并且会产生差异,随着误差的积累,会导致显著的误差。使用(LiDAR)设备的里程计已引起越来越多的研究兴趣,因为LiDAR对光照变化具有鲁棒性。在本次综述中,调研了现有的Lidar里程计方法,并总结了pipelines。此外,现有的激光雷达里程计方法按其对应类型进行分类,并在每个步骤中跨类别和类别内分析其优缺点和相关性。最后在KITTI里程数据集上评估的这些方法的准确性和运行速度,并展望了未来的研究方向。

车辆里程计是自动驾驶系统中车辆定位模块的重要组成部分。与需要外部信号(如GNSS信号)的基于GNSS/INS的定位不同,车辆里程表利用本地传感器的读数来跟踪车辆的运动,以便在外部信号受阻或高噪声的情况下获得可靠的测量。例如,在城市峡谷、隧道和山谷中,由于多径误差,GNSS信号具有很高的噪声,而激光里程计模块不受影响。此外,里程计方法将车辆定位在三维,这有助于在多级道路上定位车辆,而二维GNSS/INS系统容易混淆。

传统上,车辆里程计算法[2]、[3]、[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]、[12]主要基于camera frames。然而,视觉里程表算法有几个缺点:(1) 性能受照明变化的影响,(2) 里程计是在与世界坐标系不一致的图像坐标中估计的。相反,Lidar设备[13]会主动发射激光束,以避免光照变化的影响,并直接在世界坐标系中测量距离,这使它们成为车辆里程计任务的理想选择。近几十年来,基于激光雷达的车辆里程计吸引了越来越多的研究兴趣,此任务中LiDAR帧在LiDAR坐标中被格式化为点云,每个点表示目标上的扫描点。因此,激光雷达帧被格式化为不同坐标下的点云,而激光雷达里程计的目标是估计连续激光雷达帧之间的变换。通过估计这些变换,可以使用坐标系之间的齐次变换获得任意激光雷达帧的姿态。

本文调查了激光雷达里程计领域的现有工作,还介绍了点云配准方面的现有工作,因为它们可以适用于LiDAR帧对之间的变换估计,这是LiDAR里程计中的关键步骤。

Lidar里程计的Pipelines

给定两个LiDAR帧P0和P1,以及它们在世界坐标系中的姿态X0和X1,两者之间的变换如下所示(包括旋转和平移矩阵):

5dcd23e400d67cbfb2553cafbd15ebb7.png

对X0~Xt帧数据,变换关系如下:

b3512ab2d4801c615c23b6a62aa4efa1.png

Pipeline

现有LiDAR里程计的pipelines可分为五个阶段:

  • (1) 预处理

  • (2)特征提取

  • (3)对应搜索

  • (4)变换估计和

  • (5)后处理。

在预处理步骤中,将重新组织、分割和过滤LiDAR点云,以实现更好的特征提取和匹配。典型的预处理方法有3D-2D投影、语义分割、移动目标移除和地面移除。

激光雷达SLAM方法汇总 | 自动驾驶和移动机器人领域_第1张图片

在特征提取步骤中,从点或点簇中提取关键点或特征向量,作为特征对应的候选。特征提取可以通过传统的图像特征描述符实现,例如SIFT、SURF、ORB,甚至是DCP等网络。除关键点外,还利用了其他特征,如NDT[21]和OverlapNet[22]中的网络嵌入。

激光雷达SLAM方法汇总 | 自动驾驶和移动机器人领域_第2张图片 激光雷达SLAM方法汇总 | 自动驾驶和移动机器人领域_第3张图片 激光雷达SLAM方法汇总 | 自动驾驶和移动机器人领域_第4张图片

在匹配搜索步骤中,匹配候选目标以生成对应关系,现有工程中主要采用三种correspondences方式:

  • (1) point correspondence

  • (2) distribution correspondence

  • (3) network correspondence

由于点correspondence搜索简单且与现有的关键点匹配算法兼容,因此大部分应用点correspondence搜索,ICP、RANSAC和神经网络是常用的点correspondence搜索算法。

基于分布的算法不需要correspondence搜索,因为成对的分布天然是对应的,类似地,基于网络特征的算法只有一个对应项,在后处理步骤中,大多数现有工作都使用下述公式计算每个LiDAR帧的姿态:

cd73585d50b40574753c0fce5813eaea.png

也有几项工作利用了闭合回路[22]、[25]、[26]的优点来完善姿态估计链[27]、[28]。

点云配准的损失函数

对基于点之间的correspondence,损失函数为:

bf8dd048f3d2cb0dcb1d5096144e5730.png

其中yi和xj是来自点correspondence关系C的点对,R和t是目标变换参数,在现有的工作中,奇异值分解(SVD)是求解方程最广泛使用的方法。

对于分布correspondence,正态分布变换(NDT)是最常用的解算器,无损检测通过计算正态分布的匹配程度来完成,而不是直接计算点:

47ef377b0396232564c90706cfe4b325.png f939b8e4e1ea220b5f934505fd328aba.png a8de74e14088b6f38c2e9a44abaf3af3.png

与基于点correspondence和基于分布correspondence的方法相比,基于网络correspondence的方法不使用确定的特征提取器来搜索pairs。相反,他们使用具有数百万参数的神经网络来嵌入一对点云,然后估计它们之间的转换。通过使用大量数据样本进行训练,此类方法可以学习某些场景中的点云模式,并精确估计激光雷达帧之间的转换。

领域方法和算法

在过去几十年中,已经发布了几种方法来解决Lidar里程计问题,基于点云配准步骤中使用的类型correspondence,工作主要分为三个分支:

  • (1) 基于点correspondence的方法([31]、[32]、[33]、[14]);

  • (2) 基于分布correspondence的方法([34]、[27]、[15]);

  • (3) 基于网络correspondence的方法([35]、[36]、[16]、[37]);

激光雷达SLAM方法汇总 | 自动驾驶和移动机器人领域_第5张图片

Point correspondence方法

最早的方法之一是(ICP)方案,目前仍在用于激光里程计。过去三十年来,ICP及其变种方法不断增加,如TrimmedICP[38]、GICP[39]、SparseICP[40]、AA-ICP[41]、SemanticICP[42]、Suma++[28]、DGR[43]和ELO[32]。基于点匹配的方法从LiDAR帧中提取关键点,建立关键点对,并根据关键点对估计变换。ICP方法的一个主要缺点是,当点云距离较远时,容易出现局部极小值。TrimmedICP[38]是ICP的扩展,它结合了最小二乘法(LTS),使算法能够在50%以下的重叠情况下运行。

ICP的point-2-plane[44]变体通过利用曲面法线信息提高了性能,广义ICP[39]是将ICP和点对面ICP算法结合到一个单一的概率框架中,该方法优于ICP和点对平面方法,相比之下,对不正确的对应更为稳健。GICP除了具有与ICP相似的速度和简单性外,还便于添加测量噪声、异常项和概率技术,以提高稳健性。SemanticICP[42]和IMLSSLAM[46]等方法为解决激光雷达里程计问题提供了新的方向。IMLS-SLAM预处理动态对象,并在LiDAR扫描上使用采样策略,以使用隐式移动最小二乘(IMLS)曲面表示从先前的LiDAR扫掠定义模型。而SemanticICP通过结合像素化语义测量值来估计两个点云之间的相对变换,从而进行联合几何和语义推理来改进配准任务。这里,点关联被视为潜在的随机变量,这导致了期望最大化风格的解决方案。由于语义标签和EM数据关联的合并使用,SemanticICP优于GICP[39]。

SALO[47]、DCP[20]、DeepVCP[31]等论文与基于sufel的方法SuMa和SuMa++一起发表。SALO利用激光雷达传感器硬件,并通过新的下采样和点匹配抑制方法改进了ICP算法。它的优点是集成了传感器的物理特性,从而提高了Lidar的精度。DCP论文[20]讨论了点云数据的球面投影,以降低输入数据的维数。像SuMa++这样的方法有一个语义步骤,由RangeNet++[48]提供逐点标签,以过滤出动态对象的像素,并向扫描配准添加语义约束。在这方面,它的表现优于SuMa。

DGR[43]、DMLO[14]和SROM[50]是最近使用的几种方法,其中基于三个模块的DGR方法在里程估计中包含了普鲁斯特误差。当使用球面投影时,属于不同曲面的点可以在距离图像中相邻。最近的一些方法ELO[32]和Zhu等人[51],Zhu等提出了一种不同的方法来处理点云稀疏性,用圆柱形投影代替球形投影,ELO也利用鸟瞰图,解决了上述问题。在这些方法中,ELO的运行时间最小,甚至优于长期执行者LOAM。

激光雷达SLAM方法汇总 | 自动驾驶和移动机器人领域_第6张图片

Distribution correspondence方法

[21]中介绍的正态分布变换方法是解决激光里程计应用中的配准问题的一种定义类型的方法。在过去二十年中,提出了多种NDT版本,如3DNDT[52]、PNDT-LO[53]、AugmentedNDT[54]和加权NDT[30]。这些方法的关键步骤是将输入点云转换为计算正态分布的相等单元大小,然后将其与其它点云的其他正态分布进行比较,并为其指定分数,该算法可以找到提高分数的旋转和平移。最初的NDT方法主要用于2D扫描配准,除了将这种方法扩展到三维之外,3D-NDT还具有优势,因为它形成了一种平滑的分段空间表示,反过来有助于完整的3D-NDTmap生成和配准。该方法在点上也优于初始方法,如ICP云配准任务。

激光雷达SLAM方法汇总 | 自动驾驶和移动机器人领域_第7张图片

基于NDT的里程估计方法LOAMKITTI里程数据集(表二)的测试性能中仍具有较高的地位,它没有里程计的预处理。在LOAM中,选择尖锐边缘和平面曲面片上的特征点,评估平滑度以识别边缘和平面点,并使用点对边和点对平面扫描匹配来实现两次扫描之间的转换。在PNDT[53]中,与经典NDT不同,在计算平均值和协方差时计算每个点的概率分布函数,从而提高平移和旋转精度。优点是在所有占用的单元中生成分布,而与分辨率无关。[15]中引入的LOAM变体LegoLOAM还使用标签匹配来增加在两次扫描之间找到与同一对象对应的匹配的可能性。此外,还集成了两步LM优化,允许与LOAM类似的精度,同时实现35%的运行时间优化!

激光雷达SLAM方法汇总 | 自动驾驶和移动机器人领域_第8张图片

DeLiO[33]首次在激光雷达里程计中引入了解耦平移和旋转模块,但是,DeLiO不处理动态对象。然而,一种称为加权NDT(weightedNDT)的方法[30]通过分别为概率较大或较小的点分配较大或较小权重来解决稳健环境中的点云匹配问题[10]。LOAM变体SLOAM[55]引入了语义特征比基于纹理的线条和平面更可靠的概念。这使得SLOAM在非结构化噪声环境中具有更强大的优势,基于LiDAR的环路闭合检测忽略了强度读数并使用仅几何描述符,但ISC-LOAM[56]利用强度读数来促进有效的位置识别。最新的Lidar方法是F-LOAM[57]和R-LOAM[34]。F-LOAM在运行时方面优于LOAM和LegoLOAM。而R-LOAM是对LOAM的改进,因为与LOAM相比,纳入了网格特征的额外成本,从而降低了中值APE。就KITTI Odometry数据集的性能而言,LOAM一直表现良好。在现有的仅有激光雷达的方法中,LOAM的旋转和平移误差最低。

Network correspondence方法

基于网络的方法在LiDAR里程计pipelines的姿态估计模块中使用神经网络。与基于ICP和NDT的方法相比,使用深度学习作为点云配准步骤的激光里程计方法相对较新。然而,在基于深度学习的视觉里程计方面,已有相当多的工作,如[8]、[10]、[11]。PointNet论文[37](和PointNet++[70])是针对点云对象分类和部part分割任务提出的一篇论文,它包含了一个新的网络,该网络直接接收点云,而不必像其他方法那样使用体素化。

LO-Net接收激光雷达点云数据,并计算scan之间的6自由度相对姿态。LO-Net作为一种端到端的可训练方法,学习了一种有效的特征表示方法。新的掩码加权几何约束损失有助于实现这一点,这种损失有助于算法封装数据的顺序依赖性和动态性,这里,位置和方向是同时估计的。L3-Net[71]融合了多种方法,其中mini-PointNet用于特征提取,3DCNN用于正则化。大多数方法都是有监督的学习方法,但论文DeepLO[58]首次介绍了几何感知激光雷达里程计的有监督和无监督框架。DeepLO还将顶点和法线贴图作为网络输入,而不会损失精度。LodoNet[16]将PointNet分类体系结构调整为其旋转和平移估计模块,但与LO-Net不同的是,平移和旋转模块是分开的,最终导致两个3-DoF预测里程计。与DCP[20]和LeGOLOAM[15]类似,输入LiDAR点云的球面投影采用LodoNet等方法进行,以便以二维表示三维数据,这有助于利用相对较少的计算资源。激光雷达里程计问题的标准ICP方法的主要限制是,由于里程计回归和关键点匹配函数的耦合性质,存在训练损失不收敛的潜在问题,如[35]所述。而在LodoNet中,为了提高网络的鲁棒性和有效性,使用了基于PointNet[37]的MKP选择模块来解决分割问题。解决多视图问题是一个尚未解决的挑战,3DRegNet[72]是一种类似于传统方法的方法,它可以扩展到涉及处理多个视图的场景,而不仅仅是两个视图。在这种方法中,为了对点对应关系进行分类,并回归公共参考帧扫描对准的运动参数,将卷积层和深层残差层合并到神经网络中。

最近的工作是D3DLO[69]、PWCLO[73]和OverlapNet[22]。尽管D3DLO和DeepCLR[68]具有类似的网络架构,但D3DLO利用了3.56%的网络参数。在这样做的过程中,与DeepCLR相比,它表现稍差,但成功地将点云大小减少了40-50%。另一方面,具有分层嵌入掩码优化的PWCLO在KITTI里程序列的平移和旋转误差方面优于LodoNet、LOAM、DMLO和LO-Net。多年来,基于网络的方法得到了极大的改进。D3DLO[69]等方法的运行时间与LOAM[27]相当,而DeepCLR[68]的运行时间甚至比LOAM好两倍。

性能比较

表I和表II中所示的所有仅激光雷达里程计方法均已在公开的KITTI里程计数据集上进行了比较,在KITTI里程计数据的训练表现中,表I,DeepLO[58]似乎在大多数序列中表现良好,与其它序列相比,DeepVCP[31]在所有11个序列中的平均性能最好。从表二可以看出,基于无损检测的LOAM是激光测距里程计的最佳方法,旋转和过渡误差最小。但是,许多其它方法都与运行时性能指标相匹配,甚至超过了该指标。ELO[32]的运行时间是所有列出的运行时间中最好的,为0.005s。运行时间是自动化驾驶系统利用和部署的一个非常重要的指标。MULLS[59]、CPFG-SLAM[63]、3DOF-SLAM[67]、DeepCLR[68]、F-LOAM[34]和ELO[32]在运行时性能方面优于LOAM。Efficient LiDAR Odometry:ELO[32]方法的错误性能与LOAM相当,并且在测试集的运行时间也非常优越,在训练集的平均性能上也优于LOAM。ELO似乎是应用实时激光测距仪进行自动驾驶的最佳方法。

参考

[1]  LiDAR Odometry Methodologies for Autonomous Driving: A Survey.

往期回顾

自动驾驶的“天眼”!聊一聊高精地图领域中所有主流的制作方案

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、多传感器融合、SLAM、光流估计、轨迹预测、高精地图、规划控制、AI模型部署落地等方向;

加入我们:自动驾驶之心技术交流群汇总!

自动驾驶之心【知识星球】

想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球(三天内无条件退款),日常分享论文+代码,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!

激光雷达SLAM方法汇总 | 自动驾驶和移动机器人领域_第9张图片

你可能感兴趣的:(算法,大数据,python,计算机视觉,神经网络)