清晰易懂的卡尔曼滤波

卡尔曼滤波用于在变化的动态系统中,由当前状态和观测值相融合估计下一个状态。这是一个迭代的过程,也是一个数据融合的过程。
比如用在汽车导航、deepsort目标跟踪里面的位置预测等。

以下推导都是一维变量形式。

step 1

假设有一个系统,有状态转移方程:

x k = A x ‾ k − 1 + B u k + w k (1) x_{k}=A \overline x_{k-1} + Bu_{k} + w_{k} \tag{1} xk=Axk1+Buk+wk(1)

其中 x ‾ k − 1 \overline x_{k-1} xk1是上一个状态值, x k x_{k} xk是系统输出, u k u_{k} uk是系统控制量, w k w_{k} wk是系统扰动, A A A就是系统转移矩阵。
其中, x ‾ k − 1 − N ( μ 1 , σ 1 2 ) \overline x_{k-1} - N(\mu_{1},\sigma_{1}^{2}) xk1N(μ1,σ12) w k − N ( 0 , Q ) w_{k} - N(0,Q) wkN(0,Q)
由于系统存在干扰, x k x_{k} xk是一个服从正态分布的随机变量。

x k − N ( A μ 1 , A 2 σ 1 2 + Q ) (2) x_{k} - N(A\mu_{1},A^{2}\sigma_{1}^{2}+Q) \tag{2} xkN(Aμ1,A2σ12+Q)(2)

但一般 Q Q Q不知道,后面计算都会使用 x k − N ( A μ , A 2 σ 1 2 ) x_{k} - N(A\mu,A^{2}\sigma_{1}^{2}) xkN(Aμ,A2σ12)代替。

step2

通过传感器等检测出系统观测值 y k y_{k} yk,但是测量存在误差:

y k − N ( μ 2 , σ 2 2 ) y_{k} - N(\mu_{2},\sigma^{2}_{2}) ykN(μ2,σ22)

step3

此时,我们有了一个根据上一状态对现在状态的预测值 x k x_{k} xk和一个通过实际测量得到的观测值 y k y_{k} yk,那么哪一个是对的?
两个都是随机变量,如果状态突变,预测可能不正确,如果测量出错,那测量可能不准,所以要对现有的两个数据做融合
设置一个融合系数 K K K,常叫做增益系数,定义以下融合公式:

x ‾ k = ( 1 − K ) x k + K y k \overline x_{k} = (1-K)x_{k}+Ky_{k} xk=(1K)xk+Kyk

那么如何确定 K K K的合适取值?
两个正态分布的和仍然是正态分布,那希望 x ‾ k \overline x_{k} xk的方差越小越好,这样估计会更准确,把它转化成一个优化问题。

a r g m i n ( K ) D ( x ‾ k ) = a r g m i n ( K ) [ ( 1 − K 2 ) A 2 σ 1 2 + K 2 σ 2 2 ] argmin_{(K)} D(\overline x_{k})=argmin_{(K)}[(1-K^{2})A^{2}\sigma_{1}^{2} + K^{2}\sigma_{2}^{2}] argmin(K)D(xk)=argmin(K)[(1K2)A2σ12+K2σ22]

容易求出
K = A 2 σ 1 2 A 2 σ 1 2 + σ 2 2 (3) K=\frac{A^{2}\sigma^{2}_{1}}{A^{2} \sigma_{1}^{2}+\sigma_{2}^{2}} \tag{3} K=A2σ12+σ22A2σ12(3)
K K K带入可以求出

x ‾ k = ( 1 − K ) x k + K y k = x k + K ( y k − x k ) = μ 3 (4) \overline x_{k} = (1-K)x_{k}+Ky_{k}=x_{k}+K(y_{k}-x_{k}) = \mu_{3} \tag{4} xk=(1K)xk+Kyk=xk+K(ykxk)=μ3(4)

D ( x ‾ k ) = ( 1 − K ) A 2 σ 1 2 = A 2 σ 1 2 − K A 2 σ 1 2 = σ 3 2 (5) D(\overline x_{k})= (1-K)A^{2}\sigma_{1}^{2} =A^{2}\sigma_{1}^{2}-KA^{2}\sigma_{1}^{2} =\sigma_{3}^{2} \tag{5} D(xk)=(1K)A2σ12=A2σ12KA2σ12=σ32(5)

此时的 x ‾ k − N ( μ 3 , σ 3 2 ) \overline x_{k} - N(\mu_{3},\sigma_{3}^{2}) xkN(μ3,σ32)

这里 K K K常写做 K ‾ = K A \overline K =\frac{K}{A} K=AK对应的公式相应变换下。


总结

卡尔曼滤波的5个公式,每一个都对应到上面的公式编号:
1.状态方程求 x k x_{k} xk
2.求 x k x_{k} xk的方差;
3.求 K K K;
4.融合求 x ‾ k \overline x_{k} xk
5.更新 x ‾ k \overline x_{k} xk方差;

那么此时得到 x ‾ k \overline x_{k} xk服从一个正态分布,是否又回到了step1?如此迭代…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值