FAST-LIO:A Fast Robust LiDAR-inertial Odometry Package by Tightly-Coupled Iterated Kalman Filter论文翻译

2 篇文章 0 订阅

0 摘要

本文提出了一种计算高效且鲁棒的激光雷达惯性里程计框架。我们使用紧耦合的迭代扩展卡尔曼滤波(IEKF) 将激光雷达特征点与IMU数据融合,以便在可能会造成退化的快速运动、大量噪声或杂乱环境中进行稳健导航。为了在存在大量测量值的情况下降低计算量,我们提出了一个新的公式来计算卡尔曼增益。新公式的计算量取决于状态维数而不是测量维数。我们将所提出的方法进行了实现,并在各种室内外环境中进行了测试。在所有测试中,我们的方法都能够实时地产生可靠的导航结果:在四旋翼机载计算机上运行时,它在一次扫描中融合了1200多个有效特征点,并在25毫秒内完成一次IEKF步骤的所有迭代。我们的代码在Github上是开源的。开源地址为:https://github.com/hku-mars/FAST_LIO

I 引言

同时定位与建图(SLAM)是无人机(UAV)等移动机器人的基本前提。视觉(惯性)里程计(VO),如双目视觉里程计[1]和单目视觉里程计[2, 3]由于其重量轻且成本低,通常用于移动机器人。尽管提供了丰富的RGB信息,但视觉解决方案缺乏直接的深度测量,并且需要大量计算资源来重建三维环境以进行轨迹规划。此外,视觉方案对光照条件非常敏感。激光雷达(LiDAR)类传感器可以克服所有这些困难,但对于小型移动机器人来说成本太高(并且体积太大)。

固态激光雷达是近年来激光雷达发展的主要趋势,如基于MEMS扫描[4]和基于旋转棱镜[5]的激光雷达。这些激光雷达非常具有成本效益(成本接近全球快门相机),重量轻(可以由小型无人机携带),并且高性能(能够直接主动的进行远程的高精度三维测量)。这些特性使得此类激光雷达适用于无人机,特别是工业无人机,这些工业无人机需要获得精确的环境三维地图(如航空测绘)或者可能在具有严重照明变化的混乱环境中工作(如灾后搜索和检查)。

尽管固态激光雷达具有巨大的潜力,但它给SLAM带来了新的挑战:

  1. 激光雷达测量中的特征点通常是几何结构(例如环境中的边缘和平面)。当无人机在没有强特征的杂乱环境中工作时,基于激光雷达的解决方案很容易退化。当激光雷达具有小视场时,这个问题更加明显。
  2. 由于沿扫描方向的高分辨率,激光雷达扫描通常包含大量特征点(例如成千上万个)。虽然这些特征点并不足以可靠地确定在退化情况下的姿态,但将如此大量的特征点与IMU测量进行紧耦合需要巨大的计算资源,这是无人机机载计算机无法负担的。
  3. 由于激光雷达采样点是由几个激光探头和接收器依次发射和接收激光雷达进行采样的,所以一次扫描中的激光点总是在不同的时间被采样,这样会导致运动畸变,从而显著降低扫描配准[6]。无人机螺旋桨和马达的不断旋转也给IMU测量带来了显著的噪声。

为了使激光雷达导航能够适用于小型移动机器人(如无人机),我们提出了FAST-LIO,这是一个计算高效并且鲁棒的激光雷达惯性里程计功能包。更具体地说,我们的贡献如下:

  1. 为了应对可能会造成退化的快速运动、大量噪声或杂乱环境,我们采用紧耦合的迭代卡尔曼滤波IEKF将激光雷达特征点与IMU测量值融合。我们提出了一种正式的反向传播过程,以补偿运动畸变;
  2. 为了降低大量激光雷达特征点所带来的计算负载,我们提出了一个新的公式来计算卡尔曼增益,并证明了它与传统的卡尔曼增益计算公式等价。新公式的计算复杂度取决于状态维数而不是测量维数。
  3. 我们将我们的公式应用到一个快速而鲁棒的激光雷达惯性里程计软件包中。该系统能够在小型四旋翼机载计算机上运行。
  4. 我们在各种室内和室外环境中进行实验,并通过实际的无人机(如图1)飞行测试来验证系统在存在快速运动或强烈振动噪声时的鲁棒性。

在这里插入图片描述

接下来的文章组织如下:第二节中,我们讨论了相关的研究工作。在第三节中,我们将对整个系统的pipeline进行概述并介绍每个关键组件的详细信息。第四节介绍了实验。最后在第五节进行总结。

II 相关工作

关于激光雷达SLAM的现有工作非常多。在此,我们将回顾最相关的工作:激光雷达里程计和建图、松耦合和紧耦合激光雷达惯性融合方法。

A 激光雷达里程计和建图

Besl等人[6]提出了一种用于扫描配准的迭代最近点方法(ICP),为激光雷达里程计奠定了基础。ICP方法在稠密三维扫描中表现良好。然而,对于激光雷达测量的稀疏点云,ICP方法要求的精确点匹配很少存在。为了解决这个问题,Segal等人[7]提出了一种基于点到平面距离的广义ICP方法。然后,Zhang等人[8]将这种ICP方法与点到边缘距离相结合,开发了激光雷达里程计和建图框架(LOAM)。此后,基于LOAM出现了很多种改进方法,比如LeGO-LOAM[9]和LOAM- livox[10]。虽然这些方法在结构环境和大视场的激光雷达中表现很好,但它们非常容易受到缺少特征的环境或小视场激光雷达[10]的影响。

B 松耦合激光雷达惯导里程计

IMU测量通常用于减轻激光雷达在缺少特征的环境中退化的问题。松耦合激光雷达惯性里程计(LIO)方法通常分别处理激光雷达和IMU的测量结果,然后融合它们的结果。例如,使用IMU辅助的LOAM[8]将通过IMU测量值积分得到的位姿作为激光雷达扫描配准的初始估计。Zhen等人[11]使用误差状态EKF融合了IMU测量和激光雷达测量的高斯粒子滤波输出。Balazadegan等人[12]增加了imu重力模型来估计六自由度自我运动,以辅助激光雷达扫描配准。Zuo等人[13]使用多状态约束卡尔曼滤波(MSCKF)将扫描配准结果与IMU和视觉测量结果融合。松耦合方法的一个常见步骤是通过对一个新的扫描进行配准来获得位姿测量,然后将位姿测量与IMU测量融合。将扫描配准与数据融合分离,减少了计算负载。然而,它忽略了系统的其他状态(例如速度)和新扫描的位姿之间的相关性。此外,在缺少特征的环境下,扫描配准会在某些方向退化,导致后面步骤中不可靠的融合。

C 紧耦合激光雷达惯导里程计

与松散耦合的方法不同,紧耦合的激光雷达惯性里程计方法通常将激光雷达的原始特征点(而不是扫描配准结果)与IMU数据融合。紧耦合LIO主要有两种方法:基于优化的方法和基于滤波的方法。Geneva等人[14]利用IMU预积分约束[15]和激光雷达特征点的平面约束[16]进行图优化。最近,Ye等人[17]提出了LIOM功能包,该包使用了类似的图优化方法,但基于边缘和平面特征。对于基于滤波器的方法,Bry[18]使用高斯粒子滤波器(GPF)来融合IMU和平面2D激光雷达的数据。该方法也被用于波士顿动力Atlas类人机器人。由于粒子滤波的计算复杂度随着特征点个数和系统维数的增加而快速增长,卡尔曼滤波及其变种通常更受欢迎,比如扩展卡尔曼滤波[19]、无迹卡尔曼滤波[20]、迭代卡尔曼滤波[21]等。

我们的方法属于紧耦合方法。我们采用类似于[21]的迭代扩展卡尔曼滤波器来减小线性化误差。卡尔曼滤波器(及其变体)的时间复杂度为 O ( m 2 ) \mathcal{O}\left(m^{2}\right) O(m2),其中m为测量维数[22],这在处理大量激光雷达测量时可能导致非常高的计算负载。朴素的下采样将减少测量的数量,但以信息丢失为代价。类似[9],[21]通过提取和拟合的地面来减少测量的数量。然而,这并不适用于不总是在地上运行的航空应用。

