卡尔曼滤波之基本概念和状态观测器

news2024/9/20 6:18:57

图裂参考原文:https://www.cnblogs.com/odesey/p/16937124.html

1. 为什么使用 Kalman Filters?

1.1 什么是 Kalman Filters?

Kalman Filters 是一种优化估计算法。下面使用使用两个例子说明 Kalman Filters 的用处。

例子1:

用来说明: 在系统的状态无法直接被测量时候, Kalman Filters 如何来估算系统状态。

drawing

对于飞船的燃烧室,需要监控燃烧室的温度,但是内部温度太高会烧坏传感器,因此只能测量外部温度,那么如何根据测量的外部温度,估计内部问题呢?可以使用 Kalman Filters 利用间接的测量温度,估计内部的温度。

例子2:

用来说明: 使用 Kalman Filters, 通过组合多种可能受到噪音影响的数据源,来估计系统的状态。

如何估计汽车的位置?

drawing

数据1: 车载传感器 惯性测量单元(IMU), 使用加速度计和陀螺仪来测量汽车的加速度和角速度。

数据2: 里程表,测量汽车行驶的相对距离。

数据3: GPS 接收器接收来自卫星的信号,定位汽车在地球表面的位置。

drawing
  • 如果汽车经过一个长的隧道,在隧道中难以使用 GPS 估计位置,因为接收器和卫星的通信被挡住了。
  • 使用 IMU 提供的加速度计算距离(求二次积分),但是小的误差会随着时间不断累积,从而偏差越来越大。
  • 结合 IMU 和里程表,但里程表读数会受到轮胎压力和道路情况的影响。

总结:

drawing
  • IMU 可以测量汽车的相对位置,可以快速更新,但是容易漂移。
  • GPS 提供绝对位置,更新的慢,并可能存在噪音。
drawing

使用 Kalman Filters 结合三个测量值,得到汽车最合适的估算位置。

1.2 Kalman Filters 来源?

drawing

优化估计算法:可以在有噪声的情况下,来预测感兴趣的参数,如位置,速度和方向等。

制导和导航控制系统。

在阿波罗登月项目中,使用 Kalman Filters 来估算载人航天器往返月球的轨迹。

1.3 总结

drawing

Kalman Filters 是一种设计最优状态观测器的方法。下一节会学习状态观测器。讨论最佳状态观测器。

2. 状态观测器?

定义: X ^ \hat{X} X^ 为估计状态。

例子:测量飞船燃烧室的温度。

drawing

内部温度为: T i n T_{in} Tin, 外部温度为: T e x t T_{ext} Text

燃油流量为: W f u e l W_{fuel} Wfuel

通过对真实燃油系统建立数学模型。那么可以通过该数学模型可以估计系统的内部状态了吗?答:不可以。因为数学模型只是真是系统的近似。如果数学模型是真实系统的完美模型,没有任何不确定性,并且真实系统和数学模型具有相同的初始条件,那么数学模型估算的外部测量值: T ^ e x t \hat{T}_{ext} T^ext 就会与真实的外部测量值: T e x t T_{ext} Text 相等,那么模型估算的内部温度值: T ^ i n \hat{T}_{in} T^in 就会与真实的内部温度值: T i n T_{in} Tin 相等。但是实际上是不可能有完美的模型,即数学模型估算的外部测量值: T ^ e x t \hat{T}_{ext} T^ext 会与真实的外部测量值: T e x t T_{ext} Text 有误差。因此需要使用状态观测器来估算系统的内部状态。

drawing

状态观测器原理:如上图所示,目标是数学模型估算的外部测量值: T ^ e x t \hat{T}_{ext} T^ext 与真实的外部测量值: T e x t T_{ext} Text 相等,表示数学模型收敛到了真实系统,那么模型估算的内部温度值: T ^ i n \hat{T}_{in} T^in 就能收敛到 真实的内部温度值: T i n T_{in} Tin

drawing

反馈控制系统,我们使用 控制增益 K 试图控制 数学模型估算的外部测量值: T ^ e x t \hat{T}_{ext} T^ext 与真实的外部测量值: T e x t T_{ext} Text 之间的误差为 0。

drawing

将该反馈控制系统更新到上面图中,蓝色阴影部分为 状态观测器。通过反馈控制,消除数学模型估算的外部测量值: T ^ e x t \hat{T}_{ext} T^ext 与真实的外部测量值: T e x t T_{ext} Text 之间的误差。那么模型估算的内部温度值: T ^ i n \hat{T}_{in} T^in 就会收敛到 真实的内部温度值: T i n T_{in} Tin

