文章目录
- 前言
- 一、介绍
- 二. 相关工作
- 三. 方法论
- A. 概率平面表示
- 1) 点 W p i {}^{W} p_{i} Wpi 的不确定性:
- 2) 平面不确定性建模:
- B. 粗到细高效体素地图构建
- 1) 动机:
- 2) 体素地图构建:
- 3) 体素地图更新:
- C. 点到平面配准
- D. 状态估计
- 四. 实验
- 五. 结果
前言
原文:论文
代码github
摘要:这篇论文提出了一种高效的概率自适应体素映射方法,用于LiDAR里程计。该地图是一个体素集合,每个体素包含一个平面(或边缘)特征,从而实现环境的概率表示和新LiDAR扫描的精确配准。我们进一步分析了粗到细的体素映射需求,并使用一种新颖的通过哈希表和八叉树组织的体素地图来高效地构建和更新地图。我们将所提议的体素地图应用于迭代扩展卡尔曼滤波器,并构建一个最大后验概率问题以进行位姿估计。对开放的KITTI数据集的实验表明,与其他最先进的方法相比,我们的方法具有较高的准确性和效率。在非结构化环境中进行的户外实验,以及使用非重复扫描的LiDAR进一步验证了我们映射方法对不同环境和LiDAR扫描模式的适应性。
一、介绍
近年来,随着3D LiDAR技术的发展,尤其是低成本高密度固态LiDAR的出现,LiDAR(惯性)测程在自动驾驶汽车、无人机(UAV)和3D移动测绘设备等各种应用中的使用越来越广泛。LiDAR测程的一个基本要求是对环境的合理表示(即地图),该地图能够高效维护并有效注册新点。在现有的LiDAR(惯性)测程中,主流的映射方法,如LOAM、Lego-LOAM、LINS、LIO-SAM和Lili-OM,是基于点云地图,这些地图由原始或选定的边缘或平面点组成。在注册新的扫描时,扫描中的每个点通过迭代最近点(ICP)或其变体(如广义ICP)注册到由地图中几个最近点拟合的小平面上。这一研究方向 culminates 在FAST-LIO2中,该方法开发了一种增量kd-tree结构,以高效组织点云地图。作为LiDAR测量的直接形式,点云地图的实现相对简单。然而,点云地图的一个主要缺点是难以考虑由LiDAR测量噪声引起的地图不确定性。在ICP或其变体中,由最近的地图点拟合的平面通常被视为新的点所在的真实确定性平面,但由于地图点的测量噪声,它实际上应是概率性的。虽然在拟合平面(和随后的点注册)中考虑这些噪声是可能的,但由于最近点通常较少以避免虚假平面,这种方法的可靠性较低且耗时(因为如果在注册过程中任何最近点发生变化,必须重新计算不确定性)。考虑地图不确定性需要对环境中显著特征(如平面)进行显式参数化,跨不同的LiDAR扫描跟踪这些特征,并估计这些特征参数及其不确定性。由于可能存在不同大小的特征,执行这些任务是具有挑战性的。由于LiDAR测量中的粗到细现象,问题变得更加复杂。例如,扫描或地图中的点由于LiDAR分辨率、扫描类型和空间中点的不均匀分布而通常在空间中具有截然不同的密度。点的密度也会随着LiDAR传感器的顺序扫描特性而随时间变化。
为了解决上述挑战,本文提出了一种新颖的在线自适应体素映射方法,该方法构建不同大小的体素以适应环境结构和点密度的变化。一个体素跟踪一个显著特征(本文使用平面)。基于接收到的点,特征参数及其不确定性在体素内反复估计。参数化特征使我们能够准确考虑当前点和地图的两者不确定性。具体而言,本文的贡献包括:
-
一种自适应大小的粗到细体素构建方法,能够适应结构变化的环境,并对LiDAR点云的稀疏性和不规则性具有鲁棒性。自适应体素地图以八叉树哈希数据结构组织,以提高体素构建、更新和查询的效率。
-
真正的概率地图表示,其中每个包含在体素地图中的特征(即平面)准确考虑了来自点测量噪声和姿态估计误差的不确定性。
-
在LiDAR(惯性)测程系统中对所提映射方法的开源实现,并在各种环境(结构化和非结构化)和LiDAR(多旋转LiDAR和非传统固态LiDAR)的实际数据集上进行了全面验证。特别地,我们的方法在KITTI数据集上优于其他先进方法的优越性得到了验证。
二. 相关工作
一方面,我们的体素地图中使用的平面特征与Suma和Suma++中使用的surfels非常相似,它们通过优化点到平面的残差来注册新点,并在地图中显式维护和估计surfels。在Suma和Suma++中,surfels是非常小的平面特征,在杂乱的环境中我们的平面特征也是如此。然而,由于我们体素地图中的自适应大小,在结构化环境中,我们的平面特征可以非常大。这种自适应策略使我们的方法适用于具有不同结构的环境,同时确保了高计算效率。我们平面特征与Suma和Suma++中的surfels之间的另一个区别在于surfels和平面的关联。在这些研究中,地图中的surfels和新的LiDAR点都被投影(即渲染)到虚拟图像平面上,以进行点到平面的关联。这样的surfels渲染过程非常耗时,通常需要GPU加速以适应在线应用。相对而言,我们的平面关联是通过高效的哈希表查询实现的。
surfels渲染中的计算问题可以通过将surfels地图建模为高斯混合模型,并通过期望最大化(Expectation Maximization)进行surfels关联来缓解,如MRSLaserMap中所示。MRSLaserMap的工作也采用了多分辨率的surfels地图,其中有效的surfels从最细分辨率合并到较粗分辨率。这种从细到粗的地图方法源于MRSMap,受LiDAR扫描仪的径向特性启发,通常对LiDAR点云的稀疏性和不规则性非常敏感。相比之下,我们的方法以粗到细的方式构建体素地图,更加鲁棒于LiDAR点云的不规则性,并适应不同的环境。与确定性surfels不同,[20]和[21]中的研究将LiDAR测量噪声纳入surfels,导致类似于我们概率性平面表示的概率点到surfels注册。然而,这些研究只考虑了LiDAR测量噪声,而忽略了由于LiDAR姿态估计错误引起的不确定性。相比之下,我们的平面不确定性考虑了这两种不确定性。注意,姿态估计用于将测量的LiDAR点从局部坐标系转换到估计surfels/平面的世界坐标系,因此,姿态估计误差会影响surfels/平面的不确定性。另一方面,我们的体素地图类似于法线分布变换(NDT),其中地图由许多体素(不同大小)组成。在每个体素中,基于位于该体素中的地图点拟合一个3D高斯分布,并用于通过最大化点来自该分布的可能性来注册新点。LiTAMIN2进一步通过将ICP与NDT结合来提高NDT的准确性。与这些NDT方法相比,我们的方法显式地对体素中的平面进行参数化和估计。这种显式的平面参数化允许直接进行点到平面的注册,这比NDT更为可靠和准确,因为NDT中的3D高斯分布通过惩罚所有三个方向(而不仅仅是平面法线)对新点进行约束。显式的平面参数化还允许将LiDAR点测量和姿态估计中的噪声纳入考虑,从而提供进一步的准确性提升。在数据结构方面,我们提出的八叉哈希数据结构和粗到细的映射方法类似于OGN和HSP。OGN引入了八叉哈希表示法到深度卷积解码器中,实现了计算和内存效率高的体积3D输出生成。HSP在分层表面上使用粗到细的预测,以实现更准确的3D物体重建。虽然OGN和HSP的3D物体输出和重建效果良好,但我们将高效的八叉哈希数据结构和粗到细的平面表示整合到一种新型地图中,并将该地图应用于LiDAR测程问题,从而增强了LiDAR测程的适应性、效率和准确性。一方面,我们的体素地图中使用的平面特征与Suma和Suma++中使用的surfels非常相似,它们通过优化点到平面的残差来注册新点,并在地图中显式维护和估计surfels。在Suma和Suma++中,surfels是非常小的平面特征,在杂乱的环境中我们的平面特征也是如此。然而,由于我们体素地图中的自适应大小,在结构化环境中,我们的平面特征可以非常大。这种自适应策略使我们的方法适用于具有不同结构的环境,同时确保了高计算效率。我们平面特征与Suma和Suma++中的surfels之间的另一个区别在于surfels和平面的关联。在这些研究中,地图中的surfels和新的LiDAR点都被投影(即渲染)到虚拟图像平面上,以进行点到平面的关联。这样的surfels渲染过程非常耗时,通常需要GPU加速以适应在线应用。相对而言,我们的平面关联是通过高效的哈希表查询实现的。surfels渲染中的计算问题可以通过将surfels地图建模为高斯混合模型,并通过期望最大化(Expectation Maximization)进行surfels关联来缓解,如MRSLaserMap中所示。MRSLaserMap的工作也采用了多分辨率的surfels地图,其中有效的surfels从最细分辨率合并到较粗分辨率。这种从细到粗的地图方法源于MRSMap,受LiDAR扫描仪的径向特性启发,通常对LiDAR点云的稀疏性和不规则性非常敏感。相比之下,我们的方法以粗到细的方式构建体素地图,更加鲁棒于LiDAR点云的不规则性,并适应不同的环境。
与确定性surfels不同,[20]和[21]中的研究将LiDAR测量噪声纳入surfels,导致类似于我们概率性平面表示的概率点到surfels注册。然而,这些研究只考虑了LiDAR测量噪声,而忽略了由于LiDAR姿态估计错误引起的不确定性。相比之下,我们的平面不确定性考虑了这两种不确定性。注意,姿态估计用于将测量的LiDAR点从局部坐标系转换到估计surfels/平面的世界坐标系,因此,姿态估计误差会影响surfels/平面的不确定性。
另一方面,我们的体素地图类似于法线分布变换(NDT),其中地图由许多体素(不同大小)组成。在每个体素中,基于位于该体素中的地图点拟合一个3D高斯分布,并用于通过最大化点来自该分布的可能性来注册新点。LiTAMIN2进一步通过将ICP与NDT结合来提高NDT的准确性。与这些NDT方法相比,我们的方法显式地对体素中的平面进行参数化和估计。这种显式的平面参数化允许直接进行点到平面的注册,这比NDT更为可靠和准确,因为NDT中的3D高斯分布通过惩罚所有三个方向(而不仅仅是平面法线)对新点进行约束。显式的平面参数化还允许将LiDAR点测量和姿态估计中的噪声纳入考虑,从而提供进一步的准确性提升。
在数据结构方面,我们提出的八叉哈希数据结构和粗到细的映射方法类似于OGN和HSP。OGN引入了八叉哈希表示法到深度卷积解码器中,实现了计算和内存效率高的体积3D输出生成。HSP在分层表面上使用粗到细的预测,以实现更准确的3D物体重建。虽然OGN和HSP的3D物体输出和重建效果良好,但我们将高效的八叉哈希数据结构和粗到细的平面表示整合到一种新型地图中,并将该地图应用于LiDAR测程问题,从而增强了LiDAR测程的适应性、效率和准确性。
三. 方法论
A. 概率平面表示
我们的体素地图在每个体素中包含一个概率特征。为了不失一般性,我们选择平面特征,因为它们在环境中广泛存在,并在本节中介绍平面特征的不确定性模型。
由于平面特征是从其关联点估计得出的,因此点中的任何噪声都会影响平面估计的不确定性。我们首先在第III-A1节中调查点噪声,然后在第III-A2节中推导噪声如何影响平面不确定性。注意,由于体素地图(因此包含的平面特征)是以世界坐标系表示的,点噪声也应在世界坐标系中进行调查,这导致了两个可能的噪声源:一个是原始点测量噪声,相关于局部LiDAR坐标系,另一个是将局部LiDAR点投影到世界坐标系中的LiDAR姿态估计误差。
1) 点 W p i {}^{W} p_{i} Wpi 的不确定性:
根据[27]中对激光雷达传感器测量噪声的分析,局部激光雷达框架中激光雷达点的不确定性由两部分组成:测距不确定性和方位方向不确定性(见图1(a))。设 ω i ∈ S 2 \omega_{i} \in S^{2} ωi∈S2 为测量的方位方向, δ ω i ∼ N ( 0 2 × 1 , Σ ω i ) \delta_{\omega_{i}} \sim \mathcal{N}(0_{2\times 1}, \Sigma_{\omega_{i}}) δωi∼N(02×1,Σωi) 为 ω i \omega_{i} ωi 的切平面上的方位方向噪声, d i d_{i} di 为深度测量值, δ d i ∼ N ( 0 , Σ d i ) \delta_{d_{i}} \sim \mathcal{N}(0, \Sigma_{d_{i}}) δdi∼N(0,Σdi) 为测距噪声。那么测量点 L p i {}^{L} p_{i} Lpi 的噪声 δ L p i \delta_{L_{p_{i}}} δLpi 及其协方差 Σ L p i \Sigma_{L_{p_{i}}} ΣLpi 为
δ L p i = [ ω i − d i ⌊ ω i ⌋ ∧ N ( ω i ) ] ⏟ A i [ δ d i δ ω i ] ∼ N ( 0 , Σ L p i ) , Σ L p i = A i [ Σ d i 0 1 × 2 0 2 × 1 Σ ω i ] A i T . ( 1 ) \begin{align*} \delta_{L_{p_{i}}} &= \underbrace{\begin{bmatrix} \omega_{i} & -d_{i} \lfloor \omega_{i} \rfloor_{\wedge} N(\omega_{i}) \end{bmatrix}}_{A_{i}} \begin{bmatrix} \delta_{d_{i}} \\ \delta_{\omega_{i}} \end{bmatrix} \sim \mathcal{N}(0, \Sigma_{L_{p_{i}}}), \\ \Sigma_{L_{p_{i}}} &= A_{i} \begin{bmatrix} \Sigma_{d_{i}} & 0_{1\times 2} \\ 0_{2\times 1} & \Sigma_{\omega_{i}} \end{bmatrix} A_{i}^{T}. \\ \end{align*} \qquad (1) δLpiΣLpi=Ai [ωi−di⌊ωi⌋∧N(ωi)][δdiδωi]∼N(0,ΣLpi),=Ai[Σdi02×101×2Σωi]AiT.(1)
其中 N ( ω i ) = [ N 1 N 2 ] ∈ R 3 × 2 N(\omega_{i}) = \left[\begin{array}{ll} N_{1} & N_{2} \end{array}\right] \in \mathbb{R}^{3\times 2} N(ωi)=[N1N2]∈R3×2 是 ω i \omega_{i} ωi 的切平面上的正交基, ⌊ ⌋ ∧ \lfloor \rfloor_{\wedge} ⌊⌋∧ 表示斜对称矩阵映射叉积。方程(1)的详细推导可在[27]中找到。
图1:注册点的不确定性模型:(a) LiDAR测量不确定性模型,包括方向和深度测量不确定性;(b) 从(3)计算的点协方差 。
图2:平面法线的不确定性模型。
考虑到激光雷达点 L p i {}^{L} p_{i} Lpi 将通过估计的姿态 L W T ‾ = ( L W R , L W t ) ∈ S E ( 3 ) {}_{L}^{W}\overline{T}=\left({}_{L}^{W} R,{}_{L}^{W} t\right)\in S E(3) LWT=(LWR,LWt)∈SE(3) 进一步投影到世界坐标系中,如图1(a)所示,估计不确定性为 L ( Σ R , Σ t ) \left(\Sigma_{R},\Sigma_{t}\right) (ΣR,Σt),通过以下刚性变换
W p i = L W R L p i + L W t ( 2 ) {}^W{ p}_i={}_L^W{ R}^L{ p}_i+{}_L^W{}{ t}\qquad(2) Wpi=LWRLpi+LWt(2)
因此,激光雷达点 W p i {}^{W} p_{i} Wpi 的不确定性为
Σ W p i = L W R Σ L p i L W R T + L W R ⌊ L p i ⌋ ∧ Σ R ⌊ L p i ⌋ ∧ L T W R T + Σ t ( 3 ) \Sigma_{W_{p_{i}}}={}_{L}^{W} R\Sigma_{L_{p_{i}} L}{}^{W} R^{T}+{}_{L}^{W} R\left\lfloor{}^{L} p_{i}\right\rfloor_{\wedge}\Sigma_{R}\left\lfloor{}^{L} p_{i}\right\rfloor_{\wedge L}^{T W} R^{T}+\Sigma_{t}\qquad(3) ΣWpi=LWRΣLpiLWRT+LWR⌊Lpi⌋∧ΣR⌊Lpi⌋∧LTWRT+Σt(3)
其中 Σ R \Sigma_{R} ΣR 是 L W R {}_{L}^{W} R LWR 在切空间中的不确定性, Σ t \Sigma_{t} Σt 是 L W t {}_{L}^{W} t LWt 的不确定性。考虑到由于激光雷达测量和姿态估计引起的不确定性,不同位置的点云协方差有很大的差异:近距离的点的噪声主要由测距噪声主导,而远距离的点的噪声主要由方位噪声主导。单个激光雷达点的不确定性分析也是平面特征不确定性模型的基础。
2) 平面不确定性建模:
假设一个平面特征由一组激光雷达点 W p i ( i = 1 , … , N ) W_{p_{i}}(i=1,\ldots, N) Wpi(i=1,…,N) 组成,每个点由于测量噪声和姿态估计误差而具有不确定性 W Σ p i {}^{W}\Sigma_{p_{i}} WΣpi(如(3)所示)。将点的协方差矩阵表示为 A:
p ˉ = 1 N ∑ i = 1 N W p i ; A = 1 N ∑ i = 1 N ( W p i − p ˉ ) ( W p i − p ˉ ) T ; ( 4 ) \bar{p}=\frac{1}{N}\sum_{i=1}^NW_{p_i};\quad A=\frac{1}{N}\sum_{i=1}^N\left({}^W p_i-\bar{p}\right)\left({}^W p_i-\bar{p}\right)^T;\qquad(4) pˉ=N1i=1∑NWpi;A=N1i=1∑N(Wpi−pˉ)(Wpi−pˉ)T;(4)
然后,平面可以通过其法向量 n 表示,它是与 A 的最小特征值相关联的特征向量,点 q = p ˉ q=\bar{p} q=pˉ 位于此平面上。由于 A 和 p ‾ \overline{p} p 都依赖于 W p i {}^{W} p_{i} Wpi,我们可以将平面参数(n,q)表示为 W p i {}^{W} p_{i} Wpi 的函数,如下所示:
[ n , q ] T = f ( W p 1 , W p 2 , . . . , W p N ) . ( 5 ) [n,q]^{T}=f({}^{W}p_{1},{}^{W}p_{2},...,{}^{W}p_{N}).\qquad(5) [n,q]T=f(Wp1,Wp2,...,WpN).(5)
基于第 III-A1 节的不确定性分析,每个激光雷达点 W p i {}^{W} p_{i} Wpi 有一个噪声 δ w p i ∼ N ( 0 3 × 1 , Σ w p i ) \delta w_{p_{i}}\sim\mathcal{N}\left(0_{3\times 1},\Sigma w_{p_{i}}\right) δwpi∼N(03×1,Σwpi)。因此,真实法向量 n g t n^{gt} ngt 和真实位置 q g t q^{gt} qgt(即在现实世界中需要估计的真实值)为
[ n g t , q g t ] T = f ( W p 1 + δ w p 1 , W p 2 + δ w p 1 , . . . , W p N + δ w p N ) ≈ [ n , q ] T + ∑ i = 1 N ∂ f ∂ W p i δ w p i ( 6 ) \begin{align*} \left[n^{gt},q^{gt}\right]^{T} &= f({}^{W}p_{1}+\delta_{w_{p_{1}}},{}^{W}p_{2}+\delta_{w_{p_{1}}},...,{}^{W}p_{N}+\delta_{w_{p_{N}}}) \\ &\approx \left[n,q\right]^{T}+\sum_{i=1}^{N}\frac{\partial f}{\partial^{W}p_{i}}\delta_{w_{p_{i}}} \\ \end{align*}\qquad(6) [ngt,qgt]T=f(Wp1+δwp1,Wp2+δwp1,...,WpN+δwpN)≈[n,q]T+i=1∑N∂Wpi∂fδwpi(6)
∂ f ∂ W p i = [ ∂ n ∂ W p i , ∂ q ∂ W p i ] T \frac{\partial f}{\partial^{W}p_{i}}=\left[\frac{\partial n}{\partial^{W}p_{i}},\frac{\partial q}{\partial^{W}p_{i}}\right]^{T} ∂Wpi∂f=[∂Wpi∂n,∂Wpi∂q]T。假设 A 有特征向量 ∂ W p i \partial^{W} p_{i} ∂Wpi 矩阵 U ′ U^{\prime} U′,最小特征值 λ 3 \lambda_{3} λ3 和对应的特征向量 u 3 u_{3} u3,参考[28],我们可以对每个点 W p i {}^{W} p_{i} Wpi 的 n 和 q 求导如下:
∂ n ∂ W p i = U [ F 1 , 3 p i F 2 , 3 p i F 3 , 3 p i ] , F m , 3 p i = { ( W p i − q ) T N ( λ 3 − λ m ) ( u m n T + n u m T ) , m ≠ 3 , 0 1 × 3 , m = 3. \frac{\partial n}{\partial^{W}p_{i}}= U\begin{bmatrix}F_{1,3}^{p_{i}}\\ F_{2,3}^{p_{i}}\\ F_{3,3}^{p_{i}}\end{bmatrix}, F_{m,3}^{p_{i}}=\begin{cases}\frac{(^{W}p_{i}-q)^{T}}{N(\lambda_{3}-\lambda_{m})}(u_{m}n^{T}+n u_{m}^{T})&,m\neq 3,\\ &0_{1\times 3}&,m=3.\end{cases} ∂Wpi∂n=U F1,3piF2,3piF3,3pi ,Fm,3pi={N(λ3−λm)(Wpi−q)T(umnT+numT),m=3,01×3,m=3.
∂ q ∂ W p i = d i a g ( 1 N , 1 N , 1 N ) ( 7 ) \frac{\partial q}{\partial^{W}p_{i}}=diag\left(\frac{1}{N},\frac{1}{N},\frac{1}{N}\right)\qquad(7) ∂Wpi∂q=diag(N1,N1,N1)(7)
然后 n 和 q 的协方差矩阵 Σ n , q \Sigma_{n,q} Σn,q 为:
Σ n , q = ∑ i = 1 N ∂ f ∂ W p i Σ W p i ∂ f ∂ W p i T ( 8 ) \Sigma_{n,q}=\sum_{i=1}^{N}\frac{\partial f}{\partial^{W}p_{i}}\Sigma_{W_{p_{i}}}\frac{\partial f}{\partial^{W}p_{i}}^{T}\qquad(8) Σn,q=i=1∑N∂Wpi∂fΣWpi∂Wpi∂fT(8)
可以看出 n 和 q 不是独立的,因为它们是从同一组噪声点计算得出的。
B. 粗到细高效体素地图构建
在本节中,我们首先解释粗-细体素地图的动机,然后介绍构建和更新体素地图的方法。
1) 动机:
如图 3 所示,激光雷达点通常是顺序采样的,因此点云扫描总是从稀疏到密集累积,特别是在户外环境中,点分布在更大的空间中。当点云相对稀疏时,常见的基于 surfel 的细到粗映射方法通常只能获得非常少量的平面,限制了它们在高分辨率激光雷达和相对较低的扫描率(例如,10Hz)中的应用,以便累积足够数量的点。然而,这将需要补偿累积期间的运动。为了解决这个问题,我们提出了一种粗到细的体素映射方法,可以在点云稀疏时构建一个粗略的体素地图,并在接收到更多点时细化地图。
图4:法向量协方差矩阵的迹随着点数增加而收敛。
2) 体素地图构建:
为了实现从粗到细的体素地图构建,我们为每个哈希表条目构建了一个自适应体素地图,并为每个哈希条目构建了一个八叉树。更具体地说,我们首先将空间(在全局世界框架中)切割成体素,每个体素的大小为粗略地图分辨率。然后,对于定义世界框架的第一个激光雷达扫描,包含的点被分配到体素中。有点的体素被索引到一个哈希表中。然后,对于每个有点的体素,如果所有包含的点都位于一个平面上(点协方差矩阵的最小特征值小于指定的阈值),我们存储平面点并计算平面参数(n,q)如(5)所示,以及它们的不确定性 En,q 如(8)所示;否则,当前体素将分裂成八个八分体,并在每个八分体中重复平面检查和体素切割,直到达到最大层数。请注意,体素有不同的大小,每个体素包含一个从包含的激光雷达原始点拟合的平面特征。
3) 体素地图更新:
对于在线激光雷达里程计,新的激光雷达点云扫描持续到来,它们的姿态如第 III-D 节所述进行估计。然后使用估计的姿态将新点注册到全局地图中。当新点位于一个未被占用的体素中时,它将构建该体素。否则,当新点被添加到一个现有的体素时,体素中的平面参数和不确定性应该被更新。这将导致随着新点的持续接收而不断增长的处理时间。为了解决这个问题,我们发现平面参数的不确定性会迅速收敛,如图 4 所示,每个点的位置携带一个均值为零、方差为 0.1m² 的高斯噪声。可以看到,当点的数量达到 50 时,法向量的不确定性就收敛了。不确定性收敛后,我们丢弃所有历史点,保留估计的平面参数(n,q)和协方差 En,q。一旦有更多的新点到来,我们只保留最新的 10 个点,并计算由这 10 个点组成的新平面法向量。如果新的法向量和之前收敛的法向量继续出现较大的差异,我们假设地图的这个区域已经改变,需要按照第 III-B2 节进行重建。
C. 点到平面配准
本节详细说明如何将新LiDAR扫描中的点与体素地图匹配,以构建姿态估计和后续点云注册的约束。基于点和平面准确的不确定性建模,我们可以轻松实现点到平面的扫描匹配。给定在世界坐标系中具有姿态先验的LiDAR点 ,我们首先通过其哈希键找到它所在的根体素(具有粗略地图分辨率)。然后,所有包含的子体素会被轮询,以寻找与该点的可能匹配。假设一个子体素包含一个具有法向量 n i n_i ni 和中心 q i q_i qi 的平面,我们计算点到平面的距离:
d i = n i T ( W p i − q i ) ( 9 ) d_i = n_i^T \left( {}^W p_i - q_i \right) \quad(9) di=niT(Wpi−qi)(9)
如上所述,法向量 n i n_i ni、激光雷达点 W p i {}^W p_i Wpi 和中心 q i q_i qi 都具有不确定性。考虑到所有这些不确定性,我们得到:
d i = ( n i g t ⊞ δ n i ) T [ ( W p i g t + δ W p i ) − q i g t − δ q i ] ≈ n i g t T ( W p i g t − q i g t ) ⏟ o + J n i δ n i + J q i δ q i + J W p i δ W p i ⏟ w i \begin{align*} d_i &= (n_i^{g t} \boxplus \delta_{n_i})^T \left[ \left( {}^W p_i^{g t} + \delta_{W_{p_i}} \right) - q_i^{g t} - \delta_{q_i} \right] \\ &\approx \underbrace{n_i^{g t T} \left( {}^W p_i^{g t} - q_i^{g t} \right)}_{o} + \underbrace{J_{n_i} \delta_{n_i} + J_{q_i} \delta_{q_i} + J_{W_{p_i}} \delta_{W_{p_i}}}_{w_i} \end{align*} di=(nigt⊞δni)T[(Wpigt+δWpi)−qigt−δqi]≈o nigtT(Wpigt−qigt)+wi Jniδni+Jqiδqi+JWpiδWpi
这意味着
d i ∼ N ( 0 , Σ w i ) , Σ w i = J w i Σ n i , q i , W p i J w i T , ( 10 ) d_i \sim \mathcal{N} \left(0, \Sigma_{w_i} \right), \quad \Sigma_{w_i} = J_{w_i} \Sigma_{n_i, q_i, {}^W p_i} J_{w_i}^T, \qquad (10) di∼N(0,Σwi),Σwi=JwiΣni,qi,WpiJwiT,(10)
其中,
J w i = [ J n i , J q i , J W p i ] = [ ( W p i − q i ) T , − n i T , n i T ] Σ n i , q i , W p i = [ Σ n i , q i 0 0 Σ W p i ] . ( 11 ) \begin{align*} & J_{w_i} = \left[ J_{n_i}, J_{q_i}, J_{W_{p_i}} \right] = \left[ \left( {}^W p_i - q_i \right)^T, -n_i^T, n_i^T \right] \\ & \Sigma_{n_i, q_i, W_{p_i}} = \left[ \begin{array}{cc} \Sigma_{n_i, q_i} & 0 \\ 0 & \Sigma_{W_{p_i}} \end{array} \right]. \quad(11) \end{align*} Jwi=[Jni,Jqi,JWpi]=[(Wpi−qi)T,−niT,niT]Σni,qi,Wpi=[Σni,qi00ΣWpi].(11)
也就是说,如果点位于候选平面上,其距离 d i d_i di 应该服从 (10) 中的分布。因此,让分布的标准差为 σ = Σ w i \sigma = \sqrt{\Sigma_{w_i}} σ=Σwi,我们可以检查测量的点到平面距离是否落在 3 σ 3\sigma 3σ 之内。如果是,它被选为有效匹配。此外,如果一个点根据 3 σ 3\sigma 3σ 标准匹配了多个平面,将匹配概率最高的平面。如果没有平面通过 3 σ 3\sigma 3σ 测试,该点将被丢弃,以去除由体素量化引起的可能的误匹配。
D. 状态估计
我们基于迭代扩展卡尔曼滤波器构建了一个激光雷达(惯性)里程计系统,类似于 FAST-LIO2[13]。假设我们有一个具有协方差 P ^ k \widehat{P}_{k} P k 的状态估计先验 x ^ k \widehat{x}_{k} x k。这个先验可以从激光雷达里程计的恒定速度假设(实验 A 和 B)或激光雷达惯性里程计的 IMU 传播(实验 C)中获得。这个先验将与第 III-C 节中的点到平面距离匹配融合,形成一个最大后验概率(MAP)估计。具体来说,第 i 个有效的点到平面匹配导致观测方程
z i = h i ( x k ) + v i ( 12 ) z_i = h_i(x_k) + v_i \quad(12) zi=hi(xk)+vi(12)
其中 z i z_i zi 是方程 (9) 中的点到平面距离残差 d i d_i di, h i ( x k ) h_i(x_k) hi(xk) 是观测函数, v i ∼ ( 0 , R i ) v_i \sim (0, R_i) vi∼(0,Ri) 是观测噪声。将状态 x k x_k xk(即,传感器姿态 T k T_k Tk)代入 (9) 并在当前状态更新 x ‾ k \overline{x}_k xk 处线性化,我们得到:
z i = h i ( x k ) + v i = n i T ( W p i − q i ) = ( n i g t ⊞ δ n i ) T [ ( T k g t ⊞ δ T k ) ( L p i g t + δ L p i ) − q i g t − δ q i ] ≈ n i g t T ( T k g t L p i g t − q i g t ) ⏟ 0 + J T i δ T k ⏟ H i δ x k + J n i δ n i + J q i δ q i + J L p i δ L p i ⏟ v i \begin{align*} & z_i = h_i(x_k) + v_i = n_i^T \left( {}^W p_i - q_i \right) \\ &= \left( n_i^{g t} \boxplus \delta_{n_i} \right)^T \left[ \left( T_k^{g t} \boxplus \delta_{T_k} \right) \left( {}^L p_i^{g t} + \delta_{L_{p_i}} \right) - q_i^{g t} - \delta_{q_i} \right] \\ &\approx \underbrace{n_i^{g t^T} \left( T_k^{g t} L_{p_i^{g t}} - q_i^{g t} \right)}_{0} + \underbrace{J_{T_i} \delta_{T_k}}_{H_i \delta x_k} + \underbrace{J_{n_i} \delta_{n_i} + J_{q_i} \delta_{q_i} + J_{L_{p_i}} \delta_{L_{p_i}}}_{v_i} \end{align*} zi=hi(xk)+vi=niT(Wpi−qi)=(nigt⊞δni)T[(Tkgt⊞δTk)(Lpigt+δLpi)−qigt−δqi]≈0 nigtT(TkgtLpigt−qigt)+Hiδxk JTiδTk+vi Jniδni+Jqiδqi+JLpiδLpi
这意味着(13)
R i = J v i Σ n i , q i , L p i J v i T ( 13 ) R_i=J_{v_i}\Sigma_{n_i, q_i,{}^L p_i} J_{v_i}^T\quad(13) Ri=JviΣni,qi,LpiJviT(13)
其中
J v = [ J n i , J q i , J L p i ] = ( T k ′ p i − q i ) T , − n T , n T R k ] J_{v} = \left[J_{n_i}, J_{q_i}, J_{L_{p_i}}\right] = \left(T_k' p_i - q_i\right)^T, -n^T, n^T R_k] Jv=[Jni,Jqi,JLpi]=(Tk′pi−qi)T,−nT,nTRk]
Σ n i , q i , L p i = [ Σ n i , q i 0 0 Σ L p i ] \Sigma_{n_i, q_i, L_{p_i}} = \left[\begin{array}{cc} \Sigma_{n_i, q_i} & 0 \\ 0 & \Sigma_{L_{p_i}} \end{array}\right] Σni,qi,Lpi=[Σni,qi00ΣLpi]
最后,将状态先验与所有有效的测量结合,我们可以得到最大后验概率(MAP)估计:
min x k ( ∥ x k ⊟ x ^ k ∥ P ^ k 2 + ∑ i = 1 m ∥ d i − H i ⋅ ( x k ⊟ x ‾ k ) ∥ R i 2 ) ( 14 ) \min_{x_{k}}\left(\left\|x_{k}\boxminus\widehat{x}_{k}\right\|_{\widehat{P}_{k}}^{2}+\sum_{i=1}^{m}\left\|d_{i}-H_{i}\cdot\left(x_{k}\boxminus\overline{x}_{k}\right)\right\|_{R_{i}}^{2}\right)\quad(14) xkmin(∥xk⊟x k∥P k2+i=1∑m∥di−Hi⋅(xk⊟xk)∥Ri2)(14)
其中第一部分是状态先验,第二部分是测量观测。
四. 实验
在本节中,为了展示我们的映射方法在不同环境和激光雷达类型下的高精度、高效率和适应性,我们在三种不同的环境中对三种典型的激光雷达进行了实验(城市环境、室内环境和非结构化室外环境)。使用的激光雷达的详细信息如表 I 所示。在每次实验中,我们将我们的方法与最先进的对比方法进行比较。所有实验都在配备有 Intel i7-10700 @ 2.9 GHz、16 GB RAM 和 Nvidia GeForce GTX 730 与 2 GB RAM(如果使用 GPU)的台式计算机上进行。
传感器 | 类型 | 频率 | 扫描模式 | FoV |
---|---|---|---|---|
HDL-64E S2 | 机械式 | 10Hz | 重复式 | 360°×32° |
Realsense L515 | 固态 | 30Hz | 重复式 | 70°×55° |
Livox Avia | 固态 | 10Hz | 非重复式 | 70°× 77° |
表 I:不同类型的激光雷达
五. 结果
图5:序列00到10的轨迹。蓝色轨迹是我们方法获得的相机路径,红色轨迹是地面真实值。黑点表示起始点。
图6:在KITTI训练序列00中,我们自适应体素地图中的平面特征示意图。平面特征通过其不确定性(平面协方差矩阵的迹,见公式(8))着色。平面显示为一个圆盘,半径由公式(4)中定义的点协方差矩阵 𝐴 的最大特征值决定。