卡尔曼滤波器使用原理以及代码编写

news2024/9/21 10:52:14

注:要视频学习可以去B站搜索“DR_CAN”讲解的卡尔曼滤波器,深有体会!

一、为啥需要卡尔曼滤波器

 

卡尔曼滤波器在生活中应用广泛,因为在我们生活中存在着不确定性,当我去描述一个系统,这个不确定性就包涵一下三点:

 所以要解决正样的问题,卡尔曼就诞生了。

1、下面我们进入公式推导,我们测量一个物品时,会存在测量读取误差以及测量工具误差,这时候我们正常采用多次测量取平均值来得出最终结果,那么下面我们就进行公式表达

 经过上述公式转换推导,是不是就出来了一个我们卡尔曼滤波器结果公式,其表达意思如下:

(1)既当前最优结果 = 上一次最优结果 + 卡尔曼增益*(此次测量值 - 上一次最优结果)

(2)随着测量次数的增加,当前次的测量结果就不那么重要了,反之测量次数比较少,那么当前次的结果作用就比较大。

(3)从公式也可以看出来,新的这一次X^k与上一次的估计值X^k-1有关,然后上一次的估计值X^k-1与上上次的有关,这就是一种递归思想。

(4)这也就是卡尔曼滤波器的优势,它不需要追溯很久以前的数据,只需要上一次的即可。

2、卡尔曼增益k

k在这里先做简单的解释,首先引入两个参数:

估计误差与测量误差,就是它们两个与真实值得差值

那么Kk的表达式:这里不做推导,这个公式是卡尔曼滤波器的核心公式

 

那么到这里,增益已经知道,我们把第一步的公式拿下来,合并起来

 是不是就可以转换成如下:

 3、估计误差与测量误差怎么确定参数?

估计上一次的误差同时初始化是为  kfp.Last_P = 1;切记不可为0

测量误差:这个取决于传感器的精度,如果你的传感很贵精度很厉害那这个测量误差你可以取0.1等,可以实际调试看看最终结果。

4、根据上面理解与公式,我们来做一维的滤波处理

eg:

 如果用程序表达

typedef struct

{

    float Last_P;//上次估算协方差 不可以为0 ! ! ! ! !

    float estout ;//卡尔曼滤波器输出

    float Kg;//卡尔曼增益

    float R;//(测量)观测噪声协方差

}Kalman;

Kalman kfp;

void Kalman_Init(void)

{

kfp.Last_P = 5;

kfp.estout = 40;

kfp.Kg = 0;

kfp.R = 3;//这个取决于传感器的精度

}

Void KalmanPro(float kfpMeak)

{

kfp.Kg = kfp.Last_P / (kfp.Last_P + kfp.R );

kfp.estout = kfp.estout + kfp.Kg(kfpMeak - kfp.estout);

kfp.Last_P = (1- kfp.Kg)*kfp.Last_P;

}

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

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

相关文章

源码编译LAMP与论坛安装

目录 Apache网站服务(著名的开源Web服务软件) Apache的主要特点 软件版本 如何创建论坛 安装相关服务Apache 安装MySQL数据库 安装PHP框架 然后进行论坛安装 第一步 先进入到MySQL内 第二步 授权bbs数据库 第三步 刷新数据库 第四步 解压指定…

【Windows】虚拟串口工具VSPD7.2安装

【Windows】虚拟串口工具VSPD7.2安装 1、背景2、VSPD7.2安装3、创建虚拟串口 1、背景 ​Virtual Serial Ports Driver​是由著名的软件公司Eltima制作的一款非常好用的​虚拟串口工具​,简称:VSPD。 VSPD其功能如同 Windows机器上COM 串行端口的仿真器…

Go-unsafe详解

Go语言unsafe包 Go语言的unsafe包提供了一些底层操作的函数,这些函数可以绕过Go语言的类型系统,直接操作内存。虽然这些函数很强大,但是使用不当可能会导致程序崩溃或者产生不可预料的行为。因此,使用unsafe包时必须小心谨慎。 …

小白必看!渗透测试的8个步骤

渗透测试与入侵的区别 渗透测试:以安全为基本原则,通过攻击者以及防御者的角度去分析目标所存在的安全隐患以及脆弱性,以保护系统安全为最终目标。 入侵:通过各种方法,甚至破坏性的操作,来获取系统权限以…

C++ 教程(15)——数组(包含实例)

C 支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。 数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声…

[架构之路-215]- 系统分析-领域建模基本概念

目录 1. 什么是领域或问题域 2. 什么面向对象的“类” 》 设计类 3. 什么是概念类 4. 什么是领域建模 5. 领域建模与DDD(领域驱动架构设计)的关系 6. 领域建模的UML方法 7. 领域建模的案例 其他参考: 1. 什么是领域或问题域 领域&a…