III 方法论

A 框架概览

在这里插入图片描述

本文将使用表I中所示的符号。我们的工作流程概述如图2所示。激光雷达输入被送入特征提取模块,以获得平面和边缘特征。然后,将提取的特征和IMU测量值输入到我们的状态估计模块,以10Hz−50Hz的频率进行状态估计。然后,使用估计的姿势将特征点注册到全局帧,并将它们与从一开始构建的特征点地图进行合并。更新后的地图最终用于在下一步中注册更多的新点。

在这里插入图片描述

  • t k t_{k} tk:第 k k k 次 Lidar 扫描的结束时间
  • τ i \tau_{i} τi:一次 Lidar 扫描中的 IMU 第 i i i 次采样时间
  • ρ j \rho_{j} ρj:一次 Lidar 扫描中的 第 j j j 个特征点的采样时间
  • I i , I j , I k I_{i}, I_{j}, I_{k} Ii,Ij,Ik:分别表示在 τ i , ρ j \tau_{i},\rho_{j} τi,ρj t k t_{k} tk 时刻的 IMU 坐标系
  • L j , L k L_{j}, L_{k} Lj,Lk:分别表示 ρ j \rho_{j} ρj t k t_{k} tk 时刻的 Lidar 坐标系
  • x , x ^ , x ‾ \mathbf{x}, \widehat{\mathbf{x}}, \overline{\mathbf{x}} x,x ,x:分别表示系统状态的真值、传播值和更新值
  • x ~ \widetilde{\mathbf{x}} x :表示真值 x \mathbf{x} x 和估计值 x ‾ \overline{\mathbf{x}} x 之间的误差
  • x ^ κ \widehat{\mathbf{x}}^{\kappa} x κ:表示迭代卡尔曼滤波第 k k k 次更新的状态传播值
  • x i , x i , x k \mathbf{x}_{i}, \mathbf{x}_{i}, \mathbf{x}_{k} xi,xi,xk:表示在 τ i , ρ j \tau_{i},\rho_{j} τi,ρj t k t_{k} tk 时刻的系统状态
  • x ˇ j \check{\mathbf{x}}_{j} xˇj:表示在反向传播时,与 x k \mathbf{x}_{k} xk 相关的估计值 x j \mathbf{x}_{j} xj

B 系统描述

1) ⊞ / ⊟ \boxplus/\boxminus / 运算符:

M \mathcal{M} M n n n 维流形空间,比如: M = S O ( 3 ) \mathcal{M}=S O(3) M=SO(3)。由于流行在局部上和 R n \mathbb{R}^{n} Rn 是同胚(homeomorphic)的,我们可以通过两个封闭运算符 ⊞ \boxplus ⊟ \boxminus 来构建从 M \mathcal{M} M 的一个局部邻域到它的正切空间 R n \mathbb{R}^{n} Rn 之间的双向映射[23]:

⊞ : M × R n → M ; ⊟ : M × M → R n \boxplus: \mathcal{M} \times \mathbb{R}^{n} \rightarrow \mathcal{M}; \quad \boxminus: \mathcal{M} \times \mathcal{M} \rightarrow \mathbb{R}^{n} :M×RnM;:M×MRn

M = S O ( 3 ) : R ⊞ r = R Exp ⁡ ( r ) ; R 1 ⊟ R 2 = Log ⁡ ( R 2 T R 1 ) \mathcal{M}=S O(3): \mathbf{R} \boxplus \mathbf{r}=\mathbf{R} \operatorname{Exp}(\mathbf{r}) ; \quad \mathbf{R}_{1} \boxminus \mathbf{R}_{2}=\operatorname{Log}\left(\mathbf{R}_{2}^{\mathrm{T}} \mathbf{R}_{1}\right) M=SO(3):Rr=RExp(r);R1R2=Log(R2TR1)

M = R n : a ⊞ b = a + b ; a ⊟ b = a − b \mathcal{M}=\mathbb{R}^{n}: \quad \mathbf{a} \boxplus \mathbf{b}=\mathbf{a}+\mathbf{b} ; \quad \mathbf{a} \boxminus \mathbf{b}=\mathbf{a}-\mathbf{b} M=Rn:ab=a+b;ab=ab

其中, Exp ⁡ ( r ) = I + r ∥ r ∥ sin ⁡ ( ∥ r ∥ ) + r 2 ∥ r ∥ 2 ( 1 − cos ⁡ ( ∥ r ∥ ) ) \operatorname{Exp}(\mathbf{r})=\mathbf{I}+\frac{\mathbf{r}}{\|\mathbf{r}\|} \sin (\|\mathbf{r}\|)+\frac{\mathbf{r}^{2}}{\|\mathbf{r}\|^{2}}(1-\cos (\|\mathbf{r}\|)) Exp(r)=I+rrsin(r)+r2r2(1cos(r)) 是指数映射[23], Log ⁡ ( ⋅ ) \operatorname{Log}(\cdot) Log() 是其逆映射。对于复合流形: M = S O ( 3 ) × R n \mathcal{M}=S O(3) \times \mathbb{R}^{n} M=SO(3)×Rn,我们有:

[ R a ] ⊞ [ r b ] = [ R ⊞ r a + b ] ; [ R 1 a ] ⊟ [ R 2 b ] = [ R 1 ⊟ R 2 a − b ] \left[\begin{array}{c}\mathbf{R} \\\mathbf{a}\end{array}\right] \boxplus\left[\begin{array}{l}\mathbf{r} \\\mathbf{b}\end{array}\right]=\left[\begin{array}{c}\mathbf{R} \boxplus \mathbf{r} \\\mathbf{a}+\mathbf{b}\end{array}\right] ;\left[\begin{array}{c}\mathbf{R}_{1} \\\mathbf{a}\end{array}\right] \boxminus\left[\begin{array}{c}\mathbf{R}_{2} \\\mathbf{b}\end{array}\right]=\left[\begin{array}{c}\mathbf{R}_{1} \boxminus \mathbf{R}_{2} \\\mathbf{a}-\mathbf{b}\end{array}\right] [Ra][rb]=[Rra+b];[R1a][R2b]=[R1R2ab]

由上面的定义,我们很容易证明:

( x ⊞ u ) ⊟ x = u ; x ⊞ ( y ⊟ x ) = y ; ∀ x , y ∈ M , ∀ u ∈ R n (\mathbf{x} \boxplus \mathbf{u}) \boxminus \mathbf{x}=\mathbf{u} ; \mathbf{x} \boxplus(\mathbf{y} \boxminus \mathbf{x})=\mathbf{y} ; \forall \mathbf{x}, \mathbf{y} \in \mathcal{M}, \forall \mathbf{u} \in \mathbb{R}^{n} (xu)x=u;x(yx)=y;x,yM,uRn

2)连续模型:

假设IMU稳固的连接在了激光雷达上面,并且外参已知 I T L = ( I R L , I p L ) { }^{I} \mathbf{T}_{L}=\left({ }^{I} \mathbf{R}_{L},{ }^{I} \mathbf{p}_{L}\right) ITL=(IRL,IpL)。将 IMU 坐标系(记为 I I I )作为本体参考坐标系,从而可以推出动力学模型:

