卡尔曼滤波 参考1
卡尔曼滤波 参考2
贝叶斯滤波
多元高斯分布
先给出终极公式:
x
^
k
′
\hat x'_k
x^k′: 最优估计值
P
k
′
P'_k
Pk′: 最优估计的协方差
K
′
K'
K′: 卡尔曼增益(应该写在第一排)
x
^
k
\hat x_k
x^k: 预测值
P
k
P_k
Pk: 预测值协方差
H
k
H_k
Hk: 转移矩阵
z
k
→
\overrightarrow {z_k}
zk: 传感器观测值
R
k
R_k
Rk: 观测值高斯噪声 协方差
1 机器人工作引入
有一个依靠传感器和系统预测,从而在运作的小机器人,状态
x
k
x_k
xk 可以表示在
k
k
k 时刻,机器人的位置与速度:
x
=
[
p
v
]
(1)
\begin{aligned} x = \begin{bmatrix} p \\ v \end{bmatrix} \end{aligned} \tag 1
x=[pv](1)
假设速度不变,现对通过
k
−
1
k-1
k−1 时刻对
k
k
k 时刻机器人的运动进行预测:
p
k
=
p
k
−
1
+
v
k
−
1
Δ
t
v
k
=
v
k
−
1
(2)
\begin{aligned} &p_k = p_{k-1} \ + &v_{k-1} \Delta t \\ &v_k = &v_{k-1} \tag 2 \end{aligned}
pk=pk−1 +vk=vk−1Δtvk−1(2)
2 矩阵表示
表达式可以修改成如下,
x
^
k
\hat x_k
x^k 为对
k
k
k 时刻机器人的预测状态,
F
k
F_k
Fk 为状态转移矩阵:
x
^
k
=
[
1
Δ
t
0
1
]
x
^
k
−
1
=
F
k
x
^
k
−
1
(3)
\begin{aligned} \hat x_k &= \left[ \begin{matrix} 1 & \Delta t \\ 0& 1 \end{matrix} \right] \hat x_{k-1} \\ &=F_k \hat x_{k-1} \end{aligned} \tag 3
x^k=[10Δt1]x^k−1=Fkx^k−1(3)
求预测结果的协方差:
可获取到各变量的间的协方差如下,
P
k
P_k
Pk 为预测后 各变量的协方差:
因为:
C
o
v
(
x
)
=
Σ
C
o
v
(
A
x
)
=
A
Σ
A
T
Cov(x) = \Sigma \\ Cov(Ax) = A \Sigma A^T
Cov(x)=ΣCov(Ax)=AΣAT
所以:
x
^
k
=
F
k
x
^
k
−
1
P
k
=
F
k
P
k
−
1
F
k
T
(4)
\hat x_k = F_k \hat x_{k-1} \\ P_k = F_k P_{k-1} F_k^T \tag 4
x^k=Fkx^k−1Pk=FkPk−1FkT(4)
3 加入控制变量
如果加入控制参数,就可加入机器人的加速度
a
a
a,
p
k
=
p
k
−
1
+
Δ
t
v
k
−
1
+
1
2
a
Δ
t
2
v
k
=
v
k
−
1
+
a
Δ
t
(5)
\begin{aligned} &p_k = p_{k-1}\ + &\Delta t v_{k-1} \ +\ &\frac 1 2 a \Delta t ^2\\ &v_k = &v_{k-1} \ +\ &a \Delta t \end{aligned} \tag 5
pk=pk−1 +vk=Δtvk−1 + vk−1 + 21aΔt2aΔt(5)
可以修改为两个矩阵相加来表示:
x
^
k
=
F
k
x
^
k
−
1
+
[
Δ
t
2
2
Δ
t
]
a
=
F
k
x
^
k
−
1
+
B
k
u
k
→
(6)
\begin{aligned} \hat x_k &= F_k \hat x_{k-1} + \begin{bmatrix} \frac { \Delta t ^2} {2}\\ \Delta t \end{bmatrix} a \\ &= F_k \hat x_{k-1} + B_k \overrightarrow {u_k} \end{aligned} \tag 6
x^k=Fkx^k−1+[2Δt2Δt]a=Fkx^k−1+Bkuk(6)
B k B_k Bk 为控制矩阵, u k → \overrightarrow {u_k} uk为控制向量
4 加入外部干扰
对于外部干扰,加入
Q
k
Q_k
Qk 高斯噪声处理,得到完整的预测表达式:
x
^
k
=
F
k
x
^
k
−
1
+
B
k
u
k
→
P
k
=
F
k
P
k
−
1
F
k
T
+
Q
k
(7)
\hat x_k = F_k \hat x_{k-1} + B_k \overrightarrow {u_k} \\ P_k = F_k P_{k-1} F_k^T + Q_k \tag 7
x^k=Fkx^k−1+BkukPk=FkPk−1FkT+Qk(7)
5 观测值 高斯分布
(看到这里脑袋宕机了,感觉有问题。待处理)
z
k
z_k
zk为传感器观测值,
R
k
R_k
Rk 为观测噪声,观测值服从高斯分布:
N
(
x
,
μ
1
,
σ
1
2
)
=
N
(
x
,
z
k
→
,
R
k
)
(8)
N(x, \mu_1, {\sigma_1}^2) =N(x, \overrightarrow {z_k}, R_k) \tag 8
N(x,μ1,σ12)=N(x,zk,Rk)(8)
6 预测值 高斯分布
(是预测值转换到观测值相同的单位或格式?)
一般情况下,传感器测量单位或指标不同于需要预测的单位,引入转换矩阵
H
k
H_k
Hk 来表示预测值转换到与传感器值同单位的参数。所以,转换为相同单位,预测值的高斯分布为:
N
(
x
,
μ
0
,
σ
0
2
)
=
N
(
x
,
H
k
x
^
k
−
1
,
H
k
P
k
H
k
T
)
(9)
N(x, \mu_0, {\sigma_0}^2) = N(x, H_k \hat x_{k-1}, H_k P_{k} H_k^T) \tag 9
N(x,μ0,σ02)=N(x,Hkx^k−1,HkPkHkT)(9)
7 卡尔曼增益 最优估计值
(how? why?)
有性质:高斯分布的乘积仍然是高斯分布
对
N
(
x
,
μ
0
,
σ
0
)
⋅
N
(
x
,
μ
1
,
σ
1
)
=
N
(
x
,
μ
′
,
σ
′
)
N(x, \mu_0,\sigma_0)\cdot N(x, \mu_1,\sigma_1) = N(x, \mu', \sigma')
N(x,μ0,σ0)⋅N(x,μ1,σ1)=N(x,μ′,σ′),求新的
N
(
x
,
μ
′
,
σ
′
)
N(x, \mu', \sigma')
N(x,μ′,σ′) 并归一化
μ
′
\mu'
μ′ 取
μ
0
,
μ
1
\mu_0,\mu_1
μ0,μ1 的加权平均:
μ
′
=
μ
0
+
σ
0
2
(
μ
1
−
μ
0
)
σ
0
2
+
σ
1
2
(10)
\mu' = \mu_0+\frac{{\sigma_0}^2 (\mu_1-\mu_0)}{{\sigma_0}^2+{\sigma_1}^2} \tag {10}
μ′=μ0+σ02+σ12σ02(μ1−μ0)(10)
σ
′
\sigma'
σ′ 取
σ
0
,
σ
1
\sigma_0, \sigma_1
σ0,σ1 的调和平均的二分之一:
σ
′
2
=
σ
0
2
−
σ
0
4
σ
0
2
+
σ
1
2
(11)
{\sigma'}^2 = {\sigma_0}^2- \frac {{\sigma_0}^4} { {\sigma_0}^2+ {\sigma_1}^2} \tag {11}
σ′2=σ02−σ02+σ12σ04(11)
令
k
=
σ
0
2
σ
0
2
+
σ
1
2
(12)
k = \frac {{\sigma_0}^2} { {\sigma_0}^2+ {\sigma_1}^2} \tag {12}
k=σ02+σ12σ02(12)
那么
μ
′
=
μ
0
+
k
(
μ
1
−
μ
0
)
σ
′
2
=
σ
0
2
−
k
σ
0
2
(13)
\mu' = \mu_0+k(\mu_1 - \mu_0) \\ {\sigma'}^2 = {\sigma_0}^2 - k {\sigma_0}^2 \tag {13}
μ′=μ0+k(μ1−μ0)σ′2=σ02−kσ02(13)
8 过程整合
(主要将式(12),(13)整合到卡尔曼滤波当中)
待学习