当前位置: 首页 > article >正文

卡尔曼滤波解释及示例

卡尔曼滤波的本质是用数学方法平衡预测与观测的可信度 ,通过不断迭代逼近真实状态。其高效性和鲁棒性,通常在导航定位中,需要融合GPS、加速度计、陀螺仪、激光雷达或摄像头数据,来提高位置精度。简单讲,卡尔曼滤波就是通过预测-更新循环 ,动态权衡模型预测与传感器测量,在噪声环境中实现最优估计,其数学本质是贝叶斯滤波在高斯噪声下的解析解。

1. 原理概述

卡尔曼滤波的核心是递归地结合预测与测量 ,在存在噪声的系统中实现对状态的最优估计。其核心步骤是:

  1. 预测 :根据系统模型(如运动方程)预测当前状态和误差协方差。
  2. 更新 :利用传感器测量值修正预测结果,得到更精确的状态估计。

核心优势:

  • 实时性 :仅需当前时刻的数据和前一时刻的状态,无需存储历史数据。
  • 最优性 :在噪声为高斯分布时,卡尔曼滤波是最小均方误差(MMSE)意义下的最优估计器

2. 公式推导

2.1 状态预测

状态预测方程: x k a = F k x k − 1 + B k u k x_k^a = F_kx_{k-1}+B_ku_k xka=Fkxk1+Bkuk ,其中 x k a x_k^a xka是预测状态, F k F_k Fk 是状态转移矩阵, B k u k B_ku_k Bkuk 是控制输入(如加速度)

协方差预测方程 : P k a = F k P k − 1 F k T + Q k P_k^a=F_kP_{k-1}F_k^T + Q_k Pka=FkPk1FkT+Qk,其中 P k a P_k^a Pka是预测协方差, Q k Q_k Qk是过程噪声协方差(模型不确定性)

2.2 状态更新

卡尔曼增益计算: K k = P k a H k T ( H k P k a H k T + R k ) − 1 K_k=P_k^aH_k^T(H_kP_k^aH_k^T + R_k)^{-1} Kk=PkaHkT(HkPkaHkT+Rk)1, 其中 K k K_k Kk权衡预测与测量的信任度, H k H_k Hk是观测矩阵, R k R_k Rk是测量噪声协方差。

状态更新方程 : x k = x k a + K k ( z k − H k x k a ) x_k=x_k^a + K_k(z_k - H_kx_k^a) xk=xka+Kk(zkHkxka),其中 z k z_k zk是实际测量值,修正预测结果。

协方差更新方程: P k = ( I − K k H k ) P k a P_k = (I-K_kH_k)P_k^a Pk=(IKkHk)Pka, 更新后的协方差反映估计的不确定性。

3. 示例说明:小车运动位置估计为例

  • 场景 :小车以2m/s运动,t-1时刻位置为6m,t时刻雷达测得位置为9m。
  • 问题 :雷达测量存在噪声(如高斯噪声),如何估计真实位置?
  • 步骤:
  1. 预测 :
    假设无控制输入 u k = 0 u_k=0 uk=0,状态转移矩阵 F=1(位置预测仅依赖前一时刻),预测位置为: x k a = 6 m + 2 m / s ∗ 1 s = 8 m x_k^a = 6m + 2m/s * 1s = 8m xka=6m+2m/s1s=8m
    协方差 P k a P_k^a Pka反映预测的不确定性(假设初始协方差较小)
  2. 更新:
    测量值 z k = 9 m z_k =9m zk=9m,计算卡尔曼增益 K k K_k Kk, 假设测量噪声 R 较大(雷达不准),则 K k K_k Kk较小,最终估计值会介于预测值(8m)和测量值(9m)之间,例如8.5m。更新后的协方差 P k P_k Pk会更小,反映更高的置信度。

4. 其它扩展对比

关键关系总结:

  • EKF 是最早的非线性滤波方法,但受限于线性化误差。
  • UKF 通过无迹变换避免线性化,精度更高,适用于强非线性系统。
  • IEKF 和 AKF 是EKF的改进,分别通过迭代和自适应机制提升鲁棒性。
  • EnKF 和 PF 针对高维或非高斯问题,与UKF同属非线性滤波但方法不同。
  • CKF 是UKF的优化变种,采用容积采样提升效率
