卡尔曼滤波

卡尔曼滤波

我们可以有多种手段采集得到数据,传感器采集温度、GPS定位、压力传感器采集压力等等,但是传感器采集得到的数据只是“采集数据”,并不一定是真实数据。

算法原理

对于一个时间序列的数据,假设t时刻的真实数据为 X ( t ) X(t) X(t),测量数据为 X m ( t ) X_m(t) Xm(t)。那么
X m ( t ) = X ( t ) + ξ 1 , t (1) X_m(t)=X(t)+\xi_{1,t}\tag{1} Xm(t)=X(t)+ξ1,t(1)
ξ t \xi_t ξt的方差较大时,尤其是当传感器数据发生漂移时,测量数据对真实状态的估计效果不佳。为了提升对真实状态的估计效果。基于原理,假设t时刻的真实数据可以由t-1时刻的真实数据计算得到,即
X ( t ) = f ( X ( t − 1 ) ) + ξ 2 , t (2) X(t)=f(X(t-1))+\xi_{2,t}\tag{2} X(t)=f(X(t1))+ξ2,t(2)
方程(1)和方程(2)都可以用于估计真实状态。自然的,可以结合方程(1)和方程(2)来的估计结果来得到最终的估计结果。

为了优化计算,我们现在做出假设:

  • (a) ξ 1 , t \xi_{1,t} ξ1,t的期望为0,方差为 Σ 1 , t \Sigma_{1,t} Σ1,t
  • (b) ξ 2 , t \xi_{2,t} ξ2,t的期望为0,方差为 Σ 2 , t \Sigma_{2,t} Σ2,t
    为了简化方程,我们假设f(X(t-1))为线性的,且假设:
  • (c) f ( X ( t − 1 ) ) = A X ( t − 1 ) + B u ( t − 1 ) f(X(t-1))=AX(t-1)+Bu(t-1) f(X(t1))=AX(t1)+Bu(t1)

也就是
X ( t ) = A X ( t − 1 ) + B u ( t − 1 ) + ξ 2 , t (3) X(t)=AX(t-1)+Bu(t-1)+\xi_{2,t}\tag{3} X(t)=AX(t1)+Bu(t1)+ξ2,t(3)
其中u(t-1)为偏置项。

现在,再次回看整个估计过程。我们的目的是为了估计真实的状态序列X(t),但是我们实际只能采集得到测量序列 X m ( t ) X_m(t) Xm(t),以及经验方程(1)、(2)。

假设t-1时刻关于真实状态 X ( t − 1 ) X(t-1) X(t1)的最优估计为 X ∗ ( t − 1 ) X^*(t-1) X(t1)。令
X p ( t ) = A X ∗ ( t − 1 ) + B u ( t − 1 ) = A ( X ∗ ( t − 1 ) − X ( t − 1 ) ) + A X ( t − 1 ) + B u ( t − 1 ) = A ( X ∗ ( t − 1 ) − X ( t − 1 ) ) + X ( t ) − ξ 2 , t (4) X_p(t)=AX^*(t-1)+Bu(t-1)=A(X^*(t-1)-X(t-1))+AX(t-1)+Bu(t-1)=A(X^*(t-1)-X(t-1))+X(t)- \xi_{2,t}\tag{4} Xp(t)=AX(t1)+Bu(t1)=A(X(t1)X(t1))+AX(t1)+Bu(t1)=A(X(t1)X(t1))+X(t)ξ2,t(4)

由假设(a)可知 X m ( t ) X_m(t) Xm(t)是真实状态的无偏估计,假设:

  • (d) X ∗ ( t − 1 ) X^*(t-1) X(t1) X ( t − 1 ) X(t-1) X(t1)的无偏估计

X p ( t ) X_p(t) Xp(t)为真实状态 X ( t ) X(t) X(t)的无偏估计。

不妨设 X ∗ ( t − 1 ) X^*(t-1) X(t1)方差为 Σ ∗ ( t − 1 ) \Sigma^*(t-1) Σ(t1)。假设:

  • (e) X ∗ ( t − 1 ) X^*(t-1) X(t1) ξ 2 , t \xi_{2,t} ξ2,t相互独立

X p ( t ) X_p(t) Xp(t)的方差满足
v a r ( X p ( t ) ) = A Σ ∗ ( t − 1 ) A T + Σ 2 , t (5) var(X_p(t))=A\Sigma^*(t-1)A^T + \Sigma_{2,t} \tag{5} var(Xp(t))=AΣ(t1)AT+Σ2,t(5)

