LeGO-LOAM: Lightweight and Ground-OptimizedLidar Odometry and Mapping on Variable Terrain

摘要

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

引言

在智能机器人的能力中,地图构建和状态估计是最基本的先决条件之一。用基于视觉和基于激光雷达的方法实现实时6自由度同时定位和建图(SLAM)已经付出了巨大的努力。虽然基于视觉的方法在闭环检测中有优势,但如果用作唯一的导航传感器,它们对光照和视角变化的敏感性可能会使这种能力变得不可靠。另一方面,基于激光雷达的方法即使在夜间也能发挥作用,许多三维激光雷达的高分辨率允许在远距离捕捉环境的细微细节。因此,本文重点研究利用三维激光雷达支持实时状态估计和建图。

寻找两次激光雷达扫描之间变换的典型方法是迭代最近点法(ICP) [1]。通过逐点寻找对应关系,ICP迭代对齐两组点,直到满足停止标准。当扫描包含大量点时,ICP压可能会需要过高的计算成本。为了提高效率和准确性,人们提出了多种ICP的变体[2]。[3]引入了点-平ICP的变体,它将点与局部平面相匹配。Generalized-ICP[4]提出了一种从两次扫描中匹配局部平面的方法。此外,几个ICP变体利用并行计算来提高效率[5]–[8]。

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

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

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

在这项工作中,我们以一种易于在小规模嵌入式系统上有效实现的方式,为装备有3D激光雷达的地面车辆提供可靠、实时的六自由度位姿估计。由于几个原因,这样的任务并不是微不足道的。由于尺寸有限,许多无人地面车辆没有悬架或强大的计算单元。在多变地形上行驶的小型无人驾驶车辆经常会遇到非平滑运动,因此,采集的数据往往会存在畸变。在覆盖范围重叠有限的大运动情况下,在两次连续扫描之间也很难找到可靠的特征对应。除此之外,从三维激光雷达接收的大量点对使用有限的机载计算资源进行实时处理提出了挑战。

当我们为这样的任务实现LOAM时,当UGV进行可以获得稳定特征的平滑运动并且有足够的计算资源支持时,我们可以获得低漂移的运动估计。然而,当计算资源有限时,LOAM的性能会下降。由于需要计算密集三维点云中每个点的粗糙度,轻量级嵌入式系统中特征提取的更新频率不能总是跟上传感器的更新频率。UGV在存在噪声环境中的运行也给LOAM带来了挑战。由于在小型UGV上激光雷达的安装位置通常靠近地面,来自地面的传感器噪声可能是一个持续的噪声。例如,从草地返回的距离测量可能导致高粗糙度值。因此,可能会从这些点提取不可靠的边缘特征。类似地,也可以从树叶返回的点中提取边缘或平面特征。这样的特征对于扫描匹配通常是不可靠的,因为在两次连续扫描中可能不会出现相同的草地或者树叶。使用这些特征可能导致不准确的配准和大的漂移。

因此,我们提出了一种轻量级和地面优化的LOAM(LeGO-LOAM),用于在复杂多变的地形环境下对UGV进行位姿估计。LeGO-LOAM是轻量级的,因为实时位姿估计和建图可以在嵌入式系统上实现。执行点云分割是为了在地面分离后丢弃可能代表不可靠特征的点。LeGO-LOAM也是地面优化的,因为我们引入了一个两步优化的位姿估计。从地面提取的平面特征用于在第一步中获得[tz,θroll,θpitch][t_z,\theta_{roll},\theta_{pitch}][tz​,θroll​,θpitch​]。在第二步中,剩余的变换[tx,ty,θyaw][t_x,t_y,\theta_{yaw}][tx​,ty​,θyaw​]通过匹配从分割点云提取的边缘特征来获得。我们还集成了执行闭环检测的能力,以校正运动估计漂移。

系统硬件

