算法-卡尔曼滤波之卡尔曼滤波的第二个方程:预测方程(状态外推方程)

在上一节中,使用了静态模型,我们推导出了卡尔曼滤波的状态更新方程,但是在实际情况下,系统都是动态,预测阶段,前后时刻的状态是改变的,此时我们引入预测方程,也叫状态外推方程;

同样的我们通过一个例子来分析,在开始为什么要选择卡尔曼滤波时,提出了一个例子;

在一维空间内使用雷达来追踪匀速飞行的飞行器,此时系统状态为飞行器的航程,速度是相对于时间的变化率,也就是距离的导数;

通过分析飞行器的一维物理模型,可以得到,速度恒定时,航程等于当前时刻的的航程加上时间变化*速度(距离的导数) ;

 得到的动态模型,我们称为状态外推方程或者预测方程;

具体化这个例子:

对于存在问题,我们分析得到两种情况:一个是雷达的误差,另外就是飞行器速度改变了;假设雷达的精度是20m,此时的误差更可能是由于飞行器速度发生了改变,那么此时我们更信任雷达的测试结果,所以我们将系数调高(当系数β=1时,估计值结果=测量值);

 假设雷达的精度是150m,此时的误差更可能是由于雷达误差结果,那么此时我们更信任飞机速度变化,所以我们将系数调低(当系数β=0时,估计值结果=先验估计值);

 具体流程:根据分析,我们设置权重因子,开始第0次迭代,首先依然是初始化,输入估计值,与上一个例子不同是,此时我们是动态模型,预测后,先验估计值与输入值是不同的;

将预测的结果作为输入给到状态更新方程,同时输入测量值,通过状态更新方程计算当前估计值;

 

继续预测下一刻的先验估计值; 

 

不断迭代:最终我们得到结果

 

 我们可以看出,可以看到估计算法对估计结果有平滑作用,并且估计结果趋近真实值。

尝试改变权重因子:

结果并不理,所以滤波器系数的选择是至关重要的;

滤波器系数的选择:

对于这个案例,系统状态为航程情况下,动态改变的除了速度还可能有加速度,例如现在来一架战斗机,它先以50m/s 的恒定速度飞行 15 秒然后以 8 m/s2 的加速度匀加速飞行 35秒。入图显示了目标航程、速度、加速度随时间的变化。此时α-β两个系数将不能满足我们的需求,依然使用该滤波器,分析:

会发现,误差非常大:

 现在使用α-β-Γ滤波器来追踪:

根据动力学分析,此时的系统状态外推方程:

 

 

最终得到结果:航程的拟合还是不错的;

 

 但是速度和加速度的拟合效果并不好:

 

 

 卡尔曼滤波器就可以处理动态情况下的问题;

总结:

卡尔曼滤波的第一个方程:通过先验估计值和对残差的权重求和得到当前估计值;

卡尔曼滤波的第二个方程:通过动态模型,得到状态外推方程,去求得先验估计值;

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

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

相关文章

企业为什么进行大数据迁移以及注意事项

在当今数字化时代,数据的迁移成为了企业优化其数据架构、提高数据处理能力、确保业务连续性和数据安全的关键步骤。企业可能出于多种原因,如成本效益、性能提升、系统升级、数据集中管理或云服务集成等,选择将数据从一个存储系统迁移到另一个…

Spring Boot 整合讯飞星火3.5通过接口Api接口实现聊天功能(首发)复制粘贴即可使用,后续更新WebSocket实现聊天功能

程序员必备网站&#xff1a; 天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 1.pom.xml <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.72</version></dependency><depen…

html5关于WebSocket的一些特点与用例

WebSocket通信机制是一种在单个TCP连接上进行全双工通信的协议&#xff0c;它允许服务器主动向客户端推送数据&#xff0c;而无需等待客户端的请求。以下是WebSocket通信的主要机制&#xff1a; 握手协议&#xff1a;WebSocket通信的第一步是通过HTTP协议进行握手。当客户端发…

C++ QT设计模式:访问者模式

基本概念 访问者模式&#xff08;Visitor Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许你在不改变被访问类的前提下&#xff0c;定义对其进行操作的新操作。 实现的模块有&#xff1a; ObjectStructure&#xff08;对象结构&#xff09;&#xff1a;用于存储…

轻松拿下指针(5)

文章目录 一、回调函数是什么二、qsort使用举例三、qsort函数的模拟实现 一、回调函数是什么 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数的指针&#xff08;地址&#xff09;作为参数传递给另⼀个函数&#xff0c;当这个指针被⽤来调⽤其所指向的函数 时&#x…

计算模型的边界

https://github.com/libigl/libigl.git 这是几何计算库&#xff0c;可以计算出模型的边界 #define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <igl/boundary_loop.h>#include <igl/list_to_matrix.h>int main(){std::vector<std::vector<…

肺部营养“救星”,让每次呼吸更自由

​#肺科营养#朗格力#班古营养#复合营养素#肺部营养# 正常的健康人,每天自由幸福的呼吸。但是对于肺病患者来说,特别是慢阻肺人群,每一次呼吸都可能是一场挑战,每一口气都显得弥足珍贵。 肺病患者号称沉默的“呼吸杀手”,它虽然沉默,但不代表它没能力,除了引起肺功能下降,氧气…

