基于GRU循环神经网络辅助的组合导航算法

2021-02-25 05:50陶毅峰江金光
计算机工程与设计 2021年2期
关键词:惯导卡尔曼滤波时刻

陶毅峰,江金光,方 伟

(武汉大学 卫星导航定位技术研究中心,湖北 武汉 430079)

0 引 言

基于捷联惯性导航系统和GPS(global positioning system)技术,在GPS信号良好的情况下可以有效地进行导航[1]。卡尔曼滤波(Kalman filtering)技术由于其高精度,设计简单等优点成为了最广泛使用的技术。因为高精度惯性测量单元(inertial measurement unit,IMU)成本昂贵,大部分情况下IMU只是MEMS(microelectro mechanical systems)级别的,这种级别的INS(inertial navigation system)/GPS组合导航系统的定位精度极大地依赖于GPS信号[2],而GPS信号极易受到高楼、树荫等遮挡而失锁[3-5];此时INS/GPS组合导航系统仅能依靠纯惯导进行机械编排,定位结果会随着时间的积累发散[6],导致解算精度迅速下降。而神经网络作为近几年火热的技术,已有许多结合神经网络与INS/GPS的研究[7,8]。如利用BP(back propagation)神经网络[9]、多层感知器(multi-layer perceptron,MLP)[10]来辅助组合导航系统。这些模型将各时刻的输入与输出视为独立的元素,但是实际的组合导航系统显然是一个连续的、各时刻位置相关的系统。循环神经网络(recurrent neural network,RNN)可以将过去时刻的位置信息与当前时刻的输出联系起来,恰好与上述问题契合。因此本文使用循环神经网络中的一种变体结构GRU(gated recurrent unit)算法辅助组合导航系统,以解决GPS失锁时定位精度迅速发散的问题。

1 组合导航卡尔曼滤波模型

INS/GPS组合导航系统的组合方式有:松组合、紧组合、深组合等。其中松组合是基于GPS导航结果的数据组合,即Kalman的观测向量为GPS和INS的速度、位置的数据组合。松组合结构简单,计算负担低,易实现,可靠性很高,但所需卫星数最少为4颗,粗差探测能力弱。紧组合是基于GPS观测量的数据组合,即Kalman的观测向量为GPS的伪距、伪距率的数据组合。紧组合结构复杂,计算负担较高,可靠性也不如松组合,但是其粗差探测能力强,可观测卫星数少于4颗时也可以正常工作。深组合是基于GPS信号的组合,采用了矢量环路的方法,通道间互相辅助,提高了信号跟踪环路性能和系统,降低了载体动态变化的影响[11],但该技术还不成熟,实现难度高。

由于本文侧重点为解决GPS失锁时的精度问题,故本文选取了结构较为简单,计算量小的松组合作为组合方式。INS/GPS松组合的结构如图1所示,其中INS输出惯导推算得到的信息PINS(位置)、VINS(速度)、AINS(姿态角);GPS提供位置信息,与INS的位置信息相减作为观测向量ZK[12]输入到卡尔曼滤波模块;卡尔曼滤波模块输出改正信息δp,δv,δA对INS的输出值进行修正,得到最终的组合结果。

图1 INS/GPS松组合结构框架

本文松组合采用15维卡尔曼滤波,坐标系采用北东地地理坐标系,状态变量为

(1)

观测向量为

Z=[PINS-GPS]

(2)

观测值的量测矩阵为

(3)

状态转移矩阵为

(4)

卡尔曼滤波预测部分

(5)

更新部分

(6)

其中,φk,k-1为离散化后的状态转移矩阵,Qk-1为离散化后的系统状态噪声方差阵,Pk,k-1为一步预测状态协方差矩阵,Kk为卡尔曼滤波增益,Pk为估计状态协方差矩阵[13]。GPS信号正常时,每一秒内的纯惯导推算带来的误差会被卡尔曼滤波后的δp,δv,δA所补偿掉。但是一旦GPS失锁,卡尔曼滤波就失去了观测向量,无法继续进行组合,也就无法产生δp,δv,δA对INS结果进行反馈。这部分的误差一直累计,会随时间产生二次发散。因此GPS失锁时松组合退化为纯惯导推算无法满足正常的导航需求,需要其它观测或算法辅助,本文的辅助导航方法在第3章中继续详细阐述。

2 GRU循环神经网络模型

