预测(prediction)
状态变量
x
k
=
A
x
k
−
1
+
B
u
k
−
1
+
w
k
−
1
x_k = Ax_{k-1} + Bu_{k-1} + w_{k-1}
xk=Axk−1+Buk−1+wk−1
其中n维向量
x
k
x_k
xk为k时刻的系统状态变量,n维向量
x
k
−
1
x_{k−1}
xk−1是k-1时刻的系统状态变量。
A
A
A是状态转移矩阵或者过程增益矩阵,是
n
×
n
n×n
n×n阶方阵,它将k-1时刻状态和当前的k时刻状态联系起来。
B
B
B是可选的控制输入
u
∈
R
l
u\in R^l
u∈Rl的增益,在大多数实际情况下并没有控制增益,所以
B
u
k
−
1
Bu_{k−1}
Buk−1这一项很愉快的变成零了。
w
k
−
1
w_{k-1}
wk−1是n维向量,代表过程激励噪声,它对应了中每个分量的噪声,是期望为0,协方差为Q的高斯白噪声,
w
~
N
(
0
,
Q
)
w~N(0,Q)
w~N(0,Q)
观测变量
z
k
=
H
x
k
+
v
k
z_k = Hx_k + v_k
zk=Hxk+vk
其中观测值
z
k
z_k
zk是m阶向量,状态变量
x
k
x_k
xk是n阶向量。对于目标检测,
z
k
z_k
zk就是检测结果转化后的值
观测矩阵
H
H
H是
m
×
n
m×n
m×n阶矩阵,代表状态变量
x
k
x_k
xk对测量变量
z
k
z_k
zk的增益
观测噪声
v
k
v_k
vk是期望为0,协方差为R的高斯白噪声,
v
k
~
N
(
0
,
R
)
v_k~N(0,R)
vk~N(0,R)
误差协方差
P
^
k
ˉ
=
A
P
^
k
−
1
A
T
+
Q
\hat P_{\bar k} = A \hat P_{k-1}A^T + Q
P^kˉ=AP^k−1AT+Q
P ^ k ˉ − 1 \hat P_{\bar k-1} P^kˉ−1:表示k时刻的先验估计协方差,这个协方差矩阵只要确定了一开始的 P ^ 0 \hat P_0 P^0,后面都可以递推出来,而且初始协方差矩阵 P ^ 0 \hat P_0 P^0只要不是为0,它的取值对滤波效果影响很小,都能很快收敛。
P ^ k ˉ \hat P_{\bar k} P^kˉ:表示k时刻的后验估计协方差,是滤波结果之一。
Q
Q
Q:表示过程激励噪声的协方差,它是状态转移矩阵与实际过程之间的误差。这个矩阵是卡尔曼滤波中比较难确定的一个量,一般有两种思路:一是在某些稳定的过程可以假定它是固定的矩阵,通过寻找最优的Q值使滤波器获得更好的性能,这是调整滤波器参数的主要手段,Q一般是对角阵,且对角线上的值很小,便于快速收敛;二是在自适应卡尔曼滤波(AKF)中Q矩阵是随时间变化的。
更新(update/correction)
卡尔曼增益
K
k
=
P
^
k
ˉ
H
T
H
P
^
k
ˉ
H
T
+
R
K_k = \frac {\hat P_{\bar k}H^T}{H\hat P_{\bar k}H^T + R}
Kk=HP^kˉHT+RP^kˉHT
H
H
H:表示量测矩阵,是
m
×
n
m×n
m×n阶矩阵,它把m维测量值转换到n维与状态变量相对应。
R
R
R:测量噪声的协方差矩阵,这个值过大过小都会使滤波效果变差,且取值越小,收敛越快。
由观测变量 z k z_k zk更新估计
x
^
k
=
x
^
k
ˉ
+
K
k
(
z
k
−
H
x
^
k
ˉ
)
\hat x_k = \hat x_{\bar k} +K_k(z_k-H \hat x_{\bar k})
x^k=x^kˉ+Kk(zk−Hx^kˉ)
x ^ k ˉ \hat x_{\bar k} x^kˉ:表示 k k k时刻先验状态估计值,这是算法根据前次迭代结果(就是上一次循环的后验估计值)做出的不可靠估计。
x ^ k \hat x_k x^k:表示k时刻后验状态估计值,也就是要输出的该时刻最优估计值,这个值是卡尔曼滤波的结果。
更新误差协方差
P
^
k
=
(
I
−
K
k
H
)
P
^
k
ˉ
\hat P_k = (I - K_kH)\hat P_{\bar k}
P^k=(I−KkH)P^kˉ
新的最佳估计是基于原最佳估计和已知外部影响校正后得到的预测。
新的不确定性是基于原不确定性和外部环境的不确定性得到的预测。