详解惯性导航论文 RINS-W: Robust Inertial Navigation System on Wheels

在这里插入图片描述
本文介绍一篇惯性导航定位论文 RINS-W,论文发表于 IROS2019。在本论文中作者提出了仅使用一个IMU进行长时间惯性导航的方法。方法主要包括两个部分:

  • 检测器使用循环神经网络来检测IMU的运动状况,如零速或零横向滑移;
  • 使用Invariant Extended Kalman Filter结合检测器的输出(作为伪测量)来进行定位。

在公开数据集上的测试结果显示,在行驶超过21km之后,最终定位误差为20m(如下图所示)。
在这里插入图片描述

论文链接:https://arxiv.org/pdf/1903.02210.pdf

github 链接:https://github.com/mbrossar/RINS-W


1. Inertial Navigation System & Sensor Model

首先回顾下惯性导航方程,IMU方向用 R n ∈ S O ( 3 ) \mathbf{R}_n \in SO(3) RnSO(3) 表示,表示从载体坐标到世界坐标的旋转变换;世界坐标系中速度为 v n w ∈ R 3 \mathbf{v}_{n}^{\mathrm{w}} \in \mathbb{R}^{3} vnwR3,世界坐标系中位置为 p n w ∈ R 3 \mathbf{p}_{n}^{\mathrm{w}} \in \mathbb{R}^{3} pnwR3,则运动方程可以写为:
R n + 1 = R n exp ⁡ S O ( 3 ) ( ω n d t ) v n + 1 w = v n W + ( R n a n + g ) d t p n + 1 w = p n w + v n w d t \begin{aligned} \mathbf{R}_{n+1} &=\mathbf{R}_{n} \exp _{S O(3)}\left(\boldsymbol{\omega}_{n} d t\right) \\ \mathbf{v}_{n+1}^{\mathrm{w}} &=\mathbf{v}_{n}^{\mathrm{W}}+\left(\mathbf{R}_{n} \mathbf{a}_{n}+\mathbf{g}\right) d t \\ \mathbf{p}_{n+1}^{\mathrm{w}} &=\mathbf{p}_{n}^{\mathrm{w}}+\mathbf{v}_{n}^{\mathrm{w}} d t \end{aligned} Rn+1vn+1wpn+1w=RnexpSO(3)(ωndt)=vnW+(Rnan+g)dt=pnw+vnwdt

其中 d t dt dt 时采样时间, ( R 0 , v 0 w , p 0 w ) (\mathbf{R}_0,\mathbf{v}_{0}^{\mathrm{w}},\mathbf{p}_{0}^{\mathrm{w}}) (R0,v0w,p0w) 是初始状态。在本论文中,没有考虑地球自转和科氏力的影响。

下面回顾下IMU模型,IMU加速度和角速度模型可以写为:
ω n I M U = ω n + b n ω + w n ω a n I M U = a n + b n a + w n a \begin{aligned} &\boldsymbol{\omega}_{n}^{\mathrm{IMU}}=\boldsymbol{\omega}_{n}+\mathbf{b}_{n}^{\boldsymbol{\omega}}+\mathbf{w}_{n}^{\boldsymbol{\omega}} \\ &\mathbf{a}_{n}^{\mathrm{IMU}}=\mathbf{a}_{n}+\mathbf{b}_{n}^{\mathbf{a}}+\mathbf{w}_{n}^{\mathbf{a}} \end{aligned} ωnIMU=ωn+bnω+wnωanIMU=an+bna+wna