本文提出的框架使用从Velodyne VLP-16和HDL-64E3D激光雷达收集的数据集进行了验证。VLP-16的测量范围可达100米,精度为±\pm±厘米。它的垂直视野(FOV)为30°(±15°)30^{\degree}(\pm 15^{\degree})30°(±15°),水平FOV为360°360^{\degree}360°。16通道传感器提供的垂直角度分辨率为2°2^{\degree}2°。根据旋转速率,水平角分辨率从0.1°0.1^{\degree}0.1°到0.4°0.4^{\degree}0.4°不等。在整篇论文中,我们选择了10Hz的扫描速率,这提供了0.2°0.2^{\degree}0.2°的水平角分辨率。HDL-64E的水平FOV也为360°360^{\degree}360°,但多了48个通道。HDL-64E的垂直FOV是26.9°26.9^{\degree}26.9°。

本文中使用的UGV是Clearpath Jackal。它由270瓦时的锂电池供电,最大速度为2.0米/秒,最大有效载荷为20kg20kg20kg。 Jackal还配备了一个低成本的惯性测量单元(IMU),CH Robotics UM6 方位传感器。所提出的框架在两台计算机上进行了验证:一台是英伟达Nvidia Jetson TX2,另一台是搭载2.5GHz i7-4710MQ CPU的笔记本电脑。Jetson TX2是一款嵌入式计算设备,配备了ARM Cortex-A57 CPU。选择合适的CPU来匹配[19]和[20]中使用的计算硬件。本文给出的实验只使用了这些系统的CPUs。

轻量级的雷达里程计与建图

系统概述

下图显示了系统框架的概述。

该系统接收来自三维激光雷达的输入,并输出6自由度位姿估计。整个系统分为五个模块。第一个是分割模块,它将单个扫描的点云投影到距离图像上进行分割。分割后的点云然后被发送到特征提取模块。然后,激光雷达里程计模块使用从先前的模块中提取到的特征来找到连续两帧扫描之间的相对位姿变换。这些特征在雷达建图模块中进一步处理,雷达建图模块将它们注册到全局点云地图中。最后,变换集成模块融合来自雷达里程计和雷达建图的位姿估计结果并输出最终的位姿估计。相对于[19]和[20]的原始、通用的LOAM框架,本文所提出的系统致力于提高地面车辆的效率和精度。这些模块的细节介绍如下。

分割

令Pt={p1,p2,...,pn}P_t = \{p_1,p_2,...,p_n\}Pt​={p1​,p2​,...,pn​}是在ttt时刻获取的点云,其中pip_ipi​是PtP_tPt​中的一个点。PtP_tPt​首先投影到一幅距离图像上。投影距离图像的分辨率是1800×16,因为VLP-16的水平和垂直角分辨率分别为0.2°0.2^{\degree}0.2°和2°2^{\degree}2°。每个PtP_tPt​中的有效点pip_ipi​现在由距离图像中唯一的像素来表示。距离值rir_iri​表示从相应点pip_ipi​到传感器的欧几里得距离。由于斜坡地形在任何环境下都很常见,我们不假设地面是平坦的。在分割之前,对距离图像进行式评估,可视为地平面估计[22],用于地面点提取。在这个过程之后,可能代表地面的点被标记为地面点,而不用于分割。

然后,将基于图像的分割方法[23]应用于距离图像,以将点分组为许多簇。来自同一簇的点被分配一个唯一的标签。请注意,接地点是一种特殊类型的簇。对点云进行分割可以提高处理效率和特征提取精度。假设机器人在嘈杂的环境中工作,小物体,例如树叶,可能会形成琐碎和不可靠的特征,因为在两次连续扫描中不可能看到相同的树叶。为了使用分割的点云执行快速可靠的特征提取,我们忽略了少于30个点的簇。分割前后点云的可视化如下图所示。

原始点云包括许多点,这些点是从可能产生不可靠特征的周围植被中获得的。

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

特征提取

