自适应卡尔曼滤波
卡尔曼滤波发散的原因
如果卡尔曼滤波是稳定的,随着滤波的推进,卡尔曼滤波估计的精度应该越来越高,滤波误差方差阵也应趋于稳定值或有界值。但在实际应用中,随着量测值数目的增加,由于估计误差的均值和估计误差协方差可能越来越大,使滤波逐渐失去准确估计的作用,这种现象称为卡尔曼滤波发散。
引起滤波器发散的主要原因有两点:
(1)描述系统动力学特性的数学模型和噪声估计模型不准确,不能直接真实地反映物理过程,使得模型与获得的量测值不匹配而导致滤波发散。这种由于模型建立过于粗糙或失真所引起的发散称为滤波发散。
(2)由于卡尔曼滤波是递推过程,随着滤波步数的增加,舍入误差将逐渐积累。如果计算机字长不够长,这种积累误差很有可能使估计误差方差阵失去非负定性甚至失去对称性,使滤波增益矩阵逐渐失去合适的加权作用而导致发散。这种由于计算舍入误差所引起的发散称为计算发散。
针对上述卡尔曼滤波发散的原因,目前已经出现了几种有效抑制滤波发散的方法,常用的有衰减记忆滤波、限定记忆滤波、扩充状态滤波、有限下界滤波、平方根滤波、和自适应滤波等。这些方法本质上都是以牺牲滤波器的最优性为代价来抑制滤波发散,也就是说,多数都是次优滤波方法。
自适应滤波
在很多实际系统中,系统过程噪声方差矩阵Q和量测误差方差阵R事先是不知道的,有时甚至连状态转移矩阵?或量测矩阵H也不能确切建立。如果所建立的模型与实际模型不符可能回引起滤波发散。自适应滤波就是这样一种具有抑制滤波发散作用的滤波方法。在滤波过程中,自适应滤波一方面利用量测值修正预测值,同时也对未知的或不确切的系统模型参数和噪声统计参数进行估计修正。自适应滤波的方法很多,包括贝叶斯法、极大似然法、相关法与协方差匹配法,其中最基本也是最重要的是相关法,而相关法可分为输出相关法和新息相关法。
在这里只讨论系统模型参数已知,而噪声统计参数Q和R未知情况下的自适应滤波。由于Q和R等参数最终是通过增益矩阵K影响滤波值的,因此进行自适应滤波时,也可以不去估计Q和R等参数而直接根据量测数据调整K就可以了。
输出相关法自适应滤波的基本途径就是根据量测数据估计出输出函数序列
{Ck},再由{Ck}推算出最佳增益矩阵K,使得增益矩阵K不断地与实际量测数
据{Ck}相适应。
.
Sage-Husa自适应卡尔曼滤波是在利用量测数据进行递推滤波时,通过时变噪声估计估值器,实时估计和修正系统噪声和量测噪声的统计特性,从而达到降低系统模型误差、抑制滤波发散提高哦滤波精度的目的。
xk??k,k?1xk?1?wk
zk?Hkxk?vk
T?E(wk)?qk,E(wkwk)?Qk?kj??T?E(vk)?rk,E(vkvk)?Rk?kj ?T??E(wkvj)?0Sage-Husa自适应卡尔曼滤波算法可描述为
?k?x?k,k?1?Kk~xzk ?k,k?1??k,k?1x?k?1?q?k?1 x~?k,k?1?r?k zk?zk?HkxTT?]?1 Kk?Pk,k?1Hk[HkPk,k?1Hk?Rk?Pk,k?1??k,k?1Pk?1?Tk,k?1?Qk?1
Pk?(I?KkHk)Pk,k?1
?由以下时变噪声统计估值器获得: ?、q?k、R?k和Q.其中,rkK?k?1?(1?dk)r?k?dk(zk?1?Hk?1x?k?1,k) rT~T??(1?d)R??d(~Rk?1kkkzk?1zk?1?Hk?1Pk?1,kHk?1)
?k?1?(1?dk)q?k?dk(xk?1??k?1,kx?k) q
T~TT??(1?d)Q??d(K~.Qk?1kkkk?1zk?1zk?1Kk?1?Pk?1??k?1,kPk?k?1,k)
1?b,0?b?1为遗忘因子。 k?11?b 如果系统状态变量的维数比较高,而Sage-Husa自适应滤波算法中又增加式中:dk?了对系统噪声统计特性的计算,计算量将大大增加,实时性也将难以得到保证。除此之外,对于阶次较高的系统,Sage-Husa自适应滤波算法中Rk和Qk的在线估计有时会由于计算发散失去半正定性和正定性而出现滤波发散现象,此时Sage-Husa自适应滤波算法的稳定性和收敛性不能完全保证。
基于极大似然准则的自适应卡尔曼滤波,通过系统状态方差阵和量测噪声方差阵实时估计系统噪声统计特性的变化,以保证滤波器更好地适应这种变化。极大似然估计从系统量测量出现概率最大的角度估计,其特点是不仅考虑新息的变
?和系统噪化,而且考虑新息协方差矩阵Cvk的变化。它的量测噪声协方差矩阵R?为: 声协方差矩阵Q??HPHT ??CRkvkkk,k?1k??1QkNi?k?N?1??x?xikTi?Pk??Tk,k?1Pk?1?k,k?1
?k?x?k,k?1?Kkvk ?xk?x1Cvk?NTiii?k?N?1?vvk
?k,k?1,N为平滑窗口的宽度。 式中:vk?zk?z
扩展卡尔曼滤波
最初提出的卡尔曼滤波基本理论只适用于状态方程和量测方程均为线性的随机线性高斯系统。但是大部分系统是非线性的,其中还有许多事强非线性的。非线性估计的核心就在于近似,给出非线性估计方法的不同就在于其近似处理的思想和实现手段不同。近似的本质就是对难以计算的非线性模型施加某种数学变换,变换成线性模型,然后用Bayes估计原理进行估计。进一步说,非线性变换到
线性变换主要有两种实现手段,一种是Taylor多项式展开,一种是插值多项式展开。
Bucy和Y.Sunahara等人致力于研究将经典卡尔曼滤波理论扩展到非线性随机系统滤波估计中,提出了离散非线性随机系统扩展卡尔曼滤波(Extended kalman filter,以下简称EKF)。EKF是传统非线性估计中的代表,其基本思想是将非线性状态函数和量测函数进行局部线性化,即进行一阶Taylor多项式展开,然后应用线性系统Kalman滤波公式。
非线性离散系统状态方程和观测方程的一般形式如下所示
xk?1?f(xk,uk)??kwkzk?g(xk,uk)?vk 1-1
式中:uk?Rr为输入向量;wk?Rp和vk?Rq均为高斯白噪声,且互不相关,其统计特性为:
?E(wk)?0,Cov(wk,wj)?Qk?kj?其中,?E(vk)?0,Cov(vk,vj)?Rk?kj
??Cov(wk,vj)?0式中,Qk为过程激励噪声协方差矩阵,Rk为观测噪声协方差矩阵。
f(xk?1,uk?1)是一个非线性状态转换函数,g(xk?1,uk?1)是一个非线性量测函数。每
一个时刻点,根据一阶泰勒展开将f(xk?1,uk?1),g(xk?1,uk?1)线性化,即将非线性状
,·)和非线性量测函数g(·,·)围绕滤波值展开泰勒级数,并略去二阶以上态函数f(·项,得到
?k,uk)?f(xk,uk)?f(x?f(xk,uk)?xk?g(xk,uk)?xk?kxk?x?k) 1-2 (xk?x?k,uk)?g(xk,uk)?g(x?k??f(xk,uk)定义??xk?kxk?x?k) 1-3 (xk?x?kxk?x???g(xk,uk),Hk?xk?kxk?x,根据式(1-1)、式(1-2)
和式(1-3)可以得到非线性系统线性化后只与状态变量有关的表达式,如下
?kxk?[f(x?kxk]??kwk??k,uk)???xk?1?? 1-4 ????k,uk)?Hkxk]?vk??zk?Hkxk?[g(x
?x并非x的?kxk并非xk的函数,g(x?k,uk)???k,uk)?H式1-4中,注意到f(xkkk函数,根据1-4近似结果,应用上节的Kalman滤波器计算可以得到EKF迭代算法:
?k??f(xk,uk)定义??xk?kxk?x???g(xk,uk),Hk?xk?kxk?x,可得
?0?E(x0),P0?var(x0) 滤波方程初始条件 x?k,k?1?f(x?k?1,uk?1) 状态先验估计值 xT误差协方差先验估计值 Pk,k?1??k,k?1Pk?1?Tk,k?1??k,k?1Qk?1?k,k?1 TT增益矩阵 Kk?Pk,k?1Hk[HkPk,k?1Hk?Rk]?1
?k?x?k,k?1?Kk[zk?g(x?k?1,uk)] 状态后验估计值x误差协方差后验估计值 Pk?(I?KkHk)Pk,k?1
无迹卡尔曼滤波(UKF)
EKF是一种次优非线性高斯滤波器,它采用对非线性函数进行线性化近似的方法,来计算状态分布经非线性函数传递之后的特性。尽管EKF得到了广泛的应用,但它依然存在自身无法克服的理论局限性:①要求非线性系统状态函数和量测函数必须是连续可微的,这限制了EKF的应用范围;②对非线性函数的一阶线性化近似精度偏低,特别地,当系统具有强非线性时,EKF估计精度严重下降,甚至发散;③需要计算非线性函数的雅克比矩阵,容易造成EKF数值稳定性差和出现计算发散。
为了克服上述EKF的缺陷,能够以较高的精度和较快的计算速度处理非线性高斯系统的滤波问题,Julier等人根据确定性采样的基本思路,基于Unscented变换(UT)提出了Unscented卡尔曼滤波(UKF)。
与EKF类似,UKF仍继承了卡尔曼滤波器的基本结构,不同之处在于UKF用Unscented变换取代了EKF中的局部线性化。UKF仍假设随机系统的状态必须服从高斯分布,但取消了对系统模型的限制条件,也就是说,不要求系统是近似线性的,同时,UKF不需要计算雅克比矩阵,因此不要求状态函数和量测函数必须是连续可微的,它甚至可以应用于不连续系统。可以证明:不论系统非线性程度如何,UT变换理论上至少能以三阶泰勒精度逼近任何非线性高斯系统状态的后验均值和协方差,因此UKF的理论估计精度优于EKF。