其中, b n ω , b n a \mathbf{b}_{n}^{\boldsymbol{\omega}},\mathbf{b}_{n}^{\mathbf{a}} bnω,bna为角速度偏差和加速度偏差, w n ω , w n a \mathbf{w}_{n}^{\boldsymbol{\omega}},\mathbf{w}_{n}^{\mathbf{a}} wnωwna 为高斯噪声。角速度偏差和加速度偏差方程可以写为:
b n + 1 ω = b n ω + w n b ω b n + 1 a = b n a + w n b a \begin{aligned} \mathbf{b}_{n+1}^{\boldsymbol{\omega}}=\mathbf{b}_{n}^{\boldsymbol{\omega}}+\mathbf{w}_{n}^{\mathbf{b}_{\boldsymbol{\omega}}} \\ \mathbf{b}_{n+1}^{\mathbf{a}}=\mathbf{b}_{n}^{\mathbf{a}}+\mathbf{w}_{n}^{\mathbf{b}_{\mathbf{a}}} \end{aligned} bn+1ω=bnω+wnbωbn+1a=bna+wnba

其中, w n b ω , w n b a \mathbf{w}_{n}^{\mathbf{b}_{\boldsymbol{\omega}}},\mathbf{w}_{n}^{\mathbf{b}_{\mathbf{a}}} wnbω,wnba 为随机游走噪声。

在惯性导航中,偏差的准确估计是至关重要的,即使很小的误差,也会导致很大的位置估计偏差。


2. Specific Motion Profiles For Wheeled Systemd

在这一节,作者介绍了几种常见的运动特性,它们往往会提供有用的互补信息。

首先是四种特定的运动情况,将它们编码为向量形式为:
z n = ( z n V E L , z n A N G , z n L A T , z n U P ) ∈ { 0 , 1 } 4 \mathbf{z}_{n}=\left(z_{n}^{\mathrm{VEL}}, z_{n}^{\mathrm{ANG}}, z_{n}^{\mathrm{LAT}}, \quad z_{n}^{\mathrm{UP}}\right) \in\{0,1\}^{4} zn=(znVEL,znANG,znLAT,znUP){0,1}4

