卡尔曼滤波简单实例分析

1 现实问题

假设一个物体位于1000米处以自由落体运动,底面有一台具有特殊功能的雷达,对其进行观察,现需要对其下落的高度进行测量;
(1)建模
速度:V = gt
位置:Y = -V
t + Y0
(2)转化为状态空间方程

2 算法实现

import numpy as np
import matplotlib.pyplot as plt
"""
速度:V = g*t 
位置:Y = -V*t + Y0"""
y0 = 1000.0
DT = 0.1
g = 9.8
SIM_TIME = 50.0  GPS_NOISE = np.diag([1, 1]) ** 2
A = np.array([[1.0, 0.0],[-DT, 1.0]])H = np.array([[1.0, 0.0],[0.0, 1.0]])Q = np.diag([1.0, 1.0]) ** 2  
R = np.diag([1.0, 1.0]) ** 2  def motion_model(x):#A = np.array([[1.0, 0.0],#              [-DT, 1.0]])x = A.dot(x)return xdef observation_model(x):#H = np.array([[1.0, 0.0],#             [0.0, 1.0]])z = H.dot(x)return zdef observation(xtrue):xTrue = motion_model(xtrue)z = motion_model(xTrue) + GPS_NOISE @ np.random.randn(2, 1)return xTrue,zdef kalman_filter(xEst, PEst, z):#  Predict xPred =  motion_model(xEst)PPred = A @ PEst @ A.T#  UpdatezPred = observation_model(xPred)y = z - zPredS = H @ PPred @ H.T + RK = PPred @ H.T @ np.linalg.inv(S)xEst = xPred + K @ yPEst = (np.eye(len(xEst)) - K @ H) @ PPredreturn xEst, PEsttime=0x_array = []    
y_array = []
z_array = []
k_array = []xEst = np.zeros((2, 1))
PEst = np.eye(2)
xTrue = np.array([[g*DT],[y0]])
xEst[0]=g*DT 
xEst[1]=y0   
while SIM_TIME >= time:xTrue, z = observation(xTrue)xEst, PEst = kalman_filter(xEst, PEst,z)z_array.append(z[1])y_array.append(xTrue[1])k_array.append(xEst[1])x_array.append(time)time += DTplt.plot(x_array,y_array,'g')
plt.plot(x_array,z_array,'r')
plt.plot(x_array,k_array,'b')
plt.show() 

3 实验结果

在这里插入图片描述

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

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

相关文章

ES6: 模版字符串

前言: ES5 中我们表示字符串的时候使用 或者 "" 作用: 在 ES6 中,我们还有一个东西可以表示字符串,就是 (反引号) let str hello worldconsole.log(typeof str) // string和单引号还有双引号的区别: 反引号可以换行…

Android 应用层 到 HAL 层

Android 应用层 到 HAL 层 1、相关知识点1.1 概要1.2 参考 2、拿SensorService举例2.1 Android Apps > Android Framework阶段2.2 Android Framework内部阶段2.2.1 frameworks/base2.2.2 frameworks/native 2.3 Android Framework > HAL 阶段2.3.1 旧版 HAL 1、相关知识点…

Python爬虫——怎么搭建和维护一个本地IP池

目录 背景 一、什么是本地代理IP池 二、代理IP池功能架构图 三、各个组件功能说明及示例代码 1. IP池管理器 2. 代理IP获取器 3. IP质量检测器 4、数据存储器 5、API接口层 6、应用程序 总结 背景 在我们进行爬虫工作时,经常需要使用代理IP。大多数代理…

计网笔记--网络层

1--网络层概述 网络层主要问题: ① 网络层向运输层提供怎样的服务? (可靠或不可靠) ② 网络层寻址问题(IP 地址) ③ 路由选择问题 (路径) 重点在于:TCP/IP协议栈 2--网络…

Pygame Zero(pgzrun)游戏库介绍

Pygame Zero(pgzrun)游戏库介绍 pgzero是python的一个第三方库。pgzrun 是 python game zero run 的缩写, 它对 Pygame 进行了封装, 屏蔽了繁琐枯燥的框架代码, 让学习者可以更专注于游戏的实现逻辑, 并且更快看到成果。 官网https://pygame-zero.read…

ASP.Net Core Web API快速搭建后台服务搭载SQLServer+FreeSQL(一)

目录 一.建立WebAPI所需要的环境 1. IDE编辑器:VisualStudio2019 2.数据库安装:SqlServer 3.下载SQL Server Management Studio (SSMS) 二.创建ASP.Net Core Web API工程 1.创建模板工程 2. 试运行案例接口 3.安装FreeSQL工具包 三.设计数据库 启…

【MySQL】不允许你不了解联结表

🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集! 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指…

“生鲜蔬”APP的设计与实现

1.引言 在这个科技与网络齐头并进的时代,外卖服务正在飞速发展,人们对外卖APP系统功能需求越来越多,开发APP的人员对自己的要求也要越来越高,要从所做APP外卖系统所实现的功能和用户的需求来对系统进行设计,还需要与当…

python3开发-Word助手

目录 背景 思路 步骤 代码示例 总结 背景 在日常工作和学习中,我们经常需要处理Word文档,例如编辑、提取内容、生成报告等。而Python是一门功能强大的编程语言,它提供了丰富的库和工具,使得我们可以利用Python来处理Word文档…

Git无法上传删除 Commit里面有大文件

1.Bug描述 因为在一次提交中不小心把一个打包的aab文件弄到commit文件里了,于是在上传的时候push rejected 了。 因为GitHub的文件上限是100M,但是打的包太大了,有170M,所以是不能上传的,但是又是已经在Commit历史中了…

从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史

Bert最近很火,应该是最近最火爆的AI进展,网上的评价很高,那么Bert值得这么高的评价吗?我个人判断是值得。那为什么会有这么高的评价呢?是因为它有重大的理论或者模型创新吗?其实并没有,从模型创新角度看一般,创新不算大。但是架不住效果太好了,基本刷新了很多NLP的任务…

Postman中读取外部文件

目录 前言: 一、postman中读取外部文件的格式 二、Postman中如何导入文件 三、在Postman读取导入的数据文件 前言: 在Postman中,您可以使用"数据文件"功能来读取外部文件,如CSV、JSON或Excel文件。这使得在测试中使用…