自适应卡尔曼滤波
卡尔曼滤波发散的原因
如果卡尔曼滤波是稳定的,随着滤波的推进,卡尔曼滤波估计的精度应该越来越高,滤波误差方差阵也应趋于稳定值或有界值。但在实际应用中,随着量测值数目的增加,由于估计误差的均值和估计误差协方差可能越来越大,使滤波逐渐失去准确估计的作用,这种现象称为卡尔曼滤波发散。
引起滤波器发散的主要原因有两点:
(1)描述系统动力学特性的数学模型和噪声估计模型不准确,不能直接真实地反映物理过程,使得模型与获得的量测值不匹配而导致滤波发散。这种由于模型建立过于粗糙或失真所引起的发散称为滤波发散。
(2)由于卡尔曼滤波是递推过程,随着滤波步数的增加,舍入误差将逐渐积累。如果计算机字长不够长,这种积累误差很有可能使估计误差方差阵失去非负定性甚至失去对称性,使滤波增益矩阵逐渐失去合适的加权作用而导致发散。这种由于计算舍入误差所引起的发散称为计算发散。
针对上述卡尔曼滤波发散的原因,目前已经出现了几种有效抑制滤波发散的方法,常用的有衰减记忆滤波、限定记忆滤波、扩充状态滤波、有限下界滤波、平方根滤波、和自适应滤波等。这些方法本质上都是以牺牲滤波器的最优性为代价来抑制滤波发散,也就是说,多数都是次优滤波方法。
自适应滤波
在很多实际系统中,系统过程噪声方差矩阵Q和量测误差方差阵R事先是不知道的,有时甚至连状态转移矩阵或量测矩阵H也不能确切建立。如果所建立的模型与实际模型不符可能回引起滤波发散。自适应滤波就是这样一种具有抑制滤波发散作用的滤波方法。在滤波过程中,自适应滤波一方面利用量测值修正预测值,同时也对未知的或不确切的系统模型参数和噪声统计参数进行估计修正。自适应滤波的方法很多,包括贝叶斯法、极大似然法、相关法与协方差匹配法,其中最基本也是最重要的是相关法,而相关法可分为输出相关法和新息相关法。
在这里只讨论系统模型参数已知,而噪声统计参数Q和R未知情况下的自适应滤波。由于Q和R等参数最终是通过增益矩阵K影响滤波值的,因此进行自适应滤波时,也可以不去估计Q和R等参数而直接根据量测数据调整K就可以了。
输出相关法自适应滤波的基本途径就是根据量测数据估计出输出函数序列{Ck},再由
{Ck}推算出最佳增益矩阵K,使得增益矩阵K不断地与实际量测数据{Ck}相适应。
.
Sage-Husa自适应卡尔曼滤波是在利用量测数据进行递推滤波时,通过时变噪声估计估值器,实时估计和修正系统噪声和量测噪声的统计特性,从而达到降低系统模型误差、抑制滤波发散提高哦滤波精度的目的。
xkk,k1xk1wk
zkHkxkvk
TE(wk)qk,E(wkwk)QkkjTE(vk)rk,E(vkvk)RkkjTE(wvkj)0
Sage-Husa自适应卡尔曼滤波算法可描述为
ˆkxˆk,k1Kk~xzk
ˆk,k1k,k1xˆk1qˆk1x
~ˆk,k1rˆkzkzkHkx
TTˆ]1KkPk,k1Hk[HkPk,k1HkRk
ˆPk,k1k,k1Pk1Tk,k1Qk1
Pk(IKkHk)Pk,k1
ˆˆkˆk.其中,r、RK、q和Qk由以下时变噪声统计估值器获得:
ˆˆk1(1dk)rˆkdk(zk1Hk1xˆk1,k)r
T~Tˆ(1d)Rˆd(~Rk1kkkzk1zk1Hk1Pk1,kHk1)
ˆk1(1dk)qˆkdk(xk1k1,kxˆk)q
.
T~TTˆ(1d)Qˆd(K~Qk1kkkk1zk1zk1Kk1Pk1k1,kPkk1,k)式中:
dk1b1bk1,0b1为遗忘因子。
如果系统状态变量的维数比较高,而Sage-Husa自适应滤波算法中又增加了对系统噪声统计特性的计算,计算量将大大增加,实时性也将难以得到保证。除此之外,对于阶次较高的系统,Sage-Husa自适应滤波算法中Rk和Qk的在线估计有时会由于计算发散失去半正定性和正定性而出现滤波发散现象,此时Sage-Husa自适应滤波算法的稳定性和收敛性不能完全保证。
基于极大似然准则的自适应卡尔曼滤波,通过系统状态方差阵和量测噪声方差阵实时估计系统噪声统计特性的变化,以保证滤波器更好地适应这种变化。极大似然估计从系统量测量出现概率最大的角度估计,其特点是不仅考虑新息的变化,而且考虑新息协方差矩
ˆ和系统噪声协方差矩阵Q为: 阵Cvk的变化。它的量测噪声协方差矩阵RˆˆHPHTˆCRkvkkk,k1k
ˆ1QkNikN1xxikTiPkTk,k1Pk1k,k1
ˆkxˆk,k1Kkvkxkx
1CvkN
TiiikN1vvk
式中:
ˆk,k1vkzkz,N为平滑窗口的宽度。
扩展卡尔曼滤波
最初提出的卡尔曼滤波基本理论只适用于状态方程和量测方程均为线性的随机线性高斯系统。但是大部分系统是非线性的,其中还有许多事强非线性的。非线性估计的核心就在于近似,给出非线性估计方法的不同就在于其近似处理的思想和实现手段不同。近似的本质就是对难以计算的非线性模型施加某种数学变换,变换成线性模型,然后用Bayes估计原理进行估计。进一步说,非线性变换到线性变换主要有两种实现手段,一种是Taylor多项式展开,一种是插值多项式展开。
Bucy和Y.Sunahara等人致力于研究将经典卡尔曼滤波理论扩展到非线性随机系统滤波估计中,提出了离散非线性随机系统扩展卡尔曼滤波(Extended kalman filter,以下简称EKF)。EKF是传统非线性估计中的代表,其基本思想是将非线性状态函数和量测函数进行局部线性化,即进行一阶Taylor多项式展开,然后应用线性系统Kalman滤波公式。
非线性离散系统状态方程和观测方程的一般形式如下所示
xk1f(xk,uk)kwk
zkg(xk,uk)vk 1-1
rpquRwRvRkkk式中:为输入向量;和均为高斯白噪声,且互不相关,其统计特性
为:
其中,
E(wk)0,Cov(wk,wj)QkkjE(vk)0,Cov(vk,vj)RkkjCov(wk,vj)0
式中,Qk为过程激励噪声协方差矩阵,Rk为观测噪声协方差矩阵。f(xk1,uk1)是一个非线性状态转换函数,g(xk1,uk1)是一个非线性量测函数。每一个时刻点,根据一阶泰勒展开将
f(xk1,uk1)g(xk1,uk1),,·)和非线性量测函数g(·,·)围绕滤波值线性化,即将非线性状态函数f(·展开泰勒级数,并略去二阶以上项,得到
f(xk,uk)xkˆk,uk)f(xk,uk)f(xˆkxkxˆk)(xkx 1-2
ˆk,uk)g(xk,uk)g(xg(xk,uk)xkˆkxkxˆk)(xkx 1-3
定义
ˆkf(xk,uk)xkˆkxkx,
ˆg(xk,uk)Hkxkˆkxkx,根据式(1-1)、式(1-2)和式(1-3)
可以得到非线性系统线性化后只与状态变量有关的表达式,如下
ˆkxk[f(xˆkxk]kwkˆk,uk)xk1ˆˆx]vˆk,uk)HkkkzkHkxk[g(x 1-4
ˆk,uk)kxkˆk,uk)Hkxk式1-4中,注意到f(x并非xk的函数,g(x并非xk的函数,根据1-4近
ˆˆ似结果,应用上节的Kalman滤波器计算可以得到EKF迭代算法:
ˆkf(xk,uk)xkˆg(xk,uk)Hkxk定义
ˆkxkx,
ˆkxkx,可得
ˆ0E(x0),P0var(x0)滤波方程初始条件 x
状态先验估计值
ˆk,k1f(xˆk1,uk1)x
误差协方差先验估计值
TPk,k1k,k1Pk1Tk,k1k,k1Qk1k,k1
增益矩阵
TTKkPk,k1Hk[HkPk,k1HkRk]1
状态后验估计值
ˆkxˆk,k1Kk[zkg(xˆk1,uk)]x
误差协方差后验估计值
Pk(IKkHk)Pk,k1
无迹卡尔曼滤波(UKF)
EKF是一种次优非线性高斯滤波器,它采用对非线性函数进行线性化近似的方法,来计算状态分布经非线性函数传递之后的特性。尽管EKF得到了广泛的应用,但它依然存在自身无法克服的理论局限性:①要求非线性系统状态函数和量测函数必须是连续可微的,这限制了EKF的应用范围;②对非线性函数的一阶线性化近似精度偏低,特别地,当系统具有强非线性时,EKF估计精度严重下降,甚至发散;③需要计算非线性函数的雅克比矩阵,容易造成EKF数值稳定性差和出现计算发散。
为了克服上述EKF的缺陷,能够以较高的精度和较快的计算速度处理非线性高斯系统的滤波问题,Julier等人根据确定性采样的基本思路,基于Unscented变换(UT)提出了Unscented卡尔曼滤波(UKF)。
与EKF类似,UKF仍继承了卡尔曼滤波器的基本结构,不同之处在于UKF用Unscented变换取代了EKF中的局部线性化。UKF仍假设随机系统的状态必须服从高斯分布,但取消了对系统模型的限制条件,也就是说,不要求系统是近似线性的,同时,UKF不需要计算雅克比矩阵,因此不要求状态函数和量测函数必须是连续可微的,它甚至可以应用于不连续系统。可以证明:不论系统非线性程度如何,UT变换理论上至少能以三阶泰勒精度逼近任何非线性高斯系统状态的后验均值和协方差,因此UKF的理论估计精度优于EKF。
ˆk1UKF法首先要构造Sigma 散点集, 设状态向量为n 维, x 为时刻k-1 的状态向量估
计值, Pk1为该时刻状态向量的协方差矩阵, 2n+1维的Sigma 点集可以表示为:
x0,k1xˆk1ˆk1((n)Pi,k1)ixi,k1xˆk1((n)Pi,k1)ixin,k1x,i=1,2,...,n
对应于i的一阶二阶权系数为
/(n)i0Wi1/2(n) i0
m/(n)12i0Wi1/2(n) i0
cn 其中,(n)2参数决定第i 个Sigma 点在状态均值xk1周围的扩展空间,是取值区间为
ˆ
[ 0.0001, 1] 的常数; 为冗余量;为与状态向量的先验分布相关的参数,对高斯分布,=2为最优。
ˆk1Pk1由时刻k-1的x和来计算Sigma 点集
xi,k1(i0,1...,L))qk1,通过非线性函数fk1(·传播为
xi,k/k1,由
xi,k/k1ˆk/k1可得状态向量预测值x及误差协方差阵Pk/k1
xi,k/k1fk1(xi,k1)qk1 i0,1,...,L
ˆk/k1Wixi,k/k1Wimfk1(xi,k1)qk1xmi0i0LL
ˆk/k1)(xi,k/k1xˆk/k1)TQk1Pk/k1Wic(xi,k/k1xi0L
xi,k1(i0,1...,L)ˆk1Pk1同理,利用x和按照前面的采样策略来计算Sigma 点集
,通过非
)rk线性量测函数hk(·传播为
i,k/k1,由
i,k/k1ˆk/k1可得输出预测值z及自协方差阵
P~zk和互协方
差阵
P~xk~zk
i,k/k1hk(xi,k/k1)rk
Lˆk/k1Wii,k/k1Wimhk(xi,k/k1)rkzmi0i0L
cˆk/k1)(i,k/k1zˆk/k1)TRkP~zkWi(i,k/k1zi0L
cˆˆk/k1)TP~xk~zkWi(xi,k/k1xk/k1)(i,k/k1zi0L
在获得新的量测后zk,进行滤波量测更新
xˆkxˆk/k1Kk(zkzˆk/k1)1~KkP~xk~zkPzkTPPKPK~kk/k1kzkk
中心差分卡尔曼滤波器 (CDKF)
Ito等人从数值积分的观点出发提出了一种次优高斯滤波器:中心差分滤波器(Central Difference Filter,CDF)。CDF使用多项式插值方法来计算多维积分,其计算简单,易于实现。
几乎同时,M.Norgaard等人也使用stirling多项式插值公式来近似计算非线性函数的多维积分,得到了分开差分滤波器(Divided Difference Filter,DDF)。武元新等人通过理论分析指出,DDF和CDF都是基于函数拟合的思想来实现的,即都是使用一个函数序列近似被积函数,且函数序列中的每个函数积分都有解析解,此时近似函数的积分就可以看作是对积分的近似。由于DDF和CDF在本质上是一致的,有异曲同工之妙,因此R.V.Merwe等人统一将它们称为中心差分卡尔曼滤波器(Central Difference Kalman Filter,CDKF),并给出了CDKF的滤波递推公式。
平方根SPKF算法
由于CDKF所采用的多项式插值公式等价于UKF中UT变换对称策略,不同之处仅体现在采样点权值及计算预测协方差的表达式上,故Merwe等人采用一个统一的滤波框架来描述UKF和CDKF,称为Sigma点卡尔曼滤波器(Sigma Points Kalman Filter,SPKF)。之后针对SPKF滤波器存在计算发散的问题,Merwe等将QR分解和Cholesky因子更新
引入到滤波器预测更新中,提出了平方根SPKF算法。
因篇幅问题不能全部显示,请点此查看更多更全内容