卡尔曼滤波(状态估计算法)

文章目录

卡尔曼滤波 (Kalman Filter)是嵌入式开发中极为核心的 状态估计算法 ,尤其适用于存在噪声的 传感器数据融合动态系统 状态估计。

一、卡尔曼滤波的本质与适用场景

卡尔曼滤波是一种 最优递归数据融合算法 ,在线性高斯假设下,通过预测(系统模型)更新(测量) 两个步骤,不断迭代得到系统状态的最小均方误差估计。

核心特点:

  • 递推计算,无需存储全部历史数据,适合嵌入式实时系统

  • 融合多个噪声源(过程噪声、测量噪声)的统计特性

  • 输出不仅包含状态估计值,还包含估计的不确定性(协方差

适用前提:

  • 系统模型为线性 (可用扩展 卡尔曼滤波EKF 处理 非线性

  • 噪声服从高斯分布(零均值、白噪声)

  • 系统状态可观测或至少可检测

二、卡尔曼滤波的数学模型

1、状态方程与观测方程

离散时间系统(嵌入式常用):
x k = F k x k − 1 + B k u k + w k z k = H k x k + v k \begin{aligned} \mathbf{x}_k &= \mathbf{F}k \mathbf{x}{k-1} + \mathbf{B}_k \mathbf{u}_k + \mathbf{w}_k \\ \mathbf{z}_k &= \mathbf{H}_k \mathbf{x}_k + \mathbf{v}_k \end{aligned} xkzk=Fkxk−1+Bkuk+wk=Hkxk+vk

其中 w k ∼ N ( 0 , Q k ) \mathbf{w}_k \sim \mathcal{N}(0, \mathbf{Q}_k) wk∼N(0,Qk), v k ∼ N ( 0 , R k ) \mathbf{v}_k \sim \mathcal{N}(0, \mathbf{R}_k) vk∼N(0,Rk)。

2、卡尔曼滤波两步法(五大方程)

预测(时间更新)

x ^ k ∣ k − 1 = F k x ^ k − 1 ∣ k − 1 + B k u k P k ∣ k − 1 = F k P k − 1 ∣ k − 1 F k ⊤ + Q k \begin{aligned} \hat{\mathbf{x}}_{k|k-1} &= \mathbf{F}k \hat{\mathbf{x}}{k-1|k-1} + \mathbf{B}_k \mathbf{u}k \\ \mathbf{P}{k|k-1} &= \mathbf{F}k \mathbf{P}{k-1|k-1} \mathbf{F}_k^\top + \mathbf{Q}_k \end{aligned} x^k∣k−1Pk∣k−1=Fkx^k−1∣k−1+Bkuk=FkPk−1∣k−1Fk⊤+Qk

更新(测量更新)

K k = P k ∣ k − 1 H k ⊤ ( H k P k ∣ k − 1 H k ⊤ + R k ) − 1 x ^ k ∣ k = x ^ k ∣ k − 1 + K k ( z k − H k x ^ k ∣ k − 1 ) P k ∣ k = ( I − K k H k ) P k ∣ k − 1 \begin{aligned} \mathbf{K}k &= \mathbf{P}{k|k-1} \mathbf{H}_k^\top \left( \mathbf{H}k \mathbf{P}{k|k-1} \mathbf{H}k^\top + \mathbf{R}k \right)^{-1} \\ \hat{\mathbf{x}}{k|k} &= \hat{\mathbf{x}}{k|k-1} + \mathbf{K}_k \left( \mathbf{z}k - \mathbf{H}k \hat{\mathbf{x}}{k|k-1} \right) \\ \mathbf{P}{k|k} &= \left( \mathbf{I} - \mathbf{K}_k \mathbf{H}k \right) \mathbf{P}{k|k-1} \end{aligned} Kkx^k∣kPk∣k=Pk∣k−1Hk⊤(HkPk∣k−1Hk⊤+Rk)−1=x^k∣k−1+Kk(zk−Hkx^k∣k−1)=(I−KkHk)Pk∣k−1

相关推荐
NJUST_ZHChen2 个月前
基于Ka波段LFM脉冲雷达的弱小飞行目标检测跟踪(完整工程Matlab)
matlab·卡尔曼滤波·雷达信号处理·无人机目标检测
LYS_06182 个月前
RM赛事C型板九轴IMU解算(4)(卡尔曼滤波)
c语言·开发语言·前端·卡尔曼滤波
Evand J2 个月前
【MATLAB程序,一维非线性EKF与RTS】MATLAB,用于一维的位移与速度滤波和RTS平滑/高精度定位,带滤波前后的误差对比
开发语言·matlab·卡尔曼滤波·rts平滑·正向滤波
haing20193 个月前
IMU卡尔曼滤波方法详细介绍
imu·卡尔曼滤波
斐夷所非3 个月前
卡尔曼滤波 | EKF、UKF 原理与实例
卡尔曼滤波
斐夷所非3 个月前
卡尔曼滤波 | UKF 原理、仿真与实现
卡尔曼滤波
Evand J4 个月前
【matlabfilter例程】二维平面的雷达测角+测距目标跟踪,单个雷达,KF融合雷达和IMU数据。轨迹绘图、误差绘图输出。附代码下载链接
matlab·雷达·卡尔曼滤波·kf·跟踪·kalman·二维
Evand J5 个月前
【MATLAB例程】2雷达二维目标跟踪滤波系统-UKF(无迹卡尔曼滤波)实现,目标匀速运动模型(带扰动)。附代码下载链接
开发语言·matlab·目标跟踪·滤波·卡尔曼滤波
Evand J5 个月前
【MATLAB例程】二维平面上,三个雷达对一个目标跟踪,输出观测平均与UKF滤波两种算法的结果对比,附下载链接
matlab·平面·目标跟踪·滤波·卡尔曼滤波