LeGO-LOAM是Tixiao Shan 和 Brendan Englot于2018年提出的使用激光雷达完成定位与三维建图的算法,全称为:Lightweight and Groud-Optimized Lidar Odometry and Mapping on Variable Terrain,从标题可以看出 LeGO-LOAM 为应对可变地面进行了地面优化,同时保证了轻量级。

LeGO-LOAM——在可变地形上的轻量级的地面点优化的雷达里程计和建图模块

摘要

我们提出了一种轻量级和基于地面优化的激光雷达里程计和建图方法 LeGO-LOAM,用于地面车辆的实时六自由度姿态估计。LeGO-LOAM 是轻量级的,因为它可以在低功耗嵌入式系统上实现实时姿态估计。LeGOLOAM 是基于地面优化的,因为它在其分割和优化步骤中利用了地平面的存在。我们首先应用点云分割来滤除噪声,并进行特征提取以获得独特的平面和边缘特征。然后,使用两步 Levenberg-Marquardt 优化方法,使用平面和边缘特征来解决连续扫描中六自由度变换的不同分量。我们使用地面车辆的可变地形环境中收集的数据集,将 LeGO-LOAM 的性能与最先进的方法 LOAM 进行比较,并表明 LeGO-LOAM 在降低计算成本的情况下实现了相似或更好的精度。我们还将 LeGO-LOAM 集成到 SLAM 框架中,以消除漂移引起的位姿估计误差,并使用 KITTI 数据集进行了测试。

Ⅰ.介绍

在智能机器人的能力中,地图构建和状态估计是最基本的先决条件。人们一直致力于通过基于视觉和基于激光雷达的方法实现实时 6 自由度同时定位和建图 (SLAM)。尽管基于视觉的方法在闭环检测方面具有优势,但由于它们对照明和视点变化的敏感性,如果用作唯一的导航传感器,可能会使这些能力不可靠。另一方面,基于激光雷达的方法即使在夜间也能发挥作用,而且许多 3D 激光雷达的高分辨率允许在大光圈下远距离捕捉环境的精细细节。因此,本文重点介绍使用 3D 激光雷达来支持实时状态估计和建图。

寻找两次激光雷达扫描之间转换的典型方法是迭代最近点 (ICP) [1]。通过逐点查找对应关系,ICP 迭代对齐两组点,直到满足停止条件为止。但是当扫描包括大量点时,ICP 可能会遭受过高的计算成本。已经提出了许多 ICP 变体来提高其效率和准确性 [2]。 [3] 引入了一种点到平面 ICP 变体,将点与局部平面补丁匹配。Generalized-ICP [4] 提出了一种匹配来自两次扫描的局部平面补丁的方法。此外,一些 ICP 变体利用并行计算来提高效率 [5]-[8]。

基于特征的匹配方法越来越受到关注,因为它们通过提取环境中的代表性特征来减少计算资源。这些特征应该适用于有效匹配和视角不变。这些特征应适用于有效匹配和视点不变性。社区已经提出了许多检测器,例如点特征直方图(PFH)[9] 和视点特征直方图(VFH)[10],用于使用简单有效的技术从点云中提取此类特征。[11] 中介绍了一种使用 Kanade-Tomasi 角点检测器从点云中提取通用特征的方法。[12] 中讨论了从密集点云中提取线和平面特征的框架。

社区还提出了许多使用特征进行点云配准的算法。 [13] 和 [14] 提出了一种在局部集群中执行点曲率计算的关键点选择算法,然后使用选定的关键点进行匹配和位置识别。通过将点云投影到距离图像(a range image)上并分析深度值的二阶导数,[15] 从具有高曲率的点中选择特征进行匹配和位置识别。假设环境由平面组成,在[16]中提出了一种基于平面的配准算法。户外环境,例如森林,可能会限制这种方法的应用。 [17] 中介绍了一种专为Velodyne 激光雷达设计的项圈线段 (collar line segments, CLS) 方法。CLS 使用扫描的两个连续“环”中的点随机生成线。因此生成了两条线云并用于配准,然而,这种方法受到随机生成线条的挑战。 [18]中提出了一种基于分割的配准算法。SegMatch 首先将分割应用于点云,然后根据其特征值和形状直方图为每个段计算一个特征向量。随机森林用于匹配来自两次扫描的片段。虽然这种方法可以用于在线姿态估计,但它只能提供大约 1Hz 的定位更新。

