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

news/2024/9/20 3:54:16/ 标签: 算法

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

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

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

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

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

具体化这个例子:

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

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

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

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

 

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

 

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

 

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

尝试改变权重因子:

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

滤波器系数的选择:

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

会发现,误差非常大:

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

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

 

 

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

 

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

 

 

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

总结:

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

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


http://www.ppmy.cn/news/1461498.html

相关文章

ICode国际青少年编程竞赛- Python-5级训练场-函数练习2

ICode国际青少年编程竞赛- Python-5级训练场-函数练习2 1、 def get_item(a):Spaceship.step(1)Dev.step(a)Dev.turnLeft()Dev.step(1)Spaceship.step(1)Dev.turnRight()Dev.step(-a)Spaceship.step(1) get_item(3) get_item(2) get_item(3) get_item(1) get_item(5)2、 de…

鸿蒙内核源码分析(VFS篇) | 文件系统和谐共处的基础

基本概念 | 官方定义 VFS(Virtual File System)是文件系统的虚拟层,它不是一个实际的文件系统,而是一个异构文件系统之上的软件粘合层,为用户提供统一的类Unix文件操作接口。由于不同类型的文件系统接口不统一&#x…

HTML常用标签-表单标签

表单标签 1 表单标签2 表单项标签2.1 单行文本框2.2 密码框2.3 单选框2.4 复选框2.5 下拉框2.6 按钮2.7 隐藏域2.8 多行文本框2.9 文件标签 1 表单标签 表单标签,可以实现让用户在界面上输入各种信息并提交的一种标签. 是向服务端发送数据主要的方式之一 form标签,表单标签,其内…

MySQL用SQL取三列中最大的数据值

1、有如下数据: ABC000097.0600330.72330.720069.650027.8827.85086.92086.92219.42219.4219.41 需要展示为如下形式: ABC结果列0000097.06097.060330.72330.72330.7200669.65009.6527.8827.85027.8886.92086.9286.92219.42219.4219.41219.42 解决办…

git仓库使用

git仓库是会限制空间大小限制的 git网络库的容量限制_github仓库大小限制-CSDN博客 git是用于管理github的工具 电脑左下角搜索git打开GitBash.exe 进入到要下载到本地的目录 下载到本地的文件不要更改! 如果要使用请务必把文件复制到别的空间去再在这个别的空间…

Linux基础知识面试题

1. 请描述Linux操作系统的安装过程,并说明其中的关键步骤。 Linux操作系统的安装过程通常涉及以下几个关键步骤: 准备安装介质:需要从官网或者其他可靠来源下载Linux发行版的ISO镜像文件,并制作一个启动U盘或者烧录到DVD中。现在…

C++自定义脚本文件执行

FunctionCall.h&#xff1a; #include <sstream> #include <string> #include <vector> // 函数调用 class FunctionCall { public: FunctionCall(); ~FunctionCall(); std::string call(const st…

Kotlin协程中调度器Dispatchers的介绍

关于Kotlin中协程使用的调度器&#xff08;Dispatchers&#xff09;的介绍 viewLifecycleOwner.lifecycleScope.launch(Dispatchers.IO) {// todo }在 Kotlin 的协程中&#xff0c;Dispatchers 是用于指定协程运行的调度器&#xff08;dispatcher&#xff09;&#xff0c;它决…

Jira Server 不维护了,如何将 Jira 平滑迁移到阿里云云效

作者&#xff1a;天彤 Atlassian 在 2020 年官方发布公告&#xff0c;从 2021 年起停止 Jira Server 产品的销售&#xff0c;并且在 2024 年彻底停止 Server 端产品的服务支持&#xff0c;这对于国内使用 Jira 产品的企业和研发团队造成了不小的影响。而此时国内很多 DevOps 产…

分布式链路追踪 Zipkin+Sleuth(8)

项目的源码地址 Spring Cloud Alibaba 工程搭建&#xff08;1&#xff09; Spring Cloud Alibaba 工程搭建连接数据库&#xff08;2&#xff09; Spring Cloud Alibaba 集成 nacos 以及整合 Ribbon 与 Feign 实现负载调用&#xff08;3&#xff09; Spring Cloud Alibaba Ribbo…

C++:位图和布隆过滤器

一&#xff0c;位图 1.1 位图的概念 究竟什么是位图呢&#xff1f;&#xff1f;我们用一道问题来引入 问题&#xff1a;给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在 这40亿个数中。【腾讯】 根据这个问题&#x…

Flutter 中的 ListTile 小部件:全面指南

Flutter 中的 ListTile 小部件&#xff1a;全面指南 在Flutter中&#xff0c;ListTile是一个用于快速创建列表项的组件&#xff0c;它通常用于ListView中&#xff0c;以展示包含文本、图标、开关、滑块等元素的行。ListTile不仅使得界面看起来美观&#xff0c;而且提供了一种简…

C++ | Leetcode C++题解之第90题子集II

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> t;vector<vector<int>> ans;vector<vector<int>> subsetsWithDup(vector<int> &nums) {sort(nums.begin(), nums.end());int n nums.size();for (int mask …

计算机毕业设计springboot体育馆场地预约管理系统【附源码】

计算机毕业设计springboot体育馆场地预约管理系统[附源码] &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制…

C# winform opencvsharp 识别轮廓。拟合,找到中心点

在C# WinForms项目中使用OpenCvSharp来识别图像中的轮廓并对其进行拟合以找到中心点&#xff0c;你可以遵循以下步骤&#xff1a; 准备工作 安装OpenCvSharp&#xff1a;确保你的项目中已经通过NuGet包管理器安装了OpenCvSharp4&#xff08;或相应的版本&#xff09;。 导入命…

【scikit-learn001】逻辑回归(Logistic Regression)ML模型实战及经验总结(更新中)

1.一直以来想写下基于scikit-learn训练AI算法的系列文章&#xff0c;作为较火的机器学习框架&#xff0c;也是日常项目开发中常用的一款工具&#xff0c;最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下scikit-learn框架逻辑回归&#xff08;Logistic Regr…

海豚调度器如何看工作流是在哪个worker节点执行

用海豚调度器&#xff0c;执行一个工作流时&#xff0c;有时成功&#xff0c;有时失败&#xff0c;怀疑跟worker节点环境配置不一样有关。要怎样看是在哪个worker节点执行&#xff0c;在 海豚调度器 Web UI 中&#xff0c;您可以查看任务实例&#xff0c;里面有一列显示host&a…

队列的讲解

队列的概念 队列:只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头 一端进另一端出 也就是可以做到&#xff0c;先…

windows下mysql5.6下载安装(多实例安装)

目录 1、下载 2、安装步骤 3、mysql多实例安装 1、下载 http://dev.mysql.com/downloads/windows/installer/5.6.html 2、安装步骤 我们采用自定义安装模式&#xff1a;选择32位或64位 默认即可&#xff1a; 说明&#xff0c;如果没有该页面就上一步&#xff0c;选择高级选…

Android ndk获取手机内部存储卡的根目录方法

如下所示&#xff1a; 代码语言&#xff1a;javascript jclass envcls env- FindClass("android/os/Environment"); //获得类引用if (envcls nullptr) return 0;//找到对应的类&#xff0c;该类是静态的返回值是FilejmethodID id env- GetStaticMethodID(envcls,…