雷达系列论文翻译(五):Scan Context

Scan Context: Egocentric Spatial Descriptorfor Place Recognition within 3D Point Cloud Map

摘要

与用于视觉场景的各种特征检测器和描述器相比,使用结构信息描述一个场景的报道相对较少。同步定位和建图(SLAM)的最新进展提供了环境的稠密3D地图,并且定位是由不同的传感器提出的。对于基于结构信息的全局定位,我们提出了一种来自三维光探测和激光雷达扫描的基于非直方图的全局描述子——Scan Context。与以前报道的方法不同,提出的方法直接从传感器记录可视空间的三维结构,而不依赖于直方或先验的训练。此外,该方法提出使用相似性分数来计算两个Scan Context之间的距离,并且还提出了两阶段搜索算法来有效地检测闭环。Scan Context及其搜索算法使闭环检测对LiDAR视角变化具有不变性,从而可以在重新访问同一个地点和拐角等地方检测到闭环。Scan Context性能已经通过3D LiDAR扫描的各种基准数据集进行了评估,并且所提出的方法显示出足够改进的性能。

引言

在许多机器人应用中,位置识别是一个重要的问题。特别是对于SLAM,这种识别为闭环检测提供了候选项,这对于修正漂移误差和建立全局一致的地图是必不可少的[1]。虽然闭环对于机器人导航至关重要,但错误的配准可能是灾难性的,需要进行仔细的配准。视觉识别随着相机的广泛使用而流行,然而,由于光照变化和短期(例如,移动物体)或长期(例如,季节)变化,视觉识别有其固有的技术困难。相似的环境可能出现在不同的位置,这往往会造成感知混淆。因此,最近的文献集中在通过检查表示[2]和弹性后端[3]的鲁棒位置识别。

与这些视觉传感器不同,激光雷达由于对感知变化具有很强的不变性,最近引起了人们的注意。在早期,传统的局部关键点描述子[4,5,6,7]最初是为计算机视觉中的3D模型设计的,尽管它们容易受到噪声的影响,但已经被用于位置识别。基于激光雷达的位置识别方法已在机器人文献中广泛提出[8,9,10]。这些工作集中于从结构信息(例如点云)中以局部方式[8]和全局方式[10]开发描述子。

现有的基于激光雷达的位置识别方法一直在努力克服两个问题。首先,无论视角如何变化,描述子都需要实现旋转不变性。其次,噪声处理是这些空间描述子的另一个主要问题,因为点云的分辨率随距离变化,通常是有噪声的。现有的方法主要使用直方图[9,11,12]来解决上述两个问题。然而,由于直方图方法只提供场景的随机索引,描述场景的详细结构并不直接。这种限制使得描述子对于位置识别问题难以识别,从而导致潜在的误匹配。

在本文中,我们提出了一种新的空间描述子——Scan Context,它带有一种匹配算法,专门针对使用单次三维扫描的户外位置识别。我们的表示将三维扫描中的整个点云编码成矩阵(图1)。
在这里插入图片描述

所提出的表示描述了以自我为中心的2.5D信息。我们提出的方法的贡献点为:

  • 高效的bin编码功能。与现有的点云描述子[7,10]不同,所提出的方法不需要计算bin中的点数,而是提出了一种更有效的bin编码函数用于位置识别。这种编码呈现出对点云的密度和法线的不变性。
  • 保留了点云的内部结构。如上图所示,矩阵的每个元素值仅由属于该bin的点云确定。因此,与将点的相对几何形状描述为直方图并丢失点的绝对位置信息的[9]不同,我们的方法通过有意避免使用直方图来保留点云的绝对内部结构。这提高了辨别能力,并且还能够在计算距离时将被查询扫描的视角对准候选扫描(在我们的实验中, 6 ° 6^{\degree} 6°方位角分辨率)。因此,通过使用Scan Context来检测反向闭环也是可能的。
  • 有效的两相匹配算法。为了获得一个可行的搜索时间,我们为第一次最近邻搜索提供了一个具有旋转不变性的子描述子,并将其与成对相似性评分进行分层合并,从而避免搜索所有数据库进行闭环检测。
  • 对照其他最先进的描述子进行全面验证。与其他现有的全局点云描述子(如M2DP [8]、ESF) [11]和Z投影[12])相比,所提出的方法表现出了实质性的提升。

