卡尔曼录波器 :2. Fata Fusion, covarince Matrix, state space, observation
卡尔曼滤波器 数据融合 协方差矩阵状态空间方程 观测器
Data Fusion 数据融合
两个或者多个测量仪器 ,两者都会存在着测量误差,测量的标准差是服从正态分布的
z
1
=
30
g
σ
=
2
g
z
2
=
32
g
σ
=
4
g
z_1= 30g\space \sigma=2g\\ z_2 = 32g\space\sigma=4g
z1=30g σ=2gz2=32g σ=4g
根据上面的测量值,估计真实值
z
^
=
?
\widehat{z} = ?
z
=?
可以采用卡尔曼的思想设计
z
^
=
z
1
+
K
(
z
2
−
z
1
)
k
[
0
,
1
]
(1)
\widehat{z} = z_1 + K(z_2-z_1)\space k[0,1]\tag{1}
z
=z1+K(z2−z1) k[0,1](1)
可以看出来
k
=
0
:
z
^
=
z
1
k
=
1
:
z
^
=
z
2
k = 0:\space \widehat{z} = z_1\\ k = 1:\space \widehat{z} = z_2
k=0: z
=z1k=1: z
=z2
求解合适的K使得
σ
z
\sigma_z
σz最小,
v
a
r
(
z
^
)
var(\widehat{z})
var(z
)最小,其中因为两个测量工具是相互独立的因此
z
1
,
z
2
z_1,z_2
z1,z2也是相互独立的
σ
z
2
=
v
a
r
(
z
1
+
K
(
z
2
−
z
1
)
)
=
v
a
r
(
z
1
−
K
z
1
+
K
z
2
)
=
v
a
r
(
(
1
−
K
)
z
1
+
K
z
2
)
=
v
a
r
(
(
1
−
K
)
z
1
)
+
v
a
r
(
K
z
2
)
=
(
1
−
k
)
2
v
a
r
(
z
1
)
+
K
2
v
a
r
(
z
2
)
=
(
1
−
K
)
2
σ
1
2
+
K
2
σ
2
2
\begin{align} \sigma^2_z&=var(z_1 + K(z_2 - z_1))\\ &=var(z_1-Kz_1+Kz_2)\\ &=var((1-K)z_1 + Kz_2)\\ &=var((1-K)z_1)+var(Kz_2)\\ &=(1-k)^2var(z_1)+K^2var(z_2)\\ &=(1-K)^2\sigma^2_1 + K^2\sigma^2_2\\ \end{align}
σz2=var(z1+K(z2−z1))=var(z1−Kz1+Kz2)=var((1−K)z1+Kz2)=var((1−K)z1)+var(Kz2)=(1−k)2var(z1)+K2var(z2)=(1−K)2σ12+K2σ22
为了求得
σ
z
\sigma_z
σz最小,对K求导
d
σ
z
2
d
K
=
0
−
2
(
1
−
K
)
σ
1
2
+
2
K
σ
2
2
=
0
K
(
σ
1
2
+
σ
2
2
)
=
σ
1
2
K
=
σ
1
2
σ
1
2
+
σ
2
2
=
0.2
\frac{d\sigma^2_z}{dK} = 0\\ -2(1-K)\sigma^2_1 + 2K\sigma^2_2 = 0\\ K(\sigma^2_1+\sigma^2_2)=\sigma^2_1\\ K = \frac{\sigma^2_1}{\sigma^2_1+\sigma^2_2}\space =\space 0.2
dKdσz2=0−2(1−K)σ12+2Kσ22=0K(σ12+σ22)=σ12K=σ12+σ22σ12 = 0.2
将
K
K
K带入到(1)式中,就可以把最优的估计值求解出来,即
估计值:
z
^
=
z
1
+
K
(
z
2
−
z
1
)
=
30
+
0.2
(
32
−
30
)
=
30.4
方差:
σ
z
2
=
(
1
−
0.
2
2
)
2
2
+
0.
2
2
4
2
=
3.2
\begin{align} &估计值:\widehat{z} = z_1 + K(z_2 - z_1) = 30 + 0.2 (32-30) = 30.4 \\ &方差:\sigma^2_z = (1-0.2^2)2^2+0.2^24^2 = 3.2 \end{align}
估计值:z
=z1+K(z2−z1)=30+0.2(32−30)=30.4方差:σz2=(1−0.22)22+0.2242=3.2
以上的过程就是数据融合
协方差矩阵
协方差矩阵就是把方差和协方差在一个矩阵中表现出来,突出了变量之间的联系
举个例子:
球员 | 身高 x x x | 体重 y y y | 年龄 z z z |
---|---|---|---|
瓦尔迪 | 179 | 74 | 33 |
奥巴梅扬 | 187 | 80 | 31 |
萨拉赫 | 175 | 71 | 28 |
平均 | 180.3 | 75 | 30.7 |
求解方差:
方差:
σ
x
2
=
1
3
(
(
179
−
180.3
)
2
+
(
187
−
180.3
)
2
+
(
175
−
180.3
)
2
)
=
24.89
σ
y
2
=
1
3
(
(
74
−
75
)
2
+
(
80
−
75
)
2
+
(
71
−
75
)
2
)
=
14
σ
z
2
=
1
3
(
(
33
−
30.7
)
2
+
(
31
−
30.7
)
2
+
(
28
−
30.7
)
2
)
=
4.22
协方差:
σ
x
σ
y
=
1
3
(
(
179
−
180.3
)
(
74
−
75
)
+
(
187
−
180.3
)
(
80
−
75
)
+
(
175
−
180.3
)
(
71
−
75
)
)
=
18.7
=
σ
y
σ
x
σ
x
σ
z
=
σ
z
σ
x
=
4.4
σ
y
σ
z
=
σ
z
σ
y
=
3.3
\begin{align} 方差:&\sigma^2_x = \frac{1}{3}((179 - 180.3)^2 + (187-180.3)^2+(175-180.3)^2)=24.89\\ &\sigma^2_y = \frac{1}{3}((74 - 75)^2 + (80-75)^2+(71-75)^2)=14\\ &\sigma^2_z = \frac{1}{3}((33 - 30.7)^2 + (31-30.7)^2+(28-30.7)^2)=4.22\\ 协方差:&\sigma_x\sigma_y = \frac{1}{3}((179 - 180.3)(74-75)+(187-180.3)(80-75)+(175-180.3)(71-75))=18.7=\sigma_y\sigma_x\\ &\sigma_x\sigma_z = \sigma_z\sigma_x = 4.4\\ &\sigma_y\sigma_z = \sigma_z\sigma_y = 3.3\\ \end{align}
方差:协方差:σx2=31((179−180.3)2+(187−180.3)2+(175−180.3)2)=24.89σy2=31((74−75)2+(80−75)2+(71−75)2)=14σz2=31((33−30.7)2+(31−30.7)2+(28−30.7)2)=4.22σxσy=31((179−180.3)(74−75)+(187−180.3)(80−75)+(175−180.3)(71−75))=18.7=σyσxσxσz=σzσx=4.4σyσz=σzσy=3.3
协方差矩阵的形式:
KaTeX parse error: Undefined control sequence: \matrix at position 11: p=\left[ \̲m̲a̲t̲r̲i̲x̲{ \sigma^2_x&\s…
如何利用矩阵的变换计算协方差?编程中有可能用到
首先我们要引入一个过渡矩阵
KaTeX parse error: Undefined control sequence: \matrix at position 13: a = \left[ \̲m̲a̲t̲r̲i̲x̲{ x_1&y_1&z_1\\…
P
=
1
3
a
T
a
P =\frac{1}{3}a^Ta
P=31aTa
协方差矩阵说明了什么?说明两个变量之间的关系
状态空间 state space
现代控制理论就是以状态空间
弹簧阻尼系统
m
x
¨
+
B
x
˙
+
k
x
=
F
m
x
¨
+
B
x
˙
+
k
x
=
u
u
:
i
n
p
u
t
m\ddot{x}+B\dot{x}+kx=F\\ m\ddot{x}+B\dot{x}+kx =u\space u:input
mx¨+Bx˙+kx=Fmx¨+Bx˙+kx=u u:input
状态变量state:
$$
\begin{align}\label{2}
使得:x_1 &= x\
x_2 &= \dot{x}\
这样:\dot{x}_1 &= x_2\
\dot{x}_2 &= \ddot{x} = \frac{1}{m}u-\frac{B}{m}\dot{x}-\frac{k}{m}x\
&=\frac{1}{m}u-\frac{B}{m}x_2-\frac{1}{m}x_1
\end{align}
$$
这样就用两个一阶方程把状态表示出来了
测量(measurement)
z
1
=
x
=
x
1
位置
z
2
=
x
˙
=
x
2
速度
\begin{align} z_1 = x =x_1\space 位置\\ z_2 =\dot{x}=x_2\space 速度 \end{align}
z1=x=x1 位置z2=x˙=x2 速度
把上述的式子用矩阵的形式进行表达
KaTeX parse error: Undefined control sequence: \matrix at position 8: \left[\̲m̲a̲t̲r̲i̲x̲{\dot{x}_1\\\do…
归纳一下就是(以下是一种连续的表达形式)
X
˙
t
=
A
X
t
+
B
u
t
Z
t
=
H
X
t
\begin{align} \dot{X}_{t}&=AX_{t}+Bu_t\\ Z_t&=HX_t \end{align}
X˙tZt=AXt+But=HXt
体现了随着时间的变化
如果离散的话
X
k
=
A
X
k
−
1
+
B
u
k
Z
k
=
H
X
k
\begin{align} X_k &=AX_{k-1}+Bu_k\\ Z_k&=HX_k \end{align}
XkZk=AXk−1+Buk=HXk
下标 k , k − 1 , k 1 k,k-1,k_1 k,k−1,k1时间单位代表的是采样时间,不是从连续系统下直接抄过来,需要根据采样时间进行调整
因为系统存在着很多不确定性,因此把上述式子变成:
过程噪声:process noise ω k − 1 \omega_{k-1} ωk−1
测量噪声:Measurement noise
ν
k
\nu_k
νk
X
k
=
A
X
k
−
1
+
B
u
k
+
ω
k
−
1
Z
k
=
H
X
k
+
ν
k
\begin{align} X_k &=AX_{k-1}+Bu_k+\omega_{k-1}\\ Z_k&=HX_k+\nu_k \end{align}
XkZk=AXk−1+Buk+ωk−1=HXk+νk
在这两个都不确定的情况下,如何去估计一个精确的
x
^
k
=
?
\hat{x}_k=?
x^k=?
就是卡尔曼滤波器要解决的问题。。。
结合数据融合的例子,就是手上有一个不太准的测量结果,一个不太准的估计结果,找到一个比他们两个误差都要小的结果,这就是卡尔曼的一个应用实例