特征提取过程类似于[20]中使用的方法。然而,我们不是从原始点云提取特征,而是从地面点和分割点提取特征。让我们从距离图像的同一行中选择一组连续的点SSS。各有一半的点在pip_ipi​的两侧。在本文中,我们将∣S∣|S|∣S∣设置为10。使用在分割期间计算的距离值,我们可以评估SSS中点pip_ipi​的粗糙度,
c=1∣S∣⋅∣∣ri∣∣∣∣∑j∈S,j≠i(rj−ri)∣∣(1)c = \frac{1}{|S| \cdot ||r_i||}||\sum_{j \in S, j \neq i (r_j - r_i) }|| \tag{1} c=∣S∣⋅∣∣ri​∣∣1​∣∣j∈S,j​=i(rj​−ri​)∑​∣∣(1)

为了从各个方向均匀地提取特征,我们将距离图像水平分成几个相等的子图像。然后,我们根据粗糙度值ccc对子图像每行中的点进行排序。类似于LOAM,我们使用距离阈值cthc_thct​h来区分不同类型的特征。我们称ccc大于cthc_{th}cth​的点为边缘特征,ccc小于cthc_{th}cth​的点为平面特征。从子图像的每一行中选择不属于地面的具有最大ccc值的边缘特征点nFen_{\mathbb{F}_e}nFe​​。以相同的方式选择具有最小ccc值的其他特征点nFpn_{\mathbb{F}_p}nFp​​,这些特征点可以被标记为地面点或分割点。让Fe\mathbb{F}_eFe​和Fp\mathbb{F}_pFp​为从所有子图像中获取的所有边缘和平面特征的集合。这些特征如图2(d)所示。然后,我们从子图像的每一行中提取不属于地面的具有最大ccc值的nFen_{F_e}nFe​​个边缘特征。类似地,我们用最小ccc值从子图像的每一行中提取nFpn_{F_p}nFp​​个平面特征,这些点必须是接地点。让我们用FeF_eFe​和FpF_pFp​来表示这个过程中获得的所有边缘和平面特征的集合。在这里,我们有Fe∈Fe,Fp∈FpF_e \in \mathbb{F}_e, F_p \in \mathbb{F}_pFe​∈Fe​,Fp​∈Fp​.图2©显示了输入和输出的特征。本文将360°360^{\degree}360°范围图像分成6个子图像。每个子图像的分辨率为300×16。nFen_{F_e}nFe​​、nFpn_{F_p}nFp​​、nFen_{\mathbb{F}_{e}}nFe​​和nFpn_{\mathbb{F}_p}nFp​​分别选择为2、4、40和80。

雷达里程计

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

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

1)标签匹配

由于分割后在FetF_e^tFet​和FptF_p^tFpt​中的每个特征都用其标签进行编码,因此我们只能从Fet−1\mathbb{F}_e^{t-1}Fet−1​和Fpt−1\mathbb{F}_p^{t-1}Fpt−1​中找到具有相同标签的对应关系。对于FptF_p^tFpt​中的平面特征,只有在Fpt−1\mathbb{F}_p^{t-1}Fpt−1​中标记为接地点的点被用于寻找对应的平面匹配。对于FetF_e^tFet​中的边缘特征,其对应的边缘线可在Fet−1\mathbb{F}_e^{t-1}Fet−1​中找到。用这种方法找到对应关系有助于提高匹配精度。换句话说,在两次扫描之间更有可能找到同一物体的匹配或对应关系。这个过程也缩小了潜在的匹配选人的范围。

2)两步L-M优化

在[20]中,当前扫描的边缘和平面特征点与它们在前一次扫描中对应关系距离的一系列非线性表达式被组合成单个综合距离向量。应用L-M方法来寻找两次连续扫描之间的最小距离变换。

