卡尔曼滤波实战

news2024/11/26 0:43:26

入门内容

假如有个超声波,它传回的数据是这样的,这样的数据是用不了的

我们想要的是稳定的数据

此时我们引入滤波,把里面的噪声去掉,使得数据更平滑

适用系统:

        符合两个特质:线性和高斯。     也叫线性高斯系统

什么是线性?

     满足两个特性:叠加性和齐次性

叠加型:

        假如有两个输入,最后得到一个输出

        

        等价于,总输出是y,由另外两个输出合起来,两个输出对应的输入是x1和x2

        

        那么从方程理解

        

齐次性:

        x增大k倍,y也增大k倍

      

高斯:

        噪声满足正态分布

        正态分布就是假如均值为零,它的方差对应着sigma

      

从宏观来看,卡尔曼滤波就是加权

        理想状态: 信号 x 1 + 噪声 x 0   

从信号处理的角度来看,类比于低通滤波,低频信号权值为1,高频噪声取值为0

卡尔曼滤波就是有一个估计值和观测值,让你选择它们的权重,融合在一起就是最佳的修正值

进阶内容

状态空间表达式

状态方程  

x是状态值,k是当前,k-1是上一个时刻状态,u为输入,w是过程造成(也叫误差)

观测方程

y是观察量,v是观测噪声(传感器自身的误差)

高斯分布

均值和方差

参数分析

主要就是调Q和R

卡尔曼直观图解

最优估计值也叫修正值或者后验估计值

这个是上一时刻的最优估计值,就是卡尔曼滤波最终输出的值

先验估计值

这个值是基于上一时刻的最优估计值估计出来的一个当前估计值

当前时刻的观测值,也就是传感器直接测量出来的值

缺一个值,就是当前时刻的最优估计值。大概在这里

滤波次数过多的时候就会趋于一个稳定状态,它的方差自然会越来越小好

当前估计值与当前观测值的交集

卡尔曼公式理解:

实现过程:用上一次的最优结果预测当前的值

                    同时使用观测值修正当前值,得到最优结果

import numpy as np

def kalman_filter(observed_data, initial_state_estimate, initial_covariance_estimate, transition_matrix, observation_matrix, process_noise_covariance, observation_noise_covariance):
    # 初始化变量
    state_estimate = initial_state_estimate  # 状态估计
    covariance_estimate = initial_covariance_estimate  # 协方差估计
    
    # 遍历观测数据
    for observation in observed_data:
        # 预测步骤
        predicted_state_estimate = np.dot(transition_matrix, state_estimate)  # 预测状态估计
        predicted_covariance_estimate = np.dot(np.dot(transition_matrix, covariance_estimate), transition_matrix.T) + process_noise_covariance  # 预测协方差估计
        
        # 更新步骤
        innovation = observation - np.dot(observation_matrix, predicted_state_estimate)  # 创新
        innovation_covariance = np.dot(np.dot(observation_matrix, predicted_covariance_estimate), observation_matrix.T) + observation_noise_covariance  # 创新协方差
        kalman_gain = np.dot(np.dot(predicted_covariance_estimate, observation_matrix.T), np.linalg.inv(innovation_covariance))  # 卡尔曼增益
        
        state_estimate = predicted_state_estimate + np.dot(kalman_gain, innovation)  # 更新状态估计
        covariance_estimate = np.dot((np.eye(len(state_estimate)) - np.dot(kalman_gain, observation_matrix)), predicted_covariance_estimate)  # 更新协方差估计
    
    return state_estimate, covariance_estimate

# 示例用法
observed_data = np.array([1.2, 1.3, 1.4, 1.5])  # 观测测量
initial_state_estimate = np.array([1.0, 0.0])   # 初始状态猜测
initial_covariance_estimate = np.eye(2)         # 初始协方差猜测
transition_matrix = np.array([[1.0, 1.0], [0.0, 1.0]])  # 状态转移矩阵
observation_matrix = np.array([[1.0, 0.0]])      # 观测矩阵
process_noise_covariance = np.eye(2) * 0.01      # 过程噪声协方差
observation_noise_covariance = np.array([[0.1]]) # 观测噪声协方差