相关工作

移动机器人的位置识别方法可以分为基于视觉的方法和基于激光雷达的方法。在SLAM文献[13,14,15]中,视觉方法已经被普遍用于位置识别。FAB-MAP [13]通过学习视觉词袋的生成模型,增加了概率方法的鲁棒性。然而,视觉表示有一些局限性,例如易受光照条件变化的影响[16]。已经提出了几种方法来克服这些问题。 SeqSLAM [17] 提出了基于道路的方法,并且表现出比 FAB-MAP 大大提高的性能。 SRAL [2] 融合了几种不同的表示,例如颜色、GIST [18] 和 HOG [19],用于长期视觉位置识别。

激光雷达对上述感知变化具有很强的鲁棒性。基于激光雷达的方法被进一步分类为局部和全局描述符。局部描述子,如PFH [4]、SHOT [5]、shape context[7]或spin image [6],首先找到一个关键点,将附近的点分成多个bin,并将周围bin的模式编码为直方图。Steder等人提出了以词袋的方式利用点特征和完形描述子[20]的位置识别方法[8]。

然而,这些关键点描述子有着局限性,因为它们最初是为三维模型零件匹配而设计的,而不是为了位置识别。例如,与3D模型不同,3D扫描(例如,来自VLP-16)中点云的密度随着离传感器的距离而变化。此外,由于现实世界中的非结构化对象(例如树),点云的法线比三位模型的噪声更强。因此,局部方法通常需要关键点的法线,因此不太适合在室外进行位置识别。

全局描述子不包括关键点检测阶段。GLARE[9]及其变体[21,22]将点之间的几何关系编码到直方图中,而不是搜索关键点和提取描述子。ESF [11]使用了由形状函数构成的直方图串联。Muhammad和Lacroix提出了Z投影[12],这是一个法向量的直方图,以及一个具有两个距离函数的双阈值方案。Heet等人提出了M2DP [10],它将扫描的整个三维点云投影到多个2D平面,并提取192维的紧凑全局表示。M2DP显示了比现有点云描述子更高的性能,以及对噪声和分辨率变化的鲁棒性。正如本文所介绍的,全局描述子通常使用直方图。最近,SegMatch [23]引入了一种基于分段的匹配算法。这是一种高水平的感知,但需要一个训练步骤,并且需要在一个全局参考系中表示点。

在本文中,我们提出了一种新的称为Scan Context的位置描述子,它将三维扫描的点云编码成矩阵。Scan Context可以被认为是针对三维激光雷达扫描数据的位置识别的Shape Context[7]的扩展。具体来说,Scan Context有三个组成部分:在每个bin中保存点云绝对位置信息的表示、高效的bin编码函数和两步搜索算法。

用于位置识别的Scan Context

在本节中,我们描述了给定三维扫描点云的Scan Context创建,并提出了一种计算两个Scan Context之间距离的方法。接下来,介绍两步搜索过程。图2描述了使用Scan Context进行位置识别的pipline。Scan Context创造和验证也可以在scancontext.mp4中找到。
在这里插入图片描述

A.Scan Context

我们定义了一个叫做Scan Context的场景描述子用于户外位置识别,Scan Context的核心思想受Belongieet al .提出的Shape Context[7]的启发,它将局部关键点周围的点云的几何形状编码成图像。虽然他们的方法只是简单地计算点数来概括点云的分布,我们的方法与他们的不同之处在于,我们使用每个bin中点云的最大高度。使用高度的原因是为了有效地概括周围结构的垂直形状,而不需要大量的计算来分析点云的特征。此外,最大高度说明了从传感器可以看到周围结构的哪个部分。这种以自我为中心的可视性已经成为城市设计文献中一个众所周知的概念,用于分析一个地方的身份[24,25]。