这里我们介绍一种两步L-M优化方法。最优变换TTT的寻找分两步进行:(1)通过匹配在FptF_p^tFpt​中的平面特征和它们在Fpt−1\mathbb{F}_p^{t-1}Fpt−1​中的对应关系来估计[tz,θroll,θpitch][t_z,\theta_{roll},\theta_{pitch}][tz​,θroll​,θpitch​],(2)然后使用在FetF_e^tFet​中的边缘特征和它们在Fet−1\mathbb{F}_e^{t-1}Fet−1​中的对应关系来估计剩余的[tx,ty,θyaw][t_x,t_y,\theta_{yaw}][tx​,ty​,θyaw​],同时使用[tz,θroll,θpitch][t_z,\theta_{roll},\theta_{pitch}][tz​,θroll​,θpitch​]作为约束。应该注意的是,虽然[tx,ty,θyaw][t_x,t_y,\theta_{yaw}][tx​,ty​,θyaw​]也可以从第一个优化步骤中获得,但它们不太精确,不能用于第二个步骤。最后,通过融合[tz,θroll,θpitch][t_z,\theta_{roll},\theta_{pitch}][tz​,θroll​,θpitch​]和[tx,ty,θyaw][t_x,t_y,\theta_{yaw}][tx​,ty​,θyaw​]找到两次连续扫描之间的6D变换。通过使用所提出的两步优化方法,我们观察到,在计算时间减少约35%的情况下,可以实现类似的精度(表三)。

雷达建图

雷达建图模块将{Fet,Fpt}\{\mathbb{F}_e^t,\mathbb{F}_p^t\}{Fet​,Fpt​}中的要素与周围的点云地图Qˉt−1\bar{Q}^{t-1}Qˉ​t−1进行匹配,以进一步细化位姿变换,但运行频率较低。然后在这里再次使用L-M方法来获得最终的变换。关于详细的匹配和优化程序,请读者参考[20]中的描述。

LeGO-LOAM的主要区别在于最终点云地图的存储方式。我们不保存单个点云地图,而是保存每个单独的要素集合{Fet,Fpt}\{\mathbb{F}_e^t,\mathbb{F}_p^t\}{Fet​,Fpt​}。令KaTeX parse error: Expected 'EOF', got '}' at position 105: …F}_p^{t-1} \} ,}̲是保存所有之前特征集合的集合。Mt−1M^{t-1}Mt−1中的每个特征集合也与进行扫描时传感器的位姿相关联。那么可以通过两种方式从Mt−1M^{t-1}Mt−1获得Qˉt−1\bar{Q}^{t-1}Qˉ​t−1。

在第一种方法中,Qˉt−1\bar{Q}^{t-1}Qˉ​t−1是通过选择传感器视野内的特征集获得的。简单来说,我们可以选择特征集对应的传感器位置在当前传感器位置100米以内的特征集。然后,将所选特征集转换并融合成单个局部地图Qˉt−1\bar{Q}^{t-1}Qˉ​t−1。这种地图选择技术类似于[20]中使用的方法。

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

实验结果

小尺度场景UGV测试

我们在覆盖着植被的户外环境中手动驾驶机器人。我们首先展示了在这种环境下特征提取的质量比较。使用两种方法从同一扫描提取的边缘和平面特征如下图所示。

这些特征对应于发送到激光雷达建图模块的{Fet,Fpt}\{ \mathbb{F}_e^t, \mathbb{F}_p^t \}{Fet​,Fpt​}。如图4(d)所示,在点云分割之后,来自LeGO-LOAM的特征数量大大减少。从树叶中返回的大多数点都被丢弃,因为它们在多次扫描中不是稳定的特征。另一方面,由于从草中提取的点也非常嘈杂,因此在评估后会得出较大的粗糙度值。因此,使用原始LOAM的情况下边缘特征不可避免地会从这些点进行提取。如图4©所示,从地面提取的边缘特征通常不可靠。

虽然我们可以通过改变粗糙度阈值cthc_{th}cth​来提取地面中的边缘和平面特征,以减少特征的数量,并从草和叶子中过滤掉不稳定的特征,但在应用这些改变后,我们会遇到更差的结果。例如,我们可以增加cthc_{th}cth​以从环境中提取更稳定的边缘特征,但是如果机器人进入相对干净的环境,这种变化可能会导致有用的边缘特征数量不足。类似地,当机器人从干净的环境移动到嘈杂的环境时,减小的cthc_{th}cth​也会导致缺乏有用的平面特征。在这里的所有实验中,我们对LOAM和LeGO-LOAM都使用相同的阈值cthc_{th}cth​。

