卡尔曼滤波(kalman filter)
算法模型
卡尔曼滤波器用于估计离散时间过程的状态变量
x
∈
R
n
x\in R^n
x∈Rn ,这个离散时间过程由以下离散随机差分方程描述:
x
k
=
A
x
k
−
1
+
B
u
k
+
w
k
(1)
\tag{1} x_k = Ax_{k-1} + Bu_k + w_k
xk=Axk−1+Buk+wk(1)
其中
x
k
x_k
xk 表示
k
k
k 时刻的真实状态值,
u
k
u_k
uk 表示
k
k
k 时刻的控制值,
w
k
w_k
wk 为过程噪声。
定义观测变量
z
∈
R
m
z \in R^m
z∈Rm,得到观测方程:
z
k
=
H
x
k
+
v
k
(2)
\tag{2} z_k = Hx_k + v_k
zk=Hxk+vk(2)
随机信号
w
k
w_k
wk 和
v
k
v_k
vk 分别表示过程噪声和观测噪声。假设它们为相互独立,正态分布的白噪声:
p
(
w
)
∼
N
(
0
,
Q
)
p
(
v
)
∼
N
(
0
,
R
)
(3)
\tag{3} p(w)\thicksim N(0, Q)\\ p(v)\thicksim N(0, R)
p(w)∼N(0,Q)p(v)∼N(0,R)(3)
算法过程
- 预测阶段:
x ^ k − = A x ^ k − 1 + B u k − 1 (4) \tag{4} \widehat{x}_k^- = A\widehat{x}_{k-1} + Bu_{k-1} x k−=Ax k−1+Buk−1(4)
其中
x
^
k
−
∈
R
n
\widehat{x}_k^-\in R^n
x
k−∈Rn (
−
^-
− 表示先验,^表示估计)表示在已知第
k
k
k 时刻之前状态的情况下,第
k
k
k 时刻的先验状态估计,
A
A
A 表示
n
×
n
n \times n
n×n 阶状态转移矩阵,
B
B
B 表示
n
×
1
n\times 1
n×1 阶控制转移矩阵。
x
^
k
−
1
∈
R
n
\widehat{x}_{k-1} \in R^n
x
k−1∈Rn 表示为已知道观测变量时第
k
−
1
k-1
k−1 时刻的后验状态估计。
u
k
−
1
u_{k-1}
uk−1 表示
k
−
1
k-1
k−1 时刻的控制量。
P
k
−
=
A
P
k
−
1
A
T
+
Q
(5)
\tag{5} P_k^- = AP_{k-1}A^T + Q
Pk−=APk−1AT+Q(5)
其中
P
k
−
P_k^-
Pk− 表示先验估计误差(状态预测值与真实值的误差)协方差矩阵,
P
k
−
1
P_{k-1}
Pk−1 表示后验估计误差(观测结果与真实值的误差)协方差矩阵,
Q
Q
Q 表示为过程噪声协方差矩阵。
- 矫正阶段:
K k = P k − H T ( H P k − H T + R ) − 1 (6) \tag{6} K_k = P_k^-H^T(HP_k^-H^T + R)^{-1} Kk=Pk−HT(HPk−HT+R)−1(6)
其中
H
H
H 表示状态变量
x
k
x_k
xk 对观测变量
z
k
z_k
zk 的增益矩阵,
R
R
R 表示观测噪声协方差矩阵。上述式 表示计算卡尔曼增益(kalman gain)。
x
^
k
=
x
^
k
−
+
K
k
(
z
k
−
H
x
^
k
−
)
(7)
\tag{7} \widehat{x}_k = \widehat{x}_k^- + K_k(z_k - H\widehat{x}_k^-)
x
k=x
k−+Kk(zk−Hx
k−)(7)
上述式(7)表示由第
k
k
k 时刻的先验估计值
x
^
k
−
\widehat{x}_k^-
x
k−、实际观测值
z
k
z_k
zk、卡尔曼增益
K
k
K_k
Kk 来计算得到第
k
k
k 时刻的后验估计值
x
^
k
\widehat{x}_k
x
k 。
P
k
=
(
I
−
K
k
H
)
P
k
−
(8)
\tag{8} P_k = (I - K_kH)P_k^-
Pk=(I−KkH)Pk−(8)
其中
I
I
I 表示单位矩阵,上述式(8)表示由第
k
k
k 时刻的先验估计误差协方差矩阵
P
k
−
P_k^-
Pk− 、增益矩阵
H
H
H、卡尔曼增益
K
k
K_k
Kk 来计算得到第
k
k
k 时刻的后验估计误差协方差矩阵
P
k
P_k
Pk 。为下一次的迭代做好准备。
参数解释
A A A 表示 n × n n \times n n×n 阶状态转移矩阵
B B B 表示 n × 1 n\times 1 n×1 阶控制转移矩阵
R R R 表示 m × m m \times m m×m 阶观测噪声协方差矩阵
H H H 表示状态变量 x k x_k xk 对观测变量 z k z_k zk 的 m × n m \times n m×n 阶增益矩阵
Q Q Q 表示为过程噪声协方差矩阵, n × n n\times n n×n 阶
x ^ k − ∈ R n \widehat{x}_k^-\in R^n x k−∈Rn ( − ^- − 表示先验,^表示估计)表示在已知第 k k k 时刻之前状态的情况下,第 k k k 时刻的先验状态估计
u k − 1 u_{k-1} uk−1 表示 k − 1 k-1 k−1 时刻的控制量
P k − P_k^- Pk− 表示第 k k k 时刻先验估计误差(状态预测值与真实值的误差)协方差矩阵, n × n n \times n n×n 阶
P k P_k Pk 表示第 k k k 时刻的后验估计误差协方差矩阵, n × n n \times n n×n 阶
K k K_k Kk 表示第 k k k 时刻的卡尔曼增益, n × 1 n \times 1 n×1 阶