G p ˙ I = G v I , G v ˙ I = G R I ( a m − b a − n a ) + G g , G g ˙ = 0 G R ˙ I = G R I ⌊ ω m − b ω − n ω ⌋ ∧ , b ˙ ω = n b ω , b ˙ a = n b a (1) \begin{aligned}{ }^{G} \dot{\mathbf{p}}_{I} &={ }^{G} \mathbf{v}_{I},{ }^{G} \dot{\mathbf{v}}_{I}={ }^{G} \mathbf{R}_{I}\left(\mathbf{a}_{m}-\mathbf{b}_{\mathbf{a}}-\mathbf{n}_{\mathbf{a}}\right)+{ }^{G} \mathbf{g},{ }^{G} \dot{\mathbf{g}}=\mathbf{0} \\{ }^{G} \dot{\mathbf{R}}_{I} &={ }^{G} \mathbf{R}_{I}\left\lfloor\boldsymbol{\omega}_{m}-\mathbf{b}_{\boldsymbol{\omega}}-\mathbf{n}_{\boldsymbol{\omega}}\right\rfloor_\wedge, \dot{\mathbf{b}}_{\boldsymbol{\omega}}=\mathbf{n}_{\mathbf{b} \boldsymbol{\omega}}, \dot{\mathbf{b}}_{\mathbf{a}}=\mathbf{n}_{\mathbf{b a}}\end{aligned}\tag{1} Gp˙IGR˙I=GvI,Gv˙I=GRI(ambana)+Gg,Gg˙=0=GRIωmbωnω,b˙ω=nbω,b˙a=nba(1)

其中 G p I , G R I { }^{G} \mathbf{p}_{I},{ }^{G} \mathbf{R}_{I} GpI,GRI 分别表示 IMU 坐标系在世界坐标系下的位置和姿态(第一帧 IMU 坐标系表示世界坐标系,记为 G G G ), G g { }^{G} \mathbf{g} Gg 表示世界坐标系下未知的重力向量, a m \mathbf{a}_{m} am ω m \boldsymbol{\omega}_{m} ωm 分别表示 IMU 加速度计和陀螺仪的测量值, n a \mathbf{n}_{\mathbf{a}} na n ω \mathbf{n}_{\mathbf{\omega}} nω 表示IMU测量的白噪声, b a \mathbf{b}_{\mathbf{a}} ba b ω \mathbf{b}_{\mathbf{\omega}} bω 分别表示 IMU 加速度计和陀螺仪的偏置,分别建模为高斯白噪声 n b a \mathbf{n}_{\mathrm{b_a}} nba n b ω \mathbf{n}_{\mathrm{b_\omega}} nbω 的随机游走过程。叉乘运算符 ⌊ a ⌋ ∧ \lfloor\mathbf{a}\rfloor_{\wedge} a 表示为向量 a ∈ R 3 ‾ \mathbf{a} \in \mathbb{R}^{\overline{3}} aR3 的反对称矩阵。

3)离散模型:

基于运算符 ⊞ \boxplus ,我们可以使用零阶保持器(zero-order holder)将 IMU 采样周期 Δ t \Delta t Δt 内的连续模型离散化。离散模型表示为:

x i + 1 = x i ⊞ ( Δ t f ( x i , u i , w i ) ) (2) \mathbf{x}_{i+1}=\mathbf{x}_{i} \boxplus\left(\Delta t \mathbf{f}\left(\mathbf{x}_{i}, \mathbf{u}_{i}, \mathbf{w}_{i}\right)\right)\tag{2} xi+1=xi(Δtf(xi,ui,wi))(2)

其中, i i i 是 IMU 测量的索引,系统状态 x \mathbf{x} x 、输入 u \mathbf{u} u 和噪声项 w \mathbf{w} w 、函数 f \mathbf{f} f 定义如下:

M = S O ( 3 ) × R 15 , dim ⁡ ( M ) = 18 x ≐ [ G R I T G p I T G v I T b ω T b a T G g T ] T ∈ M u ≐ [ ω m T a m T ] T , w ≐ [ n ω T n a T n b ω T n b a T ] T f ( x i , u i , w i ) = [ ω m i − b ω i − n ω i G v I i G R I i ( a m i − b a i − n a i ) + G g i n b w i n b a i 0 3 × 1 ] (3) \begin{aligned}&\mathcal{M}=S O(3) \times \mathbb{R}^{15}, \operatorname{dim}(\mathcal{M})=18\\&\mathbf{x} \doteq\left[\begin{array}{cccccc}{ }^{G} \mathbf{R}_{I}^{T} & { }^{G} \mathbf{p}_{I}^{T} & { }^{G} \mathbf{v}_{I}^{T} & \mathbf{b}_{\boldsymbol{\omega}}^{T} & \mathbf{b}_{\mathbf{a}}^{T} & { }^{G} \mathbf{g}^{T}\end{array}\right]^{T} \in \mathcal{M}\\&\mathbf{u} \doteq\left[\begin{array}{ll}\boldsymbol{\omega}_{m}^{T} & \mathbf{a}_{m}^{T}\end{array}\right]^{T}, \mathbf{w} \doteq\left[\begin{array}{llll}\mathbf{n}_{\boldsymbol{\omega}}^{T} & \mathbf{n}_{\mathbf{a}}^{T} & \mathbf{n}_{\mathbf{b} \boldsymbol{\omega}}^{T} & \mathbf{n}_{\mathbf{b a}}^{T}\end{array}\right]^{T}\\&\mathbf{f}\left(\mathbf{x}_{i}, \mathbf{u}_{i}, \mathbf{w}_{i}\right)=\left[\begin{array}{c}\boldsymbol{\omega}_{m_{i}}-\mathbf{b}_{\boldsymbol{\omega}_{i}}-\mathbf{n}_{\boldsymbol{\omega}_{i}} \\{ }^{G} \mathbf{v}_{I_{i}} \\{ }^{G} \mathbf{R}_{I_{i}}\left(\mathbf{a}_{m_{i}}-\mathbf{b}_{\mathbf{a}_{i}}-\mathbf{n}_{\mathbf{a}_{i}}\right)+{ }^{G} \mathbf{g}_{i} \\\mathbf{n}_{\mathbf{b} \boldsymbol{w}_{i}} \\\mathbf{n}_{\mathbf{b a}_{i}} \\\mathbf{0}_{3 \times 1}\end{array}\right]\end{aligned}\tag{3} M=SO(3)×R15,dim(M)=18x[GRITGpITGvITbωTbaTGgT]TMu[ωmTamT]T,w[nωTnaTnbωTnbaT]Tf(xi,ui,wi)= ωmibωinωiGvIiGRIi(amibainai)+Gginbwinbai03×1 (3)

4)激光雷达点云预处理:

激光雷达点云测量包括其局部坐标系下的点云坐标。由于原始Lidar点的采样频率很高,所以不太可能对采样到的每个点都进行实时处理。在 FAST-LIO 中,设定了最小为20ms的数据采集间隔,即在一定时间内积累数据点,之后再一次性处理,这样使得状态估计(里程计输出)与地图更新最高可达 50Hz。这样一组累积的点被称为一次扫描,这些点的处理时间记为 t k t_k tk(如图2(b))。

假设特征点的数量为 m m m ,每个特征点的采样时间记为 ρ j \rho_{j} ρj ρ j ∈ ( t k − 1 , t k ] \rho_{j} \in\left(t_{k-1}, t_{k}\right] ρj(tk1,tk] 。特征点记为 L j p f j { }^{L_{j}} \mathbf{p}_{f_{j}} Ljpfj,其中 L j L_j Lj 表示 ρ j \rho_{j} ρj 时刻的Lidar局部坐标系。在一次Lidar扫描中,会有多个IMU测量,每个IMU测量的采样时间记为 τ i ∈ [ t k − 1 , t k ] \tau_{i} \in\left[t_{k-1}, t_{k}\right] τi[tk1,tk] ,每个IMU测量对应公式(2)中的一个系统状态 x i \mathbf{x}_{i} xi

需要注意的是,最后一个Lidar特征点在一次Lidar扫描的最后时刻采样,即 ρ m = t k \rho_{m}=t_{k} ρm=tk;但是IMU测量的时间不一定与一次Lidar扫描的开始或结束时间对齐。

C 状态估计

我们使用迭代扩展卡尔曼滤波IEKF进行状态方程(2)中的状态估计。此外我们在[23, 24]中表征了状态估计的切线空间中的估计协方差。