现在我们在测试环境中比较这两种方法建图的结果。为了模拟一个具有挑战性的潜在的UGV场景,我们进行了一系列攻击性的俯冲机动。请注意,在本文的所有实验中,这两种方法都有相同的初始平移和旋转猜测,这是从惯性测量单元获得的。运行60秒后的最终点云地图如图(5)所示

由于不稳定要素导致的错误要素关联,LOAM的地图在操作过程中会出现扭曲。图5(a)中用白色箭头突出显示的三根树干实际上代表同一棵树。在视频附件中可以找到两种里程计方法的完整建图过程的说明。

大尺度场景UGV测试

接下来,我们在三个大规模数据集上对LOAM和LeGO-LOAM进行定量比较,这将被称为实验1、2和3。前两个是在史蒂文斯理工学院的校园里收集的,那里有许多建筑、树木、道路和人行道。这些实验及其环境如图6(a)所示。

实验3跨越了一条森林覆盖的徒步旅行路线,其特点是有柏油路、柏油路和被草和土壤覆盖的小道。进行实验3的环境如图8所示。

表一列出了每个实验的细节。为了进行公平的比较,每个实验显示的所有性能和准确性结果都在每个数据集的实时回放的10次试验中进行了平均。

实验1:

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

实验2:

尽管实验2是在与实验1相同的环境中进行的,但其轨迹略有不同,即在人行道上行驶,如图7(a)所示。

这条人行道代表了一个LOAM可能经常失效的环境。一面墙和几根柱子在人行道的一端——从这些结构中提取的边缘和平面特征是稳定的。人行道的另一端是一个开放的区域,覆盖着嘈杂的物体,即草和树,这将导致不可靠的特征提取。结果,LOAM的位姿估计由于草地的覆盖出现了偏差。这种表面的代表性图像如下图所示。道路的至少一侧随时都有树木或灌木。

我们首先在这种环境下测试LOAM的准确性。所得到的地图在所用的两台计算机上的不同位置上各不相同。关于UGV初始位置的最终平移和旋转误差在Jetson上为69.40米和27.38°27.38^{\degree}27.38°,在笔记本电脑上为62.11米和8.50°8.50^{\degree}8.50°。图9(a)和(b)显示了在两种硬件配置上进行的10次试验的结果轨迹。

当LeGO-LOAM应用于此数据集时,Jetson的最终相对平移和旋转误差分别为13.93米和7.73°7.73^{\degree}7.73°,笔记本电脑的最终相对平移和旋转误差分别为14.87米和7.96°7.96^{\degree}7.96°。图8所示的Jetsonis上LeGO-LOAM的最终点云图覆盖在卫星图像上。

在图8的中心放大的局部地图显示,LeGO-LOAM的点云地图与三棵树在开阔的地方非常匹配。图9©和(d)显示了在每台计算机上运行的十次试验。

基准测试结果

1)特征数量比较

我们在表二中显示了两种方法的特征提取的比较。

每次扫描的特征内容在每个数据集的10次试验中平均。点云分割后,LeGo-LOAM需要处理的FeF_eFe​,FpF_pFp​,Fe\mathbb{F}_eFe​和Fp\mathbb{F}_pFp​特征数量分别减少了至少29%、40%、68%和72%。

2)迭代次数比较

表三显示了本文中提出的两步L-M优化方法的结果。

我们首先将原始的L-M优化应用到LeGO-LOAM中,这意味着我们将从边缘和平面特征获得的距离函数共同最小化。然后,我们对LeGO-LOAM应用两步L-M优化:1)在FpF_pFp​中的平面特征用于获得[tz,θroll,θpitch][t_z,\theta_{roll},\theta_{pitch}][tz​,θroll​,θpitch​]和2)FeF_eFe​中的边缘特征用于获得[tx,ty,θyaw][t_x,t_y,\theta_{yaw}][tx​,ty​,θyaw​]。记录处理一次扫描后L-M方法迭代终止时的平均迭代次数,以进行比较。当使用两步L-M优化时,在实验1和2中,第1步优化在2次迭代中完成。虽然第二步优化的迭代次数与最初的L-M方法的数量相似,但处理的特征较少。因此,在使用两步L-M优化后,激光雷达里程计的运行时间减少了34%到48%。表四显示了两步优化的运行时间。