在 [19] 和 [20] 中提出了一种低漂移和实时激光雷达里程计和建图(LOAM) 方法。 LOAM 执行点特征到边缘/平面扫描匹配以找到扫描之间的对应关系。通过计算其局部区域中点的曲率(roughness)值来提取特征。选择具有高曲率(roughness)值值的点作为边缘特征。类似地,具有低曲率(roughness)值的点被指定为平面特征。通过将估计问题新颖地划分为两个单独的算法来实现实时性能。一种算法以高频率运行并以低精度估计传感器速度,另一种算法运行频率较低,但可以以高精度获得运动估计。将这两个估计融合在一起以产生高频和高精度的单个运动估计。在 KITTI 里程计基准站点 [21] 上,通过仅使用激光雷达的估算方法,LOAM 的结果精度达到最佳[21]。

在这项工作中,我们为配备 3D 激光雷达的地面车辆寻求可靠、实时的六自由度姿态估计,其方式适合在小型嵌入式系统上有效实施。由于几个原因,这样的任务并不简单。由于尺寸有限,许多无人地面车辆 (UGV) 没有悬架或强大的计算单元。小型 UGV 在多变的地形上行驶时经常遇到非平稳运动,因此,获取的数据往往会带有运动畸变。由于在较大的运动下,只有有限的重叠区域,因此,在两次连续扫描之间也很难找到可靠的特征对应。此外,从 3D 激光雷达接收到的大量点对使用有限的车载计算资源进行实时处理提出了挑战。

当我们为此类任务实施 LOAM 时,当 UGV 以平滑运动具有稳定的特征运行并由足够的计算资源支持时,我们可以获得低漂移运动估计。但是,当资源有限时,LOAM 的性能会下降。由于需要计算密集 3D 点云中每个点的曲率(roughness)值,轻量级嵌入式系统上特征提取的更新频率无法始终跟上传感器更新频率。无人车在嘈杂环境中的运行也对 LOAM 提出了挑战。由于激光雷达的安装位置在小型 UGV 上通常靠近地面,因此来自地面的传感器噪声可能会持续存在。例如,从草地返回的范围可能会导致高曲率(roughness)值。因此,可能会从这些点中提取不可靠的边缘特征。类似地,边缘或平面特征也可以从树叶返回的点中提取。这些特征对于扫描匹配通常不可靠,因为在两次连续扫描中可能看不到相同的草叶或叶子。使用这些功能可能会导致不准确的配准和大的漂移。

因此,我们提出了一种轻量级和地面优化的 LOAM (LeGO-LOAM),用于在具有可变地形的复杂环境中对 UGV 进行姿态估计。LeGO-LOAM 是轻量级的,因为可以在嵌入式系统上实现实时姿态估计和建图。执行点云分割以丢弃在地面分离后可能代表不可靠特征的点。LeGO-LOAM 也是地面优化的,因为我们为姿势估计引入了两步优化。在第一步中,从地面提取的平面特征用于获得 $[t_z, θ_{roll}, θ_{pitch}]$。在第二步中,通过匹配从分割点云中提取的边缘特征来获得其余的变换$[t_x, t_y, θ_{yaw}]$。我们还集成了执行闭环以纠正运动估计漂移的能力。本文的其余部分安排如下。第二节介绍了用于实验的硬件。第三节详细描述了所提出的方法。第四节介绍了一系列在各种户外环境中的实验。

Ⅱ.系统硬件

本文提出的框架使用从 Velodyne VLP-16 和 HDL-64E 3D 激光雷达收集的数据集进行了验证。VLP-16 的测量范围可达 $100m$,精度为$ ± 3cm$。它的垂直视野 (FOV) 为 $30°(±15°)$,水平视野 (FOV) 为$360°$。$16 $通道传感器提供 $2° $的垂直角分辨率。水平角分辨率根据旋转速率从 $0.1° $到$ 0.4°$ 变化。在整篇论文中,我们选择了 $10Hz $的扫描速率,它提供了$ 0.2° $的水平角分辨率。 HDL-64E(在这项工作中通过 KITTI 数据集进行了探索)也具有 $360° $的水平 FOV,但还有$ 48 $个通道。 HDL-64E 的垂直 FOV 为$ 26.9°$。