假设上一次激光雷达扫描在 t k − 1 t_{k-1} tk1 时刻优化后的状态估计是 x ‾ k − 1 \overline{\mathbf{x}}_{k-1} xk1,协方差矩阵为 P ‾ k − 1 \overline{\mathbf{P}}_{k-1} Pk1。然后 P ‾ k − 1 \overline{\mathbf{P}}_{k-1} Pk1 表示下面定义的随机误差状态向量的协方差:

x ~ k − 1 ≐ x k − 1 ⊟ x ‾ k − 1 = [ δ θ T G p ~ I T G v ~ I T b ~ ω T b ~ a T G g ~ T ] T \widetilde{\mathbf{x}}_{k-1} \doteq \mathbf{x}_{k-1} \boxminus \overline{\mathbf{x}}_{k-1}=\left[\begin{array}{llllll}\delta \boldsymbol{\theta}^{T} & { }^{G} \widetilde{\mathbf{p}}_{I}^{T} & G \widetilde{\mathbf{v}}_{I}^{T} & \widetilde{\mathbf{b}}_{\boldsymbol{\omega}}^{T} & \widetilde{\mathbf{b}}_{\mathbf{a}}^{T} & { }^{G} \widetilde{\mathbf{g}}^{T}\end{array}\right]^{T} x k1xk1xk1=[δθTGp ITGv ITb ωTb aTGg T]T

其中 δ θ = log ⁡ ( G R ‾ I T G R I ) \delta \boldsymbol{\theta}=\log \left({ }^{G} \overline{\mathbf{R}}_{I}^{T G} \mathbf{R}_{I}\right) δθ=log(GRITGRI) 是姿态误差,剩下的都是标准加法误差(比如,状态 x \mathbf{x} x 的估计值 x ‾ \overline{\mathbf{x} } x 的误差为 x ~ = x − x ‾ \widetilde{\mathbf{x}}=\mathbf{x}-\overline{\mathbf{x}} x =xx)。直观上,姿态误差 δ θ \delta \boldsymbol{\theta} δθ 描述了真实姿态和估计姿态之间的(微小)偏离。此处误差定义的主要优点是,它允许我们通过 3 × 3 3 \times 3 3×3 协方差矩阵 E { δ θ δ θ T } \mathbb{E}\{\delta \boldsymbol{\theta} \delta \boldsymbol{\theta}^{T}\} E{δθδθT} 来表示姿态的不确定性。由于姿态具有3个自由度,因此这是一个最小的表示。

1)前向传播:

一旦接收到IMU输入,就进行前向传播(如图2(b))。更具体的,状态传播按照公式(2)进行,并且将过程噪声 w i \mathbf{w}_{i} wi 设为0:

x ^ i + 1 = x ^ i ⊞ ( Δ t f ( x ^ i , u i , 0 ) ) ; x ^ 0 = x ‾ k − 1 (4) \widehat{\mathbf{x}}_{i+1}=\widehat{\mathbf{x}}_{i} \boxplus\left(\Delta t \mathbf{f}\left(\widehat{\mathbf{x}}_{i}, \mathbf{u}_{i}, \mathbf{0}\right)\right) ; \widehat{\mathbf{x}}_{0}=\overline{\mathbf{x}}_{k-1}\tag{4} x i+1=x i(Δtf(x i,ui,0));x 0=xk1(4)

其中, Δ t = τ i + 1 − τ i \Delta t=\tau_{i+1}-\tau_{i} Δt=τi+1τi。为了传播协方差,我们使用以下误差状态的动力学模型:

x ~ i + 1 = x i + 1 ⊟ x ^ i + 1 = ( x i ⊞ Δ t f ( x i , u i , w i ) ) ⊟ ( x ^ i ⊞ Δ t f ( x ^ i , u i , 0 ) ) ≃ F x ~ x ~ i + F w w i . (5) \begin{aligned}\widetilde{\mathbf{x}}_{i+1} &=\mathbf{x}_{i+1} \boxminus \widehat{\mathbf{x}}_{i+1} \\&=\left(\mathbf{x}_{i} \boxplus \Delta t \mathbf{f}\left(\mathbf{x}_{i}, \mathbf{u}_{i}, \mathbf{w}_{i}\right)\right) \boxminus\left(\widehat{\mathbf{x}}_{i} \boxplus \Delta t \mathbf{f}\left(\widehat{\mathbf{x}}_{i}, \mathbf{u}_{i}, \mathbf{0}\right)\right) \\& \stackrel{}{\simeq} \mathbf{F}_{\widetilde{\mathbf{x}}} \widetilde{\mathbf{x}}_{i}+\mathbf{F}_{\mathbf{w}} \mathbf{w}_{i} .\end{aligned}\tag{5} x i+1=xi+1x i+1=(xiΔtf(xi,ui,wi))(x iΔtf(x i,ui,0))Fx x i+Fwwi.(5)

上式的推导参考附录A。推导结果在公式(7)中,其中,类似于 [25], ω ^ i = ω m i − b ω i \widehat{\boldsymbol{\omega}}_{i}=\boldsymbol{\omega}_{m_{i}}-\mathbf{b}_{\boldsymbol{\omega}_{i}} ω i=ωmibωi a ^ i = a m i − b ^ a i \widehat{\mathbf{a}}_{i}=\mathbf{a}_{m_{i}}-\widehat{\mathbf{b}}_{\mathbf{a}_{i}} a i=amib ai 以及 A ( u ) − 1 \mathbf{A}(\mathbf{u})^{-1} A(u)1 定义如下:

A ( u ) − 1 = I − 1 2 ⌊ u ⌋ ∧ + ( 1 − α ( ∥ u ∥ ) ) u 2 ∥ u ∥ 2 α ( m ) = m 2 cot ⁡ ( m 2 ) = m 2 cos ⁡ ( m / 2 ) sin ⁡ ( m / 2 ) (6) \begin{aligned}\mathbf{A}(\mathbf{u})^{-1} &=\mathbf{I}-\frac{1}{2}\lfloor\mathbf{u}\rfloor_{\wedge}+(1-\boldsymbol{\alpha}(\|\mathbf{u}\|)) \frac{\mathbf{u}^{2}}{\|\mathbf{u}\|^{2}} \\\alpha(\mathrm{m}) &=\frac{\mathrm{m}}{2} \cot \left(\frac{\mathrm{m}}{2}\right)=\frac{\mathrm{m}}{2} \frac{\cos (\mathrm{m} / 2)}{\sin (\mathrm{m} / 2)}\end{aligned}\tag{6} A(u)1α(m)=I21u+(1α(u))u2u2=2mcot(2m)=2msin(m/2)cos(m/2)(6)

