卡尔曼滤波器:3.step by step derivation of kalman Gain
状态空间方程
X
k
=
A
X
k
−
1
+
B
u
k
−
1
+
ω
k
−
1
Z
k
=
H
X
k
+
ν
k
\begin{align} X_k &=AX_{k-1}+Bu_{k-1}+\omega_{k-1}\\ Z_k&=HX_k+\nu_k \end{align}
XkZk=AXk−1+Buk−1+ωk−1=HXk+νk
其中
KaTeX parse error: {align} can be used only in display mode.
状态过程方程
ω k − 1 \omega_{k-1} ωk−1过程噪声,是不可测量的,但是自然界的噪声都被假设成服从正太分布,
则其概率分布 p ( ω ) ∼ ( 0 , Q ) p(\omega)\sim(0,Q) p(ω)∼(0,Q),其中0代表了其期望,Q代表其协方差矩阵
如果对
Q
Q
Q进行求解,则
KaTeX parse error: Undefined control sequence: \matrix at position 13: Q = E\left[\̲m̲a̲t̲r̲i̲x̲{\omega\cdot\om…
(A)式是怎么来的呢?举一个小小的栗子:
假设KaTeX parse error: Undefined control sequence: \matrix at position 12: x_k =\left[\̲m̲a̲t̲r̲i̲x̲{x_1\\x_2}\righ…则过程噪声也是二维的KaTeX parse error: Undefined control sequence: \matrix at position 15: \omega =\left[\̲m̲a̲t̲r̲i̲x̲{\omega_1\\\ome…
KaTeX parse error: Undefined control sequence: \matrix at position 39: …mega^T &=\left[\̲m̲a̲t̲r̲i̲x̲{\omega_1\\\ome…
概率论基础公式:
V
A
R
(
x
)
=
E
(
x
2
)
−
E
2
(
x
)
VAR(x) = E(x^2) - E^2(x)
VAR(x)=E(x2)−E2(x)
其中
V
A
R
VAR
VAR方差
E
E
E 期望
则对于 p ( ω ) ∼ ( 0 , Q ) p(\omega)\sim(0,Q) p(ω)∼(0,Q),期望是0,则 V A R ( x ) = E ( x 2 ) VAR(x) = E(x^2) VAR(x)=E(x2)
则式子(1)就可以是以下形式
KaTeX parse error: Undefined control sequence: \matrix at position 40: …mega^T &=\left[\̲m̲a̲t̲r̲i̲x̲{E(\omega_1^2)&…
用这样一个式子就能表现出来
ω
1
ω
2
\omega_1\space\omega_2
ω1 ω2之间关系
测量方程
同样测量噪声也是被认为服从正态分布
p
(
ν
)
∼
(
0
,
R
)
p(\nu)\sim(0,R)
p(ν)∼(0,R)和上面的一样
R
=
E
(
ν
ν
T
)
R=E(\nu\nu^T)
R=E(ννT)
综合分析
①对于过程噪声和测量噪声是无法进行建模的,因为缺少了过程噪声,只靠前半部分求解出来的只是一个估计值
x ^ k = A x k − 1 + B u k − 1 \hat{x}_k = Ax_{k-1}+Bu_{k-1} x^k=Axk−1+Buk−1
②因为因为我们没有对上面的式子做任何的处理,只是从上面的式子copy出来的,要再加一个标志,表示先验估计
x ^ k − = A x k − 1 + B u k − 1 \hat{x}^-_k= Ax_{k-1}+Bu_{k-1} x^k−=Axk−1+Buk−1
③因为上一时刻的 x k − 1 x_{k-1} xk−1也是看不到的,也是要根据上一时刻的估计值带入到运算(算出来的先验结果)
x ^ k − = A x ^ k − 1 + B u k − 1 \hat{x}^-_k= A\widehat{x}_{k-1}+Bu_{k-1} x^k−=Ax k−1+Buk−1
④根据 z k = H x k z_k=Hx_k zk=Hxk可以得出(测量出来的测量结果)
根据测试的结果,加上hat表示估计, x ^ k m e a = H − 1 z k \hat{x}_{kmea}=H^{-1}z_k x^kmea=H−1zk
但是我们发现不管是算出来的还是测出来的结果都不具备考虑噪声的影响,因为如果能对噪声进行建模就不存在利用卡尔曼滤波器的作用了,因为你可以直接得出来结果了,但是因为有了这些不确定的噪声不管是测量结果还是先验结果都是不准确的,这时候卡尔曼滤波器的作用就体现出来了,我们如何利用两个不太准确的结果得出来一个准确的结果,可以回忆一下上面讲到的数据融合的问题,这里面就用同样的方法进行处理
卡尔曼滤波的推导开始了
①我们一个新的 x ^ k \hat{x}_k x^k,就是状态的新的估计值,注意这里面没有-号了,就代表了是后验结果,或者可以说是最终的一个估计值利用数据融合的形式:
x ^ k = x ^ k − + G ( H − z k − x ^ k − ) \hat{x}_k=\hat{x}^-_k + G(H^-z_k - \hat{x}^-_k) x^k=x^k−+G(H−zk−x^k−)
分析
KaTeX parse error: No such environment: flalign* at position 8: \begin{̲f̲l̲a̲l̲i̲g̲n̲*̲}̲ &G=0:\space \h…
但是呢,我们在教科书上看到的不是这样的一个结果,它是有一个很简单的变换:
G = K k H G=K_kH G=KkH
②结合G的变换得到结果如下
KaTeX parse error: No such environment: flalign* at position 8: \begin{̲f̲l̲a̲l̲i̲g̲n̲*̲}̲ &\hat{x}_k=\ha…
大家可以看一下:
KaTeX parse error: No such environment: flalign* at position 8: \begin{̲f̲l̲a̲l̲i̲g̲n̲*̲}̲ &K_k = 0:\hat{…
下面的推导就很明显了,目标:寻找
k
k
k_k
kk使得误差最小,使得
x
^
k
=
x
k
\hat{x}_k=x_k
x^k=xk即使得估计值趋近于真实值
这个必然和测量噪声和过程噪声产生的误差息息相关
如何量化误差呢?
KaTeX parse error: No such environment: flalign* at position 8: \begin{̲f̲l̲a̲l̲i̲g̲n̲*̲}̲ &e_k=x_k-\hat{…
误差也是符合正太分布的一种形式
KaTeX parse error: No such environment: flalign* at position 8: \begin{̲f̲l̲a̲l̲i̲g̲n̲*̲}̲ &p(e_k) \sim(0…
误差越是趋近于0,方差就会越小,我们希望求出K使得
t
r
(
P
)
=
σ
e
1
2
+
σ
e
2
2
tr(P)=\sigma^2_{e_1}+\sigma^2_{e_2}
tr(P)=σe12+σe22最小,就是矩阵的迹最小,也就是方差最小
将①式求解方差
$$
\begin{flalign*}
&P_k=E[ee^T]\
&=E[(x_k-\hat{x}_k)(x_k-\hat{x}_k)^T]&
\end{flalign*}
因为
因为
因为
\begin{flalign*}
&\hat{x}_k=\hat{x}^-_k + K_k(z_k - H\hat{x}^-_k) \
&Z_k=HX_k+\nu_k&
\end{flalign*}
带进去得到
带进去得到
带进去得到
\begin{flalign*}
&x_k-\hat{x}_k=x_k-\hat{x}^-_k - K_k(z_k - H\hat{x}^-_k)\
&=x_k-\hat{x}^-_k - K_kZ_k+K_kH\hat{x}^-_k\
&=x_k-\hat{x}^-_k -K_kHX_k-K_k\nu_k+K_kH\hat{x}^-_k\
&=x_k-\hat{x}-_k-K_kH(x_k-\hat{x}-_k)-K_k\nu_k\
&=(I-K_kH)(x_k-\hat{x}^-_k)-K_k\nu_k&
\end{flalign*}
$$
根据误差的定义,把
x
k
−
x
^
k
−
x_k-\hat{x}^-_k
xk−x^k−定义为先验误差
e
k
−
e^-_k
ek−
则带入到方差P的求解中得到:
$$
\begin{flalign*}
&P_k=E[ee^T]\
&=E[(x_k-\hat{x}_k)(x_k-\hat{x}_k)^T]\
&=E[[(I-K_kH)e-_k-K_k\nu_k][(I-K_kH)e-_k-K_k\nu_k]^T]&
\end{flalign*}
插入概率论的基本公式:
插入概率论的基本公式:
插入概率论的基本公式:
\begin{flalign*}
(AB)T=BTA^T\
(A+B)T=AT+B^T
\end{flalign*}
继续推导
继续推导
继续推导
\begin{flalign*}
&P_k=E[ee^T]\
&=E[(x_k-\hat{x}_k)(x_k-\hat{x}_k)^T]\
&=E[[(I-K_kH)e-_k-K_k\nu_k][(I-K_kH)e-_k-K_k\nu_k]^T]\
&=E[[(I-K_kH)e-_k-K_k\nu_k][{e-_k}T(I-K_kH)T-\nu_kTK_kT]]\
&=E[(I-K_kH)e-_k{e-_k}T(I-K_kH)T-(I-K_kH)e-_k\nu_kTK_kT-K_k\nu_k{e-_k}T(I-K_kH)T+K_k\nu_k\nu_kTK_kT]\
&=E((I-K_kH)e-_k{e-_k}T(I-K_kH)T)-E((I-K_kH)e-_k\nu_kTK_kT)-E(K_k\nu_k{e-_k}T(I-K_kH)T)+E(K_k\nu_k\nu_kTK_kT)\
&
\end{flalign*}
其中:
其中:
其中:
\begin{flalign*}
&E((I-K_kH)e-_k\nu_kTK_kT)=(I-K_kH)E(e-_k)E(\nu_kT)K_kT=0 \
&E(K_k\nu_k{e-_k}T(I-K_kH)T)=K_kE(\nu_kT)E(e^-_k)(I-K_kH)
&
\end{flalign*}
继续推导:
继续推导:
继续推导:
\begin{flalign*}
&P_k=E[ee^T]\
&=E[(x_k-\hat{x}_k)(x_k-\hat{x}_k)^T]\
&=E[[(I-K_kH)e-_k-K_k\nu_k][(I-K_kH)e-_k-K_k\nu_k]^T]\
&=E[[(I-K_kH)e-_k-K_k\nu_k][{e-_k}T(I-K_kH)T-\nu_kTK_kT]]\
&=E[(I-K_kH)e-_k{e-_k}T(I-K_kH)T-(I-K_kH)e-_k\nu_kTK_kT-K_k\nu_k{e-_k}T(I-K_kH)T+K_k\nu_k\nu_kTK_kT]\
&=E((I-K_kH)e-_k{e-_k}T(I-K_kH)T)-E((I-K_kH)e-_k\nu_kTK_kT)-E(K_k\nu_k{e-_k}T(I-K_kH)T)+E(K_k\nu_k\nu_kTK_kT)\
&=E((I-K_kH)e-_k{e-_k}T(I-K_kH)T) + E(K_k\nu_k\nu_kTK_kT)\
&=(I-K_kH)E(e-_k{e-_k}T)(I-K_kH)T + K_kE(\nu_k\nu_kT)K_kT\
&因为P=E[ee^T] \space R=E(\nu\nu^T)\
&=(I-K_kH)P-_k(I-K_kH)T + K_kE(\nu_k\nu_kT)K_kT\
&=(P-_k-K_kHP-_k)(I-HTK_kT)+K_kRK_k^T\
&=P^-_k - K_kHP^-_k - P-_kHTK_kT+K_kHP-_kHTK_kT+K_kRK_k^T
&
\end{flalign*}
$$
推导结果是:求解K使得
P
k
P_k
Pk最小,可以理解为
t
r
(
p
k
)
tr(p_k)
tr(pk)最小
P
k
=
P
k
−
−
K
k
H
P
k
−
−
P
k
−
H
T
K
k
T
+
K
k
H
P
k
−
H
T
K
k
T
+
K
k
R
K
k
T
P_k=P^-_k - K_kHP^-_k - P^-_kH^TK_k^T+K_kHP^-_kH^TK_k^T+K_kRK_k^T
Pk=Pk−−KkHPk−−Pk−HTKkT+KkHPk−HTKkT+KkRKkT
KaTeX parse error: No such environment: flalign* at position 8: \begin{̲f̲l̲a̲l̲i̲g̲n̲*̲}̲ &(P^-_kH^TK_k^…
概率论数学基础:
d
t
r
(
A
B
)
d
A
=
B
T
\frac{d_{tr(AB)}}{d_A} = B^T
dAdtr(AB)=BT
KaTeX parse error: No such environment: flalign* at position 8: \begin{̲f̲l̲a̲l̲i̲g̲n̲*̲}̲ &\frac{d_{tr(P…
因此就的出来了一个最重要的卡尔曼增益的求解:
K
k
=
P
k
−
H
T
H
P
k
−
H
T
+
R
K_k=\frac{P^-_kH^T}{HP^-_kH^T+R}
Kk=HPk−HT+RPk−HT
分析一下
$$
\begin{flalign*}
&R\uparrow:K_K\rightarrow 0 \space \hat{x}_k=\hat{x}^-_k\
&R\downarrow : K_K\rightarrow H^-\space \hat{x}_k=H^-z_k&\
&
\end{flalign*}
$$