2.1 循环神经网络结构

传统的神经网络为前馈神经网络(feed-forward neural network,FNN),通常包含输入层、隐藏层和输出层。各层之间互相连接,训练时每一层的权值更新就是通过这些连接进行传递;但是每一层内的神经元互相独立,不存在环路,因此FNN仅适用于观测数据互相独立的情况,而对于上下文有联系的时间序列数据就效果欠佳。

为了弥补这一不足,RNN在隐藏层加入了回路连接,前一时刻的网络状态会传递到下一时刻,因此当前时刻的输出不仅受到当前时刻的输入影响,还与之前时刻的数据输入产生了联系。而对于权值参数的问题,RNN借鉴了隐马尔可夫模型(hidden Markov model,HMM)参数共享的概念。HMM广泛应用于语音处理、文字处理等领域,对于序列数据建模取得很好的效果。这二者利用内部状态来衡量数据间的依赖关系,参数共享减少了训练的参数,提高了效率。RNN的参数更新和传统的神经网络类似,使用了反向传播算法(backpropagation algorithm),其前向传播如图2所示,由于每个时刻的隐藏状态都与前一时刻的产生联系,因此进一步产生了长距离的依赖。

图2 RNN前向传播结构

2.2 GRU算法

RNN适用于处理时间序列数据,可以将当前时刻的输出和状态当作输入传递到下一时刻,因此这种串型结构可以保持各时刻间的数据关系。但是RNN很难保持长期的依赖性,且存在梯度消失、梯度爆炸的问题[14],因此在RNN基础上进一步产生了许多优秀的演化模型,如长短期记忆网络(long short-term memory,LSTM)和GRU。这些模型通过加入记忆单元来解决长期依赖的问题,通过门控单元来避免梯度爆炸。而GRU相较于LSTM参数更少,训练更快,因此人工智能(artificial intelligence,AI)模块选择GRU算法。

GRU单元结构如图3所示,ht-1是前一时刻的隐藏状态,ht为当前时刻的隐藏状态输出,xt是当前时刻的数据输入。该单元结构有2个门,更新门和重置门,更新门用于控制前一时刻的状态信息对当前时刻的影响程度,输出为rt,更新门的值越大,状态信息保留越多;重置门用于忽略前一时刻的部分状态信息,输出为zt,重置门的值越小,状态信息忽略越多。

图3 GRU单元结构

具体前向传播公式如下

(7)

其中,Wxr为输入层到更新门的权重矩阵,Whr为隐藏状态到更新门的权重矩阵,Wxz为输入层到重置门的权重矩阵,Whz为隐藏状态到重置门的权重矩阵,Wxh为输入层到隐藏状态的权重矩阵,Whh为隐藏状态之间的连接权重矩阵;br,bz,bh分别为更新门、重置门、隐藏单元的偏置向量。

循环神经网络相较于普通神经网络最大的区别就是存在time step(时间步长)参数,GRU也同样存在这个参数。这个参数的选择决定了训练时利用多少步长内的时序关系,即输出与前多少个陆续的数据输入有关系。具体GRU和循环神经网络的结构与推导公式见文献[14]。

3 GRU循环神经网络辅助INS/GPS组合导航

目前关于GPS失锁时使用AI技术进行辅助的模型主要有3种,分别是OINS-δPINS模型、OINS-Xk模型和OINS-ΔPGPS模型,都有着不错的效果[15]。OINS-δPINS模型输入为INS信息,输出为GPS和INS的误差;OINS-Xk模型输入为INS信息,输出为Kalman滤波后的状态向量;OINS-ΔPGPS模型输入为INS信息,输出为GPS增量信息。前两种模型的预测值既包含INS信息,也包含GPS信息,而第三种模型的预测值仅与GPS信息相关,因此前两种模型相较于第三种模型会引入额外的混合误差,所以本文采用OINS-ΔPGPS模型。ΔPGPS的具体推导公式如下

(8)

(9)

具体工作流程如图4所示,在GPS信号锁定时,使用GRU循环神经网络进行实时训练,输入为IMU提供的三轴加速度计数据fb、三轴陀螺仪数据ωb、INS输出的速度信息VINS和航向角ψINS。因此在GPS信号良好时GRU模块可以找到IMU、INS信息与GPS增量信息之间的映射关系。

图4 GRU辅助INS/GPS组合导航训练过程

