RobotsWiki

在线工具 · 状态估计

卡尔曼滤波模拟器 · 从噪声里捞出真值

一条真值曲线埋进噪声里,卡尔曼滤波把它捞出来:拖动 Q / R 决定「信模型还是信测量」,估计曲线、增益收敛、置信带全部实时可见。按一下「急转」,看滤波器会不会跟丢。

连续实时仿真免登录

位置 · 真值 / 观测 / 估计

灰色点是含噪观测,蓝线是真值,绿线是滤波估计,绿色带是 ±3σ 置信带。参数不变时带宽恒定:滤波器进入稳态,增益 K 收敛为常数。急转之后看置信带有没有「装作没事」。

卡尔曼增益 K(位置分量)

开机时 P 大、K 接近 1,测量来者不拒;几秒内收敛到稳态值。Q/R 一变,稳态 K 立刻搬家。

滤波器参数(拖动即时生效)

Q 过程噪声 σa (m/s²)0.50

模型会错多少:小 → 平滑但真突变时滞后;大 → 跟得快但跟着噪声抖。

R 测量噪声 σz (m)0.30

传感器有多吵:调大 → 怀疑测量、更信模型;调小 → 紧贴测量点。

初始速度不确定 σv0 (m/s)2.0

开局有多不知道:越大,开机后吸收测量的速度越快。

预设

真值小车(可改)

真实过程噪声 σa真 (m/s²)0.40

真值自身的抖动。滤波器并不知道它,你的 Q 与它对不对得上,是两回事。

真实测量噪声 σz真 (m)0.30

传感器实际的抖动。滤波器只知道你告诉它的 R:把 σz真 拉大、R 拉小,看它过度自信。

实时指标

RMSE(近 5 s)
0.000 m
当前增益 K
—
估计不确定度 σp
0.000 m
最新残差 (z − ẑ)
+0.00 m

五个公式,两步循环

预测:用模型把状态和不确定度 P 都外推一步,P 变大(越推越没底)。更新:测量来了,算增益 K,把预测值与测量按 K 加权融合,P 缩小。K 不是手调的,是从 P、Q、R 算出来的:一维情形就是 K = P/(P+R)。本工具测得到位置,速度没人测,它跟着位置残差被「顺带」估计出来,这就是滤波的威力。

Q 和 R 到底调什么?

Q 描述模型会错多少,R 描述传感器会差多少,单独一个值没有意义,比值才有:Q/R 大,滤波器信测量,响应快但曲线抖;Q/R 小,滤波器信模型,平滑但真突变时慢半拍。惯性导航模型好、GPS 测量好,两者互补,是滤波器最经典的搭配。

经典翻车现场

  • 机动滞后:真值猛拐弯,Q 却设得很小,滤波器还在按老模型外推,落后一截才追上。选预设「小Q遇上急转」复现。
  • 过度自信:R 设得比真实噪声还小,估计贴着观测点锯齿跳,看起来很跟手,其实在放大噪声。
  • 开局死板:σv0 给 0 且 Q 小,滤波器自以为全知,前几秒几乎不吸收测量,只能慢慢靠 Q 攒出不确定度。

机器人在哪用卡尔曼滤波?

  • 定位融合:IMU 会漂移,轮式里程计会打滑,两者互补。EKF/UKF 是它的非线性版本,机器人定位的标准配置。
  • 电池电量估计:电压测量粗糙,充放电模型有惯性,KF 把两者捏在一起,比直接查电压表准得多。
  • SLAM 与 VIO:ORB-SLAM、VINS 的位姿融合内核都是这个思想的变体,多传感器对齐时间戳后进同一个滤波器。
  • 边界:非高斯、多峰的分布要用粒子滤波;强非线性可以上 UKF 或直接优化。但 2 状态 KF 依然是工程师的入门必修。