本文中使用的 UGV 是 Clearpath Jackal。它由$ 270 $瓦时锂电池供电,最大速度为$ 2.0m/s$,最大有效载荷为 $20kg$。 Jackal 还配备了低成本惯性测量单元 (IMU),即 CH Robotics UM6 方向传感器。

提议的框架在两台计算机上得到验证:一台 Nvidia Jetson TX2 和一台配备 2.5GHz i74710MQ CPU 的笔记本电脑。Jetson TX2 是一款配备 ARM Cortex-A57 CPU 的嵌入式计算设备。选择笔记本电脑 CPU 以匹配 [19] 和 [20] 中使用的计算硬件。本文所示的实验仅使用这些系统的 CPU。

image-20220426195127090

图 1:LeGO-LOAM 的硬件和系统概览

Ⅲ.轻型激光雷达测距和建图

A.系统概述

所提出框架的概述如图 $1$ 所示。系统从 3D 激光雷达接收输入并输出 6 DOF 姿态估计。整个系统分为五个模块。第一个是分割,采用单次扫描的点云并将其投影到范围图像上进行分割。然后将分割后的点云发送到特征提取模块。然后,激光雷达里程计使用从前一个模块中提取的特征来找到与连续扫描相关的变换。这些特征在激光雷达建图中得到进一步处理,将它们注册到全局点云地图。最后,变换积分模块将激光雷达里程计和激光雷达建图的姿态估计结果进行融合,输出最终的姿态估计。相对于 [19] 和 [20] 的原始通用 LOAM 框架,所提出的系统旨在提高地面车辆的效率和准确性。下面介绍这些模块的详细信息。

B. 分割

令$ P_t = \{p_1, p_2, ..., p_n\} $为在时间 $t $获取的点云,其中$p_i$ 是 $P_t $中的一个点。$ P_t$ 首先投影到范围图像上。投影距离图像的分辨率为 $1800 \times 16$,因为 VLP-16 的水平和垂直角分辨率分别为 $0.2° $和$ 2°$。$ P_t$ 中的每个有效点 $p_i$现在由范围图像中的唯一像素表示。与 $p_i$关联的范围值$r_i$表示从对应点 $p_i$到传感器的欧氏距离。由于斜坡地形在许多环境中都很常见,因此我们不认为地面是平坦的。在分割之前,对距离图像进行列式评估(可视为地平面估计 [22]),以提取地面点。在此过程之后,可能代表地面的点被标记为地面点,不用于后续分割(分类)。

然后,将基于图像的分割方法[23]应用于范围图像,将点分组为许多簇。来自同一簇的点被分配了一个唯一的标签。请注意,地面点是一种特殊类型的集群。将分割应用于点云可以提高处理效率和特征提取精度。假设机器人在嘈杂的环境中运行,小物体(例如树叶)可能会形成微不足道且不可靠的特征,因为在两次连续扫描中不太可能看到相同的叶子。为了使用分段点云进行快速可靠的特征提取,我们省略了少于 30 个点的集群。分割前后点云的可视化如图 2 所示。原始点云包含许多点,这些点是从周围的植被中获得的,这些点可能会产生不可靠的特征。

image-20220426194420416

图 2:噪声环境中扫描的特征提取过程。原始点云如$(a)$所示。在$(b)$中,红点被标记为地面点,其余的点是分割后剩下的点。在$(c)$中,蓝色和黄色点表示 $F_e$ 和 $F_p$ 中的边缘和平面特征。在 $(d)$中,绿色和粉色点分别代表 $\mathbb{F}_e$ 和 $\mathbb{F}_p$ 中的边缘和平面特征。

在这个过程之后,只有可能代表大物体的点(图$2(b)$ )被保留下来,例如树干和地面点,以供进一步处理。同时,只有这些点保存在距离图像中。我们还获得每个点的三个属性:$(1) $其作为地面点或分割点的标签,$(2) $其在范围图像中的列和行索引,以及 $(3)$ 其范围值。这些属性将在以下模块中使用。

C.特征提取

特征提取过程类似于[20]中使用的方法。然而,我们不是从原始点云中提取特征,而是从地面点和分割点中提取特征。令 $S$ 为范围图像同一行中 $p_i$ 的连续点的集合。 $S$ 中的一半点位于 $p_i$ 的两侧。在本文中,我们设置 $|S|$设置为 $10$。 使用分割期间计算的范围值,我们可以评估点 $p_i$在$S$中的曲率(roughness)值,