当GPS失锁后,GPS模块不再提供位置信息,IMU和INS模块继续向GRU模块输入传感器数据,惯导推算结果等相关信息,由已训练好的GRU循环神经网络根据输入来预测ΔPGPS。将上述GPS增量信息进行积分,就可以得到一个模拟的GPS位置信息[16],也叫作伪GPS位置信息,效果等同于GPS信号锁定时的GPS定位结果。将该结果与PINS作差后送入KF模块即可继续进行卡尔曼滤波,用来对位置、速度、姿态进行修正,如图5所示。此时原本只能通过惯导进行推算的纯惯导模块,有了伪GPS信息对其进行修正,抑制了MEMS级惯导的误差发散速度。

图5 GRU辅助INS/GPS组合导航预测过程

4 算法验证

为验证算法,使用迈普时空的M39设备所采的数据进行仿真,采样输出频率为200 HZ,利用SPAN-CPT设备作为参考系统,二者的IMU性能参数见表1。数据采集地点为武汉市佛祖岭附近,所采数据共4500 s,选取中段的4000 s数据来进行仿真,前3000 s用于训练,3000 s-3200 s用于验证,3200 s-4000 s用于测试。

表1 仿真设备与参考设备的IMU性能参数

GRU模型的输入为IMU的三轴陀螺仪数据、三轴加速度计数据、速度矢量、航向角共10个特征维度,输出为GPS增量信息。训练时由于输入层的IMU传感器数据、速度、航向角等INS信息为1 s 200次,而GPS增量信息1 s仅有1次,所以训练时需要将1 s内的所有信息一起作为输入层的输入。进一步地,由于GRU模型存在time step参数,即存在时间上的维度,结合上述的10个特征和信息频率以及训练时长为3000 s,因此输入层的数据为大小为(3000,time step,2000);而输出层的数据显然为GPS增量信息,大小为(3000,3)。此数据量非常庞大,隐藏层的神经元个数,time step的参数选择都会影响到训练的效率和最终精度,因此本文先对输入层和输出层数据进行了归一化处理,预测模型预测时再反归一化,以加快训练时的收敛速度。并且对于相关参数的调节也进行了实验,见表2。

表2 不同time step和隐藏层单元数的性能对比

表2中为不同time step和隐藏层单元数的调节情况。考虑到效率和精度,最终本文中GRU模块优化器选择为adam算法,隐藏层神经元个数设置为128个,time step参数选择为4,其它参数变量的值见表3。

表3 GRU模块参数设置

由于本文采用的实验环境为车载环境,高程在精度上的变化与影响较小,因此下述实验仅考虑和分析水平误差。图6、图7分别为测试集GRU预测的纬度、经度增量和真实的纬度、经度增量的比较,可以看出二者趋势基本一致。具体的平均绝对误差(mean absolute error,MAE)和均方误差(mean square error,MSE)统计见表4。

图6 GRU预测纬度增量与真值的对比

图7 GRU预测经度增量与真值的对比

表4 GRU预测的经纬度增量误差统计

图8是将800 s预测的ΔPGPS累加画出的水平轨迹图与真实轨迹的比较。起点处二者重合,误差逐渐增大,最大误差不超过50 m。从图8中也可以看出,虽然全程误差都在发散,轨迹逐渐分离,但是误差陡增的几处基本为拐弯处,直线行驶时误差增加很小。这是因为车载环境下直线行驶的情况较多,相应地,训练集中直线行驶的数据就更丰富,GRU模型更容易找到直线行驶时INS、IMU信息和GPS增量的关系。同时,相较于拐弯,直线行驶时的IMU测得的数据更准,惯导推算结果也更精确,这也导致了上述结果。

图8 GRU预测的轨迹与实际轨迹对比