云商店如何让更多企业摘到技术普惠的“果实”?

文 | 智能相对论 作者 | 沈浪 现阶段&#xff0c;越是工业体系发达的地区&#xff0c;越需要加速技术普惠的步伐。比如&#xff0c;在苏州&#xff0c;华为云就在联合当地政府、企业伙伴打造以华为云云商店为重要链接的智能化商业增长底座。 华为云云商店以“电商式”的购物…

Git学习——迁移单一仓库至其他代码托管平台

Git学习——迁移单一仓库至其他代码托管平台 简介流程总结 简介 因需迁移单一代码仓库至其他代码托管平台&#xff0c;要迁移的包括仓库内容以及所有历史记录和推送日志。 本文中的方法同样适用于在同一代码托管平台中克隆仓库。 流程 1. 创建新仓库&#xff1a; 在目的平台…

软件需求规格文档 (SRS) 模版

文章目录 软件需求规格文档 (SRS) - 范例1. 引言1.1 目的1.2 范围1.3 定义、缩写和术语1.4 参考文献1.5 总体描述 2. 系统概述2.1 系统环境2.2 系统功能概述2.3 用户特性2.4 假设与约束 3. 功能需求3.1 用户身份验证模块3.1.1 总体概述3.1.2 具体需求3.1.2.1 登录功能描述3.1.2…

OpenAI春季发布会-免费多模态GPT4O-简介

前言 2024.5.14&#xff0c;OpenAI宣布即将发布一款性能更为强大的大模型GPT4o&#xff0c;虽然没有爆出些超级酷炫无敌吊炸天的新玩意&#xff0c;但是这次的多模态模型&#xff0c;大家可以免费用了~~&#xff08;但是&#xff09; 虽然是免费使用&#xff0c;但官方发布会上…

逆向学习记录--第一天

NSSCTF工坊逆向综合基础第二题 考查知识点&#xff1a;ida的使用与编程能力 wp&#xff1a; 运行一下&#xff0c;没有东西&#xff1b; 查壳是64位&#xff0c;没有壳 直接ida打开 代码解析&#xff1a;输入flag&#xff0c;对flag进行用key进行轮换之后再加12&#xff…

鸿蒙 DevEcoStudio:用户名密码获取保存

【使用首选项实现用户名密码保存获取】 打开src/main/ets/entryability路径下的EntryAbility.ts文件 在 export default class EntryAbility extends UIAbility {onCreate(want, launchParam) {hilog.info(0x0000, testTag, %{public}s, Ability onCreate);下边添加内容&…

C++:左值(引用)右值(引用)

〇、前言 本文会讨论C中的左值&#xff0c;右值&#xff0c;左值引用&#xff0c;右值引用&#xff0c;以及会理清它们之间的关系。 一、左值与右值 &#xff08;一&#xff09;概述 1. 左值是一般指表达式结束后依然存在的持久化对象。右值指表达式结束时就不再存在的临时…

334_C++_std::bind中使用shared_from_this()

std::bind(&HttpClient::getPwd, shared_from_this(), std::placeholders::_1, std::placeholders::_2);[ HttpClient继承自NetObj,NetObj是父类,NetObj受到std::shared_pt

分析 vs2019 c++ 中的 decltype 与 declval

&#xff08;1&#xff09; decltype 可以让推断其参数的类型。按住 ctrl 点击 decltype &#xff0c;会发现无法查阅 其定义 &#xff1a; &#xff08;2&#xff09; 但 STL 库里咱们可以查阅函数 declval 的 定义&#xff0c;很短&#xff0c;摘抄如下&#xff1a; templat…

【氮化镓】高温GaN HEMTs大信号模型——ASM-HEMT

这篇文章的标题是《An ASM-HEMT for Large-Signal Modeling of GaN HEMTs in High-Temperature Applications》&#xff0c;由Nicholas C. Miller等人撰写&#xff0c;发表于2023年9月29日。文章的主要内容是关于一种适用于高温应用的GaN HEMTs&#xff08;高电子迁移率晶体管&…

Java 高级面试问题及答案1

Java 高级面试问题及答案 问题1: 请解释Java中的垃圾回收机制&#xff0c;并描述其工作原理。 答案&#xff1a; Java中的垃圾回收&#xff08;Garbage Collection, GC&#xff09;是一种自动内存管理机制&#xff0c;用于识别和回收不再使用的对象&#xff0c;从而释放内存资…

使用System.Drawing绘制基本几何图形

1.使用System.Drawing绘制一个正方形 using System; using System.Drawing; using System.Windows.Forms;public partial class MyForm : Form {public MyForm(){// 你可以在这里设置Form的双缓冲&#xff0c;以避免绘制时出现的闪烁 this.DoubleBuffered true;}protected o…

LeetCode 每日一题 ---- 【1553.吃掉 N 个橘子的最少天数】

LeetCode 每日一题 ---- 【1553.吃掉 N 个橘子的最少天数】 1553.吃掉N个橘子的最少天数方法&#xff1a;记忆化搜索 1553.吃掉N个橘子的最少天数 方法&#xff1a;记忆化搜索 前两天给树浇水&#xff0c;原来浇的是橘子树哇 今天直接来了个大的【困难】 class Solution {Ma…