类似于Shape Context[7],我们首先将3D扫描划分为传感器坐标中的方位角和径向bin,但是是以如下图所示的等间距方式。在这里插入图片描述
扫描的中心作为全局关键点,因此我们称Scan Context为以自我为中心的位置描述子。 N s N_s Ns N r N_r Nr分别是扇区和环的数量。也就是说,如果我们将激光雷达传感器的最大测量范围设为 L m a x L_{max} Lmax,环之间的径向间隙为 L m a x N r \frac{L_{max}}{N_r} NrLmax,扇形的中心角等于 2 π N s \frac{2 \pi}{N_s} Ns2π。本文中,我们使用了 N s = 60 N_s = 60 Ns=60 N r = 20 N_r = 20 Nr=20

因此,生成Scan Context的第一个过程是将3D扫描的所有点分割成相互分离的点云,如上图所示。 P i j \mathcal{P}_{ij} Pij是属于第 i i i个环和第 j j j个扇区重叠的bin中的一组点。符号 [ N s ] [Ns] [Ns]等于 { 1 , 2 , . . . , N s − 1 , N s } \{1,2,...,N_{s-1},N_s\} {1,2,...,Ns1,Ns}。因此,分区在数学上是
P = ⋃ i   i n [ N r ] , j ∈ [ N s ] P i j (1) \mathcal{P} = \bigcup_{i \ in [N_r],j \in [N_s]}{\mathcal{P}_{ij}} \tag{1} P=i in[Nr],j[Ns]Pij(1)

因为点云是以等间隔划分的,所以远离传感器的bin比靠近传感器的bin有更大的物理面积。然而,两者都被同等地编码到Scan Context的单个像素中。因此,Scan Context补偿了由点的稀疏性引起的信息数量的不足,并将附近的动态物体视为稀疏的噪声。

在点云分区之后,通过使用每个bin中的点云,为该bin分配一个实数值:
ϕ = P i j → R (2) \phi = \mathcal{P}_{ij} \to \mathbb{R} \tag{2} ϕ=PijR(2)
这里我们使用最大高度,这是从城市能见度分析[24,25]中得到的灵感。因此,bin编码函数为
ϕ ( P i j ) = max ⁡ p ∈ P i j z ( p ) (3) \phi(\mathcal{P}_{ij}) = \max_{p \in \mathcal{P}_{ij}}{z(p)} \tag{3} ϕ(Pij)=pPijmaxz(p)(3)
其中 z ( ⋅ ) z(\cdot) z()是返回点 p p p z z z坐标值的函数。我们给空bin分配0。例如,如图1(b)所示,Scan Context中的蓝色像素意味着与其bin对应的空间没有物体或者由于遮挡而未被观察到。
在这里插入图片描述
根据上述过程,Scan Context的最终表示为 N r × N r N_r \times N_r Nr×Nr的矩阵
I = ( a i j )   i n R N r × N r , a i j = ϕ ( P i j ) (4) I = (a_{ij}) \ in \mathbb{R}^{N_r \times N_r}, a_{ij} = \phi(\mathcal{P}_{ij}) \tag{4} I=(aij) inRNr×Nr,aij=ϕ(Pij)(4)

为了对平移进行鲁棒的识别,我们通过root shifting来增强Scan Context。通过这样做,在轻微的运动扰动下从原始扫描中获取各种Scan Context变得可行。在重新访问到过的地方时,单个Scan Context可能对平移运动下的扫描中心位置敏感。例如,当在不同的车道中重新访问相同的位置时,Scan Context的行顺序可能不会被保留。为了克服这种情况,我们根据水平间隔将原始点云转换为 N t r a n s N_{trans} Ntrans个邻居(本文中使用的 N t r a n s N_{trans} Ntrans= 8),并将从这些root shifting的点云获得的Scan Context存储在一起。我们假设即使在实际的移动后的位置也能获得类似的点云,这是有效的,除了少数情况,比如一个新空间突然出现的交叉点。

B.Scan Context之间的相似度得分