上述仿真是采用了组合导航的结果进行预测,目的是为了验证GRU模型应用于GPS增量预测时的可行性,并调节GRU网络的参数,使得该预测模型达到最优;实际使用本模型时,由于一次次的预测会导致速度、航向、位置等信息的误差累积,因此选取其中200 s(202100 周秒-202300 周秒)的时间完整模拟本模型方法。为了进一步说明GRU循环神经网络相较于普通神经网络的优越性,下述图中还加入了MLP的预测情况。图9(a)、图9(b)分别为GPS失锁200 s时GRU循环神经网络模型辅助的组合导航与GPS失锁时纯机械编排的北向/东向速度漂移对比。GRU、MLP算法辅助的北向、东向速度漂移要优于纯惯导、其中GRU效果更好。纯惯导推算北向、东向最大速度漂移分别为4.61 m/s,3.37 m/s;MLP辅助的北向、东向最大漂移分别为4.55 m/s、2.83 m/s,与纯惯导推算相当,略小于纯惯导结果,但是整体要优于纯惯导;GRU辅助的北向,东向最大速度漂移为1.55 m/s,1.17 m/s。GRU辅助相较于纯惯导推算,北向和东向最大速度漂移分别降低66.4%和65.3%。GRU辅助相较于MLP辅助,北向和东向最大速度漂移分别降低65.9%和56.7%。

图9 不同算法辅助的速度漂移

图10、图11、图12分别为GPS失锁200 s时GRU循环神经网络模型辅助的组合导航与GPS失锁时纯机械编排的纬度、经度、水平位置漂移对比。纯惯导纬度、经度、水平最大漂移分别为394.51 m、294.66 m、492.40 m;MLP辅助的纬度、经度、水平最大漂移分别为370.23 m、166.78 m、406.06 m;GRU辅助的纬度、经度、水平最大漂移分别为86.88 m、69.07 m、87.14 m。GRU辅助相较于纯惯导推算、纬度、经度和水平方向最大位置漂移分别降低78.0%、76.6%和82.3%;GRU辅助相较于MLP辅助、纬度、经度和水平方向最大位置漂移分别降低76.5%、58.6%和78.5%。上述所有统计结果总结见表5。

图10 不同算法辅助的纬度位置漂移

图11 不同算法辅助的经度位置漂移

图12 不同算法辅助的水平位置漂移

表5 GPS失锁200 s的3种方法最大误差统计结果

图13为这200 s仿真结果在Google Earth上的轨迹。黑色的两条线分别为真实轨迹和GRU辅助轨迹,其中真实轨迹的图标为黑色实心圆,GRU辅助轨迹的图标为黑色正方形;白色的两条线为MLP辅助轨迹和纯惯导轨迹,其中MLP辅助轨迹的图标为白色空心三角形,纯惯导轨迹的图标为白色空心圆。可以看出经过一个弯道后,3种方法与真实轨迹的误差已经有了明显的差距,GRU辅助的最为接近,MLP辅助的次之,纯惯导推算最差;经过2个弯道后只有GRU辅助的轨迹仍与真实轨迹趋势接近,其它轨迹都发散严重。

图13 不同算法辅助的地图轨迹

表6为GPS失锁200 s的3种方法RMS统计结果,可以看出使用MLP、GRU辅助的结果各方面都要优于纯惯导推算,其中GRU辅助最优,水平误差54.20 m相较于纯惯导的204.80 m和MLP辅助的153.40 m有巨大提升。

表6 GPS失锁200 s的3种方法RMS统计结果

5 结束语

本文为了解决GPS失锁时纯惯导推算发散严重的问题,采用了GRU辅助INS/GPS的方法。在GPS锁定时使用INS速度、姿态角信息、IMU加速度计、陀螺仪数据和GPS增量进行训练,找到相应的映射关系;GPS失锁后,向训练好的GRU模型继续输入INS和IMU信息,该模型就可以提供预测的GPS增量信息,将之积分得到伪GPS位置。此时就可以进行卡尔曼滤波,以抑制原本纯MEMS级惯导推算时的误差快速发散。并且本文与MLP辅助INS/GPS的方法进行了比较,验证了GRU循环神经网络对于连续时间轨迹推算的优越性。由于GPS失锁时,里程计在车载导航中对精度有着极为明显的提升,且技术较为成熟,因此,下一步工作将结合里程计与本方法进行进一步实验。

猜你喜欢
惯导卡尔曼滤波时刻
冬“傲”时刻
捕猎时刻
自适应模糊多环控制在惯导平台稳定回路中的应用
无人机室内视觉/惯导组合导航方法
基于递推更新卡尔曼滤波的磁偶极子目标跟踪
基于Bagging模型的惯导系统误差抑制方法
基于模糊卡尔曼滤波算法的动力电池SOC估计
基于扩展卡尔曼滤波的PMSM无位置传感器控制
导航算法对捷联惯导系统精度的影响分析
一天的时刻