其中:

  • Zero velocity,当 z n V E L = 1 z_n^{\mathrm{VEL}}=1 znVEL=1 时,则有 { v n = 0 R n a n + g = 0 \left\{\begin{array}{c}\mathbf{v}_{n}=\mathbf{0} \\ \mathbf{R}_{n} \mathbf{a}_{n}+\mathbf{g}=\mathbf{0}\end{array}\right. {vn=0Rnan+g=0,当检测到零速时,常会使用 ZUPT 算法进行更新。
  • Zero angular velocity,当 z n A N G = 1 z_n^{\mathrm{ANG}}=1 znANG=1 时,则有 ω n = 0 \boldsymbol{\omega}_{n}=\mathbf{0} ωn=0
  • Zero lateral velocity,当 z n L A T = 1 z_n^{\mathrm{LAT}}=1 znLAT=1 时,则有 v n L A T ≃ 0 v_{n}^{\mathrm{LAT}} \simeq 0 vnLAT0,载体坐标速度和世界坐标速度转换方程为: v n B = R n T v n W = [ v n F O R v n L A T v n U P ] \mathbf{v}_{n}^{\mathrm{B}}=\mathbf{R}_{n}^{T} \mathbf{v}_{n}^{\mathrm{W}}=\left[\begin{array}{c}v_{n}^{\mathrm{FOR}} \\ v_{n}^{\mathrm{LAT}} \\ v_{n}^{\mathrm{UP}}\end{array}\right] vnB=RnTvnW=vnFORvnLATvnUP
  • Zero vertical velocity,当 z n U P = 1 z_n^{\mathrm{UP}}=1 znUP=1 时,则有 v n U P ≃ 0 v_{n}^{\mathrm{UP}} \simeq 0 vnUP0

其中,后两种运动情况经常用在轮速机器人或汽车运动中。以上四种情形中,零速约束(零速度和零角速度)用来修正IMU偏差和姿态俯仰角;零横向速度和垂直速度用来长期估计汽车位置(后面的实验会进行说明)


3. Proposed RINS-W Algorithm

本文提出的方法如下图所示,由两部分组成:

  • Detector 由循环神经网络组成,根据IMU测量值来输出二元向量 z n \mathbf{z}_n zn
  • IEKF 是一种新的卡尔曼滤波器,输入为IMU测量值和检测器输出(作为伪测量),对状态量进行估计;
    在这里插入图片描述

3.1 Specific Motion Profile Detector

Detector 会决定在每一个时刻 n n n 二元向量 z n \mathbf{z}_n zn中有几个元素是有效的,即有几种运动形式会发生,结构如下图所示。检测器的核心模块为LSTM,输入为IMU测量值,计算方程为:
u ^ n + 1 , h n + 1 = LSTM ⁡ ( { ω i I M U , a i I M U } i = 0 n ) = LSTM ⁡ ( ω n I M U , a n I M U , h n ) \begin{aligned} \hat{\mathbf{u}}_{n+1}, \mathbf{h}_{n+1} &=\operatorname{LSTM}\left(\left\{\boldsymbol{\omega}_{i}^{\mathrm{IMU}}, \mathbf{a}_{i}^{\mathrm{IMU}}\right\}_{i=0}^{n}\right) \\ &=\operatorname{LSTM}\left(\boldsymbol{\omega}_{n}^{\mathrm{IMU}}, \mathbf{a}_{n}^{\mathrm{IMU}}, \mathbf{h}_{n}\right) \end{aligned} u^n+1,hn+1=LSTM({ωiIMU,aiIMU}i=0n)=LSTM(ωnIMU,anIMU,hn)

其中, u ^ n + 1 ∈ R 4 \hat{\mathbf{u}}_{n+1} \in \mathbb{R^4} u^n+1R4 包含每一个运动情形的概率值, h n \mathbf{h}_n hn 是神经网络隐藏状态,概率值最后经过阈值运算来得到二元向量 z ^ n = T h r e s h o l d ( u ^ n + 1 ) \hat{\mathbf{z}}_n=\mathrm{Threshold} \left(\hat{\mathbf{u}}_{n+1}\right) z^n=Threshold(u^n+1)
在这里插入图片描述


3.2 The Invariant Extended Kalman Filter(重点)

在本文中,作者选择使用IEKF而不是传统的EKF来作为进行状态估计,如下图所示,二元变量 z ^ n \hat{\mathbf{z}}_n z^n 一方面会用于状态传播,另一方面会用于状态更新。

在这里插入图片描述
(1)首先定义IMU状态,IMU状态量为: x n = ( R n , v n w , p n w , b n ω , b n a ) \mathbf{x}_{n}=\left(\mathbf{R}_{n}, \mathbf{v}_{n}^{\mathrm{w}}, \mathbf{p}_{n}^{\mathrm{w}}, \mathbf{b}_{n}^{\boldsymbol{\omega}}, \mathbf{b}_{n}^{\mathbf{a}}\right) xn=(Rn,vnw,pnw,bnω,bna)线性状态误差为: e n = [ ξ n e n b ] ∼ N ( 0 , P n ) \mathbf{e}_{n}=\left[\begin{array}{c}\boldsymbol{\xi}_{n} \\ \mathbf{e}_{n}^{\mathbf{b}}\end{array}\right] \sim \mathcal{N}\left(\mathbf{0}, \mathbf{P}_{n}\right) en=[ξnenb]N(0,Pn),状态更新方程为:
χ n = exp ⁡ S E 2 ( 3 ) ( ξ n ) χ ^ n b n = b ^ n + e n b , \begin{aligned} &\boldsymbol{\chi}_{n}=\exp _{S E_{2}(3)}\left(\boldsymbol{\xi}_{n}\right) \hat{\boldsymbol{\chi}}_{n} \\ &\mathbf{b}_{n}=\hat{\mathbf{b}}_{n}+\mathbf{e}_{n}^{\mathbf{b}}, \end{aligned} χn=expSE2(3)(ξn)χ^nbn=b^n+enb,

其中, χ n ∈ S E 2 ( 3 ) \boldsymbol{\chi}_{n} \in SE_2(3) χnSE2(3),表示为汽车状态 ( R n , v n w , p n w ) (\mathbf{R}_{n}, \mathbf{v}_{n}^{\mathrm{w}}, \mathbf{p}_{n}^{\mathrm{w}}) (Rn,vnw,pnw) 在李群上的形式,误差状态协方差矩阵为 P n ∈ R 15 × 15 \mathbf{P}_{n} \in \mathbb{R}^{15 \times 15} PnR15×15。偏差 b n = ( b n ω , b n a ) ∈ R 6 \mathbf{b}_n=({ \mathbf{b}_{n}^{\boldsymbol{\omega}}, \mathbf{b}_{n}^{\mathbf{a}})} \in \mathbb{R}^6 bn=(bnω,bna)R6,偏差估计量为 b ^ n = ( b ^ n ω , b ^ n a ) ∈ R 6 \hat{\mathbf{b}}_{n}=\left(\hat{\mathbf{b}}_{n}^{\omega}, \hat{\mathbf{b}}_{n}^{\mathbf{a}}\right) \in \mathbb{R}^{6} b^n=(b^nω,b^na)R6

(2)预测部分。当没有上述四种之一的运动情况被检测到时,使用第1节介绍的运动方程来计算新的状态量和协方差,协方差计算方程为:
P n + 1 = F n P n F n T + G n Q n G n T \mathbf{P}_{n+1}=\mathbf{F}_{n} \mathbf{P}_{n} \mathbf{F}_{n}^{T}+\mathbf{G}_{n} \mathbf{Q}_{n} \mathbf{G}_{n}^{T} Pn+1=FnPnFnT+GnQnGnT

雅可比矩阵 F n , G n \mathbf{F}_n,\mathbf{G}_n Fn,Gn 将会在第5节进行介绍。 Q n \mathbf{Q}_n Qn 表示为噪声协方差矩阵,噪声为 w n = ( w n ω , w n a , w n b ω , w n b a ) ∼ N ( 0 , Q n ) \mathbf{w}_{n}=\left(\mathbf{w}_{n}^{\boldsymbol{\omega}}, \mathbf{w}_{n}^{\mathbf{a}}, \mathbf{w}_{n}^{\mathbf{b} \omega}, \mathbf{w}_{n}^{\mathbf{b}^{\mathrm{a}}}\right) \sim \mathcal{N}\left(\mathbf{0}, \mathbf{Q}_{n}\right) wn=(wnω,wna,wnbω,wnba)N(0,Qn)

如果由特定的运动情况被检测到,将会按照下面的方程进行状态量修改,零速时(速度归0,位置不变,这里的0表示速度为0,原论文中作者未明确表示)
z ^ n + 1 v E L = 1 ⇒ { v n + 1 w = v n w = 0 p n + 1 w = p n w \hat{z}_{n+1}^{\mathrm{vEL}}=1 \Rightarrow\left\{\begin{array}{l} \mathbf{v}_{n+1}^{\mathrm{w}}=\mathbf{v}_{n}^{\mathrm{w}} =0 \\ \mathbf{p}_{n+1}^{\mathrm{w}}=\mathbf{p}_{n}^{\mathrm{w}} \end{array}\right. z^n+1vEL=1{vn+1w=vnw=0pn+1w=pnw

零角速度时(姿态不变)
z ^ n + 1 A N G = 1 ⇒ R n + 1 = R n \hat{z}_{n+1}^{\mathrm{ANG}}=1 \Rightarrow \mathbf{R}_{n+1}=\mathbf{R}_{n} z^n+1ANG=1Rn+1=Rn

同时,状态估计量和协方差矩阵也要响应进行修改。

(3)更新。每一个运动情形将会产生下列的伪测量
y n + 1 V E L = [ R n + 1 T v n + 1 W b n + 1 a − R n + 1 T g ] = [ 0 a n I M U ] y n + 1 A N G = b n + 1 ω = ω n I M U y n + 1 L A T = v n + 1 L A T = 0 y n + 1 U P = v n + 1 U P = 0 \begin{aligned} &\mathbf{y}_{n+1}^{\mathrm{VEL}}=\left[\begin{array}{c} \mathbf{R}_{n+1}^{T} \mathbf{v}_{n+1}^{\mathrm{W}} \\ \mathbf{b}_{n+1}^{\mathbf{a}}-\mathbf{R}_{n+1}^{T} \mathbf{g} \end{array}\right]=\left[\begin{array}{c} \mathbf{0} \\ \mathbf{a}_{n}^{\mathrm{IMU}} \end{array}\right] \\ &\mathbf{y}_{n+1}^{\mathrm{ANG}}=\mathbf{b}_{n+1}^{\boldsymbol{\omega}}=\boldsymbol{\omega}_{n}^{\mathrm{IMU}} \\ &\mathbf{y}_{n+1}^{\mathrm{LAT}}=v_{n+1}^{\mathrm{LAT}}=0 \\ &\mathbf{y}_{n+1}^{\mathrm{UP}}=v_{n+1}^{\mathrm{UP}}=0 \end{aligned} yn+1VEL=[Rn+1Tvn+1Wbn+1aRn+1Tg]=[0anIMU]yn+1ANG=bn+1ω=ωnIMUyn+1LAT=vn+1LAT=0yn+1UP=vn+1UP=0

更新方程为:
K = P n + 1 H n + 1 T / ( H n + 1 P n + 1 H n + 1 T + N n + 1 ) e + = K ( y n + 1 − y ^ n + 1 ) = [ ξ + e b + ] χ ^ n + 1 + = exp ⁡ ( ξ + ) χ ^ n + 1 , b n + 1 + = b n + 1 + e b + P n + 1 + = ( I − K H n + 1 ) P n + 1 \begin{aligned} \mathbf{K} &=\mathbf{P}_{n+1} \mathbf{H}_{n+1}^{T} /\left(\mathbf{H}_{n+1} \mathbf{P}_{n+1} \mathbf{H}_{n+1}^{T}+\mathbf{N}_{n+1}\right) \\ \mathbf{e}^{+} &=\mathbf{K}\left(\mathbf{y}_{n+1}-\hat{\mathbf{y}}_{n+1}\right)=\left[\begin{array}{c} \boldsymbol{\xi}^{+} \\ \mathbf{e}^{\mathbf{b}+} \end{array}\right] \\ \hat{\boldsymbol{\chi}}_{n+1}^{+} &=\exp \left(\boldsymbol{\xi}^{+}\right) \hat{\boldsymbol{\chi}}_{n+1}, \mathbf{b}_{n+1}^{+}=\mathbf{b}_{n+1}+\mathbf{e}^{\mathbf{b}+} \\ \mathbf{P}_{n+1}^{+} &=\left(\mathbf{I}-\mathbf{K H}_{n+1}\right) \mathbf{P}_{n+1} \end{aligned} Ke+χ^n+1+Pn+1+=Pn+1Hn+1T/(Hn+1Pn+1Hn+1T+Nn+1)=K(yn+1y^n+1)=[ξ+eb+]=exp(ξ+)χ^n+1,bn+1+=bn+1+eb+=(IKHn+1)Pn+1

其中, K \mathbf{K} K 为卡尔曼增益矩阵, H n + 1 \mathbf{H}_{n+1} Hn+1 是测量雅可比矩阵(具体形式见第5节)。

(4)初始化。为了正确估计偏差和方向,在开始阶段,将会强制静止1秒钟用于估计偏差和俯仰角。


4. Results On Car Dataset

首先是数据集的介绍,使用的数据集为comples urban LiDAR Dataset,IMU如下图所示。
在这里插入图片描述


4.1 Implementation Details

下面是实现细节,detector由4个LSTMs组成,每一个LSTM由2个隐藏层(每层250个隐藏单元)组成,然后是2层多层感知机,最后是sigmoid函数。阈值设定为:0.95 ( z n V E L , z n A N G ) (z_n^{\mathrm{VEL}},z_n^{\mathrm{ANG}}) znVEL,znANG,0.5 ( z n L A T , z n U P ) (z_n^{\mathrm{LAT}},z_n^{\mathrm{UP}}) znLAT,znUP;滤波器工作频率为100Hz,噪声协方差矩阵为:
Q n = diag ⁡ ( σ ω 2 I , σ a 2 I , σ b ω 2 I , σ b a 2 I ) N n = diag ⁡ ( σ V E L , v 2 I , σ V E L , a 2 I , σ A N G 2 I , σ L A T 2 , σ U P 2 ) \begin{aligned} &\mathbf{Q}_{n}=\operatorname{diag}\left(\sigma_{\omega}^{2} \mathbf{I}, \sigma_{\mathbf{a}}^{2} \mathbf{I}, \sigma_{\mathbf{b}_{\boldsymbol{\omega}}}^{2} \mathbf{I}, \sigma_{\mathbf{b}_{\mathbf{a}}}^{2} \mathbf{I}\right) \\ &\mathbf{N}_{n}=\operatorname{diag}\left(\sigma_{\mathrm{VEL}, \mathbf{v}}^{2} \mathbf{I}, \sigma_{\mathrm{VEL}, \mathbf{a}}^{2} \mathbf{I}, \sigma_{\mathrm{ANG}}^{2} \mathbf{I}, \sigma_{\mathrm{LAT}}^{2}, \sigma_{\mathrm{UP}}^{2}\right) \end{aligned} Qn=diag(σω2I,σa2I,σbω2I,σba2I)Nn=diag(σVEL,v2I,σVEL,a2I,σANG2I,σLAT2,σUP2)

其中,协方差矩阵 Q Q Q σ ω = 0.01 r a d / s , σ a = 0.2 m / s 2 , σ b ω = 0.001 r a d / s , σ b a = 0.02 m / s 2 \sigma_{\omega}=0.01 \mathrm{rad/s},\sigma_{\mathbf{a}}=0.2 \mathrm{m/s^2},\sigma_{\mathbf{b}_{\boldsymbol{\omega}}}=0.001 \mathrm{rad/s},\sigma_{\mathbf{b}_{\mathbf{a}}}=0.02\mathrm{m/s^2} σω=0.01rad/s,σa=0.2m/s2,σbω=0.001rad/s,σba=0.02m/s2;噪声矩阵 N n \mathbf{N}_{n} Nn σ V E L , v = 1 m / s , σ V E L , a = 0.4 m / s 2 , σ A N G = 0.04 r a d / s , σ L A T = 3 m / s , σ U P = 3 m / s \sigma_{\mathrm{VEL}, \mathbf{v}}=1\mathrm{m/s}, \sigma_{\mathrm{VEL}, \mathbf{a}}=0.4\mathrm{m/s^2}, \sigma_{\mathrm{ANG}}=0.04\mathrm{rad/s}, \sigma_{\mathrm{LAT}}=3\mathrm{m/s}, \sigma_{\mathrm{UP}}=3\mathrm{m/s} σVEL,v=1m/s,σVEL,a=0.4m/s2,σANG=0.04rad/s,σLAT=3m/s,σUP=3m/s

4.2 Evaluation Metrics

这里使用了三个评价指标:

  • Mean Absolute Trajectory Error (m-ATE),平均绝对轨迹误差(估计位置和真值位置之间的误差平均值);
  • Mean Absolute Aligned Trajectory Error (aligned m-ATE),首先对齐估计轨迹和真值轨迹,然后再计算m-ATE,主要是评估轨迹的一致性;
  • Final distance error,估计轨迹和真值轨迹最终的距离误差。
4.3 Trajectory Results

下面是实验结果,作者采用了4种方法:

  • IMU直接积分方法;
  • 差分轮速编码器得到线性速度和角速度再积分;
  • RINS-W,本文提出的方法;
  • 里程计+光纤陀螺仪,里程计提供线性速度,角速度由FoG得到。
在这里插入图片描述在这里插入图片描述在这里插入图片描述

同时作者还比较了是否使用横向和垂直速度假设时的定位误差,结果如下,使用横向和垂直速度假设时效果更好
在这里插入图片描述


5. Appendix

李群 S E 2 ( 3 ) SE_2(3) SE2(3) 是李群 S E ( 3 ) SE(3) SE(3) 的扩展,其形式可以写成 5 × 5 5\times5 5×5 的矩阵,即:
χ n = [ R n v n w p n w 0 I ] ∈ S E 2 ( 3 ) \boldsymbol{\chi}_{n}=\left[\begin{array}{ccc} \mathbf{R}_{n} & \mathbf{v}_{n}^{\mathrm{w}} & \mathbf{p}_{n}^{\mathrm{w}} \\ \mathbf{0} & \mathbf{I} \end{array}\right] \in S E_{2}(3) χn=[Rn0vnwIpnw]SE2(3)

误差 ξ n = ( ξ n R , ξ n v , ξ n p ) ∈ R 9 \boldsymbol{\xi}_{n}=\left(\boldsymbol{\xi}_{n}^{\mathbf{R}}, \boldsymbol{\xi}_{n}^{\mathbf{v}}, \boldsymbol{\xi}_{n}^{\mathrm{p}}\right) \in \mathrm{R}^9 ξn=(ξnR,ξnv,ξnp)R9 的李代数形式为:
ξ n ∧ = [ ( ξ n R ) × ξ n v ξ n p 0 ] ∈ s e 2 ( 3 ) \boldsymbol\xi_{n}^{\wedge}=\left[\begin{array}{ccc} \left(\xi_{n}^{\mathrm{R}}\right)_{\times} & \xi_{n}^{\mathrm{v}} & \xi_{n}^{\mathrm{p}} \\ 0 & \end{array}\right] \in \mathfrak{s e}_{2}(3) ξn=[(ξnR)×0ξnvξnp]se2(3)

李代数 ξ n ∧ \xi_{n}^{\wedge} ξn 的指数映射形式为:
exp ⁡ S E 2 ( 3 ) ( ξ n ) = I + ξ n ∧ + a ( ξ n ∧ ) 2 + b ( ξ n ∧ ) 3 \exp _{S E_{2}(3)}\left(\boldsymbol{\xi}_{n}\right)=\mathbf{I}+\boldsymbol{\xi}_{n}^{\wedge}+a\left(\boldsymbol{\xi}_{n}^{\wedge}\right)^{2}+b\left(\boldsymbol{\xi}_{n}^{\wedge}\right)^{3} expSE2(3)(ξn)=I+ξn+a(ξn)2+b(ξn)3

其中, a = 1 − cos ⁡ ( ∥ ξ n R ∥ ) ∥ ξ n R ∥ 2 a=\frac{1-\cos \left(\left\|\boldsymbol{\xi}_{n}^{\mathbf{R}}\right\|\right)}{\left\|\boldsymbol{\xi}_{n}^{\mathrm{R}}\right\|^2} a=ξnR21cos(ξnR) b = ∥ ξ n R ∥ − sin ⁡ ( ∥ ξ n R ∥ ) ∥ ξ n R ∥ 3 b=\frac{\left\|\boldsymbol{\xi}_{n}^{\mathbf{R}}\right\|-\sin \left(\left\|\boldsymbol{\xi}_{n}^{\mathbf{R}}\right\|\right)}{\left\|\boldsymbol{\xi}_{n}^{\mathbf{R}}\right\|^{3}} b=ξnR3ξnRsin(ξnR)

这里使用的是Right IEKF,雅可比矩阵为:
F n = I + [ 0 0 0 − R n 0 ( g ) × 0 0 − ( v n W ) × R n − R n 0 I 0 − ( p n W ) × R n 0 0 0 0 0 0 0 0 0 0 0 ] d t , G n = [ R n 0 0 0 ( v n w ) × R n R n 0 0 ( p n w ) × R n 0 0 0 0 0 I 0 0 0 0 I ] d t \mathbf{F}_{n}=\mathbf{I}+\left[\begin{array}{ccccc}\mathbf{0} & \mathbf{0} & \mathbf{0} & -\mathbf{R}_{n} & \mathbf{0} \\ (\mathbf{g})_{\times} & \mathbf{0} & \mathbf{0} & -\left(\mathbf{v}_{n}^{\mathrm{W}}\right)_{\times} \mathbf{R}_{n} & -\mathbf{R}_{n} \\ \mathbf{0} & \mathbf{I} & \mathbf{0} & -\left(\mathbf{p}_{n}^{\mathrm{W}}\right)_{\times} \mathbf{R}_{n} & \mathbf{0} \\ \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{0} \\ \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{0}\end{array}\right] d t,\\ \mathbf{G}_{n}=\left[\begin{array}{cccc}\mathbf{R}_{n} & \mathbf{0} & \mathbf{0} & \mathbf{0} \\ \left(\mathbf{v}_{n}^{\mathbf{w}}\right)_{\times} \mathbf{R}_{n} & \mathbf{R}_{n} & \mathbf{0} & \mathbf{0} \\ \left(\mathbf{p}_{n}^{\mathbf{w}}\right)_{\times} \mathbf{R}_{n} & \mathbf{0} & \mathbf{0} & \mathbf{0} \\ \mathbf{0} & \mathbf{0} & \mathbf{I} & \mathbf{0} \\ \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{I}\end{array}\right] d t Fn=I+0(g)×00000I0000000Rn(vnW)×Rn(pnW)×Rn000Rn000dt,Gn=Rn(vnw)×Rn(pnw)×Rn000Rn000000I00000Idt

z ^ n V E L = 1 \hat{z}_n^{\mathrm{VEL}}=1 z^nVEL=1 时,矩阵 F n , G n \mathbf{F}_n,\mathbf{G}_n Fn,Gn 的第4行-第9行为0;当 z ^ n A N G = 1 \hat{z}_n^{\mathrm{ANG}}=1 z^nANG=1 时,矩阵 F n , G n \mathbf{F}_n,\mathbf{G}_n Fn,Gn 的前3行为0。

测量雅可比矩阵为:
H n v E L = [ 0 R n T 0 0 0 R n T ( g ) × 0 0 0 − I ] H n A N G = [ 0 0 0 − I 0 ] \begin{aligned} \mathbf{H}_{n}^{\mathrm{vEL}} &=\left[\begin{array}{ccccc} \mathbf{0} & & \mathbf{R}_{n}^{T} & \mathbf{0} & \mathbf{0} & \mathbf{0} \\ \mathbf{R}_{n}^{T}(\mathbf{g})_{\times} & \mathbf{0} & \mathbf{0} & \mathbf{0} & -\mathbf{I} \end{array}\right] \\ \mathbf{H}_{n}^{\mathrm{ANG}} &=\left[\begin{array}{ccccc} \mathbf{0} & \mathbf{0} & \mathbf{0} & -\mathbf{I} & \mathbf{0} \end{array}\right] \end{aligned} HnvELHnANG=[0RnT(g)×0RnT0000I0]=[000I0]

这里,矩阵 H n V E L \mathbf{H}_n^{\mathrm{VEL}} HnVEL 的形式值得商榷,在上面第一种作者可能忘了讨论对旋转矩阵的求导。

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值