卡尔曼滤波用于在变化的动态系统中,由当前状态和观测值相融合估计下一个状态。这是一个迭代的过程,也是一个数据融合的过程。
比如用在汽车导航、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=Axk−1+Buk+wk(1)
其中
x
‾
k
−
1
\overline x_{k-1}
xk−1是上一个状态值,
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})
xk−1−N(μ1,σ12),
w
k
−
N
(
0
,
Q
)
w_{k} - N(0,Q)
wk−N(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} xk−N(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}) xk−N(Aμ,A2σ12)代替。
step2
通过传感器等检测出系统观测值 y k y_{k} yk,但是测量存在误差:
y k − N ( μ 2 , σ 2 2 ) y_{k} - N(\mu_{2},\sigma^{2}_{2}) yk−N(μ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=(1−K)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)[(1−K2)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=(1−K)xk+Kyk=xk+K(yk−xk)=μ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)=(1−K)A2σ12=A2σ12−KA2σ12=σ32(5)
此时的 x ‾ k − N ( μ 3 , σ 3 2 ) \overline x_{k} - N(\mu_{3},\sigma_{3}^{2}) xk−N(μ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?如此迭代…