Kalman filter 推导

一些基本数学知识

  1. 均方误差
    MSE=E(x^−x)2MSE = E(\hat{x} - x)^2MSE=E(x^x)2
  2. 协方差矩阵
    Cov(x)=E[(x−μ)(x−μ)T]=ΣCov(x) = E[(x - \mu)(x - \mu)^T] = \SigmaCov(x)=E[(xμ)(xμ)T]=Σ
    其实若估计值是无偏估计时,即μe=0\mu_e = 0μe=0时,tr(C)tr(C)tr(C)就是MSE。
  3. 线性系统状态差分方程xk=Axk−1+Buk−1+wk−1x_k = Ax_{k-1} +Bu_{k-1}+ w_{k-1}xk=Axk1+Buk1+wk1 系统观测方程zk=Hxk+vkz_k = Hx_k +v_kzk=Hxk+vk

推导过程

注意区分估计值xk^\hat{x_k}xk^和预测值xk~\tilde{x_k}xk~
xk^=xk~+Kk(zk−Hxk)\hat{x_k} = \tilde{x_k} + K_k(z_k - Hx_k)xk^=xk~+Kk(zkHxk) 为使每时刻的估计值都为最优估计,因此需要寻找一个目标函数,来求取每时刻使目标函数最小的增益矩阵KkK_kKk
使用真实值与估计值之间的误差的协方差阵作为目标函数,即Pk=E[(ek)(ek)T]=E[(x−xk^)(x−xk^)T]P_k = E[(e_k)(e_k)^T] = E[(x - \hat{x_k})(x - \hat{x_k})^T]Pk=E[(ek)(ek)T]=E[(xxk^)(xxk^)T]
=E[((I−KkH)(xk−xk~)−kkvk)∗((I−KkH)(xk−xk~)−kkvk)T] = E[((I - K_kH)(x_k - \tilde{x_k}) - k_kv_k) *((I - K_kH)(x_k - \tilde{x_k}) - k_kv_k)^T]=E[((IKkH)(xkxk~)kkvk)((IKkH)(xkxk~)kkvk)T]
由于测量噪声为白噪声,E(vk)=0E(v_k) = 0E(vk)=0 ,因此PkP_kPk可简化为
Pk=(I−KkH)E[(xk−xk~)(xk−xk~)T](I−KkH)T+KkE(vkvkT)KkTP_k = (I - K_kH)E[(x_k - \tilde{x_k})(x_k - \tilde{x_k})^T] (I - K_kH)^T + K _kE(v_kv_k^T)K_k^TPk=(IKkH)E[(xkxk~)(xkxk~)T](IKkH)T+KkE(vkvkT)KkT
E[(xk−xk~)(xk−xk~)T]=Pk~E[(x_k - \tilde{x_k})(x_k - \tilde{x_k})^T] = \tilde{P_k}E[(xkxk~)(xkxk~)T]=Pk~, E(vkvkT)=RE(v_kv_k^T) = RE(vkvkT)=R

Pk=(I−KkH)Pk~(I−KkH)T+KkRKkTP_k = (I - K_kH) \tilde{P_k}(I - K_kH)^T + K _kRK_k^TPk=(IKkH)Pk~(IKkH)T+KkRKkT
=Pk~−KkHPk~−Pk~HTKkT+Kk(HPk~HT+R)KkT = \tilde{P_k} - K_kH\tilde{P_k} - \tilde{P_k}H^TK_k^T + K_k(H\tilde{P_k}H^T + R)K_k^T=Pk~KkHPk~Pk~HTKkT+Kk(HPk~HT+R)KkT
求改协方差矩阵的最小值与求改协方差矩阵的迹的最小值等价,因此
tr(Pk)=tr(Pk~)−2tr(KkHPk~)−tr(Kk(HPk~HT+R)KkT)tr(P_k)= tr(\tilde{P_k}) - 2tr(K_kH\tilde{P_k} ) - tr(K_k(H\tilde{P_k}H^T + R)K_k^T)tr(Pk=tr(Pk~)2tr(KkHPk~)tr(Kk(HPk~HT+R)KkT)
∂tr(PK)∂Kk=−2(HPk~)T−2Kk(HPk~HT+R)=0\frac{\partial tr(P_K)}{\partial K_k } = -2(H\tilde{P_k})^T - 2K_k(H\tilde{P_k}H^T + R ) = 0Kktr(PK)=2(HPk~)T2Kk(HPk~HT+R)=0
Kk=PkT~HT(HPk~HT+R)−1 K_k = \tilde{P_k^T}H^T(H\tilde{P_k}H^T + R )^{-1}Kk=PkT~HT(HPk~HT+R)1
KkK_kKk带入PkP_kPk中得到
Pk=(I−KkH)Pk~P_k = (I - K_kH)\tilde{P_k}Pk=(IKkH)Pk~
Pk~=E[(x−xk~)(x−xk~)T]\tilde{P_k} = E[(x - \tilde{x_k})(x - \tilde{x_k})^T]Pk~=E[(xxk~)(xxk~)T]
=E[((Axk−1+wk)−Ax^k−1)((Axk−1+wk)−Ax^k−1)T] = E[((Ax_{k-1} +w_k) - A\hat{x}_{k-1})((Ax_{k-1} +w_k) - A\hat{x}_{k-1})^T]=E[((Axk1+wk)Ax^k1)((Axk1+wk)Ax^k1)T]
=E[(A(xk−1−x^k−1)(xk−1−x^k−1)TAT]+E(wk−1wk−1T)=E[(A(x_{k-1} - \hat{x}_{k-1})(x_{k-1} - \hat{x}_{k-1})^TA^T] +E(w_{k-1}w_{k-1}^T)=E[(A(xk1x^k1)(xk1x^k1)TAT]+E(wk1wk1T)
=APk−1AT+Q=AP_{k-1}A^T +Q=APk1AT+Q
由此得到P~k\tilde P_kP~k的递推公式

算法过程

  1. 初始化k时刻的协方差矩阵PkP_kPk和k时刻的估计值x^k\hat{x}_kx^k
  2. 计算K+1时刻的P~k+1\tilde P_{k+1}P~k+1和K+1时刻的预测值x~k+1\tilde x_{k+1}x~k+1
    P~k+1=AP^kAT+Q;  x~k+1=Axk^+Buk \tilde P_{k+1} =A\hat P_kA^T+Q;  \tilde x_{k+1}=A\hat{x_k}+Bu_k P~k+1=AP^kAT+Q;  x~k+1=Axk^+Buk 
  3. 计算K+1时刻的增益矩阵Kk+1K_{k+1}Kk+1Kk+1=P~k+1HT(HP~k+1HT+R)−1K_{k+1} = \tilde P_{k+1}H^T(H\tilde P_{k+1}H^T+R)^{-1}Kk+1=P~k+1HT(HP~k+1HT+R)1
  4. 计算K+1时刻的估计值x^k+1和K+1时刻协方差矩阵Pk+1\hat x_{k+1}和K+1时刻协方差矩阵P_{k+1}x^k+1K+1Pk+1x^k+1=x~k+1+Kk+1(zk−Hx~k+1)\hat x_{k+1} = \tilde x_{k+1}+K_{k+1}(z_k-H\tilde x_{k+1})x^k+1=x~k+1+Kk+1(zkHx~k+1)
    Pk+1=(I−KK+1H)P~k+1P_{k+1} = (I-K_{K+1}H)\tilde P_{k+1}Pk+1=(IKK+1H)P~k+1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值