林雪原 王 萍 许家龙 刘立宁 陈祥光,3
1 烟台南山学院工学院,山东省龙口市大学路12号,265713 2 航天晨光股份有限公司,南京市天元中路188号,211100 3 北京理工大学化学与化工学院,北京市中关村南大街5号,100081
无迹卡尔曼滤波(unscented Kalman filter,UKF)采用不敏变换原理,是一种基于确定性样点计算的非线性滤波方法,相对于扩展卡尔曼滤波(extended Kalman filter,EKF)及粒子滤波(particle filter,PF)算法,具有计算精度高、算法便于实现的优点,在目标跟踪、组合导航等领域得到较深入的研究[1-2]。目前,对于UKF算法的研究大多局限于线性滤波的范畴[3-4],并未发挥出UKF非线性滤波的优势。
GNSS/CNS/SINS组合导航系统作为一种辅助信息源全面的多传感器组合导航系统[5-6],以状态方程线性化为基础,常用的滤波方法为联邦卡尔曼滤波[7]。本文针对GNSS/CNS/SINS组合导航系统,引入序贯卡尔曼滤波思想,提出一种多传感器组合导航系统的序贯UKF最优融合算法。
一般情况下,非线性系统的离散模型表示为:
(1)
式中,f(·)、h(·)为非线性函数;Xk为系统状态向量,其方差矩阵为Pk;k为当前离散时刻;uk为系统确定性控制项或输入项;Zk为根据辅助导航传感器而确定的量测向量;Wk和Vk分别为过程噪声向量和量测噪声向量,其方差矩阵分别为Qk和Rk。
基于非线性滤波模型的GNSS/CNS/SINS组合导航系统直接选取导航参数作为被估计的状态,采用捷联惯性导航系统的力学方程作为状态方程,选取N、E、U地理坐标系作为导航坐标系,其状态方程可表示为[8]:
(2)
选取CNS输出的三维姿态作为观测量,相应的量测方程可表示为:
(3)
同理,选取GNSS输出的三维位置、三维速度作为观测量时,有相应的量测方程:
(4)
假设系统的先验状态、过程噪声及测量噪声相互独立,测量噪声向量Vj(t)的方差矩阵为Rj(t)(j=1,2)。对式(2)~(4)进行离散化,即可得到其离散化的非线性模型。
标准UKF算法针对的是状态方程及量测方程均为非线性的系统模型,而式(2)建立了非线性状态方程,式(3)、式(4)建立了线性量测方程,且量测噪声是加性的。下面以Z(t)=H(t)X(t)+V(t)涵盖式(3)、式(4)两个量测方程,以方便问题的讨论。
在标准UKF算法中,通常将系统状态、过程噪声和量测噪声扩展成增广状态向量Xa:
(5)
式中,χa为Xa的样点向量。假设χX、χW和χV(Xk、Wk和Vk)的维数分别为LX、Lw、Lv,则χa(Xa)的维数n=Lx+Lw+Lv,且La=Lx+Lw。
标准UKF算法的样点个数为2n+1,复杂度为O[(2n+1)3];另,标准UKF算法将不敏变换(unsensitive transformation,UT)应用于状态方程与量测方程,使计算量进一步加大。显然,当Lx、Lw、Lv的值较高时,标准UKF运算量的增加非常显著,对于系统的实时性不利[9]。
同样,在标准UKF算法中,量测更新过程通过对2n+1个样点进行非线性计算后,将运算结果线性叠加,该过程的计算量较大。当量测方程是线性且量测噪声是加性时,可以对标准UKF算法进行简化,无需对状态量进行增广,以减少运算量[9]。
增广状态向量可简化为:
(6)
式中,χa的维数定义为La,即La=Lx+Lw。具体计算步骤如下。
1)初始化:
(7)
2)样点计算:
(8)
(9)
3)时间更新:
(10)
(11)
4)量测更新:
(12)
(13)
5)滤波更新:
(14)
为了将UKF算法应用于多传感器组合导航系统,最直观的方法是借鉴集中式卡尔曼滤波器,即将所有传感器的量测信息在一步量测更新中同时加以处理。该方法的优点是便于工程实现,但缺点在于一旦某个传感器失效,错误数据将污染整个滤波器,同时引起计算量增加、容错性差及通信负担重等新问题。为了解决该问题,可借鉴分布式滤波、序贯滤波等思想。
为此,本文将序贯卡尔曼滤波算法与简化UKF算法进行融合,进而得到适用于多传感器组合导航系统的序贯UKF算法。具体步骤如下。
1)初始化:与式(7)相同。
2)样点计算:与式(8)、式(9)相同。
3)时间更新:与式(10)、式(11)相同。
4)量测更新:
(15)
(16)
5)滤波更新:
(17)
以飞行器作为仿真对象,飞行器航迹包括加速、爬升、旋转、降落等阶段,飞行时间为3 600 s,初始经度、纬度和高度分别为118°E、29°N、50 m,方向正北,水平姿态角为0°,捷联解算周期为0.02 s,滤波周期为1 s。滤波初始参数如下:三维位置误差均为5 m,三维速度误差均为0.1 m/s,三维姿态角误差均为0.5°,设置传感器精度如表1所示。
表1 仿真参数
采用协方差分析法来评估标准UKF算法及简化UKF算法的估计精度,图1给出部分导航参数误差对应的估计误差协方差曲线。可以看出,基于标准UKF算法与简化UKF算法的各导航参数估计误差的协方差曲线基本重合,即二者具有相同的滤波精度。
图1 导航参数估计误差的协方差曲线Fig.1 Covariance curve of parameter estimation error
为比较标准UKF算法与简化UKF算法计算的复杂度,图2列出二者的滤波时间对比。经统计,简化UKF算法最大滤波时间及平均滤波时间分别为0.016 0 s和0.011 0 s;而标准UKF算法最大滤波时间及平均滤波时间分别为0.030 0 s和0.013 5 s。考虑到捷联解算周期为0.02 s,简化UKF算法更容易保证系统的实时性,其计算时间比标准UKF算法减少约18%,运算量更小。
图2 标准UKF与简化UKF的滤波时间对比Fig.2 Filtering time comparison between standard UKF and simplified UKF
在以上分析的基础上,对GNSS/CNS/SINS多传感器组合导航系统进行序贯UKF算法实验。
为验证本文算法的有效性,基于相同导航传感器仿真原始数据,分别进行3种滤波方案的处理:1) 集中式线性卡尔曼滤波方法(简称集中式KF算法);2)基于文献[3-4,8]的集中UKF(简称集中线性UKF算法);3)本文算法(简称序贯UKF算法)。图3~5为采用上述3种滤波算法求解得到的位置、速度及姿态误差曲线。
根据图3~5得到各导航参数的均方根误差(RMSE)统计结果如表2所示,可以看出,相对于集中线性UKF算法及集中式KF算法,序贯UKF算法可分别降低32%和40%的位置误差,13.5%、19%的速度误差及20.3%、25.8%的姿态误差。
表2 组合导航各参数均方根误差对比
图3 位置误差曲线对比Fig.3 Position error curve comparison
图4 速度误差曲线对比Fig.4 Speed error curve comparison
图5 姿态误差曲线对比Fig.5 Attitude error curve comparison
针对GNSS/CNS/SINS多传感器组合导航系统,在建立非线性状态方程及线性量测方程的基础上,设计简化UKF算法,降低标准UKF算法的计算量;通过引入序贯卡尔曼滤波原理,提出多传感器组合导航系统的序贯UKF最优融合算法。仿真实验结果表明,该算法不仅具有较低的计算量,同时具有较高的滤波精度,可为动态环境下多传感器组合导航系统的非线性估计提供一种有效的解决方法。