论文笔记—POU-SLAM: Scan-to-Model Matching Based on 3D Voxels
文章摘要
~~~~ ~~~ LiDAR数据的本地化和地图绘制是自动驾驶汽车的基本组成部分。尽管与视觉信息相比,LiDAR点云通常可以对场景深度进行编码,但基于激光的同时定位和制图(SLAM)仍然具有挑战性,因为数据通常稀疏,密度可变且具有较低的判别力。本文的目的是提出一种准确可靠的基于激光的SLAM解决方案。设计/方法/方法:该方法从基于3D输入点云构建体素网格开始。然后将这些体素根据每个体素中包含的点的空间分布分为三种类型,以指示不同的物理对象。在地图构建的过程中,将维护具有统一分区(POU)隐式表面的全局环境模型,并且这些体素是通过Levenberg-Marquardt算法逐步整合到模型中。发现:本文提出了一种基于激光的SLAM方法,该方法使用POU隐式表面表示来构建模型,并在不闭环的情况下在KITTI里程表基准上进行评估。与LOAM相比,本文的方法实现了约30%的转换估计精度改进,并且牺牲了可接受的效率。总的来说,与LOAM相比,本文的方法使用更复杂,更准确的表面表示来提高建图精度,但以计算效率为代价。
导语
~~~~
~~~
自动驾驶汽车的可靠定位是一个有吸引力的研究课题,因为它是导航和其他任务的基本要求[1-5]。 完全自动驾驶的车辆应该可靠地定位自己,理想情况下,仅使用板载自己的传感器,而不依赖于GPS等外部信息源。 在此类外部信息绝对不可用的情况下,同时进行本地化定位和映射(SLAM)始终是一种替代选择。
在过去的几十年中,对SLAM进行了深入研究,并针对室内和室外环境提出了基于不同传感器的各种解决方案。在室外场景中,LiDAR相对于相机的优势在于,与每次测量相关的噪声与距离本身无关,并且通常对光照变化更稳定。因此,基于激光的SLAM正成为户外场景中的主流解决方案之一。大多数基于激光的SLAM方法倾向于从点提取稳定的特征(例如平面和边缘),然后在“特征空间”中进行SLAM。因此,它们被归类为基于特征的SLAM,其性能主要取决于两个因素。第一个因素是特征的设计方式。[6,7]提出了一种基于曲率的平面和边缘特征设计方法。[8]将根据点云的几何统计计算得出的形状信息合并到迭代最近点(ICP)对应步骤中。第二个因素是扫描匹配方法。扫描匹配和模型匹配是SLAM中两个主要的扫描匹配框架。[9]提出了一种使用卷积神经网络处理LiDAR点云的扫描到扫描测距轨迹估计方法。[10]通过使用隐式表面作为模型来实现扫描到模型的匹配。基于激光的最新SLAM方法,激光雷达测距和建图(LOAM)[6]提取与物理表面相对应的独特特征为了实现在线实施,LOAM在10Hz的扫描到扫描和1Hz的更新频率下的扫描到模型操作之间切换。尽管LOAM取得了良好的性能,但是在使用3D激光传感器的户外应用中仍然存在挑战,即:
(1)由于点云稀疏而导致的固有点匹配误差,这意味着当我们直接使用稀疏矩阵时,总会存在误差点云以适应环境的表面。此外,几乎不可能获得扫描之间的刚性点对应关系。
(2)由于点云的密度变化,很难固定匹配参数。在基于特征的匹配过程中,需要提取一个3D点的足够的上下文信息以使其具有区分性,而主要上下文的范围受点密度的很大影响。为了克服上述挑战,我们引入了POU隐式表面表示,以稀疏点对环境表面进行回归,可以有效地对详细的几何信息进行编码。我们将点云离散化为3D体素。根据体素中包含的点的几何特征,将这些体素分为平面体素和边缘特征体素。最后,我们构建了特征体素地图以进行进一步的扫描到模型匹配,在此期间,提出了POU隐式表面表示以适应体素地图。我们的工作的主要贡献如下:
(1)我们提出了一种新颖的特征体素地图,其中存储了具有显着的平面或边缘特征的体素。
(2)我们提出了一种使用POU隐式表面表示的扫描模型匹配框架。
相关工作
~~~~ ~~~ 带有摄像头和LiDAR的SLAM引起了机器人和计算机视觉界的广泛关注。 我们承认该领域的大量工作,但这里仅关注基于LiDAR的方法。 由于特征提取,激光建图和扫描匹配框架是基于激光的SLAM的三个最重要的步骤,因此,我们研究了这三个方面的相关工作,并提供了有关它们如何工作的一般思路。
A.特征提取
~~~~ ~~~ LOAM专注于LiDAR扫描中的边缘和平面特征,并将其保持在地图中以进行边缘-线和平面-平面表面匹配。 [11]还使用边缘和平面特征来解决连续扫描中6-DOF变换的不同分量。尽管这些工作基于曲率提取特征,但仍然存在差异,如文献[11]所述,该方法经过地面优化,因为它在分割和优化步骤中利用了地平面的存在。 J Lalonde和Yungeun Choe等人使用从高分辨率和高密度Zoller–Fröhlich Z + F激光器获得的点云。 [12,13]利用点云几何统计将自然地形分为散度,线性和表面度。使用来自SICK LMS291激光测距传感器的点云,Michael Bosse等。 [8]基于点云几何统计特征实现扫描匹配。他们使用ICP对齐体素质心,这可以减少扫描匹配的点数以及地图的大小。与文献[8]相比,我们更巧妙地考虑了点的几何特征,并实现了与原始点的扫描匹配,不会导致信息丢失。
B.激光建图
~~~~ ~~~ SLAM系统通常会构建和维护环境图,例如特征图[6,7,11,14,15],密集图[16,17],二次采样云[18,19]和基于正态分布变换(NDT)的地图[20,21]。 在基于激光的SLAM系统中,特征图通常是从原始点云中提取的表面和角的结构性集合。 在本文中,我们构建了一个特征图,可以通过以体素形式维护更多类型的特征,从而与文献中的方法区别开来。
C.扫描匹配框架:
~~~~ ~~~ 最近,一些基于激光器的SLAM系统使用扫描到模型匹配框架,并使用KITTI里程表基准获得了最先进的性能。 [16]提出了一种基于激光的SLAM的密集方法,该方法在从Velodyne HDL-64获得的点云上运行。 他们构建了一个基于冲浪的地图,并使用点对面ICP [22,23]来估计车辆的姿态变换。 本文的方法本质上属于扫描模型匹配框架。 区别在于,我们构建了特征体素地图,并使用POU隐式表面表示来适应基于特征体素地图的扫描到模型匹配过程。
D.统一分区方法:
~~~~ ~~~ POU方法已广泛用于表面重建。 [24]展示了在给定具有属性的离散点集的情况下,如何重建具有属性的多尺度隐式曲面。 [25]提出了一种新的3D非刚性配准算法,用变分公式配准两个单位隐含曲面的多级分区。
特征提取
~~~~ ~~~ 类似于[26],当局部区域中存在明显的几何特征时,将触发扫描模型匹配。 因此,首先找到这些区域很重要。 与3D对象分类[27,28]和位置识别[29,30]相反,它们使用复杂的点云描述符对对象进行分割和分类, 我们使用更简单的形状参数化,因为我们的任务集中在增量变换上,对此我们在相对位姿方面有更强的先验性。
A.计算形状参数
~~~~
~~~
重复划分输入点云所占据的局部区域,直到落入每个体素的点数等于阈值
N
p
N_p
Np。阈值
N
p
N_p
Np与LiDAR点云的水平和垂直分辨率有关。 在特征提取过程中,相应体素中特征的密度会发生变化。 我们在寻找特征的对应关系时会考虑密度。特征的密度越低,在特定半径内找到足够的对应关系的可能性就越低。 当
N
p
N_p
Np设置为25时,我们的实验结果得以实现。每个体素都包含落入其中的点和体素质心。落入体素的点定义为
{
X
i
}
\lbrace X_i\rbrace
{Xi}
=
{
(
x
i
,
y
i
,
z
i
)
T
}
=\lbrace(x_i,y_i,z_i)^T\rbrace
={(xi,yi,zi)T}。 一阶和二阶矩
μ
,
S
μ,S
μ,S描述了点
{
X
i
}
\lbrace X_i\rbrace
{Xi}的空间分布参数:
受到[8]的启发,矩阵S分解为按特征值增加而排序的主成分。
e
0
⃗
\vec{e_0}
e0,
e
1
⃗
\vec{e_1}
e1,
e
3
⃗
\vec{e_3}
e3是分别对应于特征值
λ
0
λ_0
λ0,
λ
1
λ_1
λ1,
λ
2
λ_2
λ2的特征向量,其中
λ
0
≥
λ
1
≥
λ
2
λ_0≥λ_1≥λ_2
λ0≥λ1≥λ2。 在体素中的点的结构是线性结构的情况下,主方向将是曲线的切线,
λ
0
≥
λ
1
≈
λ
2
λ_0≥λ_1≈λ_2
λ0≥λ1≈λ2。 在体素中的点的结构是固体表面的情况下,主方向与表面法线对齐 。
λ
0
≈
λ
1
≥
λ
2
λ_0≈λ_1≥λ_2
λ0≈λ1≥λ2。
两个显着性特征(称为线性特征和表面特征)是特征值的线性组合。 图1说明了所使用的两个功能。 数量:
是体素中点的线性特征,范围从0到1。类似地,数量:
是体素中点的表面特征,范围从0到0.5。
B. 体素采样策略
~~~~
~~~
本质上,基于体素的扫描匹配过程是为了构建体素之间的关联,可以认为具有大量线性或平面度的体素往往比其他体素更稳定。 因此,对于每个输入点云,我们根据提议的数量将其3d网格分类为三种类型:边缘体素,平面体素和其他类型。 此外,应注意,接地点通常包含更多的平面特征,非接地点通常同时包含平面和边缘特征。 考虑到这些因素,我们首先使用[31]中提出的方法将整个点云分为地面和非地面部分。 图2a是地面分割结果的示例。 然后,对于非地面点,我们提取平面和边缘特征,而地面点仅提取平面特征。
在现在表示为体素质心的每次扫描中,我们根据体素的线性值
c
c
c和表面度值
p
p
p对体素进行排序,并获得两个排序列表。 然后采用两个阈值
c
t
h
c_{th}
cth和
p
t
h
p_{th}
pth来区分不同类型的特征。 我们将
c
c
c大于
c
t
h
c_{th}
cth边缘特征的体素称为边缘特征,将
p
p
p大于
p
t
h
p_{th}
pth的体素称为平面特征。 然后从每次扫描中选择具有最大
c
c
c的
n
F
e
n_{F_e}
nFe个边缘特征。 还选择了具有最大
p
p
p的非地面和地面平面特征,这两种类型的特征数分别为
n
F
p
n_{F_p}
nFp和
n
F
g
p
n_{F_{gp}}
nFgp。 此后将从所有扫描中提取的边缘和平面特征表示为
F
e
F_e
Fe,
F
p
F_p
Fp和
F
g
p
F_{gp}
Fgp。 这些功能的可视化示例在图2b–d中给出。
扫描到模型匹配与POU隐式表面表示
~~~~
~~~
将簇激光扫描转换为一组稳定的体素后,我们将执行扫描到模型的匹配过程。 在我们的方法中,地图由最后n个定位特征集
F
e
F_e
Fe,
F
p
F_p
Fp和
F
g
p
F_{gp}
Fgp组成。 设:
为在时间k包含平面特征和边缘特征的地图。 为了使这些点更好地适合观察的曲面并适应特征体素地图,我们采用POU隐式曲面表示来构建模型。
A. 查找特征点对应
~~~~
~~~
在当前扫描中,每个点均根据其相应体素的类型进行标记。 在匹配过程中,我们以标签和欧几里得距离为指导,构造地图中的体素与当前特征点之间的对应关系。 由于这种对应关系生成机制缩小了对应关系的潜在候选者的范围,因此可以帮助提高匹配精度和效率。下面给出了详细的对应构造过程。
对于特征集
F
e
F_e
Fe中的每个当前边缘点,我们在半径为
r
e
r_e
re的球面空间内搜索
n
e
n_e
ne个以下项的体素 :
对于每个对应的体素,我们找到一条边线作为当前边缘点的对应关系。 找到所有对应的边缘线后,我们可以得到当前边缘点在对应的边缘线上的投影点
S
e
S_e
Se。 然后,我们使用线性量c来确定
S
e
S_e
Se是否可以表示为边缘线。如果可以将
S
e
S_e
Se表示为边缘线,则将其视为当前边缘点的对应关系。 获得边缘特征对应关系后,我们计算从边缘特征点到其对应关系的距离。查找边缘线的过程和距离计算可以在[6]中找到。
对于特征集
F
p
F_p
Fp和
F
g
p
F_{gp}
Fgp中的每个当前平面点,我们分别在半径为
r
p
r_p
rp的球体空间内找到以下项的
n
p
n_p
np和
n
g
p
n_{gp}
ngp个体素作为相应的体素。
然后,我们使用相应的体素来构造模型的POU隐式表面表示,并计算从平面特征点到模型的隐式表面表示的距离。下面将讨论构建POU隐式表面表示以及计算从平面特征点到模型的隐式表面表示的距离的细节。
B.平面特征的POU隐式曲面表示
1.POU方法
~~~~ ~~~ POU方法的基本思想是将数据域分为几部分,分别对每个子域中的数据进行近似处理,然后使用平滑的本地权重将本地解决方案混合在一起,这些权重在域中的每个地方总计为一。 更具体地说,我们在每个对应体素中指定一个特定的平面补丁作为平面特征点的对应。在[7]中可以找到寻找特定点以形成平面补丁 P c P_c Pc的过程。 我们可以计算出平面特征点和相应的平面补丁 P c P_c Pc之间的距离 d d d。 然后,我们将平面特征点 x x x投影到由 p s p_s ps定义的平面斑块的表面上: p s i = x − d i n i p_{s_i} = x − d_in_i psi=x−dini,其中 n i n_i ni是每个平面补丁中与 x x x最接近的点的法线,并且是投影点 p s i p_{s_i} psi处的表面法线的良好近似值。 每个平面补丁都可以视为一个子域。 然后,我们使用权重函数将子域混合在一起。
2.POU隐式表面表示
~~~~
~~~
隐式曲面定义为函数
I
(
x
)
I(x)
I(x)的零集,该函数也充当从
x
x
x到隐式曲面的距离函数。在这项工作中,我们使用POU隐式表面表示。
类似于[32]中的POU隐式表面框架,我们将POU隐式函数
I
M
k
(
x
)
I^{M^k}(x)
IMk(x)定义为平面特征点
x
∈
R
3
x∈R^3
x∈R3在时间
k
k
k到由映射
M
k
M^k
Mk定义的POU隐式表面的近似距离:
其中
p
s
i
p_{s_i}
psi是在相应平面补丁
s
i
s_i
si上的投影点,
n
⃗
s
i
\vec{n}_{s_i}
nsi是在
p
s
i
p_{s_i}
psi点的法线。为了近似起见,我们使用二次B样条
b
(
t
)
b(t)
b(t)生成平面补丁的权重函数。
其中
c
s
i
c_{s_i}
csi是平面贴片
s
i
s_i
si的几何中心,
R
s
i
=
max
x
∈
s
i
∥
x
−
c
s
i
∥
R_{s_i} = \max\limits_{x∈s_i}\lVert x-c_{s_i}\rVert
Rsi=x∈simax∥x−csi∥是平面贴片
s
i
s_i
si的球形支撑半径。该函数与
x
x
x和
c
s
i
c_{s_i}
csi之间的距离成正比,与
R
s
i
R_{s_i}
Rsi成反比。这意味着
c
s
i
c_{s_i}
csi距离
x
x
x越近,分配的权重就越高;形成平面补丁的点越分散,权重就越高。除了计算从特征点到模型表面的距离之外,还应该计算特征点
x
x
x的投影点处的表面法线。在这项工作中,我们使用最接近
x
x
x的点
p
s
c
l
o
s
e
t
p_{s_{closet}}
pscloset的法线作为投影点处的表面法线的近似值,与仅使用一个平面表示一个表面(可以是圆柱或球体等)的方法相比,我们采用具有各种平面度的多个局部平面来表示一个表面,该表面可以实现更高的精度并获得从特征点到其对应点的更精确的距离。图3展示了POU隐式表面。
3.运动估计
~~~~
~~~
有了从特征点到它们对应点的距离,我们为每个特征点分配了一个平方平方权重[7]。 规则是双重的。 通常,当特征点与其对应点之间的距离低于某个阈值时,权重将与该距离成反比。 但是,当距离大于阈值时,将特征点视为离群值。 我们通过最小化总距离来恢复LiDAR运动。
首先,使用以下方程式将特征点
x
x
x投影到地图上,即
x
~
\tilde{x}
x~,
其中,
R
R
R和
τ
τ
τ是与当前扫描和地图之间的姿态变换T相对应的旋转矩阵和平移矢量。 通过结合特征点到它们的对应关系的距离和权重以及方程(11),我们得出特征点和相应模型之间的几何关系,
其中
f
f
f的每一行都对应一个特征点,而d包含相应的距离。 最后,我们用Levenberg-Marquardt方法获得了LiDAR运动[33]。 我们在当前扫描与最近n次扫描之间进行扫描匹配,并且通过汇总成功匹配的
n
m
n_m
nm扫描获得最终结果。 从字面上看,通过将当前扫描与历史
n
n
n扫描进行匹配,可以抑制错误传播问题。 对于失误,我们限制了当前扫描和模型之间的相对转换的规模。 当发生错误时,我们将放弃当前扫描的结果,并且随后的扫描匹配实现会受到轻微影响。在计算了扫描和模型之间的转换之后,我们向地图添加了与当前扫描相对应的特征体素,并删除了该特征 对应于最旧扫描的体素始终保留
n
n
n个扫描以进行扫描匹配。