F x ~ = [ Exp ⁡ ( − ω ^ i Δ t ) 0 0 − A ( ω ^ i Δ t ) T Δ t 0 0 0 I I Δ t 0 0 0 − G R ^ I i ⌊ a ^ i ⌋ ∧ Δ t 0 I 0 − G R ^ I i Δ t I Δ t 0 0 0 I 0 0 0 0 0 0 I 0 0 0 0 0 0 I ] , F w = [ − A ( ω ^ i Δ t ) T Δ t 0 0 0 0 0 0 0 0 − G R ^ I i Δ t 0 0 0 0 I Δ t 0 0 0 0 I Δ t 0 0 0 0 ] (7) \mathbf{F}_{\widetilde{\mathbf{x}}}=\left[\begin{array}{cccccc}\operatorname{Exp}\left(-\widehat{\boldsymbol{\omega}}_{i} \Delta t\right) & \mathbf{0} & \mathbf{0} & -\mathbf{A}\left(\widehat{\boldsymbol{\omega}}_{i} \Delta t\right)^{T} \Delta t & \mathbf{0} & \mathbf{0} \\\mathbf{0} & \mathbf{I} & \mathbf{I} \Delta t & \mathbf{0} & \mathbf{0} & \mathbf{0} \\-{ }^{G} \widehat{\mathbf{R}}_{I_{i}} \left\lfloor \widehat{\mathbf{a}}_{i}\right\rfloor_\wedge \Delta t & \mathbf{0} & \mathbf{I} & \mathbf{0} & -{ }^{G} \widehat{\mathbf{R}}_{I_{i}} \Delta t & \mathbf{I} \Delta t \\\mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{I} & \mathbf{0} & \mathbf{0} \\\mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{I} & \mathbf{0} \\\mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{I}\end{array}\right], \\\mathbf{F}_{\mathbf{w}}=\left[\begin{array}{ccccc}-\mathbf{A}\left(\widehat{\boldsymbol{\omega}}_{i} \Delta t\right)^{T} \Delta t & \mathbf{0} & \mathbf{0} & \mathbf{0} \\\mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{0} \\\mathbf{0} & -{ }^{G} \widehat{\mathbf{R}}_{I_{i}} \Delta t & \mathbf{0} & \mathbf{0} \\\mathbf{0} & \mathbf{0} & \mathbf{I} \Delta t & \mathbf{0} \\\mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{I} \Delta t \\\mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{0}\end{array}\right]\tag{7} Fx = Exp(ω iΔt)0GR Iia iΔt0000I00000IΔtI000A(ω iΔt)TΔt00I0000GR IiΔt0I000IΔt00I ,Fw= A(ω iΔt)TΔt0000000GR IiΔt000000IΔt000000IΔt0 (7)

记白噪声 w \mathbf{w} w 的协方差为 Q \mathbf{Q} Q ,然后传播的协方差 P ^ i \widehat{\mathbf{P}}_{i} P i 可以通过下面式子进行迭代计算:

P ^ i + 1 = F x ~ P ^ i F x ~ T + F w Q F w T ; P ^ 0 = P ‾ k − 1 (8) \widehat{\mathbf{P}}_{i+1}=\mathbf{F}_{\widetilde{\mathbf{x}}} \widehat{\mathbf{P}}_{i} \mathbf{F}_{\widetilde{\mathbf{x}}}^{T}+\mathbf{F}_{\mathbf{w}} \mathbf{Q} \mathbf{F}_{\mathbf{w}}^{T} ; \widehat{\mathbf{P}}_{0}=\overline{\mathbf{P}}_{k-1}\tag{8} P i+1=Fx P iFx T+FwQFwT;P 0=Pk1(8)

前向传播一直持续到一个新扫描帧的结束时间 t k t_{k} tk ,此时所传播的状态和协方差分别表示为 x ^ k , P ^ k \widehat{\mathbf{x}}_{k}, \widehat{\mathbf{P}}_{k} x k,P k。然后, P ^ k \widehat{\mathbf{P}}_{k} P k 表示系统状态的真值 x k \mathbf{x}_k xk 和传播值 x ^ k \widehat{\mathbf{x}}_k x k 之间的误差 x ~ k \widetilde{\mathbf{x}}_k x k x ~ k = x k ⊟ x ^ k \widetilde{\mathbf{x}}_k = \mathbf{x}_{k} \boxminus \widehat{\mathbf{x}}_{k} x k=xkx k)的协方差。

2)反向传播和运动补偿:

当点的积累时间间隔到达 t k t_{k} tk ,应将新扫描的特征点与传播的状态 x ^ k \widehat{\mathbf{x}}_{k} x k 和协方差 P ^ k \widehat{\mathbf{P}}_{k} P k 融合,以形成最优的状态更新。但是,尽管新扫描是在时间 t k t_{k} tk 时,但特征点在其各自的采样时间 ρ j ≤ t k \rho_{j} \leq t_{k} ρjtk 时被测量(请参阅第III-B.4和图2(b)),导致在本体参考坐标系中的不匹配。

为了补偿时间 ρ j \rho_{j} ρj 和时间 t k t_{k} tk 之间的相对运动(即运动畸变),我们对公式(2)进行反向传播 x ˇ j − 1 = x ˇ j ⊞ ( − Δ t f ( x ˇ j , u j , 0 ) ) \check{\mathbf{x}}_{j-1}=\check{\mathbf{x}}_{j} \boxplus\left(-\Delta t \mathbf{f}\left(\check{\mathbf{x}}_{j}, \mathbf{u}_{j}, \mathbf{0}\right)\right) xˇj1=xˇj(Δtf(xˇj,uj,0)),我们以 x ^ k \widehat{\mathbf{x}}_{k} x k 为零时刻的位姿和静止状态(比如速度和偏置)出发进行反向传播。反向传播以特征点的频率进行,通常比IMU频率高得多。对于在两个IMU测量之间采样的所有特征点,我们将左侧IMU测量用于反向传播中的输入。此外,注意到公式(3)中 f ( x j , u j , 0 ) \mathbf{f}\left(\mathbf{x}_{j}, \mathbf{u}_{j}, \mathbf{0}\right) f(xj,uj,0) 的最后三个块元素(分别对应于陀螺仪偏置,加速度计偏置和外参)为零,可以将反向传播简化为:

I k p ˇ I j − 1 = I k p ˇ I j − I k v ˇ I j Δ t ,  s.f.  I k p ˇ I m = 0 ;  I k v ˇ I j − 1 = I k v ˇ I j − I k R ˇ I j ( a m i − 1 − b ^ a k ) Δ t − I k g ^ k Δ t ,   s.f.  I k v ˇ I m = G R ^ I k T G v ^ I k , I k g ^ k = G R ^ I k T G g ^ k ;  I k R ˇ I j − 1 = I k R ˇ I j Exp ⁡ ( ( b ^ ω k − ω m i − 1 ) Δ t ) , s.f.  I k R I m = I .  (9) \begin{aligned}&{ }^{I_{k}} \check{\mathbf{p}}_{I_{j-1}}={ }^{I_{k}} \check{\mathbf{p}}_{I_{j}}-{ }^{I_{k}} \check{\mathbf{v}}_{I_{j}} \Delta t, \quad \text { s.f. }{ }^{I_{k}} \check{\mathbf{p}}_{I_{m}}=\mathbf{0} \text {; }\\&{ }^{I_{k}} \check{\mathbf{v}}_{I_{j-1}}={ }^{I_{k}} \check{\mathbf{v}}_{I_{j}}-{ }^{I_{k}} \check{\mathbf{R}}_{I_{j}}\left(\mathbf{a}_{m_{i-1}}-\widehat{\mathbf{b}}_{\mathbf{a}_{k}}\right) \Delta t-{ }^{I_{k}} \widehat{\mathbf{g}}_{k} \Delta t \text {, }\\&\text { s.f. }{ }^{I_{k}} \check{\mathbf{v}}_{I_{m}}={ }^{G} \widehat{\mathbf{R}}_{I_{k}}^{T}{ }^{G} \widehat{\mathbf{v}}_{I_{k}},{ }^{I_{k}} \widehat{\mathbf{g}}_{k}={ }^{G} \widehat{\mathbf{R}}_{I_{k}}^{T} {}^G \widehat{\mathbf{g}}_{k} \text {; }\\&{ }^{I_{k}} \check{\mathbf{R}}_{I_{j-1}}={ }^{I_{k}} \check{\mathbf{R}}_{I_{j}} \operatorname{Exp}\left(\left(\widehat{\mathbf{b}}_{\boldsymbol{\omega}_{k}}-\boldsymbol{\omega}_{m_{i-1}}\right) \Delta t\right) \text {, s.f. }{ }^{I_{k}} \mathbf{R}_{I_{m}}=\mathbf{I} \text {. }\end{aligned}\tag{9} IkpˇIj1=IkpˇIjIkvˇIjΔt, s.f. IkpˇIm=0IkvˇIj1=IkvˇIjIkRˇIj(ami1b ak)ΔtIkg kΔt s.f. IkvˇIm=GR IkTGv Ik,Ikg k=GR IkTGg kIkRˇIj1=IkRˇIjExp((b ωkωmi1)Δt), s.f. IkRIm=I(9)