算法核心原理优缺点应用场景与KF对比关系
卡尔曼滤波 (KF)基于线性系统模型,通过状态方程和观测方程递推估计最优状态。优点:计算高效,理论最优;
缺点:无法直接处理非线性问题。
仅适用于线性系统。基础算法,其他扩展均针对其无法处理非线性系统的局限性进行改进。
扩展卡尔曼滤波 (EKF)通过泰勒展开对非线性系统在当前估计点处线性化,应用标准卡尔曼滤波框架。优点:计算效率高;
缺点:线性化误差大,对强非线性系统不稳定。
机器人定位、传感器融合(如SLAM中的非线性运动模型)。基础非线性滤波方法,EKF通过线性化扩展到非线性系统,但精度受限于泰勒展开的截断误差
无迹卡尔曼滤波 (UKF)通过无迹变换(UT)选择采样点(Sigma点),直接近似状态分布的均值和协方差,避免显式线性化。优点:精度高于EKF,无需计算雅可比矩阵;
缺点:计算量略高,对高维系统效率下降。
非线性系统状态估计(如目标跟踪、姿态估计)。UKF避免线性化误差,直接处理非线性,但计算复杂度增加
自适应卡尔曼滤波 (AKF)动态调整噪声协方差矩阵(Q/R)或状态模型,以适应系统统计特性变化。优点:鲁棒性强;
缺点:参数调整复杂,可能引入额外计算负担。
时变噪声环境(如传感器漂移、突变干扰)。可与EKF/UKF结合,增强对不确定噪声的适应性。
迭代扩展卡尔曼滤波 (IEKF)在EKF基础上多次迭代更新状态估计,逐步修正线性化误差。优点:收敛性优于EKF;
缺点:计算量显著增加。
高精度定位(如卫星导航、工业控制)。EKF的改进版,通过迭代减少线性化截断误差。
集合卡尔曼滤波 (EnKF)用随机采样集合表示状态分布,通过集合统计量近似协方差,适用于高维非线性系统。优点:适合高维系统;
缺点:需大量样本,可能低估协方差。
气象预测、海洋模型等大规模动态系统。与UKF类似但采样方式不同,属于蒙特卡洛方法。
粒子滤波 (PF)基于序贯重要性采样,用大量粒子表示状态分布,适用于非高斯、非线性系统。优点:无需假设高斯分布;
缺点:计算成本极高,粒子退化问题。
SLAM、目标跟踪(非高斯噪声场景)。PF完全摆脱线性/高斯假设,但计算资源需求远高于KF
容积卡尔曼滤波 (CKF)利用球面-径向容积规则选择采样点,计算非线性积分,平衡精度与效率。优点:精度接近UKF,计算效率更高;
缺点:对极端非线性可能不稳定。
航空航天、多传感器融合。CKF通过更高效的采样策略提升非线性处理能力,但适用场景与UKF类似

相关文章:

卡尔曼滤波解释及示例

卡尔曼滤波的本质是用数学方法平衡预测与观测的可信度 ,通过不断迭代逼近真实状态。其高效性和鲁棒性,通常在导航定位中,需要融合GPS、加速度计、陀螺仪、激光雷达或摄像头数据,来提高位置精度。简单讲,卡尔曼滤波就是…...

openwrt作旁路由时的几个常见问题 openwrt作为旁路由配置zerotier 图文讲解

1 先看openwrt时间,一定要保证时间和浏览器和服务器是一致的,不然无法更新 2 openwrt设置旁路由前先测试下,路由器能否ping通主路由,是否能够连接外网,好多旁路由设置完了,发现还不能远程好多就是旁路由本…...

Redis--预备知识以及String类型

目录 一、预备知识 1.1 基本全局命令 1.1.1 KEYS 1.1.2 EXISTS 1.1.3 DEL 1.1.4 EXPIRE 1.1.5 TTL 1.1.6 TYPE 1.2 数据结构以及内部编码 1.3 单线程架构 二、String字符串 2.1 常见命令 2.1.1 SET 2.1.2 GET 2.1.3 MGET 2.1.4 MSET 2.1.5 SETNX 2.2 计数命令 2.2.1 INCR 2.2.2…...

Redis 及其在系统设计中的作用

