基本概念
卡尔曼滤波器(Kalman Filter)是一种递归状态估计算法,由 Rudolf E. Kalman 于 1960 年提出。它为线性动态系统提供了一种无偏且均方误差最小的最优估计方法,能够根据含高斯噪声的观测数据,递归地估计系统的状态(如位置、速度、加速度等)。
卡尔曼滤波器的核心思想是将系统的不确定性用协方差矩阵来表示,并在每个时间步通过”预测-更新”两步操作,平衡模型预测和传感器观测的权重,从而得到最优的状态估计。
数学模型
卡尔曼滤波器假设系统服从以下线性状态空间模型:
状态方程(预测模型):
观测方程(测量模型):
其中 是状态转移矩阵, 是控制输入矩阵, 是观测矩阵, 是过程噪声, 是测量噪声。
算法流程
预测步骤
更新步骤
其中 称为卡尔曼增益,它决定了模型预测和传感器观测之间的权重分配。当测量噪声小时, 较大,更信任观测;反之更信任模型预测。
扩展与变体
| 变体 | 适用场景 | 核心改进 |
|---|---|---|
| EKF(扩展卡尔曼滤波) | 非线性系统 | 对非线性函数做一阶泰勒展开线性化 |
| UKF(无迹卡尔曼滤波) | 非线性系统 | 用 sigma 点采样近似非线性变换 |
| ESKF(误差状态卡尔曼滤波) | 旋转和位姿估计 | 在 李群 的切空间上估计误差状态 |
| IEKF(迭代扩展卡尔曼滤波) | 强非线性系统 | 在更新步骤中迭代重新线性化 |
应用场景
卡尔曼滤波器在工程领域有极为广泛的应用。在 数据融合 中,它是 多传感器融合 的核心算法,能够将不同采样率和精度的传感器数据统一融合。在导航与定位领域,GPS/INS 组合导航系统几乎都依赖卡尔曼滤波。在 SLAM 系统中,早期的 EKF-SLAM 直接用扩展卡尔曼滤波来联合估计机器人位姿和地图点。在金融领域,卡尔曼滤波也被用于时间序列预测和隐状态估计。
从信息论的角度看,卡尔曼滤波器是贝叶斯滤波在线性高斯假设下的精确解,它与 最小均方估计 在高斯条件下给出等价的结果。