X p ( t ) X_p(t) Xp(t)的期望为0,方差为 Σ + , t = A Σ ∗ ( t − 1 ) A T + Σ 2 , t \Sigma_{+,t}=A\Sigma^*(t-1)A^T + \Sigma_{2,t} Σ+,t=AΣ(t1)AT+Σ2,t

至此,我们得到了真实状态 X ( t ) X(t) X(t)的两个无偏估计 X p ( t ) X_p(t) Xp(t), X m ( t ) X_m(t) Xm(t)。现在有两个思路来解决思考这个问题。

思路一

现在假设 X ∗ ( t ) = g ( X p ( t ) , X m ( t ) ) X^*(t)=g(X_p(t),X_m(t)) X(t)=g(Xp(t),Xm(t)),为了简化计算,做出如下线性假设:

  • (f) g ( X p ( t ) , X m ( t ) ) = X p ( t ) + λ ( t ) ∗ ( X m ( t ) − X p ( t ) ) g(X_p(t),X_m(t))=X_p(t)+\lambda(t)*(X_m(t)-X_p(t)) g(Xp(t),Xm(t))=Xp(t)+λ(t)(Xm(t)Xp(t))


X ∗ ( t ) = X p ( t ) + λ ( t ) ( X m ( t ) − X p ( t ) ) (6) X^*(t)=X_p(t)+\lambda(t)(X_m(t)-X_p(t)) \tag{6} X(t)=Xp(t)+λ(t)(Xm(t)Xp(t))(6)
将(1)、(4)带入公式(6),得到
X ∗ ( t ) = ( I − λ ( t ) ) X ( t ) + λ ( t ) X ( t ) + ( I − λ ( t ) ) ξ t + + λ ( t ) ξ 1 , t = X ( t ) + ( I − λ ( t ) ) ξ t + + λ ( t ) ξ 1 , t X^*(t)=(I-\lambda(t))X(t)+\lambda(t)X(t)+(I-\lambda(t))\xi^+_t+\lambda(t)\xi_{1,t}=X(t)+(I-\lambda(t))\xi^+_t+\lambda(t)\xi_{1,t} X(t)=(Iλ(t))X(t)+λ(t)X(t)+(Iλ(t))ξt++λ(t)ξ1,t=X(t)+(Iλ(t))ξt++λ(t)ξ1,t
估计 X ∗ ( t ) X^*(t) X(t)的协方差为
h ( λ ( t ) ) = v a r ( X ∗ ( t ) ) = E ( X ∗ ( t ) − E ( X ∗ ( t ) ) ( X ∗ ( t ) − E ( X ∗ ( t ) ) ) T (7) h(\lambda(t))=var(X^*(t))=E(X^*(t)-E(X^*(t))(X^*(t)-E(X^*(t)))^T \tag{7} h(λ(t))=var(X(t))=E(X(t)E(X(t))(X(t)E(X(t)))T(7)
为使 X ∗ ( t ) X^*(t) X(t)为最优估计,即使协方差阵的对角线元素之和最小。即求
t r ( h ( λ ( t ) ) ) = t r ( E ( X ∗ ( t ) − E ( X ∗ ( t ) ) ( X ∗ ( t ) − E ( X ∗ ( t ) ) ) T ) (7’) tr(h(\lambda(t)))=tr(E(X^*(t)-E(X^*(t))(X^*(t)-E(X^*(t)))^T) \tag{7'} tr(h(λ(t)))=tr(E(X(t)E(X(t))(X(t)E(X(t)))T)(7)
的最小值。令 Σ 1 , + ( t ) \Sigma_{1,+}(t) Σ1,+(t) ξ 1 , t \xi_{1,t} ξ1,t ξ t + \xi^+_t ξt+的协方差。假设:

  • (g) Σ 1 , + ( t ) = 0 \Sigma_{1,+}(t)=0 Σ1,+(t)=0

公式(7’)关于 λ ( t ) \lambda(t) λ(t)求偏导,并另其等于0,得到:
− 2 Σ + , t + 2 λ ( t ) Σ + , t + 2 λ ( t ) Σ 1 ( t ) = 0 (8) -2\Sigma_{+,t}+2\lambda(t)\Sigma_{+,t}+2\lambda(t)\Sigma_1(t)=0 \tag{8} 2Σ+,t+2λ(t)Σ+,t+2λ(t)Σ1(t)=0(8)

则由公式(7)可以得到:
λ ( t ) = Σ + , t ( Σ + , t + Σ 1 ( t ) ) − 1 (9) \lambda(t)=\Sigma_{+,t}(\Sigma_{+,t}+\Sigma_1(t))^{-1} \tag{9} λ(t)=Σ+,t(Σ+,t+Σ1(t))1(9)
其中 ( ( Σ + , t + Σ 1 ( t ) ) − 1 ((\Sigma_{+,t}+\Sigma_1(t))^{-1} ((Σ+,t+Σ1(t))1表示 Σ + , t ( t ) + Σ 1 ( t ) \Sigma_{+,t}(t)+\Sigma_1(t) Σ+,t(t)+Σ1(t)的逆。
将公式(9)带入(6)得到 X ∗ ( t ) X^*(t) X(t)的更新值,带入公式(7)可以得到 X ∗ ( t ) X^*(t) X(t)的方差的
v a r ( X ∗ ( t ) ) = Σ + , t − λ ( t ) Σ + , t (10) var(X^*(t))=\Sigma_{+,t} - \lambda(t)\Sigma_{+,t} \tag{10} var(X(t))=Σ+,tλ(t)Σ+,t(10)

思路二

对于真实状态 X ( t ) X(t) X(t)的两个无偏估计 X p ( t ) X_p(t) Xp(t), X m ( t ) X_m(t) Xm(t),方差分别为 Σ + , t \Sigma_{+,t} Σ+,t, Σ 1 , t \Sigma_{1,t} Σ1,t。假设 X p ( t ) X_p(t) Xp(t) X m ( t ) X_m(t) Xm(t)都服从正态分布,假设 X p ( t ) X_p(t) Xp(t) X m ( t ) X_m(t) Xm(t)相互独立。那么似然函数为
L ( X ( t ) ∣ X p ( t ) , X m ( t ) ) = C e − 1 / 2 ∗ ( X p ( t ) − X ( t ) ) T Σ + , t ( X p ( t ) − X ( t ) ) − 1 / 2 ∗ ( X m ( t ) − X ( t ) ) T Σ 1 , t ( X m ( t ) − X ( t ) ) (11) L(X(t)|X_p(t), X_m(t))=Ce^{-1/2*(X_p(t)-X(t))^T\Sigma_{+,t}(X_p(t)-X(t))-1/2*(X_m(t)-X(t))^T\Sigma_{1,t}(X_m(t)-X(t))} \tag{11} L(X(t)Xp(t),Xm(t))=Ce1/2(Xp(t)X(t))TΣ+,t(Xp(t)X(t))1/2(Xm(t)X(t))TΣ1,t(Xm(t)X(t))(11)
对似然函数取对数,关于 X ( t ) X(t) X(t)求偏导,令偏导等于0,求解得到
X ( t ) = ( Σ + , t − 1 + Σ 1 , t − 1 ) − 1 ( Σ + , t − 1 X p ( t ) + Σ 1 , t − 1 X m ( t ) ) = ( Σ + , t − 1 + Σ 1 , t − 1 ) − 1 Σ + , t − 1 X p ( t ) + ( Σ + , t − 1 + Σ 1 , t − 1 ) − 1 Σ 1 , t − 1 X m ( t ) X(t)=(\Sigma_{+,t}^{-1}+\Sigma_{1,t}^{-1})^{-1}(\Sigma_{+,t}^{-1}X_p(t)+\Sigma_{1,t}^{-1}X_m(t))=(\Sigma_{+,t}^{-1}+\Sigma_{1,t}^{-1})^{-1}\Sigma_{+,t}^{-1}X_p(t)+(\Sigma_{+,t}^{-1}+\Sigma_{1,t}^{-1})^{-1}\Sigma_{1,t}^{-1}X_m(t) X(t)=(Σ+,t1+Σ1,t1)1(Σ+,t1Xp(t)+Σ1,t1Xm(t))=(Σ+,t1+Σ1,t1)1Σ+,t1Xp(t)+(Σ+,t1+Σ1,t1)1Σ1,t1Xm(t)
因为
Σ + , t − 1 + Σ 1 , t − 1 = Σ + , t − 1 ( Σ + , t + Σ 1 , t ) Σ 1 , t − 1 = Σ 1 , t − 1 ( Σ + , t + Σ 1 , t ) Σ + , t − 1 \Sigma_{+,t}^{-1}+\Sigma_{1,t}^{-1}=\Sigma_{+,t}^{-1}(\Sigma_{+,t}+\Sigma_{1,t})\Sigma_{1,t}^{-1}=\Sigma_{1,t}^{-1}(\Sigma_{+,t}+\Sigma_{1,t})\Sigma_{+,t}^{-1} Σ+,t1+Σ1,t1=Σ+,t1(Σ+,t+Σ1,t)Σ1,t1=Σ1,t1(Σ+,t+Σ1,t)Σ+,t1
所以
X ( t ) = Σ 1 , t ( Σ + , t + Σ 1 , t ) − 1 X p ( t ) + Σ + , t ( Σ + , t + Σ 1 , t ) − 1 X m ( t ) (12) X(t)=\Sigma_{1,t}(\Sigma_{+,t}+\Sigma_{1,t})^{-1}X_p(t)+\Sigma_{+,t}(\Sigma_{+,t}+\Sigma_{1,t})^{-1}X_m(t) \tag{12} X(t)=Σ1,t(Σ+,t+Σ1,t)1Xp(t)+Σ+,t(Σ+,t+Σ1,t)1Xm(t)(12)
X ∗ ( t ) = Σ 1 , t ( Σ + , t + Σ 1 , t ) − 1 X p ( t ) + Σ + , t ( Σ + , t + Σ 1 , t ) − 1 X m ( t ) X^*(t)=\Sigma_{1,t}(\Sigma_{+,t}+\Sigma_{1,t})^{-1}X_p(t)+\Sigma_{+,t}(\Sigma_{+,t}+\Sigma_{1,t})^{-1}X_m(t) X(t)=Σ1,t(Σ+,t+Σ1,t)1Xp(t)+Σ+,t(Σ+,t+Σ1,t)1Xm(t) X ( t ) X(t) X(t)的最优估计。令
λ ( t ) = Σ + , t ( Σ + , t + Σ 1 ( t ) ) − 1 \lambda(t)=\Sigma_{+,t}(\Sigma_{+,t}+\Sigma_1(t))^{-1} λ(t)=Σ+,t(Σ+,t+Σ1(t))1
即可得到思路一中的公式(6)和公式(10)

算法小结

假设方程

X m ( t ) = X ( t ) + ξ 1 , t X_m(t)=X(t)+\xi_{1,t} Xm(t)=X(t)+ξ1,t
X ( t ) = A X ( t − 1 ) + B u ( t − 1 ) + ξ 2 , t X(t)=AX(t-1)+Bu(t-1)+\xi_{2,t} X(t)=AX(t1)+Bu(t1)+ξ2,t

相关的更新方程

X p ( t ) = A X ∗ ( t − 1 ) + B u ( t − 1 ) X_p(t)=AX^*(t-1)+Bu(t-1) Xp(t)=AX(t1)+Bu(t1)
Σ + , t = v a r ( X p ( t ) ) = A Σ ∗ ( t − 1 ) A T + Σ 2 , t \Sigma_{+,t}=var(X_p(t))=A\Sigma^*(t-1)A^T + \Sigma_{2,t} Σ+,t=var(Xp(t))=AΣ(t1)AT+Σ2,t
X ∗ ( t ) = X p ( t ) + λ ( t ) ( X m ( t ) − X p ( t ) ) X^*(t)=X_p(t)+\lambda(t)(X_m(t)-X_p(t)) X(t)=Xp(t)+λ(t)(Xm(t)Xp(t))
Σ ∗ ( t ) = Σ + , t − λ ( t ) Σ + , t \Sigma^*(t)=\Sigma_{+,t} - \lambda(t)\Sigma_{+,t} Σ(t)=Σ+,tλ(t)Σ+,t
λ ( t ) = Σ + , t ( Σ + , t + Σ 1 ( t ) ) − 1 \lambda(t)=\Sigma_{+,t}(\Sigma_{+,t}+\Sigma_1(t))^{-1} λ(t)=Σ+,t(Σ+,t+Σ1(t))1

算法回顾

卡尔曼滤波中有四条数据序列

  • 客观真实的数据序列 X ( t ) X(t) X(t),无法得到,是我们需要估计的
  • 测量序列 X m ( t ) X_m(t) Xm(t),通过传感器采集得到的, e m ( t ) = X m ( t ) − X ( t ) e_m(t)=X_m(t)-X(t) em(t)=Xm(t)X(t)的分布由采集设备决定
  • 原理预测序列 X p ( t ) X_p(t) Xp(t),原理本身是基于真实值的方程。因为真实值无法得到,所以 X p ( t ) X_p(t) Xp(t)只能是基于预测值 X ∗ ( t − 1 ) X^*(t-1) X(t1)得到。所以
    e p ( t ) = X p ( t ) − X ( t ) = f ( X ∗ ( t − 1 ) ) − X ( t ) = f ( X ∗ ( t − 1 ) − X ( t − 1 ) + X ( t − 1 ) ) − X ( t ) e_p(t)=X_p(t)-X(t)=f(X^*(t-1))-X(t)=f(X^*(t-1)-X(t-1)+X(t-1))-X(t) ep(t)=Xp(t)X(t)=f(X(t1))X(t)=f(X(t1)X(t1)+X(t1))X(t)
    f为线性变换时
    e p ( t ) = f ( X ∗ ( t − 1 ) − X ( t − 1 ) ) + f ( X ( t − 1 ) ) − X ( t ) e_p(t)=f(X^*(t-1)-X(t-1))+f(X(t-1))-X(t) ep(t)=f(X(t1)X(t1))+f(X(t1))X(t)
    也就是说 e p ( t ) e_p(t) ep(t) f ( X ∗ ( t − 1 ) − X ( t − 1 ) ) f(X^*(t-1)-X(t-1)) f(X(t1)X(t1)) f ( X ( t − 1 ) ) − X ( t ) f(X(t-1))-X(t) f(X(t1))X(t)两部分得到。
  • 最终的预测序列,也就是滤波序列或修正序列 X ∗ ( t ) X^*(t) X(t) X ∗ ( t ) = g ( X p ( t ) , X m ( t ) ) X^*(t)=g(X_p(t),X_m(t)) X(t)=g(Xp(t),Xm(t)), e ∗ ( t ) = X ∗ ( t ) − X ( t ) e^*(t)=X^*(t)-X(t) e(t)=X(t)X(t)

回归之前出现的所有假设:

  1. 假设(a)不成立,测量值不是真实值的无偏估计。此时需要假设 ξ 1 , t \xi_{1,t} ξ1,t的期望是个常数,然后通过添加偏置项来得到 X m ( t ) X_m(t) Xm(t),否则无法计算。
  2. 假设(b)不成立,此时可以通过添加偏置项来使得(b)成立,这也是 B u ( t − 1 ) Bu(t-1) Bu(t1)的作用。当 B u ( t − 1 ) Bu(t-1) Bu(t1)添加的不合理时, X p ( t ) X_p(t) Xp(t)不是真实值 X ( t ) X(t) X(t)的无偏估计,那么最终的滤波结果也不是真实值的无偏估计,滤波并没有效果。不过换一个角度,可以以此作为时间序列的异常诊断依据。
  3. 假设©不成立,模型难以迭代计算。需要有新的函数f。
  4. 假设(d)不成立,那么 X p ( t ) X_p(t) Xp(t)也不是真实值的无偏估计。根据迭代公式,当 A n A^n An不收敛的时候, X p ( t ) − X ( t ) X_p(t)-X(t) Xp(t)X(t)的可能没有界。所以必须控制 X ∗ ( t − 1 ) − X ( t − 1 ) X^*(t-1)-X(t-1) X(t1)X(t1)的期望。
  5. 假设(e)的目的是为了更新方差,在假设(e)成立的情况下,方差才能准确计算。换个角度,当假设(e)出现问题的时候,方差的计算结果是有误的,但是如果这个错误的程度是较小的,那也可以计算,假设条件不成立对结果的影响可能是可控的。
  6. 假设(f)不成立,这很正常,只是在两个随机变量都服从正态分布时,(f)的效果最好。在不是正态分布时,并不一定是最好的。但是在给定数据条件下,假设(f)成立的情况下得到的滤波总是有一定效果的。
  7. 假设(g)几乎不可能不成立。

新息探讨

新息:测量值与预测值之差。

当所有假设都成立的时候,新息的期望为0。虽然t时刻的新息和t+1时刻的新息的方差是不同的,但是新息还是一条在0附近抖动的序列。

当假设(b)不成立:

  • ξ 2 , t \xi_{2,t} ξ2,t为一恒定的大于0的常数 μ 1 \mu1 μ1,此时t时刻的新息的期望为 μ 1 \mu1 μ1,t+1时刻的新息的期望为 μ 1 + Δ μ \mu1+\Delta\mu μ1+Δμ,其中 Δ μ \Delta\mu Δμ会小于 μ 1 \mu1 μ1

参考文献

  • http://www.doc88.com/p-2008731504229.html
  • https://blog.youkuaiyun.com/qq_31589695/article/details/80330126
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值