其中, ρ j − 1 ∈ [ τ i − 1 , τ i ) , Δ t = ρ j − ρ j − 1 \rho_{j-1} \in\left[\tau_{i-1}, \tau_{i}\right), \Delta t=\rho_{j}-\rho_{j-1} ρj1[τi1,τi),Δt=ρjρj1 s . f s . f s.f 表示从 … 开始。

反向传播将在时间 ρ j \rho_{j} ρj 和一次扫描的结束时间 t k t_{k} tk 之间产生相对位姿 I k T ˇ I j = ( I k R ˇ I j , I k p ˇ I j ) {}^{I_{k}} \check{\mathbf{T}}_{I_{j}}=\left({ }^{I_{k}} \check{\mathbf{R}}_{I_{j}},{ }^{I_{k}} \check{\mathbf{p}}_{I_{j}}\right) IkTˇIj=(IkRˇIj,IkpˇIj)。该相对位姿使我们能够将局部测量 L j p f j { }^{L_{j}} \mathbf{p}_{f_{j}} Ljpfj 投影到扫描结束时刻的测量 L k p f j { }^{L_{k}} \mathbf{p}_{f_{j}} Lkpfj 上(见图2),即:

L k p f j = I T L − 1 I k T ˇ I j I T L L j p f j (10) { }^{L_{k}} \mathbf{p}_{f_{j}}={ }^{I} \mathbf{T}_{L}^{-1 I_{k}} \check{\mathbf{T}}_{I_{j}}{ }^{I} \mathbf{T}_{L} {}^{L_{j}} \mathbf{p}_{f_{j}}\tag{10} Lkpfj=ITL1IkTˇIjITLLjpfj(10)

其中, I T L { }^{I} \mathbf{T}_{L} ITL 是激光雷达和IMU之间的已知的外参。然后,投影点 L k p f j { }^{L_{k}} \mathbf{p}_{f_{j}} Lkpfj 用于在下面的部分中构建残差。

3)残差计算:

通过公式(10)中的运动补偿,我们可以在同一时刻 t k t_k tk 查看一次扫描中的所有特征点 { L k p f j } \left\{{ }^{L_{k}} \mathbf{p}_{f_{j}}\right\} {Lkpfj} ,并使用它来构造残差。假设迭代卡尔曼滤波器的当前迭代为 κ {\kappa} κ,相应的状态估计为 x ^ k κ \widehat{\mathbf{x}}_{k}^{\kappa} x kκ。当 κ = 0 {\kappa} = 0 κ=0 x ^ k κ = x ^ k \widehat{\mathbf{x}}_{k}^{\kappa} = \widehat{\mathbf{x}}_{k} x kκ=x k 时,此时状态为公式(4)中传播完成的预测状态。然后,特征点 { L k p f j } \left\{{ }^{L_{k}} \mathbf{p}_{f_{j}}\right\} {Lkpfj} 可以变换到世界坐标系下,如下所示:

G p ^ f j κ = G T ^ I k κ I T L L k p f j ; j = 1 , ⋯   , m (11) {}^G \widehat{\mathbf{p}}_{f_{j}}^{\kappa}={}^G \widehat{\mathbf{T}}_{I_{k}}^{\kappa} {}^I \mathbf{T}_{L}{}^{L_{k}} \mathbf{p}_{f_{j}} ; j=1, \cdots, m \tag{11} Gp fjκ=GT IkκITLLkpfj;j=1,,m(11)

对于每一个激光雷达特征点,找到地图中该点附近的特征点所定义的最近的平面或边缘,并假设所找到的平面或者是边缘为该点真正所属的位置。也就是说,残差定义为特征点在世界坐标系中被估计的坐标 G p ^ f j κ {}^G \widehat{\mathbf{p}}_{f_{j}}^{\kappa} Gp fjκ 与地图中最近的平面(或边缘)之间的距离。记 u j \mathbf{u}_j uj 为相应平面(或边缘)的法向量(或边缘朝向),其中 G q j { }^{G} \mathbf{q}_{j} Gqj 为相应平面(或边缘)伤的一个点,则残差 z j κ \mathbf{z}_{j}^{\kappa} zjκ 可以通过以下公式计算:

z j κ = G j ( G p ^ f j κ − G q j ) (12) \mathbf{z}_{j}^{\kappa}=\mathbf{G}_{j}\left({ }^{G} \widehat{\mathbf{p}}_{f_{j}}^{\kappa}-{ }^{G} \mathbf{q}_{j}\right) \tag{12} zjκ=Gj(Gp fjκGqj)(12)

其中,如果 G j = u j T \mathbf{G}_{j}=\mathbf{u}_{j}^{T} Gj=ujT 则表示平面特征, G j = ⌊ u j ⌋ ∧ \mathbf{G}_{j}=\left\lfloor\mathbf{u}_{j}\right\rfloor_\wedge Gj=uj 则表示边缘特征。 u j \mathbf{u}_j uj 的计算和地图中附近点的查找(这些点用于定义相应的平面或边缘)是通过在当前最新的地图中构建点的Kd-Tree来实现的[10]。此外,我们仅考虑范数低于一定阈值(例如0.5m)的残差。超过此阈值的残差对应的点被认为是离群点或者是新观察到的点。

4)迭代状态更新:

为了将由公式(12)中计算出来的残差 z j κ \mathbf{z}_{j}^{\kappa} zjκ 与从IMU数据中传播得到的状态预测 x ^ k \widehat{\mathbf{x}}_k x k 和协方差 P ^ k \widehat{\mathbf{P}}_{k} P k 进行融合,我们需要对将残差 z j κ \mathbf{z}_{j}^{\kappa} zjκ 与状态的真值 x k \mathbf{x}_k xk 联系来的测量模型进行线性化,以及对测量噪声进行线性化。测量噪声来源于激光雷达测量点 L j p f j { }^{L_{j}} \mathbf{p}_{f_{j}} Ljpfj 时的探测和光束方向噪声 L j n f j {}^{L_{j}} \mathbf{n}_{f_{j}} Ljnfj。由点的测量值 L j p f j { }^{L_{j}} \mathbf{p}_{f_{j}} Ljpfj 减去噪声可以得到点的位置的真值:

L j p f j g t = L j p f j − L j n f j (13) {}^{L_{j}}\mathbf{p}_{f_{j}}^{\mathrm{gt}}={ }^{L_{j}} \mathbf{p}_{f_{j}}-{ }^{L_{j}} \mathbf{n}_{f_{j}}\tag{13} Ljpfjgt=LjpfjLjnfj(13)

真值点通过公式(10)投影到坐标系 L k L_k Lk 之后,就可以通过状态真值 x k \mathbf{x}_k xk(比如位姿)投影到世界坐标系下。投影之后的真值点应完全位于地图中的平面(或边缘)上。也就是说,将公式(13)代入到公式(10)中,然后再代入公式(11)中,然后再进一步进入(12)中,应该为零。也就是:

0 = h j ( x k , L j n f j ) = G j ( G T I k I k T ˇ I j I T L ( L j p f j − L j n f j ) − G q j ) \mathbf{0}=\mathbf{h}_{j}\left(\mathbf{x}_{k},{ }^{L_{j}} \mathbf{n}_{f_{j}}\right)=\mathbf{G}_{j}\left({ }^{G} \mathbf{T}_{I_{k}}{ }^{I_{k}} \check{\mathbf{T}}_{I_{j}}{ }^{I} \mathbf{T}_{L}\left({ }^{L_{j}} \mathbf{p}_{f_{j}}-{ }^{L_{j}} \mathbf{n}_{f_{j}}\right)-{ }^{G} \mathbf{q}_{j}\right) 0=hj(xk,Ljnfj)=Gj(GTIkIkTˇIjITL(LjpfjLjnfj)Gqj)

通过在 x ^ k κ \widehat{\mathbf{x}}_{k}^{\kappa} x kκ 处上述方程式进行一阶近似有:

