首页 > 其他分享 >卡尔曼滤波Kalman Filter零基础入门到实践(上部)

卡尔曼滤波Kalman Filter零基础入门到实践(上部)

时间:2024-07-11 20:56:28浏览次数:10  
标签:Kalman 方差 估计值 卡尔曼滤波 噪声 观测 Filter 正态分布

参考视频:入门(秒懂滤波概要)_哔哩哔哩_bilibili

一、入门

1.引入

假设超声波距离传感器每1ms给单片机发数据。

理论数据为黑点, 测量数据曲线为红线,引入滤波后的数据为紫线

引入滤波的作用是过滤数据中的噪声,使信号更趋于真实值。

2.卡尔曼滤波适用系统

卡尔曼滤波适用于线性高斯系统

2.1线性的理解

线性满足叠加性与齐次性。

如何理解叠加性?



如何理解齐次性?

输入x增大k倍,输出y也增大k倍

2.2高斯的理解

高斯:噪声满足正态分布

3.宏观意义:滤波即加权

理想状态:信号*1 +噪声*0(数字表示权值)

低通滤波:低频信号*1 + 高频信号*0

卡尔曼滤波:估计值*(待选择)+观测值*(待选择);选择估计值与观测值的权重,总体得到一个最佳修正值。

二、进阶(基本滤波知识)

1.状态空间表达式(便于之后卡尔曼滤波公式的理解)

状态方程

x_{k}=Ax_{k-1}+Bu_{k}+\omega_{k}

其中,x_{k}是当前状态的当前值;x_{k-1}是上一个时刻该状态的值;u_{k}是检测输入;\omega _{k}是过程噪声;A是一个状态转移矩阵(用于刻画系统从一个状态转移到另一个状态的概率);B是一个控制矩阵。

观测方程

y_{k}=Cx_{k}+v_{k}

其中,y_{k}是要观测的值;v _{k}是观测噪声(与观测器的误差有关);

举例

 加热一壶水,温度计观测到的温度与水温状态的关系C=1,当前温度计测量的温度y_{k}=当前状态的当前水温x_{k}+温度计的误差v _{k},A取单位矩阵,Bu_{k}为每一时刻会增加多少度,\omega _{k}是过程噪声(比如加热过程中环境温度的影响),观测方程为

y_{k}=x_{k}+v_{k}

状态方程为

x_{k}=x_{k-1}+\Delta _{t}+\omega_{k}

2.高斯分布

2.1直观图解

在二维和三维中,不管这些点投影到x轴、y轴还是z轴,都是正态分布

2.2参数分析

2.2.1 v _{k}\omega _{k}

\omega _{k}\epsilon N(0;Q_{k})\omega _{k}符合正态分布,均值为0,方差为Q_{k}

v _{k} \epsilon N(0;R_{k})v _{k}符合正态分布,均值为0,方差为R_{k}

统称以上两个为高斯白噪声

举例

假设车的位置移动了1000m,GPS检测值为1000\pm \Delta m,方差为1m噪声

v _{k}=\Delta mR _{k}=1m

假设车速是3000m/s,在风速的作用下,GPS的检测值为1000\pm \Delta n

\omega _{k}=\Delta n m/s,n服从正态分布,方差Q_{k}=1m/s

2.2.2 方差

二维协方差(多维也类似)

3.超参数

Q、R、N  PID

之后主要调的是Q和R(上面提到的方差)

4.卡尔曼直观图解

x轴是位置,y轴是概率密度,\hat{x}_{k-1}是后验估计值,也叫最优估计值(修正值),\bar{\hat{x}}_{k-1}是先验估计值,y_{k}是观测值,\hat{x}_{k}是当前的最优估计值

\hat{x}_{k-1}:卡尔曼滤波最终输出的值

\bar{\hat{x}}_{k-1}:根据\hat{x}_{k-1}估计出来的一个当前的估计值

\hat{x}_{k}:是由先验估计值和当前观测值取共有部分得到的

