本文介绍一篇惯性导航定位论文 RINS-W
,论文发表于 IROS2019。在本论文中作者提出了仅使用一个IMU
进行长时间惯性导航的方法。方法主要包括两个部分:
- 检测器使用循环神经网络来检测IMU的运动状况,如零速或零横向滑移;
- 使用
Invariant Extended Kalman Filter
结合检测器的输出(作为伪测量)来进行定位。
在公开数据集上的测试结果显示,在行驶超过21km之后,最终定位误差为20m(如下图所示)。

论文链接:arxiv.org/pdf/1903.02…
1. Inertial Navigation System & Sensor Model
首先回顾下惯性导航方程,IMU方向用 Rn∈SO(3) 表示,表示从载体坐标到世界坐标的旋转变换;世界坐标系中速度为 vnw∈R3,世界坐标系中位置为 pnw∈R3,则运动方程可以写为:
Rn+1vn+1wpn+1w=RnexpSO(3)(ωndt)=vnW+(Rnan+g)dt=pnw+vnwdt
其中 dt 时采样时间,(R0,v0w,p0w) 是初始状态。在本论文中,没有考虑地球自转和科氏力的影响。
下面回顾下IMU模型,IMU加速度和角速度模型可以写为:
ωnIMU=ωn+bnω+wnωanIMU=an+bna+wna
其中,bnω,bna为角速度偏差和加速度偏差,wnω,wna 为高斯噪声。角速度偏差和加速度偏差方程可以写为:
bn+1ω=bnω+wnbωbn+1a=bna+wnba
其中,wnbω,wnba 为随机游走噪声。
在惯性导航中,偏差的准确估计是至关重要的,即使很小的误差,也会导致很大的位置估计偏差。
2. Specific Motion Profiles For Wheeled Systemd
在这一节,作者介绍了几种常见的运动特性,它们往往会提供有用的互补信息。
首先是四种特定的运动情况,将它们编码为向量形式为:
zn=(znVEL,znANG,znLAT,znUP)∈{0,1}4
其中:
- Zero velocity,当 znVEL=1 时,则有{vn=0Rnan+g=0,当检测到零速时,常会使用
ZUPT
算法进行更新。
- Zero angular velocity,当 znANG=1 时,则有 ωn=0。
- Zero lateral velocity,当 znLAT=1 时,则有 vnLAT≃0,载体坐标速度和世界坐标速度转换方程为:vnB=RnTvnW=⎣⎡vnFORvnLATvnUP⎦⎤。
- Zero vertical velocity,当 znUP=1 时,则有 vnUP≃0。
其中,后两种运动情况经常用在轮速机器人或汽车运动中。以上四种情形中,零速约束(零速度和零角速度)用来修正IMU偏差和姿态俯仰角;零横向速度和垂直速度用来长期估计汽车位置(后面的实验会进行说明)
。
3. Proposed RINS-W Algorithm
本文提出的方法如下图所示,由两部分组成:
Detector
由循环神经网络组成,根据IMU测量值来输出二元向量 zn;
IEKF
是一种新的卡尔曼滤波器,输入为IMU测量值和检测器输出(作为伪测量),对状态量进行估计;

3.1 Specific Motion Profile Detector
Detector
会决定在每一个时刻 n 二元向量 zn中有几个元素是有效的,即有几种运动形式会发生,结构如下图所示。检测器的核心模块为LSTM
,输入为IMU测量值,计算方程为:
u^n+1,hn+1=LSTM({ωiIMU,aiIMU}i=0n)=LSTM(ωnIMU,anIMU,hn)
其中,u^n+1∈R4 包含每一个运动情形的概率值,hn 是神经网络隐藏状态,概率值最后经过阈值运算来得到二元向量 z^n=Threshold(u^n+1)

3.2 The Invariant Extended Kalman Filter(重点)
在本文中,作者选择使用IEKF
而不是传统的EKF
来作为进行状态估计,如下图所示,二元变量 z^n 一方面会用于状态传播,另一方面会用于状态更新。

(1)首先定义IMU状态,IMU状态量
为:xn=(Rn,vnw,pnw,bnω,bna),线性状态误差
为:en=[ξnenb]∼N(0,Pn),状态更新方程为:
χn=expSE2(3)(ξn)χ^nbn=b^n+enb,
其中,χn∈SE2(3),表示为汽车状态 (Rn,vnw,pnw) 在李群上的形式,误差状态协方差矩阵为 Pn∈R15×15。偏差 bn=(bnω,bna)∈R6,偏差估计量为 b^n=(b^nω,b^na)∈R6。
(2)预测部分。当没有上述四种之一的运动情况被检测到时,使用第1节介绍的运动方程来计算新的状态量和协方差,协方差计算方程为:
Pn+1=FnPnFnT+GnQnGnT
雅可比矩阵 Fn,Gn 将会在第5节进行介绍。Qn 表示为噪声协方差矩阵,噪声为 wn=(wnω,wna,wnbω,wnba)∼N(0,Qn)。
如果由特定的运动情况被检测到,将会按照下面的方程进行状态量修改,零速时(速度归0,位置不变,这里的0表示速度为0,原论文中作者未明确表示)
:
z^n+1vEL=1⇒{vn+1w=vnw=0pn+1w=pnw
零角速度时(姿态不变)
:
z^n+1ANG=1⇒Rn+1=Rn
同时,状态估计量和协方差矩阵也要响应进行修改。
(3)更新。每一个运动情形将会产生下列的伪测量
:
yn+1VEL=[Rn+1Tvn+1Wbn+1a−Rn+1Tg]=[0anIMU]yn+1ANG=bn+1ω=ωnIMUyn+1LAT=vn+1LAT=0yn+1UP=vn+1UP=0
更新方程为:
Ke+χ^n+1+Pn+1+=Pn+1Hn+1T/(Hn+1Pn+1Hn+1T+Nn+1)=K(yn+1−y^n+1)=[ξ+eb+]=exp(ξ+)χ^n+1,bn+1+=bn+1+eb+=(I−KHn+1)Pn+1
其中,K 为卡尔曼增益矩阵,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 (znVEL,znANG),0.5 (znLAT,znUP);滤波器工作频率为100Hz,噪声协方差矩阵为:
Qn=diag(σω2I,σa2I,σbω2I,σba2I)Nn=diag(σVEL,v2I,σVEL,a2I,σANG2I,σLAT2,σUP2)
其中,协方差矩阵 Q 中 σω=0.01rad/s,σa=0.2m/s2,σbω=0.001rad/s,σba=0.02m/s2;噪声矩阵 Nn 中 σ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得到。
同时作者还比较了是否使用横向和垂直速度假设时的定位误差,结果如下,使用横向和垂直速度假设时效果更好
。
