卡尔曼滤波,用直白的话来讲,
就是有多个不确定的结果,经过分析、推理和计算,获得相对准确的结果。
它的核心特点是:
能够预测数据的未来趋势\({x}_{k}^{ }\)
结合当前数据进行修正 ,使预测更加准确
可以处理动态变化的系统 ,比如目标跟踪、导航定位等能够区分信号和噪声,即使数据被干扰,依然能估计出真实值

目录
[P:协方差(不确定度 / 误差家底)](#P:协方差(不确定度 / 误差家底))
[预测与修正的 "双轨" 闭环逻辑:](#预测与修正的 “双轨” 闭环逻辑:)
[第一阶段:预测 (Predict) ------ "我觉得应该是多少"](#第一阶段:预测 (Predict) —— “我觉得应该是多少”)
[第二阶段:修正 (Update) ------ "现实告诉我确实是多少"](#第二阶段:修正 (Update) —— “现实告诉我确实是多少”)
卡尔曼核心思想:
核心思想:预测 + 观测融合,动态加权,迭代收敛;
逻辑1:世界有两个参考值,都不完美
- 预测值(理论推演):靠物理 / 数学模型推下一步,长期稳、不跳变,但会慢慢漂移;
- 测量值(传感器采样):实时新鲜、跟得上变化,但自带毛刺、噪声、突发干扰。
逻辑2:动态分配信任权重
(卡尔曼增益 K 是灵魂)不固定死权重(不像均值 / 中值滤波一刀切):
- 传感器噪很大 → 少信测量,多信预测 → 曲线平滑;
- 模型不准 / 物体在快速动 → 多信测量,少信预测 → 响应灵敏。
逻辑3:闭环迭代更新误差
每算完一次,就更新「我这次估计有多不靠谱」,下一次计算自动参考,形成自收敛闭环,越迭代越稳。
Q 管模型:值易变就加大,要稳就减小;R 管传感器:噪大就加大,精准就减小;
P 管误差家底,K 管动态天平。
Q:过程噪声(模型噪声)
物理意义:你建立的数学模型准不准、真实值会不会偷偷
- 特性:
- Q↑(加大):认为真实值一直在变 → 更相信测量 → 响应快、贴近采样;
- Q↓(减小):认为真实值基本不动 → 死守预测 → 超平滑、但滞后。
- 适用场景:静止测温 / 静态 ADC → Q 极小;陀螺仪动态转角、快速运动 → Q 加大。
R:测量噪声(传感器噪声)
物理意义:你的传感器烂不烂、毛刺大不大、精度高不高
- 特性:
- R↑(加大):嫌弃传感器噪声大 → 压低测量权重 → 强力去毛刺、超稳;
- R↓(减小):信任传感器很准 → 跟着采样走、去噪弱。
- 适用场景:廉价 ADC、噪多陀螺仪 → R 开大;高精度校准传感器 → R 开小。
P:协方差(不确定度 / 误差家底)
- 含义:当前估计值「有多不靠谱」;
- 迭代逻辑:预测阶段放大不确定度,修正阶段收缩压误差;
- 作用:自动给 K 提供依据,决定权重怎么分。
K:卡尔曼增益(动态权重系数)
- 核心:P、Q、R 算出来的自动天平;
- K 越大 → 听传感器的;K 越小 → 听模型预测的。
x:状态估计值(最终输出)
融合后最优真实值,就是你滤波后拿来用的数据。
预测与修正的 "双轨" 闭环逻辑:
第一阶段:预测 (Predict)------ 我觉得应该是多少
用上一时刻最优真值 + 物理数学模型,推算当前理论预测值;同时放大误差不确定度 P:承认模型会有漂移、真实值会变;这一步不看当前传感器数据,只靠历史经验推演。
第二阶段:修正 (Update)------ 现实告诉我实际是多少
拿当前传感器实测值,和刚才的预测值做对比,算出误差差值;用 P、Q、R 自动算出卡尔曼增益 K(动态信任权重);用 K 把误差差值加权补偿给预测值,得到最终最优输出 x;同时收缩更新误差 P,把本次精度封存,留给下一轮迭代用。
第一阶段:预测 (Predict) ------ "我觉得应该是多少"
核心动作:根据上一时刻的最优值,利用物理模型(如匀速运动、惯性定律)推算出当前时刻的理论值。
它在做什么?
逻辑:xk−=A⋅xk−1+
"我已经知道上一秒测得的真实值是 10.0,根据我设定的模型(比如假设物体静止或者匀速运动),我推测这一秒的真实值应该还是接近 10.0。
依赖模型:它不看此时此刻的传感器读数,只靠公式算。
趋势稳定 :因为是继承上一刻的结果,所以预测值通常很平滑,很稳。
误差累积 :如果只靠预测,不管传感器,时间久了,模型的误差会越来越大(也就是常说的漂移)。
- 对应你的场景
场景:在读取 IMU 陀螺仪数据。
预测:根据上一时刻的角度,加上上一时刻的角速度 × 时间,推算出当前的角度。
问题:这种推算非常依赖积分精度,稍微有点积分误差,角度就会慢慢飘走,越算越不准。
第二阶段:修正 (Update) ------ "现实告诉我确实是多少"
核心动作 :利用当前时刻的传感器实测值,去修正刚刚算出来的预测值,得出最终的最优估计。
逻辑:xk+=xk−+K⋅(zk−xk−)
"刚才我猜是 10.0,但我看了一眼传感器,它现在报数是 12.5。我不能完全不信传感器(因为它有噪声),也不能完全不信我的模型(它有漂移)。所以我要取个中间值:最终值 = 预测值 + 权重 × (传感器值 - 预测值)。"
依赖观测:它必须看传感器的实测数据(zk)。
纠错机制 :这是专门用来打脸预测的。如果预测错了(比如传感器突然跳变),修正环节会强力拉回结果,消除漂移。
动态权重 :这个权重就是卡尔曼增益 (K)。传感器准就多听点,传感器吵就少听点。
- 对应的场景
场景:同样是 IMU 读数据。
修正:我推算出角度应该是 30∘,但加速度计告诉我水平方向是 29.8∘。卡尔曼会综合二者,给出一个 29.95∘ 这种更精确的结果。
五大公式
- 状态预测:x^k−=Ax^k−1+→ 产出:预测值(对应你:理论推演)
- 协方差预测:Pk−=APk−1+A+Q→ 产出:放大 P(加 Q,承认模型有波动)
- 增益计算:K=Pk−+RPk−→ 产出:K 天平(Q/R/P 共同决定信谁)
- 状态修正:x^k+=x^k−+K(zk−x^k−)→ 产出:最终 x(预测 + 实测加权纠偏)
- 协方差更新:Pk+=(1−K)Pk−→ 产出:收敛 P,闭环留到下一轮