Spring AOP之MethodInterceptor原理

文章目录 引言Spring AOP组成先看一下Advice 示例提问 原理 引言 之前我们讨论过了HandlerInterceptor,现在我们来看一下MethodInterceptor。 MethodInterceptor是Spring AOP中的一个重要接口,用来拦截方法调用,它只有一个invoke方法。 Spring AOP组成…

Laya3.0游戏框架搭建流程(随时更新)

近两年AI绘图技术有了长足发展,准备把以前玩过的游戏类型重制下,也算是圆了一个情怀梦。 鉴于unity商用水印和启动时间的原因,我决定使用Laya来开发。目前laya已经更新到了3.0以上版本,就用目前比较新的版本。 之后关于开发中遇到…

HashMap学习:1.7 迁移死循环分析(通俗易懂)

前言 JDK1.7由于采用的头插法,所以多线程情况下可能会产生死循环问题。 正文 头插法 就是每次从旧容器中的hash桶中取出数据后,放到新容器的头节点问题,如果此时头结点位置为空,直接放置即可,如果不为空将头节点的数…

C语言strncpy的使用缺陷和实现,strncat的使用缺陷和实现,strncmp的使用和实现。

1.strncpy 函数原型: char *strncpy( char *strDest, const char *strSource, size_t count );char *strDest 目标字符串首元素地址const char *strSource 源字符串(需要拷贝过去的字符串)size_t count 拷贝字符的个数char *strncpy 拷贝结束后,返回目…

Micormeter实战

Micrometer 为基于 JVM 的应用程序的性能监测数据收集提供了一个通用的 API,支持多种度量指标类型,这些指标可以用于观察、警报以及对应用程序当前状态做出响应。 前言 可接入监控系统 监控系统的三个重要特征: 维度(Dimensio…

[保姆教程] Windows平台OpenCV以及它的Golang实现gocv安装与测试(亲测通过)

一、MinGW & CMake 预备步骤 首先打开cmd: c: md mingw-w64 md cmake下载安装MinGW-W64 访问: https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/7.3.0/ 下载: MinGW-W64 GCC-8…

一文详解Softmax的性质与Self-Attention初步解析

概述 最近研究超平面排列(Hyperplane Arrangement)问题的时候,发现ReLU有其缺陷,即举例来说,ReLU 无法使用单一的超平面将分离的所有数据,完整的输出,即只会输出半个空间映射的数据,而另一半空间的数据被置…

面试---简历

项目 1.1、商品管理 新增商品 同时插入商品对应的使用时间数据,需要操作两张表:product,product_usetime。在productService接口中定义save方法,该方法接受一张Dto对象,dto对象继承自product类,并将prod…

学习open62541 --- [78] 单线程和多线程的使用场景

open62541提供多线程功能,默认不开启,即单线程, 把UA_MULTITHREADING的值设置为 > 100就可以开启多线程了。 这里单线程/多线程的意思是基于open62541运行的server内部是否使用锁去保护数据。只要server运行后还有读写操作需要做&#x…

从源码全面解析 dubbo 消费端服务调用的来龙去脉

👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主📕系列专栏:Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、JUC源码…

3D 顶点着色与Phong 反射模型

Phong 反射模型有时被称为“Phong 照明”或“Phong 照明”。它由环境光照、漫反射(朗伯反射)、镜面反射三部分组成。 Phong 反射模型提供了一个方程式,用于计算表面上每个点的光照,I_p: 第一部分代表环境光项。在GLSL代…

X书hmac参数

被删重新发送 全文可以查看: 上面一遍unidbg解密shield文章 unidbg - 》 callObjectMethodV方法填写你的小红书路径下s.xml里的值: 或者在抓包响应头中: 查找xy-ter-str hmac 结果都是在,响应头里,所以 hmac 是服务器下发给客户端的. Over…

黑马头条.

文章目录 前言一、项目概述1.1 能收获什么1.2 项目概述1.3 项目术语1.4 业务说明 二、技术栈2.1技术栈整体框架图2.2技术栈简介 三、nacos环境搭建3.1 虚拟机镜像准备3.2 nacos的安装 四、初始工程搭建4.1 开发环境准备 五、实现登录功能5.1 需求分析5.2 表结构分析5.3 思路分析…

22道常见RocketMQ面试题以及答案

面试宝典到手,搞定面试,不再是难题,系列文章传送地址,请点击本链接。 1、RocketMQ是什么? 2、RocketMQ有什么作用? 3、RoctetMQ的架构 4、RoctetMQ的优缺点 8、消息过滤,如何实现? 9、消息去重,如果…