提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
数据融合
引入例子,当通过俩方法测量一物体质量时,结果和对应的方差为
z
1
z_1
z1 和
z
2
z_2
z2 ,对应的方差是
δ
1
和
δ
2
\delta_1 和 \delta_2
δ1和δ2, 数据融合是通过这俩个数据来估计真实值。
z
=
z
1
+
k
(
z
2
−
z
1
)
z = z_1 + k(z_2 - z_1)
z=z1+k(z2−z1)
求k使得
δ
z
\delta_z
δz 最小
δ
z
2
=
V
a
r
(
z
1
+
k
(
z
2
−
z
1
)
)
=
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
1
)
\delta_z ^ 2 = Var(z_1 + k(z_2-z_1))\\ =Var((1-k)z_1)+Var(kz_2)\\ =(1-k)^2var(z1) + k^2Var(z_1)
δz2=Var(z1+k(z2−z1))=Var((1−k)z1)+Var(kz2)=(1−k)2var(z1)+k2Var(z1)
然后利用导数为零求出
k
=
δ
1
δ
1
2
+
δ
2
2
k=\frac{\delta_1}{\delta_1^2 + \delta_2^2}
k=δ12+δ22δ1
协方差矩阵
三个变量的协方差矩阵形式如下
P
=
[
δ
1
2
δ
1
δ
2
δ
1
δ
3
δ
1
δ
2
δ
2
2
δ
2
δ
3
δ
1
δ
3
δ
2
δ
3
δ
3
2
]
P= \left[\begin{matrix} \delta_1^2&\delta_1\delta_2&\delta_1\delta_3\\ \delta_1\delta_2&\delta_2^2&\delta_2\delta_3\\ \delta_1\delta_3&\delta_2\delta_3&\delta_3^2 \end{matrix}\right]
P=
δ12δ1δ2δ1δ3δ1δ2δ22δ2δ3δ1δ3δ2δ3δ32
方差和协方差在一个矩阵表现出来,体现了变量之间的联动关系
δ 1 δ 2 \delta_1\delta_2 δ1δ2为正说明,俩变量正相关,反正负相关.
状态转移方程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DzU4hO6w-1682312199872)(C:\Users\家有二乔\AppData\Roaming\Typora\typora-user-images\1666547367785.png)]
引入例子,k为弹簧,B为阻尼器
牛顿定理得 F = m x ¨ + B x ˙ + k x = u , 其中 x ¨ 是加速度, x ˙ 速度, x 是位移 F=m\ddot x + B\dot x + kx = u, 其中 \ddot x是加速度,\dot x 速度, x是位移 F=mx¨+Bx˙+kx=u,其中x¨是加速度,x˙速度,x是位移, 设
x
1
=
x
x
2
=
x
˙
x_1=x\\ x_2=\dot x\\
x1=xx2=x˙
所有
x
˙
1
=
x
˙
=
x
2
x
˙
2
=
x
¨
=
−
B
m
x
2
−
k
m
x
1
+
u
m
\dot x_1 = \dot x = x_2\\ \dot x_2 = \ddot x = -\frac{B}{m}x_2 -\frac{k}{m}x_1 + \frac{u}{m}
x˙1=x˙=x2x˙2=x¨=−mBx2−mkx1+mu
矩阵的形式
[
x
˙
1
x
˙
2
]
=
[
0
1
−
k
m
−
B
m
]
[
x
1
x
2
]
+
[
0
1
m
]
u
[
z
1
z
2
]
=
[
1
0
0
1
]
[
x
1
x
2
]
\left[ \begin{matrix} \dot x_1\\ \dot x_2 \end{matrix}\right] = \left[\begin{matrix}0&1\\-\frac{k}{m} & -\frac{B} {m}\end{matrix}\right] \left[\begin{matrix}x_1\\x_2 \end{matrix}\right] + \left[\begin{matrix} 0\\\frac{1}{m}\end{matrix}\right] u\\ \left[\begin{matrix}z_1\\z_2\end{matrix}\right]=\left[\begin{matrix}1&0\\0&1\end{matrix}\right] \left[\begin{matrix}x_1\\x_2\end{matrix}\right]
[x˙1x˙2]=[0−mk1−mB][x1x2]+[0m1]u[z1z2]=[1001][x1x2]
得到状态转移方程
X
˙
(
t
)
=
A
X
(
t
)
+
B
u
Z
(
t
)
=
H
X
(
t
)
\dot X(t) = A X(t) + Bu\\ Z(t)=HX(t)
X˙(t)=AX(t)+BuZ(t)=HX(t)
该式为连续的表达,但计算机只能处理线性的问题,所以需要进行离散化
X
k
=
A
X
k
−
1
+
B
u
k
−
1
+
w
k
−
1
Z
k
=
H
X
k
+
v
k
X_k = AX_{k-1} +Bu_{k-1} + w_{k-1}\\ Z_k = HX_k + v_k
Xk=AXk−1+Buk−1+wk−1Zk=HXk+vk
其中
w
k
−
1
w_{k-1}
wk−1为过程误差,
v
k
v_{k}
vk为测量误差,都属于自然界的误差,满足期望为0的正态分布
下表k为采样时间,其俩次采样时间差为采样周期,当采样周期 T → 0 T \to \ 0 T→ 0 , 转变成连续。
卡尔曼滤波
规定 x ^ k − \hat x^-_k x^k−为先验误差,即先通过理论方程得到的结果,里面会会有过程误差 w , P ( w ) ∼ ( 0 , Q ) , Q 为过程误差的协方差矩阵 w, P(w) \sim (0, Q), Q为过程误差的协方差矩阵 w,P(w)∼(0,Q),Q为过程误差的协方差矩阵, x k x_k xk为测量值,即通过仪器等手段测量出来,里面会有机器带有的测量噪声 v , P ( v ) ∼ ( 0 , R ) , R v, P(v) \sim(0, R), R v,P(v)∼(0,R),R为测量误差协方差矩阵。 x ^ k \hat x_k x^k为最后得估计值,也就是我们所求
由状态转移方程得
x
^
k
−
=
A
x
^
k
−
1
+
B
u
k
−
1
z
k
=
H
x
k
\hat x^-_k = A\hat x_{k-1} +Bu_{k-1}\\ z_k=Hx_k
x^k−=Ax^k−1+Buk−1zk=Hxk
由之前讲过得数据融合得到估计值
$ \hat x_k = \hat x^-_k + G(H^-z_k-\hat x^-_k)$
这里使用下面得标准形式
G
=
k
k
H
G=k_kH
G=kkH,
k
k
∈
[
0
,
H
−
]
k_k \in [0, H^-]
kk∈[0,H−]
x
^
k
=
x
^
k
−
+
k
k
(
z
k
−
H
x
^
k
−
)
\hat x_k = \hat x^-_k + k_k(z_k-H\hat x^-_k)
x^k=x^k−+kk(zk−Hx^k−)
设
e
k
=
x
k
−
x
^
k
e_k=x_k-\hat x_k
ek=xk−x^k
x
k
x_k
xk为真实值,所以e为后验误差
P
(
e
)
∼
(
0
,
P
)
,
P
=
E
[
e
e
T
]
=
[
δ
e
1
2
δ
e
1
δ
e
2
δ
e
1
δ
e
2
δ
e
2
2
]
P(e) \sim(0, P), P = E[e e^T] = \left[\begin{matrix}\delta e_1^2 & \delta e_1 \delta e_2 \\ \delta e_1 \delta e_2 & \delta e_2^2\end{matrix}\right]
P(e)∼(0,P),P=E[eeT]=[δe12δe1δe2δe1δe2δe22]
求后验误差得方差最小也就是求协方差矩阵得迹最小$tr§ = \delta e_1^2 +\delta e_2^2 $最小
p
k
=
E
[
e
k
e
k
T
]
=
E
[
(
x
k
−
x
^
k
)
(
x
k
−
x
^
k
)
T
]
=
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
t
r
(
p
k
)
=
t
r
(
p
k
−
)
−
2
t
r
(
k
k
H
P
k
−
)
+
t
r
(
k
k
H
p
k
−
H
T
K
k
T
)
+
t
r
(
K
k
R
K
k
T
)
d
t
r
(
p
k
)
d
k
k
=
0
\begin{aligned} p_k=&E[e_ke_k^T]\\=&E[(x_k-\hat x_k)(x_k-\hat x_k)^T]\\=&P^-_k-K_kHP^-_k-P^-_kH^TK_k^T+K_kHP^-_kH^TK_k^T+K_kRK_k^T\\ tr(p_k)=&tr(p_k^-)-2tr(k_kHP^-_k)+tr(k_kHp_k^-H^TK_k^T)+tr(K_kRK_k^T)\\ \frac{dtr(p_k)}{dk_k} &= 0 \end{aligned}
pk===tr(pk)=dkkdtr(pk)E[ekekT]E[(xk−x^k)(xk−x^k)T]Pk−−KkHPk−−Pk−HTKkT+KkHPk−HTKkT+KkRKkTtr(pk−)−2tr(kkHPk−)+tr(kkHpk−HTKkT)+tr(KkRKkT)=0
最后得到
K
k
=
P
k
−
H
T
H
P
k
−
H
T
+
R
K_k=\frac{P^-_kH^T}{HP_k^-H^T+R}
Kk=HPk−HT+RPk−HT
在
K
k
公式还有未知量先验误差协方差
P
k
−
K_k公式还有未知量先验误差协方差P^-_k
Kk公式还有未知量先验误差协方差Pk−
求
P
k
−
P^-_k
Pk−
P
k
−
=
E
[
e
k
−
e
k
−
T
]
=
A
P
k
−
1
A
T
+
Q
\begin{aligned} P^-_k=&E[e_k^-e^{-T}_k] \\=&AP_{k-1}A^T+Q \end{aligned}
Pk−==E[ek−ek−T]APk−1AT+Q
所以
P
k
=
(
I
−
k
k
H
)
P
k
−
P_k=(I-k_kH)P^-_k
Pk=(I−kkH)Pk−
到此卡尔曼滤波的5个重要公式都求出来了,总结
预测
先验估计
x
^
k
−
=
A
x
^
k
−
1
+
B
u
k
−
1
先验误差协方差
P
k
−
=
A
P
k
−
1
A
T
+
Q
校正
卡尔曼增益
K
k
=
P
k
−
H
T
H
P
k
−
H
T
+
R
后验估计
x
^
k
=
x
^
k
−
+
k
k
(
z
k
−
H
x
^
k
−
)
后验误差协方差
P
k
=
(
I
−
k
k
H
)
P
k
−
预测\\先验估计 \hat x^-_k=A\hat x_{k-1} +Bu_{k-1}\\ 先验误差协方差 P^-_k=AP_{k-1}A^T+Q\\ 校正\\ 卡尔曼增益 K_k=\frac{P^-_kH^T}{HP_k^-H^T+R}\\ 后验估计\hat x_k = \hat x^-_k + k_k(z_k-H\hat x^-_k)\\ 后验误差协方差P_k=(I-k_kH)P^-_k
预测先验估计x^k−=Ax^k−1+Buk−1先验误差协方差Pk−=APk−1AT+Q校正卡尔曼增益Kk=HPk−HT+RPk−HT后验估计x^k=x^k−+kk(zk−Hx^k−)后验误差协方差Pk=(I−kkH)Pk−