state_estimate, covariance_estimate = kalman_filter(observed_data, initial_state_estimate, initial_covariance_estimate, transition_matrix, observation_matrix, process_noise_covariance, observation_noise_covariance)

print("最终状态估计:", state_estimate)
print("最终协方差估计:", covariance_estimate)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1652366.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyCharm怎么安装Comate与使用示范

目录 简单介绍Comate 安装步骤详解 Comate使用示范详解 使用总结 简单介绍Comate Baidu Comate智能编码助手是一款基于文心大模型打造的编码辅助工具,具备多重优势,包括代码智能、应用场景丰富、创造价值高、广泛应用等。它能帮助开发者提升编码效率…

AR人脸道具SDK解决方案,实现道具与人脸的自然融合

AR人脸道具SDK解决方案,实现道具与人脸的自然融合美摄科技以其卓越的技术实力和创新能力,为企业带来了全新的AR人脸道具SDK解决方案。这一解决方案将为企业打开全新的市场机会,为用户带来前所未有的互动体验。 颠覆传统,开启AR人…

【Debug日记】albumentations包安装失败解决方案

直接pip安装pip install albumentations 报错: ERROR: Command errored out with exit status 1:command: D:\anaconda3\envs\pytorch\python.exe D:\anaconda3\envs\pytorch\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py build_wheel C:\Users…

2024年营销技术远景图发布:14,106种营销技术产品(同比增长27.8%)

每年五月的第一个星期二(美国东部时间),Scott Brinker设定为Martech Day,以此来庆祝营销技术行业和所有有才华的营销技术专家和营销运营专业人士的工作,「为你们在开拓这片荒野所做的一切而欢呼!」 同时&a…

24年考研管综199真题PDF共18页

整理了24年考研管综199真题PDF共18页,包含问题求解,条件充分性判断,逻辑推理,写作,几个部分,希望对大家有所帮助 一、问题求解 这部分包含15道小题,每题3分,共45分。题目类型为选择…

SpringBoot使用AOP注解记录操作日志

一、前言 日志:指系统所指定对象的某些操作和其操作结果按时间有序的集合。 操作日志:主要是对某个对象进行新增操作或者修改操作后记录下这个新增或者修改,操作日志要求可读性比较强。比如张三在某个时间下了订单买了某个商品! …

CSS选择器(基本+复合+伪类)

目录 CSS选择器 基本选择器 标签选择器:使用标签名作为选择器->选中同名标签设置样式 类选择器:给类选择器定义一个名字.类名,并给标签添加class"类名" id选择器:跟类选择器非常相似,给id选择器定义…

【Qt问题】VS2019 Qt win32项目如何添加x64编译方式

往期回顾: 【Qt问题】Qt常用快捷键汇总-CSDN博客 【Qt问题】Qt Creator 如何链接第三方库-CSDN博客 【Qt问题】Qt 如何带参数启动外部进程-CSDN博客 【Qt问题】VS2019 Qt win32项目如何添加x64编译方式 我们都知道vs2019在编译项目的时候是需要选择编译环境的&…

