摘要
本文在线性最优滤波的基础上结合正交投影详细介绍扩展卡尔曼滤波的数学原理并给出了数学推导过程。
基础背景
扩展卡尔曼滤波[1]作为卡尔曼滤波的扩展,在非线性系统的应用中取得了相当的成功。阅读本文前需要读者先行阅读卡尔曼滤波原理[2]并理解其中的正交投影的数学原理。本文数学推导部分采用的标记与卡尔曼论文的标记类似。
符号约定
本文主要处理离散系统,即信号将会在相同的时间间隔内被采样获取得到,故本文中涉及时间的符号t为具备整数型意义。向量作为n×1维的矩阵,为了更好的与矩阵区分开,将使用小写粗体字母表示,如aa,bb,…,zz;矩阵采用大写粗体字母表示,如AA,BB,…,ZZ。
动态系统的数学模型
一个非线性离散系统可以用如下数学模型来表示:
xx(t)=ff(xx(t−1))+uu(t−1)其中xx(t)为n×1维的随机过程向量,uu(t)为均值为零的高斯随机过程。
非线性问题的解
问题: 考虑如下动态系统
xx(t)=ff(xx(t−1))+uu(t−1)其中xx(t)为n×1维的随机过程向量,uu(t)为均值为零的高斯随机过程。给定观测结果yy(t0),…,yy(t)的值,找到t时刻xx(t)的最优估计值
xx∗(t|t)使得估计误差的最小均方值达到最小。
状态预测方程
根据定义
xx∗(t|t−1)=ˆE[xx(t)|Y(t−1)]将式(1)代入上述式子得到
xx∗(t|t−1)=ˆE[ff(xx(t−1))+uu(t−1)|Y(t−1)]现对f(xx(t−1))进行泰勒展开有
ff(xx(t−1))=ff(xx∗(t−1|t−1))+JJf(xx∗(t−1|t−1))(xx(t−1)−xx∗(t|t−1))代入式(2)得到
xx∗(t|t−1)=ff(xx∗(t−1|t−1))+JJf(xx∗(t−1|t−1)×E[~xx(t−1|t−1)|Y(t−1)]=ff(xx∗(t−1|t−1))式子(3)称为状态预测方差。
滤波增益系数
假定xx∗(t|t−1)已知,于是有
xx∗(t|t)=ˆE[xx(t)|Y(t)]=ˆE[xx(t)|Y(t−1)]+ˆE[xx|Z(t)]=xx∗(t|t−1)+ˆE[xx(t)|Z(t)]注意到
ˆE[xx(t)|Z(t)]=ΔΔ∗(t)~yy(t|t−1)上式右边
~yy(t|t−1)=yy(t)−¯yy(t|t−1)=yy(t)−mm(xx∗(t|t−1))将式(5)与式(6)代入式(4)得到
xx∗(t|t)=xx∗(t|t−1)+ΔΔ∗(t)[yy(t)−mm(xx∗(t|t−1))]注意到
~xx(t|Z(t))=xx(t)−ˆE[xx(t)|Z(t)]与
~yy(t|t−1)是正交的,两者进行正交乘积有
0=E[[xx(t)−ΔΔ∗(t)~yy(t|t−1)]~yyT(t|t−1)]=E[xx(t)~yyT(t|t−1)]−ΔΔ∗(t)E[~yy(t|t−1)~yyT(t|t−1)]注意到
xx(t)=¯xx(t|t−1)+~xx(t|t−1)同时
¯xx(t|t−1)与
Z(t)是正交的,式(8)可以化简为
0=E[~xx(t|t−1)~yyT(t|t−1)]−ΔΔ∗(t)E[~yy(t|t−1)~yyT(t|t−1)]对yy(t)在
~xx(t|t−1)进行泰勒展开得到
yy(t)=mm(xx∗(t|t−1))+JJm(xx∗(t|t−1))(xx(t)−xx∗(t|t−1)))代入式子(6)得到
~yy(t|t−1)=JJm(xx∗(t|t−1))(xx(t)−xx∗(t|t−1)))=JJm(xx∗(t|t−1))~xx(t|t−1)将式子(10)代入式子(9)有
0=E[~xx(t|t−1)~xxT(t|t−1)]×JJTm(xx∗(t|t−1))−ΔΔ∗(t)JJm(xx∗(t|t−1))×E[~xx(t|t−1)~xxT(t|t−1)]×JJTm(xx∗(t|t−1))=PP(−)(t)JJTm(xx∗(t|t−1))−ΔΔ∗(t)JJm(xx∗(t|t−1))PP(−)(t)×JJTm(xx∗(t|t−1))记
JJm(xx∗(t|t−1))=JJm(−)式(11)可以简写为
0=PP(−)(t)JJTm(−)−ΔΔ∗(t)JJm(−)PP(−)(t)JJTm(−)解得非线性系统的卡尔曼增益
ΔΔ∗=PP(−)JJTm(−)[JJm(−)PP(−)JJTm(−)]−1状态更新方程
注意到式子(4)有
xx∗(t|t)=xx∗(t|t−1)+ˆE[xx(t)|Z(t)]=ˆE[xx(t)|Y(t−1)]+ΔΔ∗(t)~yy(t|t−1)=ˆE[ff(xx(t−1))|Y(t−1)]+ΔΔ∗(t)~yy(t|t−1)现在对ff(xx(t−1))进行泰勒展开,有
ff(xx(t−1))=ff(xx∗(t−1|t−1))+JJf(xx∗(t−1|t−1))~xx(t−1|t−1)代入式(13)有
xx∗(t|t)=ff(xx∗(t−1|t−1))+ΔΔ∗(t)~yy(t|t−1)上述式子为状态更新方程。
先验估计误差协方差矩阵
记JJf(+)(t−1)=JJf(xx∗(t−1|t−1))根据定义
~xx(t|t−1)=xx(t)−xx∗(t|t−1)=ff(xx(t−1))−xx∗(t|t−1)+uu(t−1)=JJf(+)(t−1)(~xx(t−1|t−1))+uu(t−1)注意到QQ(t−1)=E[uu(t−1)uuT(t−1)]由协方差的定义得到
PP∗(−)(t)=E[~xx(t|t−1)~xxT(t|t−1)]=JJf(+)(t−1)PP∗(+)(t−1)×JJf(+)(t−1)+QQ(t−1)后验估计误差协方差矩阵
记
JJf(+)(t−1)=JJf(xx∗(t−1|t−1))JJm(−)(t−1)=JJm(xx∗(t|t−1))根据定义
~xx(t|t)=xx(t)−xx∗(t|t)将式(14)代入上述式子并对xx(t)利用泰勒展开得到
~xx(t|t)=JJf(+)(t−1)~xx(t−1|t−1)−ΔΔ∗(t)~yy(t|t−1)+uu(t−1)将式子(3)与式(10)代入上述式子得到
~xx(t|t)=JJf(+)(t−1)~xx(t−1|t−1)−ΔΔ∗(t)JJm(−)(t)[JJf(+)(t−1)~xx(t−1|t−1)+uu(t−1)]+uu(t−1)提取公因式并整理得到
~xx(t|t)=[II−ΔΔ∗(t)JJm(−)(t)]×JJf(+)(t−1)~xx(t−1|t−1)+[II−ΔΔ∗(t)JJm(−)(t)]uu(t−1)由协方差的定义得到
PP∗(+)(t)=E[~xx(t|t)~xxT(t|t)]=[II−ΔΔ∗(t)JJm(−)(t)]JJf(+)(t−1)×PP∗(+)(t−1)×JJTf(+)(t−1)[II−ΔΔ∗(t)JJm(−)(t)]T+[II−ΔΔ∗(t)JJm(−)(t)]QQ(t−1)[II−ΔΔ∗(t)JJm(−)(t)]T=[II−ΔΔ∗(t)JJm(−)(t)]PP∗(−)(t)离散非线性卡尔曼滤波公式汇总
定理: 考虑问题1,在给定非线性系统的观测值yy(t0),…yy(t)的条件下,t时刻状态变量xx(t)的最优估计xx∗(t|t)由如下公式给出
xx∗(t|t)=ff(xx∗(t−1|t−1))+ΔΔ∗(t)~yy(t|t−1)其中ΔΔ∗(t)由如下公式给出
ΔΔ∗(t)=PP∗(−)(t)JJTh(−)[JJh(−)PP∗(−)(t)JJTh(−)]−1后验估计误差为
~xx(t|t)=[II−ΔΔ∗(t)JJm(−)(t)]JJf(+)(t−1)×~xx(t−1|t−1)+[II−ΔΔ∗(t)JJm(−)(t)]uu(t−1)先验误差协方差矩阵与后验误差协方差矩阵分别由下列公式给出
PP∗(−)(t)=JJf(+)(t−1)PP∗(+)(t−1)JJf(+)(t−1)+QQ(t−1)参考文献
[1] A. H. Jazwinski, Stochastic Processes and Filtering Theory, Academic Press, Inc, vol. 64, 1970. [2] Kalman R E. A new approach to linear filtering and prediction problems[J]. 1960.