标签:Kalman,方差,估计值,卡尔曼滤波,噪声,观测,Filter,正态分布
From: https://blog.csdn.net/m0_55841508/article/details/140356152

相关文章

  • JavaScript 进阶(五)---forEach/map/filterevery/some/includes/reduce的详细用法
    目录1.forEach2.map3.filter4.for...in5.for...of6.every7.some8.includes9.reduce举个例子:使用fliter:使用 map 来筛选并转换数组使用 forEach 来筛选并构建数组总结1.forEach-详解:`forEach`方法对数组的每个元素执行一次提供的函数。这个方......
  • 算法金 | 推导式、生成器、向量化、map、filter、reduce、itertools,再见 for 循环
    大侠幸会,在下全网同名「算法金」0基础转AI上岸,多个算法赛Top「日更万日,让更多人享受智能乐趣」不要轻易使用For循环For循环,老铁们在编程中经常用到的一个基本结构,特别是在处理列表、字典这类数据结构时。但是,这东西真的是个双刃剑。虽然看起来挺直白,一用就上手,但是......
  • Filter接口的生命周期
    Servlet容器(如Tomcat、Jetty、GlassFish等)在启动时会加载并初始化部署在其中的Web应用程序。在这个过程中,它会读取web.xml文件(或在Servlet3.0+中使用@WebFilter注解)以获取Filter的配置信息。以下是Servlet容器如何调用Filter的init方法并传递FilterConfig......
  • WPF OpenFielDialog Filter InitialiaDirectory Title
    //xaml<Windowx:Class="WpfApp189.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mi......
  • 使用Filter接口编写过滤器解决post乱码
    在使用tomcat9以及之前的版本,request-character-encoding和response-character-encoding使用的字符编码默认不是utf-8,所以导致前端发送到后台的中文乱码.如果使用的是tomcat10以及之后的版本,在apache-tomcat-10.1.25\conf\web.xml已设置好默认的字符集编码为utf-8,如果所示:......
  • Java Web---Filter(过滤器)
            Java过滤器是一个用来处理HTTP请求和响应的组件,它可以拦截客户端发送给服务器的请求,并在请求到达目标资源之前对请求进行修改或者对请求进行一些预处理操作。应用场景:用户权限控制:通过过滤器可以拦截用户请求,检查用户是否具有访问某个资源的权限,然后根据权......
  • 使用粒子滤波(particle filter)进行视频目标跟踪
    虽然有许多用于目标跟踪的算法,包括较新的基于深度学习的算法,但对于这项任务,粒子滤波仍然是一个有趣的算法。所以在这篇文章中,我们将介绍视频中的目标跟踪:预测下一帧中物体的位置。在粒子滤波以及许多其他经典跟踪算法的情况下,我们根据估计的动态进行预测,然后使用一些测量值更新预......
  • Linear phase filters-线性相位滤波器概念
    一概念线性相位滤波器(LinearPhaseFilter)是一种常见的数字信号处理工具,用于在频率域中对信号进行滤波。与传统的非线性相位滤波器不同,线性相位滤波器具有特定的频率响应特性,使得信号通过滤波器后的相位延迟与频率成正比,从而保持信号的相对时间关系。这使得线性相位滤波器在许多......
  • Swagger文档渲染,将Filter过滤器中抛出的异常错误消息返回前端显示
    一、应用场景在swagger通过/v2/api-docs获取到后端接口数据后,使用过滤器对/v2/api-docs请求进行拦截,然后对获取到的数据进行处理,当在处理过程中对Filter过滤器中抛出的异常错误消息进行捕获,并将捕获到的异常错误消息返回到前端二、示例代码@OverridepublicvoiddoFilte......
  • 关于zip、map、filter和lambda函数
    zip#相当于是拉链,将两个列表对应位置的数据拉到一起,变成元组,最后返回一个迭代器。用list将迭代器转换为列表即可看到内容#如果列表数据长度不对等,就以短的为主,剩下的不管了list1=[1,2,3]list2=['a','b','c','d']z=zip(list1,list2)print(list(z))#>>>>输......