3)运行时间比较

两台计算机上的LOAM和LeGO-LOAM的每个模块的运行时间如表四所示。使用本文所提出的框架,在LeGo-LOAM中特征提取和雷达里程计的运行时间减少了一个数量级。请注意,LOAM中这两个模块中的任何一个模块在Jetson上的运行时间都超过了100ms。因此,许多扫描被跳过,因为实时性能不是由嵌入式系统上的LOAM实现的。当使用LeGO-LOAM时,雷达建图的运行时间也至少减少了60%。

4)位姿误差比较

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

使用KITTI数据集的闭环检测测试

我们最后的实验将LeGO-LOAM应用于KITTIdataset [21]。由于LOAM在KITTI数据集上的测试以10%的实时速度运行,我们只探索了LeGO-LOAM及其在嵌入式系统实时应用中的潜力,在嵌入式系统中,行程长度足够长,需要一个完整的SLAM解决方案。图10显示了使用sequence00在Jetson上进行LeGO-LOAM测试的结果。

为了在Jetson上实现实时性能,我们对HDL-64的扫描进行了下采样,使其与第三节中用于VLP-16的距离图像相同。换句话说,每个扫描的75%的点在处理之前被省略。ICP在这里用于在姿态图中的节点之间添加约束。然后使用iSAM2[24]优化图。最后,我们使用优化后的图来校正传感器的位姿和地图。更多的闭环测试可以在视频附件中找到。

结论和讨论

我们提出了LeGO-LOAM,这是一种轻量级和地面优化的激光雷达里程计和建图方法,用于在复杂环境中对无人机进行实时姿态估计。LeGO-LOAM是轻量级的,因为它可以在嵌入式系统上使用并实现实时性能。LeGO-LOAM也是地面优化的,利用地面分离、点云分割和改进的L-M优化。在此过程中,可能代表不可靠特征的无效点将被过滤掉。两步优化分别计算位姿变换的不同分量。该方法在室外环境采集的一系列UGV数据集上进行了评估。结果表明,与现有的最先进的LOAM算法相比,LeGO-LOAM能够达到相近甚至更高的精度。LeGO-LOAM的计算时间也大大减少。未来的工作包括探索它在其他类型车辆上的应用。

虽然LeGo-LOAM特别针对地面车辆上的位姿估计进行了优化,但其应用可能会扩展到其他机器人,例如无人机,只需稍加改动。当将LeGO-LOAM应用于无人机时,我们不会假设地面出现在扫描中。扫描的点云将被分割而不需要地面提取。特征提取过程与选择特征FeF_eFe​,Fe\mathbb{F}_eFe​和Fp\mathbb{F}_pFp​过程相同。这里不是从标记为地面点的点提取平面特征,而是从所有分割点中选择平面特征FpF_pFp​。然后用原始的L-M方法来获得两个扫描之间的变换,而不是使用两步L-M优化方法。尽管在进行这些改变之后计算时间会增加,LeGO-LOAM仍然是有效的,因为分割后嘈杂的室外环境中大量的点被丢弃。估计的特征对应的准确性可以提高,因为它们受益于分割。此外,LeGO-LOAM可以在线执行闭矫正的能力使其成为长时间导航任务的有用工具。