$$ c=\frac{1}{|S|\cdot\parallel r_i \parallel} \parallel \underset{j\in S,j\ne i}{\sum}(r_j-r_i) \parallel \tag{1} $$

为了从各个方向均匀地提取特征,我们将距离图像水平划分为几个相等的子图像。然后我们根据它们的曲率(roughness)值$ c $,对子图像的每一行中的点进行排序。与 LOAM 类似,我们使用阈值$ c_{th}$来区分不同类型的特征。我们称$c$大于$ c_{th}$为边缘特征的点,$c$小于$ c_{th}$为平面特征的点。

然后从子图像的每一行中选取不属于地面,且有最大c值的$n_{\mathbb{F}_e}$个特征边。以相同方式选择具有最小$c$值的$n_{\mathbb{F}_p}$平面特征点(可以标记为地面点或分段点)。设 $\mathbb{F}_e$ 和$\mathbb{F}_p$是所有子图像的所有边缘和平面特征的集合,这些特征如图 $2(d)$所示。然后,我们从子图像的每一行中提取不属于地面的具有最大$c$的$n_{F_e}$个边缘特征。类似地,我们从子图像的每一行中提取必须是地面点的具有最小$c$的 $n_{F_p} $个平面特征。设$ F_e$ 和 $F_p$ 分别是这个过程中所有边缘和平面特征的集合。在这里,我们有 $F_e\subset \mathbb{F}_e$和 $F_p \subset \mathbb{F}_p$。$ F_e$ 和 $F_p$ 的特征如图$ 2(c)$ 所示。在本文中,我们将 $360° $范围图像划分为 $6 $个子图像。每个子图像的分辨率为 $300 \times 16$。$n_{F_e}、n_{F_p}、n_{\mathbb{F}_e} $和$n_{\mathbb{F}_p}$ 分别选择为 $2、4、40$ 和 $80$。

D.激光雷达里程计

激光雷达里程计模块估计两次连续扫描之间的传感器运动。通过执行点到边缘和点到平面的扫描匹配来找到两次扫描之间的变换。换句话说,我们需要从前一次扫描的特征集 $\mathbb{F}^{t-1}_e$ 和$\mathbb{F}^{t-1}_p$ 中找到 $F^t_e$和 $F^t_p$中点的对应特征。为了简洁起见,找到这些对应关系的详细过程可以在[20]中找到。

但是,我们注意到可以进行一些更改以提高特征匹配的准确性和效率:

$1) $标签匹配:由于$F^t_e$和 $F^t_p$中的每个特征在分割后都用其标签进行编码,我们只能从 $\mathbb{F}^{t-1}_e$ 和$\mathbb{F}^{t-1}_p$中找到具有相同标签的对应关系。对于 $F^t_p$ 中的平面特征,只有在$\mathbb{F}^{t-1}_p$中标记为地面点的点才会被用于寻找对应的平面贴片(patch)。对于$F^t_e$中的边缘特征,在分割簇的$\mathbb{F}^{t-1}_e$中寻找对应的边缘线。以这种方式找到对应关系有助于提高匹配精度。换句话说,同一对象的匹配对应关系更有可能在两次扫描之间找到。这一过程也缩小了潜在匹配对象的范围。

$2)$两步L-M优化:在[20]中,将当前扫描的边缘和平面特征点之间的距离及其与前一次扫描的对应关系的一系列非线性表达式编译为单个综合距离向量。应用 Levenberg-Marquardt (L-M) 方法来找到两个连续扫描之间的最小距离变换。

我们在这里介绍一种两步 L-M 优化方法。最佳变换 $T $分两步找到:

$(1)$ 通过匹配$F^t_p$中的平面特征及其在 $\mathbb{F}^{t-1}_p$ 中的对应关系来估计$ [t_z, θ_{roll}, θ_{pitch}]$

$(2) $然后使用 $F^t_e$中的边缘特征及其在 $\mathbb{F}^{t-1}_e$ 中的对应关系,并同时使用 $[t_z, θ_{roll}, θ_{pitch}]$ 作为约束一起来估计剩余的 $[t_x, t_y, θ_{yaw}]$。需要注意的是,虽然$[t_x, t_y, θ_{yaw}]$也可以从第一个优化步骤中获得,但它们的准确度较低,得到的结果也不能继续放在第二步中使用。最后,通过融合 $[t_z, θ_{roll}, θ_{pitch}]$ 和$[t_x, t_y, θ_{yaw}]$找到两个连续扫描之间的$ 6D$ 变换。通过使用所提出的两步优化方法,我们观察到在计算时间减少约 $35\% $的同时可以实现类似的精度(表 III)。

