卡尔曼滤波
1、定义
卡尔曼滤波是一种高效率的递归滤波器(自回归滤波器),它能够从一系列的不完全及包含噪声的测量中,估计动态系统的状态。
2、算法流程
- 1.预测
在预测步骤中,卡尔曼滤波通过状态方程以上一时刻的状态估计当前的状态,其中也计算了环境等不受人为控制因素的影响; - 2.校正和更新
对当前时刻状态的估计和传感器得到的测量值通过卡尔曼增益结合在一起,得到校正后的后验估计。再对误差协方差进行更新,以进行下一次迭代。
3、卡尔曼滤波理解
3.1 线性系统微分表达
根据现代控制理论,一个线性系统可以被描述为以下形式:
状态方程
Xk=AX^k−1+Buk+wk
{X} _{{k}} = {A}\hat{X}_{k-1} + {B}{u}_{k} + {w}_{k}
Xk=AX^k−1+Buk+wk
其中A是状态转移矩阵,B是控制矩阵,uk表示控制变量,wk是过程噪声 其中{A}是状态转移矩阵,{B}是控制矩阵,{u}_{k}表示控制变量,{w}_{k}是过程噪声 其中A是状态转移矩阵,B是控制矩阵,uk表示控制变量,wk是过程噪声
观测方程:
Zk=HXk+vk
{Z}_{k} = {H}{X}_{k} + {v}_{k}
Zk=HXk+vk
p(w)—N(0,Q) p(w)—N(0,Q) p(w)—N(0,Q)
p(v)—N(0,R) p(v)—N(0,R) p(v)—N(0,R)
vk是测量时的噪声,vk和wk都服从正态分布p(v)和p(w)
{v}_{k}是测量时的噪声,{v}_{k}和{w}_{k}都服从正态分布p(v)和p(w)
vk是测量时的噪声,vk和wk都服从正态分布p(v)和p(w)
其中Q是过程噪声的协方差,R是观测噪声的协方差。
3.2 预测
得到状态方程之后,可以在数学上对下一时刻的状态量进行预测,得到物体在下个时刻的先验估计状态方程和误差协方差矩阵:
X^kˉ=AX^k−1+Buk
\hat{X} _{\bar{k}} = {A} \hat{X}_{k-1} + {B}{u}_{k}
X^kˉ=AX^k−1+Buk
X^k−1表示k−1时刻的校正后估计。通过上述公式就可以获得校正前的k时刻估计X^kˉ \hat{X}_{k-1}表示k-1时刻的校正后估计。通过上述公式就可以获得校正前的k时刻估计 \hat{X} _{\bar{k}} X^k−1表示k−1时刻的校正后估计。通过上述公式就可以获得校正前的k时刻估计X^kˉ
误差协方差矩阵预测如下:
Pkˉ=APk−1AT+Q
{P}_{\bar{k}} = {A}{P}_{k-1}{A}^{T} + {Q}
Pkˉ=APk−1AT+Q
A和AT如上是状态转移矩阵,Q是过程噪声的协方差 {A}和{A}^{T}如上是状态转移矩阵,{Q}是过程噪声的协方差 A和AT如上是状态转移矩阵,Q是过程噪声的协方差
Pk−1是校正后的误差协方差矩阵,通过Pk−1ˉ得到的,Pkˉ代表k时刻的预测误差协方差矩阵 {P}_{k-1}是校正后的误差协方差矩阵,通过{P}_{\bar{k-1}}得到的,{P}_{\bar{k}}代表k时刻的预测误差协方差矩阵 Pk−1是校正后的误差协方差矩阵,通过Pk−1ˉ得到的,Pkˉ代表k时刻的预测误差协方差矩阵
3.3 校正和更新
在3.2中通过数学模型已经获得k时刻的状态估计值,再通过传感器获得测量值,通过卡尔曼增益把两者融合在一起,就能得到真正的后验预测值。
卡尔曼增益:
Kk=PkˉHT/(HPkˉHT+R)
K_k = P_{\bar{k}}H^{T}/(HP_{\bar{k}}H^T + R)
Kk=PkˉHT/(HPkˉHT+R)
预测状态量和观测量可能维度不同,需要将他们同时转换到一个向量空间,就产生了线性转换矩阵H,H可以将变量从状态域转换到观测域。
后验估计值:
X^k=X^kˉ+Kk(Zk−HX^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ˉ)
Pk=(1−KkH)Pkˉ P_k = (1-K_kH) P_{\bar{k}} Pk=(1−KkH)Pkˉ
得到两个数据融合的协方差矩阵,用于下一个迭代计算。
4、总结
初始状态值X^0ˉ,初始协方差矩阵P0 初始状态值\hat{X} _{\bar{0}},初始协方差矩阵P_0 初始状态值X^0ˉ,初始协方差矩阵P0
↓ \bigg\downarrow ↓⏐
状态预测估计:X^kˉ=AX^k−1+Buk 状态预测估计:\hat{X} _{\bar{k}} = {A} \hat{X}_{k-1} + {B}{u}_{k} 状态预测估计:X^kˉ=AX^k−1+Buk
协方差矩阵预测估计:Pkˉ=APk−1AT+Q 协方差矩阵预测估计:{P}_{\bar{k}} = {A}{P}_{k-1}{A}^{T} + {Q} 协方差矩阵预测估计:Pkˉ=APk−1AT+Q
↓ \bigg\downarrow ↓⏐
卡尔曼增益:Kk=PkˉHT/(HPkˉHT+R) 卡尔曼增益:K_k = P_{\bar{k}}H^{T}/(HP_{\bar{k}}H^T + R) 卡尔曼增益:Kk=PkˉHT/(HPkˉHT+R)
后验估计:X^k=X^kˉ+Kk(Zk−HX^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ˉ)
协方差矩阵更新:Pk=(1−KkH)Pkˉ 协方差矩阵更新:P_k = (1-K_kH) P_{\bar{k}} 协方差矩阵更新:Pk=(1−KkH)Pkˉ
↓ \bigg\downarrow ↓⏐
下一次迭代,输入X^kˉ,协方差矩阵Pk 下一次迭代,输入 \hat{X} _{\bar{k}},协方差矩阵P_k 下一次迭代,输入X^kˉ,协方差矩阵Pk
5、参考
链接:https://blog.youkuaiyun.com/shuoyueqishilove/article/details/81713142
https://blog.youkuaiyun.com/v_JULY_v/article/details/120344668