卡尔曼滤波及变种 KF EKF ESKF的区别跟用法
一、KF(Kalman Filter)卡尔曼滤波
📌 适用条件:
-
系统是线性系统
-
过程和观测噪声是高斯白噪声
-
系统状态转移和观测模型可以表示为 线性矩阵形式
✅ KF 公式:
🧠 KF 特点总结:
-
简单高效
-
适合线性系统
-
不适用于复杂动态或非线性状态空间
🔹 二、EKF(Extended Kalman Filter)扩展卡尔曼滤波
📌 适用条件:
-
系统是非线性系统
-
状态转移函数
f(x)
和观测函数h(x)
可导(一阶可微) -
使用 一阶泰勒展开(线性化)
🔧 一阶泰勒展开线性化步骤
✅ EKF 步骤:
🧠 EKF 特点总结:
-
非线性系统可用,但要线性化
-
有线性化误差(尤其是强非线性时)
-
在SLAM、VIO(视觉惯性)中常用
🔹 三、ESKF(Error-State Kalman Filter)误差状态卡尔曼滤波
📌 核心思想:
-
直接估计误差状态,而不是估计系统状态本身
-
系统状态仍用非线性方程更新,但滤波器仅对误差进行线性化
✅ ESKF 的流程(简化说明):
✅ 优点:
-
避免了对整个状态函数的直接线性化,只线性化误差部分
-
更适合处理 姿态(旋转) 等具有非欧几里得几何结构的状态
-
保持主状态在原坐标系中演化,误差只在小量空间展开,更加稳定
🧠 三者对比总结:
项目 | KF | EKF | ESKF |
---|---|---|---|
系统模型 | 线性 | 非线性,线性化整体 | 非线性,线性化误差状态 |
处理对象 | 状态 | 状态 | 误差状态 + 主状态 |
精度稳定性 | 高(线性系统) | 一般(强非线性会误差大) | 更高(误差小量线性化,稳定) |
姿态处理 | 不适用 | 需要线性化旋转 | 适合旋转(使用李群、四元数等误差表达) |
应用场景 | 简单线性系统 | VIO, SLAM 中常用 | 高动态系统(IMU导航)、非欧空间状态估计等 |
🚀 使用场景举例
场景 | 推荐使用 |
---|---|
简单目标跟踪(位置、速度) | KF |
SLAM 中非线性观测(如相机) | EKF |
IMU 融合导航、VIO、惯导 | ESKF ✅ |
如果你在做激光IMU融合(如LIO-SAM、FAST-LIO),ESKF 是主流方式;
而如果你在做VIO(如VINS、OKVIS),EKF 或直接用优化器更合适。