image-20220427165436363

图 3:激光雷达里程计模块的两步优化。首先通过匹配从地面点提取的平面特征来获得$[t_z, θ_{roll}, θ_{pitch}]$。 然后使用从分割点提取的边缘特征进行估计,同时应用$[t_z, θ_{roll}, θ_{pitch}]$作为约束,从而获得$[t_x, t_y, θ_{yaw}]$

E. 激光雷达建图

激光雷达建图模块运行频率较低,它将 $\{\mathbb{F}^{t}_e, \mathbb{F}^{t}_p\}$中的特征与周围的点云图 $\overline Q^{t-1}$ 匹配,以进一步细化位姿变换,然后这里再次使用 L-M 方法得到最终的变换。我们请读者参考 [20] 中的描述,了解详细的匹配和优化过程。 LeGO-LOAM 的主要区别在于最终点云图的存储方式。我们不是保存单个点云图,而是保存每个单独的特征集 $\{\mathbb{F}^{t}_e, \mathbb{F}^{t}_p\}$。令 是保存所有先前特征集的集合。 $M^{t−1}$中的每个特征集也与扫描时传感器的位姿相关联。那么 $\overline Q^{t-1}$可以通过两种方式从$M^{t−1}$获得。

在第一种方法中,通过选择传感器视野中的特征集来获得 $\overline Q^{t-1}$。为简单起见,我们可以选择传感器位姿在传感器当前位置 $100m$ 以内的特征集。然后将所选特征集转换并融合到单个周围地图$\overline Q^{t-1}$中。这种地图选择技术类似于[20]中使用的方法。

我们还可以将位姿图 SLAM 集成到 LeGO-LOAM 中。每个特征集的传感器位姿可以建模为位姿图中的一个节点。特征集 $\{\mathbb{F}^{t}_e, \mathbb{F}^{t}_p\}$ 可以看作是该节点的传感器测量数据。由于激光雷达建图模块的位姿估计漂移非常低,我们可以假设在短时间内没有漂移。这样,$\overline Q^{t-1}$ 可以通过选择最近的一组特征集来形成,即 $\overline Q^{t-1}= \{ \{\mathbb{F}^{t-k}_e, \mathbb{F}^{t-k}_p\}, ..., \{\mathbb{F}^{t-1}_e, \mathbb{F}^{t-1}_p\} \}$ ,其中 $k$ 定义了 $\overline Q^{t-1}$ 的大小。然后,可以使用 L-M 优化后获得的变换添加 $\overline Q^{t-1}$​ 中新节点和所选节点之间的空间约束。我们可以通过执行闭环检测来进一步消除该模块的漂移,在这种情况下,如果使用 ICP 在当前特征集和先前特征集之间找到匹配项,则会添加新约束。然后通过将位姿图发送到优化系统(例如 [24])来更新传感器的估计位姿。请注意,只有 Sec 中的实验。 IV(D) 使用这种技术来创建它的周围地图。注意,只有第四节(D)中的实验使用此技术来创建其周围的地图。

Ⅳ.实验

我们现在描述一系列实验,以定性和定量分析两种比较方法,LOAM 和 LeGO-LOAM,在两种硬件安排上,一个 Jetson TX2 和一个 Cortex-A57,一个笔记本电脑和一个 i7-4710MQ。这两种算法都是用 C++ 实现的,并使用 Ubuntu Linux1 中的机器人操作系统 (ROS) [25] 执行$^1$。

$^1$LeGO-LOAM 的代码可在 https://github.com/RobustFieldAutonomyLab/LeGO-LOAM 获得

A. 小型 UGV 测试