0 = h j ( x k , L j n f j ) ≃ h j ( x ^ k κ , 0 ) + H j κ x ~ k κ + v j = z j κ + H j κ x ~ k κ + v j (14) \begin{aligned}\mathbf{0} &=\mathbf{h}_{j}\left(\mathbf{x}_{k},{ }^{L_{j}} \mathbf{n}_{f_{j}}\right) \simeq \mathbf{h}_{j}\left(\widehat{\mathbf{x}}_{k}^{\kappa}, \mathbf{0}\right)+\mathbf{H}_{j}^{\kappa} \widetilde{\mathbf{x}}_{k}^{\kappa}+\mathbf{v}_{j} \\&=\mathbf{z}_{j}^{\kappa}+\mathbf{H}_{j}^{\kappa} \widetilde{\mathbf{x}}_{k}^{\kappa}+\mathbf{v}_{j}\end{aligned}\tag{14} 0=hj(xk,Ljnfj)hj(x kκ,0)+Hjκx kκ+vj=zjκ+Hjκx kκ+vj(14)

其中 x ~ k κ = x k ⊟ x ^ k κ \widetilde{\mathbf{x}}_{k}^{\kappa}=\mathbf{x}_{k} \boxminus \widehat{\mathbf{x}}_{k}^{\kappa} x kκ=xkx kκ (或者 x k = x ^ k κ ⊞ x ~ k κ \mathbf{x}_{k}=\widehat{\mathbf{x}}_{k}^{\kappa} \boxplus \widetilde{\mathbf{x}}_{k}^{\kappa} xk=x kκx kκ), H j κ \mathbf{H}_{j}^{\kappa} Hjκ h j ( x ^ k κ ⊞ x ~ k κ , L j n f j ) \mathbf{h}_{j}\left(\widehat{\mathbf{x}}_{k}^{\kappa} \boxplus \widetilde{\mathbf{x}}_{k}^{\kappa},{ }^{L_{j}} \mathbf{n}_{f_{j}}\right) hj(x kκx kκ,Ljnfj) 关于 x ~ k κ \widetilde{\mathbf{x}}_{k}^{\kappa} x kκ 在值为0时的雅可比矩阵, v j ∈ N ( 0 , R j ) \mathbf{v}_{j} \in \mathcal{N}\left(\mathbf{0}, \mathbf{R}_{j}\right) vjN(0,Rj) 来自于原始测量噪声 L j n f j {}^{L_{j}} \mathbf{n}_{f_{j}} Ljnfj

注意到在第 III-C.1节中通过前向传播获得的 x k \mathbf{x}_{k} xk 的先验分布用于下式:

x k ⊟ x ^ k = ( x ^ k κ ⊞ x ~ k κ ) ⊟ x ^ k = x ^ k κ ⊟ x ^ k + J κ x ~ k κ (15) \mathbf{x}_{k} \boxminus \widehat{\mathbf{x}}_{k}=\left(\widehat{\mathbf{x}}_{k}^{\kappa} \boxplus \widetilde{\mathbf{x}}_{k}^{\kappa}\right) \boxminus \widehat{\mathbf{x}}_{k}=\widehat{\mathbf{x}}_{k}^{\kappa} \boxminus \widehat{\mathbf{x}}_{k}+\mathbf{J}^{\kappa} \widetilde{\mathbf{x}}_{k}^{\kappa}\tag{15} xkx k=(x kκx kκ)x k=x kκx k+Jκx kκ(15)

其中 J κ \mathbf{J}^{\kappa} Jκ ( x ^ k κ ⊞ x ~ k κ ) ⊟ x ^ k \left(\widehat{\mathbf{x}}_{k}^{\kappa} \boxplus \widetilde{\mathbf{x}}_{k}^{\kappa}\right) \boxminus \widehat{\mathbf{x}}_{k} (x kκx kκ)x k 关于 x ~ k κ \widetilde{\mathbf{x}}_{k}^{\kappa} x kκ 在值为0的偏导数:

J κ = [ A ( G R ^ I k κ ⊟ G R ^ I k ) − T 0 3 × 15 0 15 × 3 I 15 × 15 ] (16) \mathbf{J}^{\kappa}=\left[\begin{array}{cc}\mathbf{A}\left({ }^{G} \widehat{\mathbf{R}}_{I_{k}}^{\kappa} \boxminus^{G} \widehat{\mathbf{R}}_{I_{k}}\right)^{-T} & \mathbf{0}_{3 \times 15} \\\mathbf{0}_{15 \times 3} & \mathbf{I}_{15 \times 15}\end{array}\right]\tag{16} Jκ=[A(GR IkκGR Ik)T015×303×15I15×15](16)

其中 A ( ⋅ ) − 1 \mathbf{A}(\cdot)^{-1} A()1 在公式(6)中定义。对于第一次迭代(即扩展卡尔曼滤波器的情况), x ^ k κ = x ^ k \widehat{\mathbf{x}}_{k}^{\kappa}=\widehat{\mathbf{x}}_{k} x kκ=x k,并且 J κ = I \mathbf{J}^{\kappa}= \mathbf{I} Jκ=I

将公式(15)中的先验与公式(14)中的后验分布相结合,可以得到最大后验估计(MAP):

min ⁡ x ~ k κ ( ∥ x k ⊟ x ^ k ∥ P ^ k − 1 2 + ∑ j = 1 m ∥ z j κ + H j κ x ~ k κ ∥ R j − 1 2 ) (17) \min _{\widetilde{\mathbf{x}}_{k}^{\kappa}}\left(\left\|\mathbf{x}_{k} \boxminus \widehat{\mathbf{x}}_{k}\right\|_{\widehat{\mathbf{P}}_{k}^{-1}}^{2}+\sum_{j=1}^{m}\left\|\mathbf{z}_{j}^{\kappa}+\mathbf{H}_{j}^{\kappa} \widetilde{\mathbf{x}}_{k}^{\kappa}\right\|_{\mathbf{R}_{j}^{-1}}^{2}\right)\tag{17} x kκmin(xkx kP k12+j=1m zjκ+Hjκx kκ Rj12)(17)

其中, ∥ x ∥ M 2 = x T M x \|\mathbf{x}\|_{\mathbf{M}}^{2}=\mathbf{x}^{T} \mathbf{M} \mathbf{x} xM2=xTMx

将公式(15)中先验的线性化代入到公式(17)并优化得到的二次代价,可以得到标准的迭代卡尔曼滤波[21],可以通过下式计算(为了简化表示,令 H = [ H 1 κ T , ⋯   , H m κ T ] T \mathbf{H}=\left[\mathbf{H}_{1}^{\kappa^{T}}, \cdots, \mathbf{H}_{m}^{\kappa^{T}}\right]^{T} H=[H1κT,,HmκT]T R = diag ⁡ ( R 1 , ⋯ R m ) \mathbf{R}=\operatorname{diag}\left(\mathbf{R}_{1}, \cdots \mathbf{R}_{m}\right) R=diag(R1,Rm) P = ( J κ ) − 1 P ^ k ( J κ ) − T \mathbf{P}=\left(\mathbf{J}^{\kappa}\right)^{-1} \widehat{\mathbf{P}}_{k}\left(\mathbf{J}^{\kappa}\right)^{-T} P=(Jκ)1P k(Jκ)T z k κ = [ z 1 κ T , ⋯   , z m κ T ] T \mathbf{z}_{k}^{\kappa}=\left[\mathbf{z}_{1}^{\kappa^{T}}, \cdots, \mathbf{z}_{m}^{\kappa^{T}}\right]^{T} zkκ=[z1κT,,zmκT]T):

