信号处理学习笔记5:卡尔曼滤波理论

卡尔曼滤波,用直白的话来讲,

就是有多个不确定的结果,经过分析、推理和计算,获得相对准确的结果。

它的核心特点是:

能够预测数据的未来趋势\({x}_{k}^{ }\)
结合当前数据进行修正 ,使预测更加准确
可以处理动态变化的系统 ,比如目标跟踪、导航定位

能够区分信号和噪声,即使数据被干扰,依然能估计出真实值

目录

卡尔曼核心思想:

逻辑1:世界有两个参考值,都不完美

逻辑2:动态分配信任权重

逻辑3:闭环迭代更新误差

Q:过程噪声(模型噪声)

R:测量噪声(传感器噪声)

[P:协方差(不确定度 / 误差家底)](#P:协方差(不确定度 / 误差家底))

K:卡尔曼增益(动态权重系数)

x:状态估计值(最终输出)

[预测与修正的 "双轨" 闭环逻辑:](#预测与修正的 “双轨” 闭环逻辑:)

[第一阶段:预测 (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。

依赖模型:它不看此时此刻的传感器读数,只靠公式算。

趋势稳定 :因为是继承上一刻的结果,所以预测值通常很平滑,很稳。

误差累积 :如果只靠预测,不管传感器,时间久了,模型的误差会越来越大(也就是常说的漂移)。

  1. 对应你的场景

场景:在读取 IMU 陀螺仪数据。

预测:根据上一时刻的角度,加上上一时刻的角速度 × 时间,推算出当前的角度。

问题:这种推算非常依赖积分精度,稍微有点积分误差,角度就会慢慢飘走,越算越不准。


第二阶段:修正 (Update) ------ "现实告诉我确实是多少"

核心动作 :利用当前时刻的传感器实测值,去修正刚刚算出来的预测值,得出最终的最优估计

逻辑:xk+​=xk−​+K⋅(zk​−xk−​)

"刚才我猜是 10.0,但我看了一眼传感器,它现在报数是 12.5。我不能完全不信传感器(因为它有噪声),也不能完全不信我的模型(它有漂移)。所以我要取个中间值:最终值 = 预测值 + 权重 × (传感器值 - 预测值)。"

依赖观测:它必须看传感器的实测数据(zk​)。

纠错机制 :这是专门用来打脸预测的。如果预测错了(比如传感器突然跳变),修正环节会强力拉回结果,消除漂移。

动态权重 :这个权重就是卡尔曼增益 (K)。传感器准就多听点,传感器吵就少听点。

  1. 对应的场景

场景:同样是 IMU 读数据。

修正:我推算出角度应该是 30∘,但加速度计告诉我水平方向是 29.8∘。卡尔曼会综合二者,给出一个 29.95∘ 这种更精确的结果。

五大公式

  1. 状态预测:x^k−=Ax^k−1+→ 产出:预测值(对应你:理论推演)
  2. 协方差预测:Pk−=APk−1+A+Q→ 产出:放大 P(加 Q,承认模型有波动)
  3. 增益计算:K=Pk−+RPk−→ 产出:K 天平(Q/R/P 共同决定信谁)
  4. 状态修正:x^k+=x^k−+K(zk−x^k−)→ 产出:最终 x(预测 + 实测加权纠偏)
  5. 协方差更新:Pk+=(1−K)Pk−→ 产出:收敛 P,闭环留到下一轮
相关推荐
wefly20172 小时前
零基础上手m3u8live.cn,免费无广告的M3U8在线播放器,电脑手机通用
前端·javascript·学习·电脑·m3u8·m3u8在线播放
Flittly2 小时前
【SpringAIAlibaba新手村系列】(5)Prompt 提示词基础与多种消息类型
java·笔记·spring·ai·springboot
Yeh2020582 小时前
JDBC笔记
笔记
movigo7_dou2 小时前
SIFT的一些内容
论文阅读·图像处理·学习·计算机视觉
zero15972 小时前
Python 8天极速入门笔记(大模型工程师专用):第四篇-判断与循环(Python流程控制,批量处理必备)
笔记·python·ai编程
Xudde.2 小时前
班级作业笔记报告0x03
笔记
猹叉叉(学习版)2 小时前
【系统分析师_知识点整理】 9.系统规划与分析
笔记·软考·系统分析师·系统规划
chushiyunen2 小时前
langchain和pytorch结合笔记
pytorch·笔记·langchain
少许极端2 小时前
算法奇妙屋(三十七)-贪心算法学习之路4
学习·算法·贪心算法·田忌赛马