我们在植被覆盖的室外环境中手动驱动机器人。我们首先展示了在这种环境下特征提取的定性比较。使用这两种方法从同一扫描中提取的边缘和平面特征如图 4 所示。这些特征对应于第 III 节中发送到激光雷达建图模块的$\{\mathbb{F}^{t}_e, \mathbb{F}^{t}_p\}$。如图$4(d)$ 所示,LeGO-LOAM 的特征数量在点云分割后大大减少。从树叶返回的大部分点被丢弃,因为它们在多次扫描中不是稳定的特征。另一方面,由于从草地返回的点也非常嘈杂,因此在评估后会得出较大的粗曲率值。因此,使用原始 的LOAM, 不可避免地会从这些点中提取边缘特征。如图$4(c)$ 所示,从地面提取的边缘特征通常不可靠。

image-20220427090416034

图 4:在植被覆盖的室外环境中,从两种不同的激光雷达里程计和制图框架获得的边缘和平面特征。边缘和平面特征分别为绿色和粉红色。从 LOAM 获得的特征显示在$ (b) $和$ (c) $中。从 LeGO-LOAM 获得的特征如 $(d) $和$ (e)$ 所示。标签 (i) 表示树,(ii) 表示石墙, (iii) 表示机器人。

虽然我们可以更改 LOAM 中提取边缘和平面特征的曲率阈值 $c_{th}$ 以减少特征数量并从草和树叶中过滤掉不稳定的特征,但在应用这些更改后我们会遇到更糟糕的结果。例如,我们可以增加$c_{th}$以从环境中提取更稳定的边缘特征,但如果机器人进入相对干净的环境,这种变化可能会导致有用的边缘特征数量不足。同样,当机器人从清洁环境移动到嘈杂环境时,减小$c_{th}$也会导致缺乏有用的平面特征。在这里的所有实验中,我们对 LOAM 和 LeGO-LOAM 使用相同的$c_{th}$。

现在我们在测试环境中比较两种方法的建图结果。为了模拟具有挑战性的潜在 UGV 操作场景,我们执行了一系列激进的偏航操作。请注意,在本文的所有实验中,这两种方法都提供了相同的初始平移和旋转估计(guess),该估计(guess)是从 IMU 获得的。运行60秒后得到的点云图如图5所示。由于不稳定特征导致的错误特征关联,LOAM 的地图在操作过程中会发散两次。图 $5(a)$中用白色箭头突出显示的三棵树干代表现实中的同一棵树。两种里程计方法的完整映射过程的可视化可以在视频附件中找到$^2$。

$^2$https://youtu.be/O3tz_ftHV48

image-20220427090607185

图 5:LOAM 和 LeGO-LOAM 在图 $4(a) $所示地形上的地图。 $(a) $中用白色箭头标记的树代表同一棵树。

B. 大规模 UGV 测试

接下来,我们在三个大规模数据集上对 LOAM 和 LeGO-LOAM 进行定量比较,这将被称为实验$ 1、2 $和$ 3$。前两个是在史蒂文斯理工学院校园收集的,那里有许多建筑物、树木、道路和人行道。这些实验及其环境如图 6(a) 所示。实验 3 跨越了一条森林覆盖的远足小径,其中有树木、柏油路和被草和土壤覆盖的小径。执行实验 3 的环境如图 8 所示。每个实验的详细信息列在表 I 中。为了进行公平比较,每个实验显示的所有性能和准确度结果均在每个数据集的 10 次实时回放试验中平均得出。

image-20220427102855741

1)实验1:第一个实验旨在证明LOAM和LeGO-LOAM都可以在具有平滑运动的城市环境中实现低漂移姿态估计。我们避免了激进的偏航动作,并且我们避免驾驶机器人穿过只能获得一些稳定特征的稀疏区域。在整个数据记录过程中,机器人在平坦的道路上运行。机器人的初始位置,如图6(b)所示,位于斜坡上。机器人以平均 1.35m/s 的平均速度行驶 807 秒后返回同一位置。

为了评估这两种方法的姿态估计精度,我们比较了最终姿态和初始姿态之间的平移和旋转差异。这里,通过所有实验,初始位姿定义为$ [0, 0, 0, 0, 0, 0]$。如表 V 所示,LOAM 和 LeGO-LOAM 在两种不同的硬件安排上都实现了相似的低漂移姿态估计。当在 Jetson 上运行时,来自 LeGO-LOAM 的最终地图如图 6(b) 所示。

image-20220427101541012

图 6:实验$1$和$2$的 LeGO-LOAM 图。$(c)$中的颜色变化表示真实的高程变化。由于实验 $1$ 中机器人的初始位置在斜坡上,因此 $(b)$ 中的颜色变化并不代表真实的高程变化。

