思来想去,还是感觉有必要记录下卡尔曼滤波基础公式的推导,加深自己的理解,如有不准确的地方也欢迎大家评论指正!
经典的卡尔曼滤波算法是Kalman在1960年提出的,此后出现了多种形式的变种,在机器人、自动驾驶和飞行控制等领域都有着广泛的应用。卡尔曼滤波(Kalman filtering)是一种利用线性系统状态方程,通过系统输入观测数据,对系统状态进行最优估计的算法。通常它的输入信号中带有“过程噪声”和“观测噪声”,输出信号是对真实信号的最优估计,因此其过程可以看作是一个数据滤波的过程,目的是去除噪声以还原真实数据。
卡尔曼滤波-五大经典公式:
这里还是引用网上卡尔曼滤波介绍文章中经典的工作流程图。不难看出,卡尔曼滤波器工作流程是一个不断迭代的过程,单个周期内分为预测(Predict)和更新(Update)两部分。这里引入几个关于系统状态量的概念:
- x k x_k xk:表示系统状态的真实值(通常无法直接得到);
- x k ˉ \bar{x_k} xkˉ:表示系统状态的预测值(通常根据上一时刻系统状态的估计值预测得到,也叫先验状态);
- x k ^ \hat{x_k} xk^:表示系统状态的估计值(通常是预测值加入观测信息后修正得到,也叫后验状态);
预测:
-
输入:过去的最优状态 ( x ^ k − 1 , P k ^ ) (\hat{x}_{k-1}, \hat{P_k}) (x^k−1,Pk^),外界对过程的影响 u k u_k uk,环境的不确定度 Q k Q_k Qk;
-
输出:预测的当前时刻系统状态 ( x ˉ k , P k ˉ ) (\bar{x}_{k}, \bar{P_k}) (xˉk,Pkˉ);
-
其他:对过程的描述转换 ( F k , B k ) (F_k,B_k) (Fk,Bk),与时间有关;
x k ˉ = F k x ^ k − 1 + B k u k (1) \tag{1} \bar{x_k} = F_k \hat{x}_{k-1} +B_ku_k xkˉ=Fkx^k−1+Bkuk(1) P k ˉ = F k P ^ k − 1 F k T + Q k (2) \tag{2} \bar{P_k} = F_k\hat{P}_{k-1}F_k^T+Q_k Pkˉ=FkP^k−1FkT+Qk(2)
更新: -
输入:预测的当前时刻系统状态 ( x ˉ k , P k ˉ ) (\bar{x}_{k}, \bar{P_k}) (xˉk,Pkˉ),观测值的状态 ( z k , R k ) (z_k,R_k) (zk,Rk),状态量到观测量维度的变换矩阵 H k H_k Hk;
-
输出:经过观测值修正后的最优估计状态 ( x ^ k , P k ^ ) (\hat{x}_{k}, \hat{P_k}) (x^k,Pk^);
K = = P k ˉ H k T ( H k P k ˉ H k T + R k ) − 1 K = = \bar{P_k}H_k^T(H_k\bar{P_k}H_k^T+R_k)^{-1} K==PkˉHkT(HkPkˉHkT+Rk)−1 x k ^ = x k ˉ + K ( z k − H k x k ˉ ) (4) \tag{4} \hat{x_k} = \bar{x_k} + K(z_k-H_k\bar{x_k}) xk^=xkˉ+K(zk−Hkxkˉ)(4) P k ^ = P k ˉ − K H k P k ˉ = ( I − K H k ) P k ˉ (5) \tag{5} \hat{P_k} = \bar{P_k}-KH_k\bar{P_k}=(I-KH_k)\bar{P_k} Pk^=Pkˉ−KHkPkˉ=(I−KHk)Pkˉ(5)
卡尔曼滤波-推导过程
系统状态估计描述的是已知前一时刻的系统状态
x
k
−
1
x_{k-1}
xk−1和当前时刻的系统观测量
z
k
z_k
zk,如果获取当前时刻系统最可能的状态信息。通常需要构建状态方程和观测方程来进行系统状态的建模:
状态方程:
描述的是前一时刻的系统状态
x
k
−
1
x_{k-1}
xk−1与当前时刻系统状态
x
k
x_k
xk的关系;
x
k
=
F
k
x
k
−
1
+
B
k
u
k
+
w
k
x_k = F_k x_{k-1} +B_ku_k+w_k
xk=Fkxk−1+Bkuk+wk其中:
- F k F_k Fk为状态转移矩阵, B k u k B_ku_k Bkuk为外部输入, w k w_k wk为过程噪声,一般满足高斯分布 w k ∼ N ( 0 , Q k ) w_k\sim N(0, Q_k) wk∼N(0,Qk)。
测量方程:
描述的是当前时刻的观测量
z
k
z_k
zk与当前时刻系统状态
x
k
x_k
xk的关系;
z
k
=
H
k
x
k
+
v
k
z_k=H_kx_k+v_k
zk=Hkxk+vk其中:
- H k H_k Hk为测量矩阵, v k v_k vk为测量噪声,一般满足高斯分布 v k ∼ N ( 0 , R k ) v_k\sim N(0, R_k) vk∼N(0,Rk)。
我们都知道卡尔曼滤波是线性状态估计问题中最为直接的一种处理方法,那么如何理解卡尔曼滤波呢?可以从如下两个角度进行理解:一种是从概率分布的角度,一种是从最小化误差的角度。
1. 从概率分布的角度
卡尔曼滤波将状态方程中的过程噪声假设成均值为0的高斯噪声,使得系统状态向量也可以看做是一个符合高斯分布的随机向量。同时对于测量方程中的测量噪声也假设成均值为0的高斯噪声,同样通过测量方程可以将系统状态向量转换到观测域,此时观测域的状态向量同样满足高斯分布。这样就可以得到两个关于系统状态向量的高斯分布(观测域下):
- 系统状态(预测值)满足 N ( H k x k , H k P k H k T ) N(H_kx_k,H_kP_kH^{T}_k) N(Hkxk,HkPkHkT)
- 系统状态(观测值)满足 N ( z k , R k ) N(z_k,R_k) N(zk,Rk)
其中预测的方差(多维称协方差)是根据系统状态
x
k
x_k
xk的协方差
P
k
P_k
Pk及协方差传播定律(已知向量x 的协方差为
Σ
\Sigma
Σ,协方差满足
C
o
v
(
A
x
)
=
A
Σ
A
T
Cov(Ax)=A\Sigma A^{T}
Cov(Ax)=AΣAT)得到的。
概率论中提到两个高斯分布的联合概率分布依旧保持高斯特性,简单以下图为例,绿色和红色表示不同的高斯分布函数,蓝色为两个高斯分布的乘积,可以大概看出蓝色部分相较于原来的两个高斯分布,分布更为集中,形态上像是一个幅值被压缩的高斯分布。那么如果这个性质能够应用到前面提到的系统状态向量的两个高斯分布上,是不是就说明可以通过两个高斯分布的乘积来对系统状态进行更加可靠的估计呢?
两个高斯分布的乘积推导:
假设两个高斯分布满足
N
1
∼
(
μ
1
,
σ
1
2
)
N_1 \sim (\mu_1,\sigma^{2}_1)
N1∼(μ1,σ12),
N
2
∼
(
μ
2
,
σ
1
2
)
N_2 \sim (\mu_2,\sigma^{2}_1)
N2∼(μ2,σ12),现在需要计算两者相乘后新的概率分布N:
f
(
x
)
=
1
2
π
σ
e
x
p
(
−
(
x
−
μ
)
2
2
σ
2
)
f(x)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(x-\mu)^{2}}{2\sigma^{2}})
f(x)=2πσ1exp(−2σ2(x−μ)2)
N
(
μ
,
σ
2
)
=
N
1
(
μ
1
,
σ
1
2
)
⋅
N
2
(
μ
2
,
σ
2
2
)
N(\mu,\sigma^{2}) = N_1(\mu_1,\sigma^{2}_1) \cdot N_2(\mu_2,\sigma^{2}_2)
N(μ,σ2)=N1(μ1,σ12)⋅N2(μ2,σ22) 将符号带入后,可得:
f
(
x
)
=
f
(
x
1
)
⋅
f
(
x
2
)
=
1
2
π
σ
1
e
x
p
(
−
(
x
−
μ
1
)
2
2
σ
1
2
)
×
1
2
π
σ
2
e
x
p
(
−
(
x
−
μ
2
)
2
2
σ
2
2
)
=
1
2
π
σ
1
σ
2
e
x
p
(
−
(
x
−
μ
1
)
2
2
σ
1
2
−
(
x
−
μ
2
)
2
2
σ
2
2
)
\begin{align} f(x) & =f(x_1) \cdot f(x_2) \\ & =\frac{1}{\sqrt{2\pi}\sigma_1}exp(-\frac{(x-\mu_1)^{2}}{2\sigma^{2}_{1}}) \times \frac{1}{\sqrt{2\pi}\sigma_2}exp(-\frac{(x-\mu_2)^{2}}{2\sigma^{2}_{2}}) \\ & = \frac{1}{2\pi \sigma_1 \sigma_2} exp(-\frac{(x-\mu_1)^{2}}{2\sigma^{2}_{1}}-\frac{(x-\mu_2)^{2}}{2\sigma^{2}_{2}}) \end{align}
f(x)=f(x1)⋅f(x2)=2πσ11exp(−2σ12(x−μ1)2)×2πσ21exp(−2σ22(x−μ2)2)=2πσ1σ21exp(−2σ12(x−μ1)2−2σ22(x−μ2)2)
单独取出
f
(
x
)
f(x)
f(x)的指数部分,即
(
x
−
μ
1
)
2
2
σ
1
2
+
(
x
−
μ
2
)
2
2
σ
2
2
=
σ
2
2
(
x
2
−
2
μ
1
x
+
μ
1
2
)
+
σ
1
2
(
x
2
−
2
μ
2
x
+
μ
2
2
)
2
σ
1
2
σ
2
2
=
(
σ
1
2
+
σ
2
2
)
x
2
−
2
x
(
μ
1
σ
2
2
+
μ
2
σ
1
2
)
+
(
μ
1
2
σ
2
2
+
μ
2
2
σ
1
2
)
2
σ
1
2
σ
2
2
=
x
2
−
2
x
μ
1
σ
2
2
+
μ
2
σ
1
2
σ
1
2
+
σ
2
2
+
μ
1
2
σ
2
2
+
μ
2
2
σ
1
2
σ
1
2
+
σ
2
2
2
σ
1
2
σ
2
2
σ
1
2
+
σ
2
2
=
(
x
−
μ
1
σ
2
2
+
μ
2
σ
1
2
σ
1
2
+
σ
2
2
)
2
+
μ
1
2
σ
2
2
+
μ
2
2
σ
1
2
σ
1
2
+
σ
2
2
−
(
μ
1
2
σ
2
2
+
μ
2
2
σ
1
2
σ
1
2
+
σ
2
2
)
2
2
σ
1
2
σ
2
2
σ
1
2
+
σ
2
2
=
(
x
−
μ
1
σ
2
2
+
μ
2
σ
1
2
σ
1
2
+
σ
2
2
)
2
2
σ
1
2
σ
2
2
σ
1
2
+
σ
2
2
+
μ
1
2
σ
2
2
+
μ
2
2
σ
1
2
σ
1
2
+
σ
2
2
−
(
μ
1
2
σ
2
2
+
μ
2
2
σ
1
2
σ
1
2
+
σ
2
2
)
2
2
σ
1
2
σ
2
2
σ
1
2
+
σ
2
2
\begin{align} \frac{(x-\mu_1)^{2}}{2\sigma^{2}_{1}}+\frac{(x-\mu_2)^{2}}{2\sigma^{2}_{2}} & = \frac{\sigma^{2}_2(x^{2} - 2 \mu_1x +\mu^{2}_1) + \sigma^{2}_1(x^{2} - 2 \mu_2 x +\mu^{2}_2)}{2\sigma^{2}_{1} \sigma^{2}_2} \\ & = \frac{(\sigma^{2}_1 + \sigma^{2}_2)x^{2} - 2x(\mu_1 \sigma^2_2 + \mu_2 \sigma^2_1)+(\mu^2_1 \sigma^2_2 +\mu^2_2 \sigma^2_1)}{2\sigma^{2}_{1} \sigma^{2}_2} \\ & = \frac{x^2 - 2x \frac{\mu_1 \sigma^2_2 + \mu_2 \sigma^2_1}{\sigma^{2}_1 + \sigma^{2}_2} + \frac{\mu^2_1 \sigma^2_2 +\mu^2_2 \sigma^2_1}{\sigma^{2}_1 + \sigma^{2}_2}}{\frac{2\sigma^2_1\sigma^2_2}{\sigma^{2}_1 + \sigma^{2}_2}} \\ & = \frac{(x - \frac{\mu_1 \sigma^2_2 + \mu_2 \sigma^2_1}{\sigma^{2}_1 + \sigma^{2}_2})^2 + \frac{\mu^2_1 \sigma^2_2 +\mu^2_2 \sigma^2_1}{\sigma^{2}_1 + \sigma^{2}_2} - (\frac{\mu^2_1 \sigma^2_2 +\mu^2_2 \sigma^2_1}{\sigma^{2}_1 + \sigma^{2}_2})^2}{\frac{2\sigma^2_1\sigma^2_2}{\sigma^{2}_1 + \sigma^{2}_2}} \\ & = \frac{(x - \frac{\mu_1 \sigma^2_2 + \mu_2 \sigma^2_1}{\sigma^{2}_1 + \sigma^{2}_2})^2 }{\frac{2\sigma^2_1\sigma^2_2}{\sigma^{2}_1 + \sigma^{2}_2}} + \frac{ \frac{\mu^2_1 \sigma^2_2 +\mu^2_2 \sigma^2_1}{\sigma^{2}_1 + \sigma^{2}_2} - (\frac{\mu^2_1 \sigma^2_2 +\mu^2_2 \sigma^2_1}{\sigma^{2}_1 + \sigma^{2}_2})^2}{\frac{2\sigma^2_1\sigma^2_2}{\sigma^{2}_1 + \sigma^{2}_2}} \end{align}
2σ12(x−μ1)2+2σ22(x−μ2)2=2σ12σ22σ22(x2−2μ1x+μ12)+σ12(x2−2μ2x+μ22)=2σ12σ22(σ12+σ22)x2−2x(μ1σ22+μ2σ12)+(μ12σ22+μ22σ12)=σ12+σ222σ12σ22x2−2xσ12+σ22μ1σ22+μ2σ12+σ12+σ22μ12σ22+μ22σ12=σ12+σ222σ12σ22(x−σ12+σ22μ1σ22+μ2σ12)2+σ12+σ22μ12σ22+μ22σ12−(σ12+σ22μ12σ22+μ22σ12)2=σ12+σ222σ12σ22(x−σ12+σ22μ1σ22+μ2σ12)2+σ12+σ222σ12σ22σ12+σ22μ12σ22+μ22σ12−(σ12+σ22μ12σ22+μ22σ12)2
前面已经变成了
(
x
−
μ
)
2
2
σ
2
\frac{(x-\mu)^{2}}{2\sigma^{2}}
2σ2(x−μ)2的形式,其中
μ
=
μ
1
σ
2
2
+
μ
2
σ
1
2
σ
1
2
+
σ
2
2
,
σ
2
=
σ
1
2
σ
2
2
σ
1
2
+
σ
2
2
\mu = \frac{\mu_1 \sigma^2_2 + \mu_2 \sigma^2_1}{\sigma^{2}_1 + \sigma^{2}_2},\sigma^2 = \frac{\sigma^2_1\sigma^2_2}{\sigma^{2}_1 + \sigma^{2}_2}
μ=σ12+σ22μ1σ22+μ2σ12,σ2=σ12+σ22σ12σ22。继续对(1-2)式后续的常数部分进行简化,即
μ
1
2
σ
2
2
+
μ
2
2
σ
1
2
σ
1
2
+
σ
2
2
−
(
μ
1
2
σ
2
2
+
μ
2
2
σ
1
2
σ
1
2
+
σ
2
2
)
2
2
σ
1
2
σ
2
2
σ
1
2
+
σ
2
2
=
(
μ
1
2
σ
2
2
+
μ
2
2
σ
1
2
)
(
σ
1
2
+
σ
2
2
)
−
(
μ
1
2
σ
2
2
+
μ
2
2
σ
1
2
)
2
2
σ
1
2
σ
2
2
(
σ
1
2
+
σ
2
2
)
=
(
μ
1
−
μ
2
)
2
2
(
σ
1
2
+
σ
2
2
)
\begin{align} \frac{ \frac{\mu^2_1 \sigma^2_2 +\mu^2_2 \sigma^2_1}{\sigma^{2}_1 + \sigma^{2}_2} - (\frac{\mu^2_1 \sigma^2_2 +\mu^2_2 \sigma^2_1}{\sigma^{2}_1 + \sigma^{2}_2})^2}{\frac{2\sigma^2_1\sigma^2_2}{\sigma^{2}_1 + \sigma^{2}_2}} & = \frac{(\mu^2_1 \sigma^2_2 +\mu^2_2 \sigma^2_1)(\sigma^{2}_1 + \sigma^{2}_2) -(\mu^2_1 \sigma^2_2 +\mu^2_2 \sigma^2_1)^2 }{2\sigma^2_1\sigma^2_2 (\sigma^{2}_1 + \sigma^{2}_2)} \\ & = \frac{(\mu_1 - \mu_2)^2}{2(\sigma^{2}_1 + \sigma^{2}_2)} \end{align}
σ12+σ222σ12σ22σ12+σ22μ12σ22+μ22σ12−(σ12+σ22μ12σ22+μ22σ12)2=2σ12σ22(σ12+σ22)(μ12σ22+μ22σ12)(σ12+σ22)−(μ12σ22+μ22σ12)2=2(σ12+σ22)(μ1−μ2)2
因此,两个高斯概率密度函数的乘积可以写成
其中:
μ
=
μ
1
σ
2
2
+
μ
2
σ
1
2
σ
1
2
+
σ
2
2
=
μ
1
+
σ
1
2
(
μ
2
−
μ
1
)
σ
1
2
+
σ
2
2
\mu = \frac{\mu_1 \sigma^2_2 + \mu_2 \sigma^2_1}{\sigma^{2}_1 + \sigma^{2}_2} = \mu_1 +\frac{\sigma^2_1(\mu_2 - \mu_1)}{\sigma^{2}_1 + \sigma^{2}_2}
μ=σ12+σ22μ1σ22+μ2σ12=μ1+σ12+σ22σ12(μ2−μ1)
σ
2
=
σ
1
2
σ
2
2
σ
1
2
+
σ
2
2
=
σ
1
2
−
σ
1
4
σ
1
2
+
σ
2
2
\sigma^2 = \frac{\sigma^2_1\sigma^2_2}{\sigma^{2}_1 + \sigma^{2}_2} = \sigma_1^2 - \frac{\sigma_1^4}{\sigma^{2}_1 + \sigma^{2}_2}
σ2=σ12+σ22σ12σ22=σ12−σ12+σ22σ14因此两个高斯分布的乘积仍为高斯分布,且均值为μ,方差为
σ
2
\sigma^2
σ2,
S
g
S_g
Sg被称为缩放因子,表示相乘后的高斯分布函数相比于标准高斯分布是一个被压缩或者放大的高斯分布。为了方便表达,我们令
K
=
σ
1
2
σ
1
2
+
σ
2
2
K=\frac{\sigma_1^2}{\sigma_1^2 + \sigma_2^2}
K=σ12+σ22σ12,这样两个高斯分布相乘后新的高斯分布的均值和方差可以表示为:
μ
=
μ
1
+
K
(
μ
2
−
μ
1
)
\mu = \mu_1+K(\mu_2-\mu_1)
μ=μ1+K(μ2−μ1)
σ
2
=
σ
1
2
−
K
σ
1
2
\sigma^2=\sigma_1^2-K\sigma_1^2
σ2=σ12−Kσ12 将上式拓展到多维空间,同样适用,即:
K
=
Σ
1
(
Σ
1
+
Σ
2
)
−
1
K=\Sigma_1(\Sigma_1+\Sigma_2)^{-1}
K=Σ1(Σ1+Σ2)−1
μ
=
μ
1
+
K
(
μ
2
−
μ
1
)
\mu = \mu_1 + K(\mu_2 -\mu_1)
μ=μ1+K(μ2−μ1)
Σ
=
Σ
1
−
K
Σ
0
\Sigma = \Sigma_1-K\Sigma_0
Σ=Σ1−KΣ0
状态估计方程代入:
前面提到现在有两个关于系统状态向量的高斯分布(观测域下):
- 系统状态(预测值)满足 N ( H k x k , H k P k H k T ) N(H_kx_k,H_kP_kH^{T}_k) N(Hkxk,HkPkHkT)
- 系统状态(观测值)满足 N ( z k , R k ) N(z_k,R_k) N(zk,Rk)
则两个高斯分布相乘结果得到的新分布满足:
K
′
=
H
k
P
k
H
k
T
(
H
k
P
k
H
k
T
+
R
k
)
−
1
K'=H_kP_kH^{T}_k(H_kP_kH^{T}_k+R_k)^{-1}
K′=HkPkHkT(HkPkHkT+Rk)−1
μ
′
=
H
k
x
k
+
K
′
(
z
k
−
H
k
x
k
)
\mu' = H_kx_k + K'(z_k-H_kx_k)
μ′=Hkxk+K′(zk−Hkxk)
Σ
′
=
H
k
P
k
H
k
T
−
K
H
k
P
k
H
k
T
\Sigma' = H_kP_kH^{T}_k-KH_kP_kH^{T}_k
Σ′=HkPkHkT−KHkPkHkT
进一步将观测域的系统状态量通过变化状态域下,即等式两边同时乘上
H
k
−
1
H_k^{-1}
Hk−1,可以得到
K
=
P
k
H
k
T
(
H
k
P
k
H
k
T
+
R
k
)
−
1
K=P_kH^{T}_k(H_kP_kH^{T}_k+R_k)^{-1}
K=PkHkT(HkPkHkT+Rk)−1
μ
=
x
k
+
K
(
z
k
−
H
k
x
k
)
\mu = x_k + K(z_k-H_kx_k)
μ=xk+K(zk−Hkxk)
Σ
=
P
k
−
K
H
k
P
k
=
(
I
−
K
H
k
)
P
k
\Sigma = P_k-KH_kP_k=(I-KH_k)P_k
Σ=Pk−KHkPk=(I−KHk)Pk 此时,新的
(
μ
,
Σ
)
(\mu,\Sigma)
(μ,Σ)就表示联合状态量和观测量信息后得到的系统状态估计及协方差。其中 K 表示卡尔曼增益,决定了观测值与预测值在融合过程中的权重。
2. 从最小化误差的角度
前面提到系统状态量根据隐含信息的不同,可以分为 x k x_k xk(状态的真实值), x k ˉ \bar{x_k} xkˉ(状态的预测值), x k ^ \hat{x_k} xk^(状态的估计值)。预测值和估计值的区别在于:
- x k ˉ \bar{x_k} xkˉ(状态的预测值) 仅仅是根据上一时刻状态结合经验推测出的一个结果,从概率上讲是一个先验结果;
- x k ^ \hat{x_k} xk^(状态的估计值) 是带有观测信息的,从概率上讲是一个后验结果。
对于两者和真实值之间的误差,可分别表示为:
先验误差:指真实值与预测值之间的误差,即
e
k
ˉ
=
x
k
−
x
k
ˉ
\bar{e_k}=x_k-\bar{x_k}
ekˉ=xk−xkˉ后验误差:指真实值与估计值之间的误差,即
e
k
^
=
x
k
−
x
k
^
\hat{e_k}=x_k-\hat{x_k}
ek^=xk−xk^ 而卡尔曼滤波算法,就是依据均方误差MSE准则,使得后验误差最小。首先,定义先验误差和后验误差的协方差矩阵为
P
k
ˉ
\bar{P_k}
Pkˉ和
P
k
^
\hat{P_k}
Pk^,则有
P
k
ˉ
=
E
[
e
k
ˉ
⋅
e
k
ˉ
T
]
\bar{P_k}=E[\bar{e_k} \cdot \bar{e_k}^T]
Pkˉ=E[ekˉ⋅ekˉT]
P
k
^
=
E
[
e
k
^
⋅
e
k
^
T
]
\hat{P_k}=E[\hat{e_k} \cdot \hat{e_k}^T]
Pk^=E[ek^⋅ek^T]
推导过程如下(因懒…这里以手推记录上传)如果觉得影响阅读,可以移步到参考链接查看其他博主推导过程:
总结:
卡尔曼滤波器的工作过程文章最开始也已经描述过了,这里就简单在介绍下里面涉及到的各种变量吧。
- ( x k − 1 ^ , P k − 1 ^ ) (\hat{x_{k-1}},\hat{P_{k-1}}) (xk−1^,Pk−1^)表示 k-1 时刻系统的状态估计值及其协方差。(一般理解是前一时刻的后验估计值);
- ( x k ˉ , P k ˉ ) (\bar{x_{k}},\bar{P_{k}}) (xkˉ,Pkˉ)表示 k 时刻系统的状态预测值及其协方差。(当前时刻的先验估计值);
- ( x k ^ , P k ^ ) (\hat{x_{k}},\hat{P_{k}}) (xk^,Pk^)表示 k 时刻系统的状态估计值及其协方差。(当前时刻的后验估计值);
- z k z_k zk为 k 时刻的观测量;
- F k F_k Fk为状态转移矩阵, B k u k B_ku_k Bkuk为外部输入, w k w_k wk为过程噪声,一般满足高斯分布 w k ∼ N ( 0 , Q k ) w_k\sim N(0, Q_k) wk∼N(0,Qk);
- H k H_k Hk为测量矩阵, v k v_k vk为测量噪声,一般满足高斯分布 v k ∼ N ( 0 , R k ) v_k\sim N(0, R_k) vk∼N(0,Rk)。
再次强调,一般的卡尔曼滤波是基于以下条件假设的:
- 状态方程和测量方程是线性的!!!
- 过程噪声 w k w_k wk和测量噪声 v k v_k vk,必须是高斯白噪声,及满足 w k ∼ N ( 0 , Q k ) w_k\sim N(0, Q_k) wk∼N(0,Qk)和 v k ∼ N ( 0 , R k ) v_k\sim N(0, R_k) vk∼N(0,Rk)。
- 如果是非线性系统,请参考其他形式的卡尔曼滤波,如EKF、UKP等;