总之:

  1. 无法测量真实系统内部的温度
  2. 但是知道给火箭提供了多少燃料
  3. 因此可以建立 燃料和估算的外部温度的数学模型,得到估算的外部温度
  4. 结合测量的外部温度值来估计系统内部的温度

问题是如何选择控制增益 K 使得测量的外部温度和模型估算的外部温度之间的误差最小?

drawing

整理公式得到如下结果:

drawing

上述等式的解是一个指数函数,这意味着如果 A-KC<0, 那么模型估算的内部温度值 x ^ \hat{x} x^ T ^ i n \hat{T}_{in} T^in 与 真实的内部温度值 x x x T i n T_{in} Tin 之间的误差会随着时间而降低。 x ^ \hat{x} x^ 最终会收敛到 x x x

drawing

你或许会疑问是否需要 KC 项,即没有反馈回路,即数学模型没有 K ( y − K(y- K(y\hat{x})$ ,也会得到一个误差衰减的指数函数。给状态观测器建立反馈回路的重要性在于 : 我们可以通过选择相应的控制增益 K 控制误差函数的衰减率。如果 衰减率只取决于 矩阵 A, 如果数学模型中存在一些不确定性,表示并不知道真实的 A,那么就无法控制误差衰减的速度。使用反馈控制增益可以更好的控制这些方程,从而更快的消除误差。误差消除的越快,估算的状态 x ^ \hat{x} x^ 收敛到 真实状态 x x x 的速度就会越快。

drawing

选择反馈控制增益 K 的最佳方法就是 Kalman Filters。

drawing

参考

https://www.bilibili.com/video/BV1V5411V72J?p=2

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

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

相关文章

电子学会2021年3月青少年软件编程(图形化)等级考试试卷(二级)答案解析

目录 一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 二、判断题&#xff08;共10题&#xff0c;每题2分&#xff0c;共20分&#xff09; 三、编程题&#xff08;共2题&#xff0c;共30分&#xff09; 青少年软件编程&#xff08;图形化&a…

Java#32(异常, File)

目录 一.异常 异常: 代表程序出现问题 二.File 1.File的三种构造方法 2.File的常见的成员方法 一.异常 异常: 代表程序出现问题 图解: 从Java文件------>字节码文件的过程就是编译(在这期间的异常就是编译时异常) 从字节码文件------->运行结果的过程就是运行(在这期…

Linux系统调用与API

系统调用是应用程序与操作系统内核之间的接口&#xff0c;它决定了应用程序是如何与内核打交道的。无论程序是直接进行系统调用&#xff0c;还是通过运行库&#xff0c;最终还是会达到系统调用这个层面。 系统调用介绍 1、什么是系统调用 在现代的操作系统里&#xff0c;程序运…

CEC2015:动态多目标野狗优化算法求解CEC2015(提供完整MATLAB代码,含GD、IGD、HV和SP评价指标)

一、动态多目标优化问题简介 现实世界中&#xff0c;许多优化问题不仅具有多属性&#xff0c;而且与时间相关&#xff0c;即随着时间的变化&#xff0c;优化问题本身也发生改变&#xff0c;这类问题称为动态多目标优化问题&#xff08;dynamic multi-objective optimization p…

写一个flutter程序—记录

目录 使用外部package 添加一个Stateful widget Flutter是谷歌的移动UI框架&#xff0c;可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界&#xff0c;Flutter正在被越来越多的开发者和组织使用&#xff0c;并且Flutter是完全…

[附源码]Python计算机毕业设计SSM精品旅游项目管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【Pytorch安装】windows下,安装了torch但是import torch失败

【Pytorch安装】windows下&#xff0c;安装了torch但是import torch失败问题原因解决问题 输入 python 进入python环境&#xff0c;输入 import torch 但是显示找不到这个包 输入 pip list 查看之前是否安装成功 但是可以看到包都在 原因 电脑中先前安装了多个 python &am…

Ajax用法总结

目录 Ajax简介 Ajax使用 xhr内部五种状态 Ajax在IE浏览器上存在的缓存问题 如何发送post请求 如何取消Ajax请求 ​编辑 jQuery封装的Ajax如何使用&#xff1f; Ajax简介 Ajax全称为Asynchous Javascript And XML&#xff0c;即异步的JS和XML&#xff0c;通过Ajax可以在…

Linux进程的调度

目录 调度策略与调度类 实时调度策略 普通调度策略 调度类 sched_class有几种实现&#xff1a; 完全公平调度算法 调度队列与调度实体 调度类是如何工作的&#xff1f; 调度策略与调度类 在Linux里面&#xff0c;进程大概可以分成两种。 一种称为实时进程&#xff0c;…

Redis主从复制+哨兵模式

必读 redis的主从复制是单向的&#xff0c;只能有主节点到从节点&#xff0c;主节点以写为主从节点以读为主不能写入数据&#xff01;因为系统的80%的需求都是读的需求。 redis服务默认自己是主节点&#xff0c;一个主节点由一个或多个从节点&#xff0c;一个从节点只有一个主…

图信号处理论文

图信号处理并且非图神经网络的论文&#xff1a; Donget.al“GraphSignal Processingfor MachineLearning A Review and New Perspectives," ICASSP Tutorial, June 2021. Lorenzoet.al“Adaptiveleast mean squaresestimation ofgraph signals"IEEE Trans. Signal I…

Vue3 学习笔记 —— 破坏式更新、自定义指令 directive

目录 1. 什么叫破坏式更新&#xff1f; 2. Vue3 中的自定义指令 2.1 自定义指令的生命周期 2.1.1 Vue2 Vs Vue3 的自定义指令生命周期 2.1.2 自定义指令的生命周期中&#xff0c;接收的参数 2.2 定义一个自定义指令 2.2.1 在 setup 中定义自定义指令&#xff08;此处为 …

数据结构 树练习题

目录 判断 选择 判断 1.一棵有124个结点的完全二叉树&#xff0c;其 叶结点个数是确定的。 【答案】正确 【解析】完全二叉树 若设二叉树的深度为h 除第 h 层外 其它各层 1&#xff5e;(h-1) 的结点数都达到最大个数(即1~(h-1)层为一个满二叉树) 第 h 层所有的结点都连续集…

【C++】STL

文章目录回调函数&#xff1a;一、STL的诞生二、STL基本概念三、STL六大组件四、STL中容器&#xff0c;算法&#xff0c;迭代器回调函数&#xff1a; 函数被作为参数传递到另一个函数&#xff08;主要函数&#xff09;的那个函数就叫做 回调函数 一、STL的诞生 C的面向对象和…

DHTMLX Diagram JavaScript/HTML5 Pro Library:5.0

Diagram — JavaScript/HTML5 Diagram Library Ω578867473 破解版DHTMLX Diagram comprises a set of interactive HTML5 UI components such as organization charts, flowcharts, decision trees, block diagrams, mind maps, etc. Consisting of nodes and connectors, di…

i.MX 6ULL 驱动开发 二十八:网络设备

一、网络设备的系统框图 MAC&#xff1a;工作在网络模型的数据链路层&#xff0c;通过 RGMII 或 RMII 接口连接 PHY&#xff0c;MAC 控制器中的 MDIO 控制器提供 MDIO 接口&#xff0c;用于访问 PHY 寄存器。 PHY&#xff1a;工作在网络模型的物理层&#xff0c;是 IEEE802.3 …

SVN项目,提交Git保留之前提交记录

&#x1f4c3;目录跳转简介&#xff1a;1.创建文件2.命令下载:3.上传到远程git3.1 创建远程git工程3.2 添加一个新的远程 Git 仓库3.3 拉取远程master的数据合并3.3 推送远程git分支简介&#xff1a; 由于之前直接搞的项目是部署在自己搭建的SVN服务器上&#xff0c;平时创建的…

5. JVM调优工具详解及调优实战(这里有我的实战案例预制构件生产管理平台)

1. Jmap&#xff0c;Jstack&#xff0c;Jinfo命令详解 1.1 Jmap 此命令可以用来查看内存信息&#xff0c;实例个数以及占用内存大小 jps 先查看有哪些java程序 jmap -histo 16492 > ./log.txt jmap -heap 16492 查看堆的信息 查看堆年轻代老年代的使用情况 堆内存dum…

Matlab:tftb-0.2时频工具箱安装小记

Matlab&#xff1a;tftb-0.2时频工具箱安装小记一、安装过程记录1、解压缩&#xff1a;2、将解压缩后的文件夹复制到自己的Matlab安装目录工具箱下&#xff1b;3、打开Matlab设置路径&#xff1a;设置路径4、测试是否安装成功&#xff1a;5、小试牛刀叮嘟&#xff01;这里是小啊…

【ASE+python学习】-批量识别石墨烯团簇结构中的吡啶氮,并删除与其相连的氢

批量识别石墨烯团簇结构中的吡啶氮&#xff0c;并删除与其相连的氢文章背景任务内容程序实现思路实现代码建立标准结构中边缘碳与氢的位置差值标准数据集读入待修改结构&#xff0c;识别氮与氢位置差值是否存在标准数据集代码细节剖析文章背景 在科研工作中&#xff0c;我的工…