完全背包问题(零钱交换+组合总和

完全背包问题(物体可以无限使用,正序遍历即可 For循环顺序也能交换,装满的话 零钱交换 完全背包问题,如果求装满背包有几种方法,都用累加。 遍历顺序影响到输出的结果是组合数还是排列数 先物品再背包是组合数&…

宏集PLC+HMI触控一体机助力构建物料自动分拣系统

一、应用背景 随着工业生产和物流领域的快速发展,对仓储、分拣和配送效率以及准确性的需求不断提高。传统的人工分拣已无法满足市场需求,为了实现智能物流,对高性能的物料输送分拣设备需求更为迫切。 二、物料分拣系统介绍 智能化物料分拣系…

【强训笔记】day15

NO.1 代码实现&#xff1a; #include<iostream> #include<cmath>using namespace std; typedef long long ll;int main() {ll x;cin>>x;ll asqrt(x);ll x1a*a,x2(a1)*(a1);if(x-x1<x2-x) cout<<x1<<endl;else cout<<x2<<endl;r…

网络安全的未来:挑战、策略与创新

引言&#xff1a; 在数字化时代&#xff0c;网络安全已成为个人和企业不可忽视的议题。随着网络攻击的日益频繁和复杂化&#xff0c;如何有效保护数据和隐私成为了一个全球性的挑战。 一、网络安全的现状与挑战 网络安全面临的挑战多种多样&#xff0c;包括但不限于恶意软件、…

C语言 main( ) 函数的指针数组形参是怎么回事?

一、问题 在使⽤⼀些开发⼯具⽣成C语⾔⽂件时&#xff0c;主函数 mian( ) 中会有参数&#xff0c;这个参数到底是怎么回事⼉呢&#xff1f; 二、解答 mian( ) 称为主函数&#xff0c;是所有程序运⾏的⼊口。 mian( ) 函数是由系统调⽤的&#xff0c;当处于操作命令状态下&…

47. UE5 RPG 实现角色死亡效果

在上一篇文章中&#xff0c;我们实现了敌人受到攻击后会播放受击动画&#xff0c;并且还给角色设置了受击标签。并在角色受击时&#xff0c;在角色身上挂上受击标签&#xff0c;在c里&#xff0c;如果挂载了此标签&#xff0c;速度将降为0 。 受击有了&#xff0c;接下来我们将…

Linux中每当执行‘mount’命令(或其他命令)时,自动激活执行脚本:输入密码,才可以执行mount

要实现这个功能&#xff0c;可以通过创建一个自定义的mount命令的包装器&#xff08;wrapper&#xff09;来完成。这个包装器脚本会首先提示用户输入密码&#xff0c;如果密码正确&#xff0c;则执行实际的mount命令。以下是创建这样一个包装器的步骤&#xff1a; 创建一个名为…

IP 地址追踪工具促进有效的 IP 管理

网络 IP 地址空间的结构、扫描和管理方式因组织的规模和网络需求而异&#xff0c;网络越大&#xff0c;需要管理的 IP 就越多&#xff0c;IP 地址层次结构就越复杂。因此&#xff0c;如果没有 IP 地址管理&#xff08;IPAM&#xff09;解决方案&#xff0c;IP 资源过度使用和地…

超越传统游戏:生成式人工智能对游戏的变革性影响

人工智能&#xff08;AI&#xff09;在游戏中的应用 游戏产业是一个充满活力、不断发展的领域&#xff0c;人工智能&#xff08;AI&#xff09;的融入对其产生了重大影响。这一技术进步彻底改变了游戏的开发、玩法和体验方式。本文分析的重点是传统人工智能和生成式人工智能在游…

【影片欣赏】【指环王】【魔戒:双塔奇谋 The Lord of the Rings: The Two Towers】

2003年发行&#xff0c;Special Extended DVD Edition Part One 1. The Foundations of Stone 2. Elven Rope 3. The Taming of Smeagol 4. The Uruk-hai 5. The Three Hunters 6. The Burning of the Westfold 7. Massacre at the Fords of Isen 8. The Banishment of Eomer …

Jmeter 中 CSV 如何参数化测试数据并实现自动断言

当我们使用Jmeter工具进行接口测试&#xff0c;可利用CSV Data Set Config配置元件&#xff0c;对测试数据进行参数化&#xff0c;循环读取csv文档中每一行测试用例数据&#xff0c;来实现接口自动化。此种情况下&#xff0c;很多测试工程师只会人工地查看响应结果来判断用例是…

Linux各目录及每个目录的详细介绍

目录 /bin 存放二进制可执行文件(ls,cat,mkdir等)&#xff0c;常用命令一般都在这里。 /etc 存放系统管理和配置文件 /home 存放所有用户文件的根目录&#xff0c;是用户主目录的基点&#xff0c;比如用户user的主目录就是/home/user&#xff0c;可以用~user表示 /us…