什么是Redis Redis 是一个开源的内存数据结构存储系统,可用作数据库、缓存和消息代理。它因其快速的性能、灵活性和易用性而得到广泛应用。 Redis 数据存储类型 Redis 允许开发人员以各种数据结构(例如字符串、位图、位域、哈希、列表、集合、有序集合…...

UEC++第10天|UEC++获取对象、RTTI是C++

最近在写UEC项目,这里写几个案例里的问题,还在学习阶段 1. 如何获取小鸟对象? void AFlappyBirdGameModeBase::BeginGame() { // 让管道动起来PipeActor->SetMoveSpeed();// 让小鸟开始飞行// 如何获取到小鸟对象APawn* Pawn UGameplayS…...

【python】一文掌握 markitdown 库的操作(用于将文件和办公文档转换为Markdown的Python工具)

更多内容请见: python3案例和总结-专栏介绍和目录 文章目录 一、markitdown概述1.1 markitdown介绍1.2 MarkItDown支持的文件1.3 为什么是Markdown?二、markitdown安装2.1 pip方式安装2.2 源码安装2.3 docker方式安装三、基本使用3.1 命令行方式3.2 可选依赖项配置3.3 插件方…...

爬虫-oiwiki

我们将BASE_URL 设置为 "https://oi-wiki.org/" 后脚本就会自动开始抓取该url及其子页面的所有内容,并将统一子页面的放在一个文件夹中 import requests from bs4 import BeautifulSoup from urllib.parse import urljoin, urlparse import os import pd…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(10): つもり 计划/打算

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(10): つもり 计划/打算 1、前言(1)情况说明(2)工程师的信仰 2、知识点(1)つもり 计划/打算(2&a…...

强化学习核心原理及数学框架

1. 定义与核心思想 强化学习(Reinforcement Learning, RL)是一种通过智能体(Agent)与环境(Environment)的持续交互来学习最优决策策略的机器学习范式。其核心特征为: ​​试错学习​​&#x…...

【技术派后端篇】技术派中 Session/Cookie 与 JWT 身份验证技术的应用及实现解析

在现代Web应用开发中,身份验证是保障系统安全的重要环节。技术派在身份验证领域采用了多种技术方案,其中Session/Cookie和JWT(JSON Web Token)是两种常用的实现方式。本文将详细介绍这两种身份验证技术在技术派中的应用及具体实现…...

【基础】Node.js 介绍、安装及npm 和 npx功能了解

前言 后面安装n8n要用到,做一点技术储备。主要是它的两个工具:npm 和 npx。 Node.js介绍 Node.js 是一个免费的、开源的、跨平台的 JavaScript 运行时环境,允许开发人员在浏览器之外编写命令行工具和服务器端脚本,是一个基于 C…...

第53讲 农学科研中的AI伦理与可解释性——探索SHAP值、LIME等可解释工具与科研可信性建设之道

目录 一、为什么农学科研中需要“可解释AI”? ✅ 场景示例: 二、常见可解释AI工具介绍 1. SHAP(SHapley Additive exPlanations) 2. LIME(Local Interpretable Model-agnostic Explanations) 三、AI伦理问题在农学中的体现 🧭 公平性与偏见 🔐 数据隐私 🤖…...

助力网站优化利用AI批量生成文章工具提升质量

哎,有时候觉得写东西这事儿吧,真挺玄乎的。你看着那些大网站的优质内容,会不会突然冒出个念头——这些家伙到底怎么做到日更十篇还不秃头的?前阵子我蹲在咖啡馆里盯着屏幕发呆,突然刷到个帖子说现在用AI写文章能自动纠…...

Java语言的进化:JDK的未来版本

作为一名Java开发者,我们正处在一个令人兴奋的时代!Java语言正在以前所未有的速度进化,每个新版本都带来令人惊喜的特性。让我们一起探索JDK未来版本的发展方向,看看Java将如何继续领跑编程语言界!💪 &…...

SpringBootTest报错

Unable to find a SpringBootConfiguration, you need to use ContextConfiguration or … 解决方案:在SpringTest注解中添加属性(classes )填写启动类 如我的启动类是MainApplication.class javax.websocket.server.ServerContainer no…...

Flask + ajax上传文件(二)--多文件上传

Flask多文件上传完整教程 本教程将详细介绍如何使用Flask实现多文件上传功能,并使用时间戳为上传文件自动命名,避免文件名冲突。 一、环境准备 确保已安装Python和Flask pip install flask项目结构 flask_upload/ ├── app.py ├── upload/ # 上传文…...

w~视觉~合集3

我自己的原文哦~ https://blog.51cto.com/whaosoft/12327888 #几个论文 Fast Charging of Energy-dense Lithium-ion Batteries Real-time Short Video Recommendation on Mobile Devices Semantic interpretation for convolutional neural networks: What makes a ca…...

Redis安装及入门应用

应用资料:https://download.csdn.net/download/ly1h1/90685065 1.获取文件,并在该文件下执行cmd 2.输入redis-server-lucifer.exe redis.windows.conf,即可运行redis 3.安装redis客户端软件 4.安装后运行客户端软件,输入链接地址…...

NODE_OPTIONS=--openssl-legacy-provider vue-cli-service serve

//"dev": " NODE_OPTIONS--openssl-legacy-provider vue-cli-service serve" // 修改后(Windows 适用) "dev": "vue-cli-service serve --openssl-legacy-provider" 升级 Node.js 到 v14,确保依赖…...

如何在 Postman 中,自动获取 Token 并将其赋值到环境变量

在 Postman 中,你可以通过 预请求脚本(Pre-request Script) 和 测试脚本(Tests) 实现自动获取 Token 并将其赋值到环境变量,下面是完整的操作步骤: ✅ 一、创建获取 Token 的请求 通常这个请求…...

上篇:深入剖析 BLE 底层物理层与链路层(约5000字)

引言 在无线通信领域,Bluetooth Low Energy(BLE)以其超低功耗、灵活的连接模式和良好的生态支持,成为 IoT 与可穿戴设备的首选技术。要想在实际项目中优化性能、控制功耗、保证可靠通信,必须对 BLE 协议栈的底层细节有深入了解。本篇将重点围绕物理层(PHY)与链路层(Li…...

PostgreSQL 的 MVCC 机制了解

PostgreSQL 的 MVCC 机制了解 PostgreSQL 使用多版本并发控制(MVCC)作为其核心并发控制机制,这是它与许多其他数据库系统的关键区别之一。MVCC 允许读操作不阻塞写操作,写操作也不阻塞读操作,从而提供高度并发性。 一 MVCC 基本原理 1.1 M…...

【Pandas】pandas DataFrame dot

Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于执行 DataFrame 与另一个对象(如 DataFrame、Series 或标量)的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于执行 DataFrame 与另一个对象&…...

2025 年“泰迪杯”数据挖掘挑战赛B题——基于穿戴装备的身体活动监测问题分析

摘要 本文聚焦于基于穿戴设备采集的加速度计数据,深入研究志愿者在日常活动中的行为特征,构建了多个数学建模框架,实现从身体活动监测、能耗预测、睡眠阶段识别到久坐预警等多个目标。我们依托于多源数据融合与机器学习模型,对人体活动状态进行识别与分析,为健康管理、行…...

Vivado版本升级后AXI4-Stream Data FIFO端口变化

Vivado 2017.4版本中异步AXI4-Stream Data FIFO升级到Vivado 2018.3后,IP管脚会发生变化,2018.3版中没有m_axis_aresetn和axis_data_count。 async_axis_fifo_8_1024 async_axis_fifo_8_1024 ( .s_axis_aresetn (I_do0_rstn ), // input wire…...

Linux424 chage密码信息 gpasswd 附属组

https://chat.deepseek.com/a/chat/s/e55a5e85-de97-450d-a19e-2c48f6669234...

Git 恢复误删除的文件

由于一些操作,把项目中的大量文件删除了,还以为之前敲得代码都付之东流了,突然想起,我的项目使用git进行的版本管理,且一些更改都暂存在本地的仓库的,因此可以使用git来恢复存入仓库的文件 首先&#xff0…...

自定义指令简介及用法(vue3)

一介绍 防抖与节流,应用场景有很多,例如:禁止重复提交数据的场景、搜索框输入搜索条件,待输入停止后再开始搜索。 防抖 点击button按钮,设置定时器,在规定的时间内再次点击会重置定时器重新计时&#xf…...

关于Qt对Html/CSS的支持

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、原生控件二、QtWebEngine总结 前言 最近遇到了一些问题需要使用Qt加载Html发现一些特性不能使用,估计很多人也和我一样遇到这种情况。需要说明…...

海量数据笔试题--Top K 高频词汇统计

问题描述: 假设你有一个非常大的文本文件(例如,100GB),文件内容是按行存储的单词(或其他字符串,如 URL、搜索查询词等),单词之间可能由空格或换行符分隔。由于文件巨大&…...