2)实验2:虽然实验2是在与实验1相同的环境中进行的,但它的轨迹略有不同,行驶在如图7(a)所示的人行道上。这条人行道代表了 LOAM 可能经常失败的环境。人行道的一端有一堵墙和柱子——从这些结构中提取的边缘和平面特征是稳定的。人行道的另一端是一片开阔的区域,上面覆盖着嘈杂的物体,即草和树,这将导致特征提取不可靠。因此,LOAM 的姿态估计在驶过这条人行道后会发散(图 7(b)和(d))。LeGO-LOAM 没有这样的问题:1)没有从被草覆盖的地面中提取边缘特征,2)在分割后过滤掉来自树叶的噪声传感器读数。两种方法的精度比较如表 V 所示。在本实验中,LeGO-LOAM 的精度比 LOAM 高一个数量级。

image-20220427101616762

图 $7$:实验$ 2 $中 LOAM 在穿过史蒂文斯校园的人行道上发生故障的场景(上图 $(a)$ 中最左侧的人行道)。人行道的一端由附近建筑物的特征支撑。人行道的另一端主要被嘈杂的物体包围,即草和树。如果没有点云分割,将从这些对象中提取不可靠的边缘和平面特征。图像 $(b)$ 和 $(d)$ 显示 LOAM 在经过人行道后失效。

3)实验 3:实验 3 的数据集是从森林远足小径记录的,其中 UGV 以 1.3m/s 的平均速度行驶。机器人行驶 35 分钟后返回初始位置。这种环境下的海拔变化约为 19 米。UGV 在三个路面上行驶:泥土覆盖的小径、沥青和被草覆盖的地面。这些表面的代表性图像分别显示在图 8 的底部。树木或灌木丛始终存在于道路的至少一侧。

image-20220427101634370

图 8:实验$3$ LeGO-LOAM 建图结果。

我们首先在这种环境下测试 LOAM 的准确性。生成的地图在所使用的两台计算机上的不同位置存在分歧。相对于 UGV 初始位置的最终平移和旋转误差在 Jetson 上为 69.40m 和 27.38°,在笔记本电脑上为 62.11m 和 8.50°。图 9(a) 和 (b) 显示了对两种硬件安排进行 10 次试验的结果轨迹。

当 LeGO-LOAM 应用于该数据集时,Jetson 上的最终相对平移和旋转误差为 13.93m 和 7.73°,笔记本电脑上为 14.87m 和 7.96°。 Jetson 上 LeGO-LOAM 的最终点云图如图 8 所示,叠加在卫星图像上。在图 8 的中心放大的局部地图显示,来自 LeGO-LOAM 的点云图与开放中可见的三棵树匹配得很好。在两台计算机上从 LeGO-LOAM 获得的所有路径之间显示出高度一致性。图 9(c) 和 (d) 显示了在每台计算机上运行的十次试验。

image-20220427103924914

图 9:LOAM 和 LeGO-LOAM 在 10 次试验和 2 台计算机上生成的路径,以及实验 3 数据集。

C. 基准测试结果

1)特征数量比较:我们在表II中展示了两种方法的特征提取比较。每次扫描的特征内容平均超过每个数据集的 10 次试验。点云分割后,对于集合$ F_e、F_p、\mathbb{F}_e $和$\mathbb{F}_p$,需要 LeGO-LOAM 处理的特征数量分别减少了至少$ 29\%、40\%、68\%$ 和 $72\%$。

image-20220427105750858

2)迭代次数比较:应用提出的两步L-M优化方法的结果如表III所示。我们首先使用 LeGO-LOAM 应用原始 L-M 优化,这意味着我们最小化从边缘和平面特征一起获得的距离函数。然后我们对 LeGO-LOAM 应用两步 L-M 优化:①$F_p$中的平面特征用于获得$[t_z, θ_{roll}, θ_{pitch}]$,②利用$F_e$中的边缘特征得到$[t_x, t_y, θ_{yaw}]$。记录 L-M 方法在处理一次扫描后终止时的平均迭代次数以进行比较。当使用两步优化时,第一步优化在实验 1 和 2 的两次迭代中完成。虽然第二步优化的迭代次数与原始L-M方法的数量相似,但处理的特征较少。因此,在使用两步 L-M 优化后,激光雷达里程计的运行时间减少了 $34\%$ 至 $48\%$。两步优化的运行时间如表 IV 所示。

