EKF、UKF和CKF的滤波性能对比研究
2019-06-25赵辰
赵 辰
(1.石家庄铁道大学 电气与电子工程学院,河北 石家庄 050043;2.河北省交通安全与控制重点实验室,河北 石家庄 050043)
0 引言
滤波是指将有用信号中的噪声进行滤除的一种方法。生活中的系统基本都是非线性的,针对非线性系统的滤波方法主要有EKF、UKF和CKF。EKF是将非线性函数展开成泰勒级数并略去高阶项,一般适用于弱非线性系统。EKF相对UKF、CKF较为简单且容易实现,但在强非线性情况下滤波性能差,且计算量相比UKF和CKF大,有时会导致滤波发散[1]。UKF则用UT变换对均值和协方差的非线性传递进行处理,因此其精度高于EKF。UKF广泛应用于目标跟踪、汽车行驶状态估计、导航系统和飞行器飞行姿态估计等领域。UKF虽然克服了EKF易发散的缺点,但在高维系统中UKF需要合理地调节参数才能得到好的滤波效果[2],应用比较困难。
最近,基于Cubature变换的CKF滤波算法由Arasaratnam et al提出[3-4],该算法在状态估计、机动目标定位等领域得到广泛的应用。CKF应用球面径向准则对状态后验均值和协方差进行逼近,并通过2n个相同权值的Cubature点经系统方程得到新的状态点进而推导出下一时刻状态的预测点,整个过程不需对复杂的Jacobi矩阵进行计算,具有很好的滤波效果[5]。针对目前的相关文献,大多数是基于EKF与UKF滤波算法的应用对比研究,以及UKF与CKF滤波算法的应用对比研究,而基于3种滤波算法滤波性能对比研究的文献尚不存在。因此本文在相同的非线性系统模型下,对比分析了EKF、UKF和CKF滤波算法的实现原理以及各自估计值与真实值的误差,综合比较了3种算法的滤波性能。
1 扩展卡尔曼滤波
EKF的离散非线性系统状态和观测方程分别表示为
(1)
现在假定控制量的输入为0,已知噪声驱动矩阵G(k),过程噪声W(k)和观测噪声V(k)相互独立。过程噪声W(k)、观测噪声V(k)都是均值为0的高斯白噪声。
(2)
令
(3)
(4)
则状态方程为
X(k+1)=Φ(k+1|k)X(k)+G(k)W(k)+Φ(k)
(5)
式中,初始值为X(0)=E[X(0)]。
(6)
令
(7)
(8)
则观测方程为
Z(k)=H(k)X(k)+y(k)+V(k)
(9)
将卡尔曼滤波方程应用到非线性系统的状态方程(5)和观测方程(9)可得EKF滤波递推方程
(10)
P(k+1|k)=Φ(k+1|k)P(k|k)ΦT(k+1|k)+Q(k+1)
(11)
K(k+1)=P(k+1)HT(k+1)[H(k+1)P(k+1|k)HT(k+1)+R(k+1)]-1
(12)
(13)
P(k+1)=[I-K(k+1)H(k+1)]P(k+1|k)
(14)
式中,滤波的初始状态值X(0)和误差的初始协方差阵P(0)初始值分别为:E[X(0)]、var[X(0)]。
2 无迹卡尔曼滤波
UKF与EKF不同的是,它并不是线性化处理估计点附近的非线性方程f和h,而是由UT变换确定的采样点来表示非线性函数的高斯分布,进而近似系统状态的概率密度以达到状态估计的目的[7]。
2.1 UT变换的原理
UT变换的原理为:UT变换用一个确定数量的参数集来近似非线性系统的高斯分布,并在原来状态的分布中按能够达到现在状态分布和原来状态分布的均值和协方差相等的规则选取部分采样点,再在非线性的函数中代入上述采样点求出相应的点集,均值和误差协方差就可以通过求出的点集得到,这样求得的均值和协方差具有2阶及以上精度[8]。
(1)求解2n+1个Sigma点,即采样点。
(15)
(2)计算上述采样点对应的权值。
(16)
式中,上标表示第几个采样点;m为平均值;c为协方差;a为控制采样点的状态;λ=a2(n+κ)-n是比例参数,可以降低预测误差,κ为待选参数,它的取值不受界限的限制,并能保证(n+λ)P为半正定矩阵;β≥0是权系数,它可以合并方程中的高阶项进而将高阶项的影响考虑在内。
2.2 UKF算法实现
对于不同时刻k,非线性系统可由具有W(k)的随机变量X和具有V(k)的观测变量Z构成并表示为
(17)
式中,f是非线性状态方程函数;h是非线性观测方程函数。
设W(k)含有协方差阵Q,V(k)含有协方差阵R,不同时刻k随机变量X的UKF滤波步骤如下:
(1)利用式(16)、式(17)取得一组采样点及采样点的权值
(18)
(2)一步预测2n+1个Sigma点集的结果为
X(i)(k+1|k)=f[k,X(i)(k|k)]i=1,2,…,2n+1
(19)
(3)计算非线性系统状态一步预测的值及协方差阵,其中权值w(i)通过式(16)得到。这不同于普通卡尔曼滤波算法,普通卡尔曼滤波算法只需通过上一时刻的状态代入状态方程,计算一次就可以得到状态的预测;而UKF是利用一组Sigma的预测值,并对它们进行加权求平均值,进而得到系统状态量的一步预测
(20)
(21)
(4)根据式(3)中一步预测结果的值,进行相同的变换得到新Sigma点集
(22)
(5)将上一步骤的新Sigma点集代入式(1)中,得到观测量
Z(i)(k+1|k)=h[X(i)(k+1|k)]i=1,2,…,2n+1
(23)
(6)通过步骤(5)的sigma点集的观测值计算得到观测后的均值和协方差
(24)
(25)
(26)
(7)计算卡尔曼增益
(27)
(8)最后状态更新和协方差更新的结果为
(28)
P(k+1|k+1)=P(k+1|k)-K(k+1)PzkzkKT(k+1)
(29)
由上可得,UKF在处理非线性滤波时能以2阶或2阶以上泰勒精度逼近后验均值和协方差,而EKF达不到二阶以上精度,因此UKF相比EKF具有更高的滤波精度。
3 容积卡尔曼滤波
CKF是一种新的用于非线性系统滤波的方法,可以高效地逼近高斯概率密度函数而成为高精度数值的卡尔曼滤波器。CKF基于Cubature规则在笛卡儿坐标系下通过高斯加权的多维函数积分计算转化为单个多维的几何体容积计算,可以得到较高数值精度的计算结果,因此进行非线性滤波变换后的精度优于EKF、UKF[9]。CKF依靠确定的Cubature点来计算后验概率密度函数[10-11],相比EKF有较好的可实现性,同时也避免了截断误差。与UKF相比,CKF的Cubature点权值大小相等且对称出现,因此并不需要像UKF那样提前设置参数,在选择方式上更加简捷,计算速度更快。
(30)
式中,ei∈Rn表示第i个元素为1的单位向量。
(31)
(32)
3.1 状态更新
(1)基于状态估计的采样点的计算。
(33)
(34)
(2)容积点Xi,k|k-1的预测。
Xi,k|k-1=f(ξi,k-1),i=1,2,…,L
(35)
(36)
(4)状态预测误差Pk|k-1。
(37)
3.2 量测更新
(1)基于状态预测的采样点的计算。
(38)
(3)新息的协方差Pzz,k|k-1。
(39)
(4)状态与量测向量之间的互协方差矩阵Pxz,k|k-1。
(40)
(5)卡尔曼增益矩阵Gk。
(41)
(42)
(7)状态估计协方差矩阵Pk。
(43)
同样可以看出,CKF也可以2阶或2阶以上Taylor精度逼近非线性系统的后验均值和协方差,由此判断CKF估计精度也高于EKF。从式(33)可以看出,与UKF相比,CKF在非线性滤波过程中不需要任何参数,且始终为正的权值Wi,适合强非线性系统的估计,这就保证了滤波器可靠地运行。因此CKF较UKF来看,可以在非线性系统都保持更高的数值稳定性,有效克服了UKF在非线性系统中可能会滤波发散的缺点[13]。
4 仿真对比分析
在Matlab中进行实验,选择过程状态协方差阵Q=10,测量噪声协方差阵R=1,原始状态阵X=1,原始估计方差阵p=1 000,样本数目n=100。本模型为非线性模型,其离散方程为
(44)
各个算法的估计值对比图、估计值误差对比图和10次仿真结果估计值误差表分别如图1、图2和表1所示。
图1 3种算法估计值对比图
图2 3种算法估计值误差对比图
表1 10次仿真结果估计值误差
根据图1、图2和表1归纳得出如下结论。
(1)EKF具有较快的计算速度,但它的估计值偏离真实值的程度较大,尤其在样本数目为50,72时刻左右偏离的较明显,估计值误差明显最大。
(2)UKF较EKF的估计值离真实值更接近一些,这是因为UKF基于UT变换进行确定性采样,且用一系列指定的样本来对系统状态的后验概率密度进行逼近,滤波效果优于EKF。但在样本数目为3,49,74时刻左右偏离真实值较明显,估计值误差较大。
(3)CKF较EKF、UKF的估计值更加接近真实值,估计值误差为3种算法最小,因此它的估计精度最高。因为CKF在状态估计过程中,不需要任何的参数,权值为正,从而保证了滤波器可以稳定地运行。
5 结论
通过EKF、UKF和CKF的对比可以发现,EKF是在普通卡尔曼滤波的基础上通过对非线性函数方程的近似线性化处理进而得到一个线性化的模型来进行状态估计;而UKF通过一个高斯分布对非线性方程的概率密度进行近似,再用一些指定的Sigma点投影到观测方程中得到一个新的高斯分布去近似之前的高斯分布进而估计系统的状态。在计算速度方面,EKF较快,但滤波性能最差。UKF虽能很好地解决这个问题,但假如系统状态为非高斯环境,就极易产生较大的误差。CKF因采用Cubature规则无需对非线性系统进行线性化处理,且无论状态维数大小和参数的选择,都能保证非线性系统的有效滤波估计,对比分析可知CKF的估计值最接近真实值,且估计值误差最小。