采用卡方检验和牛顿插值的抗差卡尔曼滤波新算法
2020-06-12蔡保杰李正杰
蔡保杰,邵 雷,李正杰
(空军工程大学防空反导学院,西安,710051)
导航就是将运载体从起始点引导到目的地的技术或方法,GPS和惯性导航结合的导航方法在当今导航领域应用广泛[1-2]。在组合导航实际应用环境中,由于建筑物的遮挡或其他随机误差的影响,会出现观测值损坏的状况,严重影响导航精度。当卫星接收的信号受到外界干扰时,载体状态的解算将会出现粗差,粗差的存在将会使观测噪声的数学特性发生变化,残差(新息)将不再服从标准的高斯分布。
对于观测故障问题[3],常用的是传统抗差卡尔曼滤波方法[4]。文献[5]中先用假设检验的方法检测出故障观测值的具体位置,再利用抗差因子对故障观测值进行降权处理,用设定的门限值代替系统噪声值,可以较大程度的减小粗差的影响。文献[6]中基于卡方检验构造了一个检验函数,对不同的检验函数值采用不同的公式计算新的观测噪声方差阵代替故障的观测噪声方差阵。文献[7]通过降低滤波增益值来达到修正预测值的效果。文献[8]在一步预测均方误差阵上乘一个渐消因子,进行自适应滤波。文献[9]提出了错误预警率和故障探测率的概念,对故障的定位相对更加精确。上述方法都能一定程度的减小粗差带来的影响,但也存在不足之处。检测系统并不能保证百分之百的正确率,当检测系统出现误检时,用门限值代替正确的噪声值,会造成正确的观测值误差增大,降低了系统的稳定性。针对这种情况,本文提出一种基于牛顿插值的抗差方法,利用前几个时刻的噪声值组成的牛顿插值多项式进行外延,得到当前时刻的观测噪声值,使系统稳定性更高,提高了组合导航系统的抗差能力,并通过实验对此法进行了验证,取得了较好的抗差效果。
1 卡尔曼滤波算法与系统建模
1.1 卡尔曼滤波算法
卡尔曼滤波是20世纪90年代提出的一种最优估计的方法,是组合导航系统经常用到的一种滤波方法。卡尔曼滤波经常用在SINS/GNSS中来实现卫星导航系统和捷联惯导系统的信息融合[10-13]。离散卡尔曼滤波基本公式为:
状态一步预测:
(1)
状态估计:
(2)
滤波增益:
(3)
一步预测均方误差:
(4)
估计均方误差:
(5)
式中:Qk为k时刻的系统噪声方差阵;Rk为k时刻观测噪声方差阵。
1.2 组合导航系统建模
SINS/GNSS组合导航是近年来导航领域最常使用的一种方法,SINS可以辅助GNSS导航,而GNSS也可以对SINS不断地进行修正,避免了捷联惯导误差随时间增大的问题。在SINS/GNSS组合滤波器中,一般采用15维的误差状态建立状态方程,状态向量为:
(6)
Xk=Ak,k-1Xk-1+W
(7)
式中:Ak,k-1为状态转移矩阵,当状态向量为15维时,Ak,k-1是一个15维的方阵,因篇幅限制,且松组合导航系统的状态转移矩阵大同小异,本文略去状态转移矩阵的列写,W为系统噪声。SINS/GNSS的观测模型取GNSS和SINS输出的位置和速度之差作为观测值,观测向量为:
式中:v=[vx,vy,vz];r=[L,λ,h]。
量测方程离散化后的形式为:
Zk=HkXk+Vk
(8)
式中:Hk为量测矩阵,Hk为一个6行15列的矩阵;Vk为量测噪声。
2 采用卡方检验的故障诊断方法
(9)
引起对量测的估计误差为:
(10)
(11)
若系统发生故障,量测信息存在较大偏差,则残差均值不再为零。设统计量:
(12)
式中:Dk为测量残差的协方差矩阵,即:
(13)
Sk服从自由度为d的卡方分布,d为观测序列的维数,利用卡方分布进行假设检验,设H0为原假设,H1为备择假设,在此问题中,H0、H1分别定义为:
(14)
若当前时刻观测值发生故障,可以对当前时刻的所有观测值做抗差处理,但这会损坏无故障的观测值,造成不必要的误差。为了充分利用无故障的观测值,提高抗差效果,本文采用单时刻单维度的检验方法对故障观测值进行更精确的定位。取假设检验统计量为:
(15)
式中:Sk(i)为k时刻检验序列的第i个值;Jk(i)为k时刻残差序列的第i个值。有:
(16)
图1 阈值选取过小示例
图2 阈值选取过大示例
表1 显著性水平和阈值的关系
显著性水平α阈值T(1)显著性水平α阈值T(1)0.9750.0010.1002.7060.9500.0040.0503.8410.0900.0160.0255.0240.7500.1020.0106.6350.2501.3230.0057.879
3 基于牛顿插值的抗差方法
在处理数学问题时,由于一些函数太复杂,或者已知函数是一张表格,就可以通过一些离散值,按照一定的要求,构造此函数的一个近似表达式。代数插值的几何意义是:通过平面上给定的N+1个互异点(xi,yi)(i=0,1,…,N)做一条代数曲线y=P(x),近似的表示y=f(x)。构造插值多项式的方法不唯一,综合考虑插值精度,构造简便性等因素,本文将使用牛顿插值进行插值计算。牛顿插值多项式[16]的表达式为:
f(x)=N(x)+R(x)
(17)
式中:N(x)为牛顿插值公式;R(x)为牛顿插值多项式的余项,本文不做研究。牛顿插值公式为:
Nn(x)=f(x0)+(x-x0)f[x1+x0]+…+
(x-x0)(x-x1)…(x-xn-1)f[xn,xn-1,…,x0]
(18)
式中:n为插值多项式的阶数。
在经典组合导航系统中,可以每隔一段固定的时间进行一次导航滤波过程,使用等距节点的插值公式更加简便,其表达式为:
(19)
式中:fi=f(xi);Δnfi=Δ(Δn-1fi)=Δn-1fi+1-Δn-1fi;Δfi=fi+1-fi,设h为步长,当前时刻值为xk,起始时刻值为x0,t=(xk-x0)/h。将此牛顿插值表达式转换为另一种表达形式[17],令:
(20)
(21)
将δ设初值为2,步长为+0.5,末值设为10,依次将δ=2,2.5,3,…代入改进的插值多项式,通过大量的对比分析,δ=4时效果最佳,因此,本文将以δ=4来进行仿真分析。
Ck=diag[c1,c2,…,ci]
(22)
(23)
相应的观测方程变为:
(24)
插值多项式余项公式说明插值节点越多,一般说来误差越小,函数逼近越好,但这也不是绝对的。适当地提高插值多项式的次数,有可能提高计算结果的准确程度,但并非插值多项式的次数越高越好。当插值节点增多时,不能保证非节点处的插值精度得到改善,有时反而误差更大。龙格现象表明,大范围内使用高次插值,逼近的效果往往是不理想的。根据经验,牛顿插值在四阶时精度较高,出现龙格现象的概率也比较小,所以本文将以四阶牛顿插值多项式来进行实验验证。基于四阶牛顿插值的抗差滤波方法为:
(25)
(26)
此时:
4Vk-3(i)-4Vk-4(i)]/4
(27)
观测方程为:
(28)
4 仿真与验证
4.1 仿真轨迹与INS、GPS输出数据的生成
图3 飞行器轨迹
仿真总时长为500 s,周期为1 s,位置量测噪声分别为:经纬度噪声是以 0.000 15°为基数的白噪声,高度噪声是以5 m为基数的白噪声;速度噪声均为以1 km/h为基数的白噪声;姿态角噪声为以0.01°为基数的白噪声。为验证本抗差算法的有效性,制造量测不准确的外部环境,仿真在每隔10 s的时刻加入一个噪声放大系数m,使此时刻的噪声含有m倍粗差。
4.2 仿真对比分析
为了便于比较基于卡方检验和牛顿插值抗差方法的效果,本文分别对使用本方法和不使用本方法进行了仿真,仿真结果见图4~6。
图4 基于牛顿插值抗差滤波与一般滤波方法位置误差
图5 基于牛顿插值抗差滤波与一般滤波方法前段时间位置误差
图6 基于牛顿插值抗差滤波与一般滤波方法速度误差
在实际应用中,当系统没有抗差算法时,在GNSS信号受到干扰时间段内会由INS单独工作,为了验证基于牛顿插值的抗差方法的有效性,对使用本方法后和只使用INS进行了仿真对比,仿真结果见图7~9。
图7 基于牛顿插值抗差滤波与一般滤波方法前段时间速度误差
图8 基于牛顿插值抗差滤波方法与只使用INS位置误差对比
图9 基于牛顿插值抗差滤波方法与只使用INS速度误差对比
从图4、图6中可以看出,对于含有粗差的观测量不使用抗差滤波的话,由于量测噪声的急剧变化,量测量的值发生很大变化,从而使滤波精度大大降低,东向位置误差粗略范围0~-2 000 m,北向位置误差粗略范围0~1 000 m,天向位置误差粗略范围0~200 m;东向速度误差粗略范围0~2 m/s,北向速度误差粗略范围-5~0 m/s,天向速度误差粗略范围-2~2 m/s。在使用了基于卡方检验和牛顿插值的抗差滤波方法后,此时刻的量测噪声会根据前几个时刻的噪声值进行重新设计,使量测噪声恢复正常,使位置误差和速度误差减小并趋于稳定,东向位置误差为-13~25 m,北向位置误差为-10~26 m,天向位置误差为-18~19 m,东向速度误差为-0.4~0.6 m/s,北向速度误差为-0.8~1.5 m/s,天向位置误差为-1~1.2 m/s。为了更直观地展现出基于牛顿插值的抗差滤波的有效性,截取了前100 s的数据绘制图像,如图5、图7所示,一般滤波方法的位置误差在-20~20 m范围内波动,速度东向、北向误差在-0.5~0.5 m/s波动,天向速度误差在-1~1 m/s之间波动,而使用本文所提出的抗差方法所得的误差值均比一般滤波方法得出的误差值要小。
从图8、图9中可以看到,由于惯性导航具有累积误差,随着时间的推移,只使用惯性导航方法无论是位置误差还是速度误差都会慢慢增大,与此相比,本文提出的基于牛顿插值的抗差滤波方法能较好的使误差维持在一个较小的范围内,使导航精度得到提高。图9中,由于在卫星导航数据已加入噪声的前提下,观测值又加入噪声Vk,滤波后的天向速度出现不稳定的情况,对导航精度带来一定影响。但天向速度误差值仍在-2~2 m/s这样一个较小的范围内,且只有天向速度误差出现不稳定的情况。综合对比来看,基于牛顿插值的抗差卡尔曼滤波新算法仍不失为一种有效的抗差滤波方法。
5 结语
本文针对SINS/GNSS组合导航中观测值中会出现较大误差的问题,分析了产生误差的原因,根据含有粗差的残差向量不再服从高斯分布的情况,对故障进行检测,通过实验验证来分析确定阈值的大小,提高了故障定位的精度。然后,提出了一种基于牛顿插值的抗差卡尔曼滤波新算法,并加入了改善因子使修正后的量测值更加稳定。最后,通过大量的仿真分析,该算法使误差控制在一个很小的范围内,具有较好的抗差效果。该算法提高了抗差滤波系统的稳定性,计算简单,易于工程实现。