雷达系列论文翻译(四):LeGO-LOAM相关推荐

  1. 雷达系列论文翻译(六):LIO-SAM

    LIO-SAM: Tightly-coupled Lidar Inertial Odometry viaSmoothing and Mapping 摘要 我们提出了一种通过平滑和建图实现紧耦合的激光雷 ...

  2. 雷达系列论文翻译(十二):Cartographer系列(三)

    Real-Time Loop Closure in 2D LIDAR SLAM 摘要 便携式激光测距仪,又称激光雷达,同时定位和建图(SLAM)是一种有效的获取竣工平面图的方法.实时生成和可视化楼层平 ...

  3. 雷达系列论文翻译(七):Lio-mapping

    Tightly Coupled 3D Lidar Inertial Odometry and Mapping 摘要 自我运动估计是大多数移动机器人应用的基本要求.通过传感器融合,我们可以弥补独立传感器 ...

  4. 雷达系列论文翻译(十一):LVI-SAM: Tightly-coupled Lidar-Visual-Inertial Odometryvia Smoothing and Mapping

    LVI-SAM: Tightly-coupled Lidar-Visual-Inertial Odometryvia Smoothing and Mapping 摘要 我们提出了一个通过平滑和映射实现 ...

  5. 雷达系列论文翻译(十):Scan registration using segmented region growing NDT

    Scan registration using segmented region growing NDT 这篇论文可以视为对上一篇论文的详述版本,作者为同一人,这篇中对于每一部分的算法给出了详细的公式 ...

  6. 雷达系列论文翻译(一):Least-Squares Fitting of Two 3-D Point Sets

    Least-Squares Fitting of Two 3-D Point Sets 这是一篇非常老的论文,最关键的点其实是作者关于闭式解退化情况的描述 摘要 两个点集{pi}\{p_i\}{pi​ ...

  7. VQA系列论文(四)

    标题:可解释的视觉问题回答的概率神经符号模型 来源:ICML 2019https://proceedings.mlr.press/v97/vedantam19a.html 代码:https://git ...

  8. 三维向量变化为角度_物体的三维识别与6D位姿估计:PPF系列论文介绍(四)

    作者:仲夏夜之星 Date:2020-04-14 来源:物体的三维识别与6D位姿估计:PPF系列论文介绍(四) 文章"3D Pose Estimation of Daily ObjectsU ...

  9. 分布式系统领域经典论文翻译集

    分布式领域论文译序 sql&nosql年代记 SMAQ:海量数据的存储计算和查询 一.google论文系列 1.      google系列论文译序 2.      The anatomy o ...

最新文章

  1. 3DSlicer20:GUI Structure
  2. 【强化学习】A3C原理
  3. 字符串替换:用参数字符数组成员替换字符串中的占位符(面试题)
  4. 外卖小哥是怎样炼成的?
  5. java框架mybatis配置文件总结一
  6. c查看变量类型_C语言的变量、常量及运算
  7. 计算机位图字节怎么算,位图跨度和4个字节的关系?(Bitmap Stride And 4 bytes Relation?)...
  8. 二级VB培训笔记10:知识点串讲
  9. IS-IS详解(十)——IS-IS 骨干区域与非骨干区域访问进阶
  10. java 输入流详解_java输入输出流详解
  11. Java复习 思维导图
  12. 思维导图软件哪个好?盘点10款好用的思维导图软件
  13. mumu模拟器android调试,使用MuMu模拟器调试AndroidStudio项目
  14. python判断输入回车_python判断回车
  15. python实现网页微信登录_django 微信网页授权登陆的实现
  16. 写给30岁的自己,以及所有即将、正在、已经奔三的朋友们
  17. CF538H Summer Dichotomy
  18. MS-DOS系统的操作命令
  19. pandas || df.dropna() 缺失值删除
  20. 七彩虹平板刷成android,大功告成 七彩虹G808首个MIUI ROM移植

热门文章

  1. C# Buffer.BlockCopy方法详解
  2. 省市区三级行政区代码(包含港澳台)sql1
  3. 诺基亚的最后机会:没落贵族能否抗衡苹果安卓
  4. 【爬虫】一文了解如何处理爬虫中的乱码问题
  5. 单接口测试(场景测试)
  6. oracle 11g 数据泵导出 19c导入
  7. c# 的取负数_关于C#:如何对负数*向下*进行整数除法?
  8. Python hashlib库和hamc库
  9. iframe 嵌入页面后无法显示的问题
  10. 今天去了海淀基督教堂