K = P H T ( H P H T + R ) − 1 x ^ k κ + 1 = x ^ k κ ⊞ ( − K z k κ − ( I − K H ) ( J κ ) − 1 ( x ^ k κ ⊟ x ^ k ) ) (18) \begin{aligned}\mathbf{K} &=\mathbf{P} \mathbf{H}^{T}\left(\mathbf{H P} \mathbf{H}^{T}+\mathbf{R}\right)^{-1} \\\widehat{\mathbf{x}}_{k}^{\kappa+1}&=\widehat{\mathbf{x}}_{k}^{\kappa} \boxplus\left(-\mathbf{K} \mathbf{z}_{k}^{\kappa}-(\mathbf{I}-\mathbf{K H})\left(\mathbf{J}^{\kappa}\right)^{-1}\left(\widehat{\mathbf{x}}_{k}^{\kappa} \boxminus \widehat{\mathbf{x}}_{k}\right)\right)\end{aligned}\tag{18} Kx kκ+1=PHT(HPHT+R)1=x kκ(Kzkκ(IKH)(Jκ)1(x kκx k))(18)

然后使用更新后的估计值 x ^ k κ + 1 \widehat{\mathbf{x}}_{k}^{\kappa+1} x kκ+1 计算 III-C.3 中的残差,重复该过程直至收敛( ∥ x ^ k κ + 1 ⊟ x ^ k κ ∥ < ϵ \left\|\widehat{\mathbf{x}}_{k}^{\kappa+1} \boxminus \widehat{\mathbf{x}}_{k}^{\kappa}\right\|<\epsilon x kκ+1x kκ <ϵ)。收敛后,最优状态估计和协方差为:

x ‾ k = x ^ k κ + 1 , P ‾ k = ( I − K H ) P (19) \overline{\mathbf{x}}_{k}=\widehat{\mathbf{x}}_{k}^{\kappa+1}, \overline{\mathbf{P}}_{k}=(\mathbf{I}-\mathbf{K} \mathbf{H}) \mathbf{P}\tag{19} xk=x kκ+1,Pk=(IKH)P(19)

公式(18)中常用的卡尔曼增益形式的一个问题是,它需要对矩阵 H P H T + R \mathbf{H P} \mathbf{H}^{T}+\mathbf{R} HPHT+R 求逆,但是该矩阵的维度是测量数的维度。在实际应用中,激光雷达特征点的数量非常庞大,对维度如此大的矩阵求逆很难实现。因此,现有的工作[21,26]只使用少量的测量。在本文中,我们表明,这种限制是可以避免的。直觉来源于公式(17) ,其中代价函数建立在状态之上,因此解决方案应该根据状态维数的复杂度进行计算。事实上,如果直接对公示(17)进行求解,我们可以得到公式(18)中的相同解,但是可以使用一种新的形式的卡尔曼增益:

K = ( H T R − 1 H + P − 1 ) − 1 H T R − 1 (20) \mathbf{K}=\left(\mathbf{H}^{T} \mathbf{R}^{-1} \mathbf{H}+\mathbf{P}^{-1}\right)^{-1} \mathbf{H}^{T} \mathbf{R}^{-1} \tag{20} K=(HTR1H+P1)1HTR1(20)

我们在附录B中证明,基于矩阵逆引理(matrix inverse lemma)[27]的两种形式的卡尔曼增益等效。由于激光雷达测量值是独立的,因此协方差矩阵为(块)对角,因此新公式仅需要在状态维度而不是测量维度的情况下对两个矩阵求逆。新公式大大节约了计算量,因为状态维度通常比LIO中的测量数要低得多(例如,在10 Hz的扫描频率中,一次扫描包含超过1000个有效特征点,而状态维度仅为18)。

5)算法:

我们的状态估计总结在算法1中:

在这里插入图片描述

D 地图更新

使用状态更新 x ‾ k \overline{\mathbf{x}}_{k} xk 将每一个特征点 ( L k p f j ) \left({}^{L_{k}} \mathbf{p}_{f_{j}}\right) (Lkpfj) 先投影到体坐标系中(如公式(10)),然后再投影到世界坐标系中:

G p ‾ f j = G T ‾ I k I T L L k p f j ; j = 1 , ⋯   , m (21) { }^{G} \overline{\mathbf{p}}_{f_{j}}={ }^{G} \overline{\mathbf{T}}_{I_{k}}{ }^{I} \mathbf{T}_{L}{ }^{L_{k}} \mathbf{p}_{f_{j}} ; j=1, \cdots, m \tag{21} Gpfj=GTIkITLLkpfj;j=1,,m(21)

最后,这些特征点被添加到包含前面所有步骤的特征点的现有地图中。

E 初始化

为了获得对系统状态的良好初始估计(例如,重力向量 G g {}^G\mathbf{g} Gg,偏置和噪声协方差)以加快状态估计器,需要进行初始化。在 FAST-LIO中,初始化很简单:将激光雷达静止保持几秒钟(本文中所有实验为2秒),然后将收集的数据用于初始化IMU偏置和重力向量。如果激光雷达(例如Livox Avia)支持非重复扫描,保持静态扫描还可以获得一张高分辨率的初始地图,有利于后续的导航。

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Fast-lio-localization是一种快速的激光雷达定位技术,可以在复杂的环境中实现高精度的定位。它利用激光雷达扫描周围环境,通过对激光点云数据的处理和分析,确定机器人在环境中的位置和姿态。这种技术在自动驾驶、机器人导航等领域有着广泛的应用。 ### 回答2: Fast-lio-localization是指一种高效的激光雷达定位算法。激光雷达作为机器人感知环境的重要设备,具有高精度、高稳定性等优点,广泛应用于机器人导航和定位中。快速、准确的机器人定位是机器人实现自主导航的重要前置条件之一。 Fast-lio-localization基于几种建图方法(如点云匹配技术)和滤波算法(如卡尔曼滤波)进行数据处理,以实现机器人的高精度定位。这种算法的主要优点在于它能够在较短时间内完成机器人定位,且定位的精度较高,比传统的定位算法速度快、精度高。 Fast-lio-localization算法主要包含以下几个步骤:首先,在机器人行进过程中,激光雷达会产生一堆散点云数据,接着使用建图算法将这些散点云融合成地图,用于机器人的定位;接着,使用几何滤波进行滤波处理,去除冗余噪声数据;最后,使用卡尔曼滤波处理数据,完成机器人的定位。 Fast-lio-localization算法的优势主要表现在速度和精度两个方面。首先,在定位精度方面,即使是在不良环境下,这种算法仍然可以实现高精度的定位。其次,在定位速度方面,这种算法可以应对海量数据的处理,且不需要大量的计算资源。 总体来说,Fast-lio-localization是一种高效的机器人定位算法,可以实现快速、准确的机器人定位。此外,它还可以扩展到更多其他领域,例如自动驾驶、机器人巡检等,具有广阔的应用前景。 ### 回答3: Fast-LIO-Localization是基于激光雷达的实时定位与地图构建系统。它使用现有的和准确的传感器,如激光雷达和惯性测量单元(IMU),快速地实时定位和构建场景的三维地图。系统中主要包含以下模块:激光雷达数据处理和点云匹配、IMU数据处理和运动噪声估计、位姿优化和地图构建,以及位姿跟踪和发布。Fast-LIO-Localization不需要预先应用标记或地标,并能快速响应任何类型的场景和不同的平台。 目前,Fast-LIO-Localization已被广泛应用于无人驾驶车辆、机器人和无人机等领域。在无人驾驶车辆中,Fast-LIO-Localization能够实时定位和构建实时地图,从而能够提高车辆的自主导航能力。在机器人领域,该系统能够提供精确的定位和地图构建,从而使机器人在复杂环境中进行自主操作更加稳健和准确。在无人机中,Fast-LIO-Localization能够提供实时的高精度定位数据和地图,从而能够改善无人机的飞行轨迹控制和导航计划。 总之,Fast-LIO-Localization是一种高效的定位与地图构建系统,它不仅能够广泛应用于各种智能移动设备和系统中,而且还能够提高设备和系统的性能和可靠性。它在实时性、精确性和普适性方面的优势,使得Fast-LIO-Localization成为了目前最受欢迎的激光雷达实时定位和地图构建的解决方案之一。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值