给定一个Scan Context对,我们需要一个距离度量来度量两个地方的相似性。 I c I_c Ic I q I_q Iq分是别从要查询的点云和候选点云中获取的Scan Context。它们以列的方式进行比较。也就是说,距离是同一索引中各列之间的距离之和。余弦距离用于计算同一索引 c j q c_j^q cjq c j c c_j^c cjc处两个列向量之间的距离。此外,我们将总和除以总列数 N s N_s Ns用于归一化。因此,距离函数为
d ( I q , I c ) = 1 N s ∑ j = 1 N s ( 1 − c j q ⋅ c j c ∣ ∣ c j q ∣ ∣ ∣ ∣ c j c ∣ ∣ ) (5) d(I_q,I_c) = \frac{1}{N_s} \sum_{j = 1}^{N_s}{(1-\frac{c_j^q \cdot c_j^c}{||c_j^q|| ||c_j^c||})} \tag{5} d(Iq,Ic)=Ns1j=1Ns(1cjqcjccjqcjc)(5)

考虑到贯穿扇区的一致性,基于列的比较对动态物体特别有效。然而,候选Scan Context的列甚至可以在相同的地方移动,因为激光雷达的视角对于不同的地方是不同的(例如,在相反的方向或角落重新访问一个地方)。图3说明了这种情况。
在这里插入图片描述
因为Scan Context是依赖于传感器位置的表示,所以行顺序总是一致的。但是,如果激光雷达传感器坐标相对于全局坐标发生变化,列顺序可能会有所不同。

为了解决这个问题,我们使用所有可能的列移位后的Scan Context来计算距离,并找到最小距离。 I n c I_n^c Inc是一个 S c a n C o n t e x t Scan Context ScanContext,它的第 n n n列是从原始的Scan Context偏移过来的。这与以 2 π N s \frac{2 \pi}{N_s} Ns2π分辨率大致对准两个点云以获取旋转分量中的偏航角的任务相同。然后,我们确定最佳对齐的列移位数量(7)和对应的距离(6):
D ( I q , I c ) = min ⁡ n ∈ N s d ( I q , I n c ) , (6) D(I^q,I^c) = \min_{n \in N_s}{d(I^q,I_n^c)}, \tag{6} D(Iq,Ic)=nNsmind(Iq,Inc),(6)
n ∗ = arg min ⁡ n ∈ [ N s ] d ( I q , I n c ) (7) n^{*} = \argmin_{n \in [N_s]}{d(I^q, I_n^c)} \tag{7} n=n[Ns]argmind(Iq,Inc)(7)
请注意,这一额外的偏移信息可以作为进一步定位细化(比如ICP)的良好初值

C.两阶段的搜索算法

当在位置识别的上下文中搜索时,有三个主要的典型工作流:成对相似性评分、最近邻搜索和稀疏优化[26]。我们的搜索算法将成对评分和最近邻搜索分层融合,以获得可接受的搜索时间。

由于我们在(6)中的距离计算比其他全局描述子如[12,10]更加耗时,我们通过引入ring key提供了一个两阶段分层搜索算法。Ring key是一个具有旋转不变性的描述子,它是从Scan Context中提取的。Scan Context的每一行 r r r都通过环形编码函数 ψ \psi ψ编码成一个实数值。矢量 k k k的第一个元素来自距离传感器最近的环,随后的元素来自下一个环,如图4所示。
在这里插入图片描述
因此,ring key变成了公式(8)描述的 N r N_r Nr维向量:
k = ( ψ ( r 1 ) , . . . , ψ ( r N r ) ) , 这 里 ψ : r i → R (8) k = (\psi(r_1),...,\psi(r_{N_r})),这里\psi:r_i \to \mathbb{R} \tag{8} k=(ψ(r1),...,ψ(rNr)),ψ:riR(8)

我们使用的环编码函数 ψ \psi ψ是使用 L 0 L_0 L0范数表示的环的占用率:
ψ ( r i ) = ∣ ∣ r i ∣ ∣ 0 N s (9) \psi(r_i) = \frac{||r_i||_0}{N_s} \tag{9} ψ(ri)=Nsri0(9)
由于占用率与视角无关,因此ring key实现了旋转不变性。