image-20220427105906074

3)运行时间比较:LOAM 和$\rm{LeGO-LOAM}$ 的每个模块在两台计算机上的运行时间如表 IV 所示。使用所提出的框架,特征提取激光雷达里程计模块的运行时间在 LeGO-LOAM 中减少了一个数量级。请注意,在 Jetson 上,这两个模块在 LOAM 中的运行时间超过 100 毫秒。导致许多扫描被跳过,因为 LOAM 在嵌入式系统上无法实现实时性能。使用 LeGO-LOAM 时,激光雷达建图的运行时间也减少了至少 $60\%$。

image-20220427110536203

4)位姿误差比较:通过在所有实验中将初始位姿设置为$[0, 0, 0, 0, 0, 0]$,我们通过将最终位姿与初始位姿进行比较来计算相对位姿估计误差。表 V 列出了两台计算机上两种方法的旋转误差(以度为单位)和平移误差(以米为单位)。通过使用所提出的框架,LeGO-LOAM 可以以更少的计算时间实现相当或更好的位置估计精度。

image-20220427111646072

D. 使用 KITTI 数据集的闭环测试

我们的最终实验将 LeGO-LOAM 应用于 KITTI 数据集 [21]。由于在 [20] 中对 KITTI 数据集的 LOAM 测试以 10% 的实时速度运行,我们只探索 LeGO-LOAM 及其在嵌入式系统实时应用中的潜力,其中行程长度足够大需要完整的 SLAM 解决方案。LeGO-LOAM 在 Jetson 上使用序列 00 的结果如图 10 所示。为了在 Jetson 上实现实时性能,我们将 HDL-64E 的扫描下采样到与第 III 节中使用的相同范围图像VLP-16。换言之,每次扫描的 75% 的点在处理前都被省略掉了。 ICP在这里用于在位姿图中的节点之间添加约束。然后使用 iSAM2 [24] 优化该图。最后,我们使用优化后的图来校正传感器位姿和地图。更多闭环测试可以在视频附件中找到。

image-20220427111714790

图 10:LeGO-LOAM,KITTI 数据集闭环测试,使用 Jetson。颜色变化表示海拔变化。

Ⅴ.结论与讨论

我们提出了 LeGO-LOAM,一种轻量级和地面优化的激光雷达里程计和建图方法,用于在复杂环境中执行 UGV 的实时姿态估计。 LeGO-LOAM 是轻量级的,因为它可以在嵌入式系统上使用并实现实时性能。LeGO-LOAM 也是地面优化的,利用地面分离、点云分割和改进的 L-M 优化。在此过程中过滤掉可能代表不可靠特征的无价值点。两步 L-M 优化分别计算姿势变换的不同分量。所提出的方法在室外环境中收集的一系列 UGV 数据集上进行了评估。结果表明,与最先进的算法 LOAM 相比,LeGO-LOAM 可以达到相似或更好的精度。LeGO-LOAM 的计算时间也大大减少。未来的工作包括探索其在其他类型车辆中的应用。尽管 LeGO-LOAM 特别针对地面车辆的姿态估计进行了优化,但它的应用可能会扩展到其他车辆,例如无人机 (unmanned aerial vehicles,UAVs),只需稍作改动。将 LeGO-LOAM 应用于 UAV 时,我们不会假设地面存在于扫描中。扫描的点云将在没有地面提取的情况下被分割。对于$ F_e、\mathbb{F}_e$ 和 $\mathbb{F}_p $的选择,特征提取过程是相同的。不是从标记为地面点的点中提取 $F_p$ 的平面特征,而是从所有分割点中选择 $F_p$ 中的特征,然后将使用原始的 L-M 方法来获得两次扫描之间的转换,而不是使用两步优化方法。尽管在这些变化之后计算时间会增加,但 LeGO-LOAM 仍然是有效的,因为在分割后在嘈杂的室外环境中会省略大量的点。估计的特征对应的准确性可能会提高,因为它们受益于分割。此外,使用 LeGO-LOAM 在线执行循环闭合的能力使其成为长时间导航任务的有用工具。

🧐 本文作者:
😉 本文链接:https://lukeyalvin.site/archives/40.html
😊 版权说明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
最后修改:2022 年 06 月 10 日
赏杯咖啡