1、应用简介
kalman滤波在状态估计和多传感器融合等方面应用广泛,典型的应用有无人机的飞行姿态估计,汽车的行驶状态估计,无人驾驶中的激光雷达和其他传感器之间的融合等。
2、算法步骤
(1)表达式
根据现代控制理论,一个线性系统可以被描述为以下形式:
状态方程:
xk=Axk−1+Buk+wkxk=Axk−1+Buk+wk
x_{k}=Ax_{k-1}+Bu_{k}+w_{k}\\
x_{k}=Ax_{k-1}+Bu_{k}+w_{k}
xk=Axk−1+Buk+wkxk=Axk−1+Buk+wk
观测方程:
zk=Hxk+vkzk=Hxk+vk
z_{k}=Hx_{k}+v_{k}\\
z_{k}=Hx_{k}+v_{k}
zk=Hxk+vkzk=Hxk+vk
其中, w_{k}是过程噪声,服从高斯分布, v_{k}是观测噪声,也服从高斯分布,即:
p(w)−N(0,Q)p(v)−N(0,R)
p(w)−N(0,Q)\\
p(v)−N(0,R)
p(w)−N(0,Q)p(v)−N(0,R)
Q是过程噪声的协方差,R是观测噪声的协方差。
(2)kalman滤波分为预测和更新两步:
1)预测
预测是根据上一时刻的状态量,由系统的微分方程预测下一时刻的系统状态量,并且产生状态量误差协方差的先验估计矩阵P
状态预测:
x^k−=Ax^k−1+Buk
x̂ _{k}^{−}=Ax̂ _{k-1}+Bu _{k}\\
x^k−=Ax^k−1+Buk
误差协方差矩阵预测:
Pk=APk−1AT+Q
P_{k}=AP_{k-1}A^{T}+Q
Pk=APk−1AT+Q
这里的x̂ {k}^{−} 为先验估计值,P{k}^{−}为先验协方差。
2)更新
状态更新首先根据前面预测的状态量x由观测方程计算出理论上的观测值,然后获得传感器的实际测量值,将这两个值做差,计算出kalman滤波器的增益K,进而校正之前的预测值。同时需要计算后验的误差协方差矩阵P:
增益矩阵:
Kk=PkHT(HPkHT+R)
K_{k}=\frac{P_{k} H^{T}}{(HP_{k} H^{T}+R)}
Kk=(HPkHT+R)PkHT
状态更新:
x^k=x^k−+Kk(zk−Hx^k−)
x̂_{k}=x̂ _{k}^{−}+K_{k}(z_{k}−Hx̂ _{k}^{−})
x^k=x^k−+Kk(zk−Hx^k−)
其中,z_{k}为测量方程:
zk=Hx^k−+v
z_{k}=Hx̂ _{k}^{−}+v
zk=Hx^k−+v
v为噪声误差。
误差协方差矩阵更新:
Pk=(I−KkH)Pk−
P_{k}=(I−K_{k}H)P_{k}^{−}
Pk=(I−KkH)Pk−
P_{k}即为后验估计协方差,III为对角单位矩阵。
其实Kalman用起来一点儿也不复杂,最主要的是要找到系统的微分方程。然后套用上面的五个核心公式即可。