虽然不如Scan Context信息丰富,但ring key支持快速搜索,以找到可能的候选闭环。向量 k k k用作构建KD树的key。同时,要查询扫描的ring key用于查找相似的key及其对应的扫描索引。将被检索的相似键的数量由用户决定。使用距离(6)将这些恒定数量的候选Scan Context与要查询的Scan Context进行比较。最接近的满足给定阈值的候选项被选为重新访问的位置:
c ∗ = arg min ⁡ c k ∈ C D ( I q , I c k ) , s . t D < τ (10) c^{*} = \argmin_{c_k \in \mathcal{C}}{D(I^q,I^{c_k})},s.t D < \tau \tag{10} c=ckCargminD(Iq,Ick),s.tD<τ(10)
其中, C \mathbb{C} C是从KDtree中提取的一组候选索引, τ \tau τ是给定的阈值, c ∗ c^{*} c是被确定为闭环的地方的索引。

实验评估

在这一节中,我们的表示和算法在不同的数据集上和其他最新的算法进行了评估。由于Scan Context是全局描述子,因此我们的表示的性能与使用3D点云的其他三种全局表示进行了比较:M2DP [10]、Z投影[12]和ESF [11]。我们使用在PCL库中实现的ESF,原作者使用Matlab实现的M2DP和自己在Matlab上实现的Z投影。所有实验都是在同一个系统上进行的,该系统配备了一个3.40千兆赫的英特尔i7-6700CPU和16GB内存。

A.数据集和实验设置

我们使用 KITTI 数据集 [27]、NCLT 数据集 [28] 和复杂城市激光雷达数据集 [29] 来验证我们的方法。 这三个数据集的选择考虑了多样性,例如 3D LiDAR 传感器的类型(例如,线数、传感器安装类型,例如环绕和倾斜)和闭环类型(例如,发生在相同方向或相反方向,也被称为反向闭环)。 每个数据集的特征总结在表 I 中。术语节点表示单个采样位置。
在这里插入图片描述

1)KITTI数据集:

在11个具有真实位姿的序列中(从00到10),选择闭环出现次数最多的前四个序列:00、02、05和08。序列08只有反向闭环,其他的序列有相同方向的闭环。KITTI数据集的扫描是从位于车中心的64线激光雷达(Velodyne HDL-64E)获得的。由于KITT数据集提供了带索引的扫描,所以我们直接将每个bin文件用作一个节点。

2)NCLT数据集:

NCLT数据集提供了类似路线上不同日期的长期测量。NCLT数据集的扫描是从安装在移动平台上的32线激光雷达(Velodyne HDL-32E)获得的。考虑到闭环出现的次数和季节多样性,选择四个序列。在这个实验中,以等距(2 m)间隔对扫描进行采样,为了方便起见,只有那些采样的扫描被用作节点。

3)复杂城市激光雷达数据集:

复杂城市激光雷达数据集包括从住宅区到大都市地区的各种复杂城市环境。考虑到复杂性和[29]提供的宽道路率,选择了四个序列。在序列的三个子路线中,04、04_0和04_1用于本实验。为了方便起见,扫描以3m为间隔进行采样。有趣的是,这个数据集使用两个倾斜的激光雷达(Velodyne VLP-16 PUCK)进行城市建图。因此,该数据集的单次扫描能够测量结构的较高部分,但没有360°环绕视图。为了包含所有方向的更多信息,我们合并来自左右倾斜激光雷达的点云,并将它们用作单次扫描来创建Scan Context。

如果查询和被匹配节点之间的地面真实位姿距离小于4 m,则检测被认为是真阳性。从搜索中总共排除了50个先前相邻的节点。Scan Context的实验是用KDtree中的10个候选和50个候选进行的,因此每种方法分别被称为Scan Context-10和Scan Context-50。与Scan Context不同,Scan Context只与从KD树中提取的恒定数量的候选项进行比较,其他方法(M2DP、ESF和z投影)将比较要查询的描述与数据库中的所有内容。在本文中,我们设置了Scan Context的 N s = 60 N_s = 60 Ns=60 N r = 20 N_r = 20 Nr=20 L m a x = 80 L_{max} = 80 Lmax=80,即每个扇区具有 6 ° 6^{\degree} 6°的分辨率,每个环具有4 m的间隔。Z投影的bin设置为100。我们使用M2DP和ESF可用代码的默认参数。为了提高计算效率,我们对Scan Context和M2DP都使用 0.6 m 3 0.6m^{3} 0.6m3尺寸的网格下采样后的电晕,因为He et al[10]报道M2DP对下采样是鲁棒的,而Z投影和ESF使用没有下采样的原始点云,因为它们容易受到低点云密度的影响。在实验中,我们只改变一个可接受阈值。

B.准确率-召回率评估

在这里插入图片描述

使用如图5所示的准确率-召回率曲线来分析Scan Contexts的性能。基于直方图的方法ESF和Z投影在所有数据集上都表现不佳。只有当可视空间的结构有很大不同时,这些依赖于直方图的方法才能区分开不同的位置。与这些基于直方图的方法不同,我们的方法为整个数据序列提供了有意义的性能。总的来说,Scan Context-50总是比Scan Context-10表现出更好的性能。Scan Context的性能取决于KD树中的扫描次数。由于ring key比Scan Context包含的信息少,如果有许多类似的结构,检查少量(例如,在多于3000个节点中选择10个)的候选对象是容易失败的。

当应用于室外城市数据集时本文提出的方法优于其他方法。这是因为使用垂直高度的动机来自于城市分析。然而,当应用于垂直高度变化不太明显的室内环境时,性能是受限的。当应用于NCLT数据集时,Scan Context在准确率和召回率(每个图的左半部分)方面都表现出较低的性能,因为数据集的轨迹包含狭窄的室内环境,只有很小的区域可用。

使用复杂城市激光雷达数据集进行评估时,所有方法都显示出比KITTI数据集更差的性能。尤其是,Urban 02为所有方法提供了最具挑战性的案例,因为与KITTI数据集相比,该序列具有在高度和直角形状方面相似的重复结构和狭窄的道路。图6给出了来自这个具有挑战的Urban 02序列的Scan Context的例子。
在这里插入图片描述

尽管在这方面本文提出的方法有了一定程度的性能下降,但还是优于其他方法。

通过使用基于视图对齐的匹配,即使对于反向重新访问,本文所提出的描述子也呈现出很强的旋转不变性。例如,M2DP未能检测到反向闭环。在这些数据集中,KITTI 08只有反向闭环,所以本文所提出的方法大大优于其他方法。这种现象在有部分反向闭环的NCLT序列中也可以观察到。因此,在NCLT序列中,M2DP在非常低的召回率下表现出了高精度,因为正向闭环被正确检测到。然而,由于反向闭环被遗漏,曲线的斜率迅速降低。

C.定位准确率

本文提出的方法也可用于为其他定位方法(如ICP)提供鲁棒的初始估计。我们用具有反向闭环的KITTI 08进行了实验。ICP是点对点执行的,没有进行下采样。图7描述了有和没有初始化的ICP结果的例子。
在这里插入图片描述

对于这个序列,我们进一步验证了计算时间和均方根误差(RMSE)方面的改进。图8显示了使用(7)的初始偏航角度估计的改进性能。
在这里插入图片描述

D.计算复杂度

在KITTI 00上评估的平均计算时间如表二所示。所有方法都使用 0.6 m 3 0.6m^3 0.6m3网格下采样后的点云。在这些实验中,Scan Context创建需要更长的时间,因为我们使用了Scan Context增强,这是非强制性的。因此,创建单个Scan Context所需的时间(0.0143 s,Scan Context增强除外)比其他方法短。Scan Context的搜索时间包括创建KD树和计算距离。Scan Context可能比其他全局描述子需要更长的搜索时间,但在合理的范围内(在Matlab上为2-5Hz)。

结论

在这篇文章中,我们提出了一个空间描述子——Scan Context,将一个地方概括为一个矩阵,这个矩阵明确描述了以自我为中心的环境的2.5D结构信息。与使用点云的现有全局描述子相比,Scan Context在各种数据集上显示出更高的闭环检测性能。

在未来的工作中,我们计划通过引入额外的层来扩展Scan Context。也就是说,其他bin编码函数(例如,bin的语义信息)可被用于提高性能,即使对于具有高度重复结构的数据集,如复杂城市激光雷达数据集。

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值