matlab稳态和时变卡尔曼滤波器Kalman filter的设计和仿真植物动力学模型案例研究

2023-05-16

最近我们被客户要求撰写关于卡尔曼滤波器的研究报告,包括一些图形和统计输出。

本案例研究说明了卡尔曼滤波器的设计和仿真。考虑稳态和时变卡尔曼滤波器。

植物动力学

考虑一个在输入u[n]上有加性高斯噪声w[n]。

此外,让 yv[n] 是输出 y[n] 的噪声测量,其中 v[n] 表示测量噪声:

离散卡尔曼滤波器

该问题的稳态卡尔曼滤波器方程如下。

  • 测量更新:

  • 时间更新:

在这些方程中:

  • ˆx[nn−1] 是 x[n] 的估计值,给定过去直到 yv[n−1] 的测量值。

  • ˆx[nn] 是基于最后一次测量 yv[n] 的更新估计。

给定当前估计 ˆx[nn],时间更新预测下一个样本n  + 1的状态值 (提前一步预测)。然后,测量更新基于新的测量值 yv[n+1] 调整该预测。修正项是新值的函数,即 y[n+1] 的测量值和预测值之间的差异。这种差异由下式给出:

给定噪声协方差,选择创新增益 M 以最小化估计误差的稳态协方差:

您可以将时间和测量更新方程组合到一个状态空间模型中,即卡尔曼滤波器:

该滤波器生成 yn 的最佳估计 ˆy[nn]。请注意,过滤器状态是 ˆx[nn−1]。

稳态设计

您可以使用函数 设计上述稳态卡尔曼滤波器 kalman。首先指定带有过程噪声的工厂模型:

这里,第一个表达式是状态方程,第二个是测量方程。

以下命令指定此工厂模型。采样时间设置为 -1,以将模型标记为离散模型而不指定采样时间。

Pla = s

假设 Q  =  R  = 1,设计离散卡尔曼滤波器。

kalm

此命令返回kalmf 滤波器的状态空间模型 以及创新增益 M

M

kalmf 的输入 是 u 和 yv,以及。输出是工厂输出和状态估计,ye=ˆy[nn] 和 ˆx[nn]。

因为您对输出估计 ye 感兴趣,所以选择第一个输出 kalmf 并丢弃其余的。

kalmf

要查看滤波器的工作原理,请生成一些输入数据和随机噪声,并将滤波后的因变量 ye 与真实因变量 y 进行比较。您可以单独生成每个因变量,也可以同时生成两者。要分别模拟每个因变量,先单独使用 植物,然后将植物和过滤器连接在一起。接下来详细介绍联合仿真替代方案。

下面的框图显示了如何生成真实输出和过滤输出。

您可以使用函数和 构建此框图的状态空间模型 。首先构建一个完整的工厂模型,以 u、  w、  v 作为输入,  y 和 yv(测量值)作为输出。

s(a,b,c,d,-1,'iptnme',{'u' 'w' 'v'},'ouutnae',{'y' 'yv'});

然后形成下图的并联。

pal(P,kf,1,1,[],[]);

最后,通过将设备输出 yv 连接到具有正反馈的过滤输入 yv 来关闭传感器回路。

Smoe = feedback; % 围绕输入#4和输出#2关闭循环
SiMe = SMdl % 从I/O列表中删除yv

生成的仿真模型将 w、  v、  u 作为输入,  y 和 ye 作为输出。查看属性进行验证。

InuNe


OupNme

 

您现在已准备好模拟过滤器。生成正弦输入 u 并处理和测量噪声向量 w 和 v

n = length
w = sqrt*randn
v = sqrt*randn

模拟因变量。

[out,x] = lsim

y = out; % 真实响应
ye = out; % 滤过的响应
yv = y + v; % 测量响应

以图形方式比较真实和过滤后的因变量。

plot
xlabel
title
subplot
xlabel

第一个图显示了真实因变量 y  (虚线)和过滤后的输出 ye(实线)。第二个图将测量误差(点划线)与估计误差(实线)进行比较。该图显示噪音水平已显着降低。这是通过计算协方差误差来确认的。滤波前的误差协方差(测量误差)为:

MEro = sum/length

滤波后的误差协方差(估计误差)降低:

EsrCv = sum/length

时变卡尔曼滤波器

时变卡尔曼滤波器是对时变系统或具有非平稳噪声协方差的 LTI 系统的稳态滤波器的推广。

考虑以下工厂状态和测量方程。

时变卡尔曼滤波器由以下递归给出:

  • 测量更新:

  • 时间更新:

这里,ˆx[nn−1] 和 ˆx[nn] 如前所述。此外:

为简单起见,表示状态空间矩阵的时间依赖性的下标已被删除。

给定初始条件 x[10] 和 P[10],您可以迭代这些方程来执行过滤。您必须在每个时间样本更新状态估计 x[n.] 和误差协方差矩阵 P[n.]。

时变设计

要实现这些滤波器递归,首先要生成噪声输出测量值。使用 之前产生的过程噪声 w 和测量噪声 v

y = lsim

假设以下初始条件:

for 循环实现时变滤波器 。

P = B*Q*B'; %初始误差协方差
x = zeros; % 状态的初始条件

for i = 1:length
  % 测量更新
  erv(i) = C*P*C';

  % 时间更新
  x = A*x + B*u; 

以图形方式比较真实输出和估计输出。

subplot(211)

subplot
xlabel

第一个图显示了真实因变量 y  (虚线)和过滤后的因变量 ye(实线)。第二个图将测量误差(点划线)与估计误差(实线)进行比较。

时变滤波器还估计errcov 每个样本的估计误差 y-ye的协方差 。绘制它以查看您的滤波器是否达到稳定状态(正如您对固定输入噪声所期望的那样)。

subplot(211)
plot

从这个协方差图中,您可以看到输出协方差确实在大约五个样本中达到了稳定状态。从那时起,您的时变滤波器具有与稳态版本相同的性能。

与由实验数据导出的估计误差协方差比较:

Esro = sum/length

该值小于理论值 errcov ,接近稳态设计获得的值。

最后,注意最终值 M[n] 和 创新增益矩阵的稳态值 M重合。

Mn

M

 


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matlab稳态和时变卡尔曼滤波器Kalman filter的设计和仿真植物动力学模型案例研究 的相关文章

  • ROS std_msgs/Header 数据含义

    std msgs Header msg消息里数据主要有一下几部分 xff1a uint32 seq time stamp string frame id 分别对这些数据做一个介绍 xff0c 如有错误 xff0c 欢迎批评指正 xff01
  • Carsim中添加路径

    目录 1 新建3D Road 数据库2 设置具体参数3 添加自定义道路信息 利用carsim和simulink联合仿真时 xff0c 需要给定参考轨迹 xff0c 具体设置如下 xff1a 1 新建3D Road 数据库 在Miscella
  • Carsim 2019 Run Now 按钮灰色

    安装carsim后 xff0c Run control with Simulink 模块中的Run Now 和Send to simulink 按钮灰色如下图所示 xff1a 解决办法 xff1a 在License Setting中 xff
  • Ubuntu 添加串口权限

    ubuntu串口添加权限方法 Ubuntu 添加串口权限前言一 添加用户组 xff0c 可长期使用二 给当前终端权限 xff08 单次有效 xff09 1 指定串口2 通用 三 修改文件 Ubuntu 添加串口权限 提示 xff1a 文章写
  • Ubuntu 虚拟机右上角网络连接符号消失

    这里写自定义目录标题 Ubuntu 虚拟机右上角网络连接符号消失解决方案 xff1a Ubuntu 虚拟机右上角网络连接符号消失 Ubuntu 虚拟机右上角网络连接符号消失 xff0c 如下图所示 解决方案 xff1a span class
  • C/C++中局部变量static用法实例

    1 普通局部变量存储于进程栈空间 xff0c 使用完毕会立即释放 xff0c 静态局部变量使用static修饰符定义 xff0c 即使在声明时未赋初值 xff0c 编译器也会把它初始化为0 xff0c 并且静态局部变量存储于进程的全局数据区
  • 嵌入式C语言经典面试题(一)

    1 用预处理指令 define 声明一个常数 xff0c 用以表明1年中有多少秒 xff08 忽略闰年问题 xff09 define SECONDS PER YEAR 60 60 24 365 UL 我在这想看到几件事情 xff1a 1 d
  • 更新Ubuntu内核到最新版本

    想起自己多年前玩Linux的时候知道了两个命令 xff1a sudo apt get update sudo apt get upgrade 以为是能够更新所有软件的 xff0c 后来发现 系统还是不能够更新的 那么 xff0c 系统应该如
  • RK3308 按键Key与LED灯

    硬件原理图 LED指示灯 麦克风阵列子板上使用12颗RGB灯作为效果指示灯 用户可以通过I2C总线配置LED灯驱动IC来是实现不同场景下的灯效 按键Key 麦克风阵列子板上集成五个控制按键 xff0c 分别为 xff1a 控制音量增减的VO
  • if选择结构

    if单选择结构 if双选择结构 if多选择结构 span class token keyword if span span class token punctuation span score span class token operat
  • Windows10下Eclipse+Python环境配置与新项目创建

    最近心血来潮 xff0c 突然想学一下python xff0c 按理说应该不用Eclipse xff0c 但是一想以后还可能会用Java xff0c 那还是装这个 xff0c 然后配置一下环境吧 xff0c 其中也有很多坑 xff0c 希望
  • 理解地址空间和逻辑地址生成

    1 1 地址空间 物理地址 xff1a 硬件 例如内存条 所支持地址空间 xff0c 地址空间的管理由硬件完成 逻辑地址 虚拟地址 xff1a 运行地址所看到的地址空间 xff0c 地址空间是一维的 xff0c 应用程序更加容易访问和管理
  • QT DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x800c000d ()

    使用QT播放音频的时候出现如下错误 DirectShowPlayerService doSetUrlSource Unresolved error code 0x800c000d 原因是url错误
  • 3种蓝牙架构实现方案(蓝牙协议栈方案)

    导言 不同的蓝牙架构可以用在不同的场景中 从而协议帧的架构方案也会不同 转载自 xff1a https www cnblogs com schips p 12293141 html 三种蓝牙架构实现方案 xff08 蓝牙协议栈方案 xff0
  • 驱动遍历句柄表

    xfeff xfeff 驱动遍历句柄表附加第二个方法的反汇编代码 其中还有对其拦截的方式的一些需要HOOK处比如伪造句柄表 因为大量使用硬编码所以此份代码通用性不强一切均在虚拟机XP3下操作 include 34 ntddk h 34 ty
  • Javascript案例:猜数字游戏

    要求 程序随机生成一个1 10之间的数字 xff0c 并让用户输入一个数字 如果大于该数字 xff0c 就提示 xff0c 数字大了 xff0c 继续猜如果小于该数字 xff0c 就提示 xff0c 数字小了 xff0c 继续猜如果等于该数
  • 操作系统之进程 (五) --- 进程、进程实体、PCB...

    文章目录 进程什么叫进程什么叫进程实体进程与进程实体的关系PCB的存储信息与分类 进程的组织方式链接方式索引方式 进程的特征总结感谢 进程 什么叫进程 进程和程序差不多 xff0c 他们有所联系也有所区别 我们以我们熟悉的程序入手 xff0
  • 如何让树莓派默认启动进入图形界面

    设置Raspbian图形启动 当你第一次安装Raspbian系统时 xff0c 确实有一些选项需要你来配置 xff0c 由于匆忙 xff0c 我没有注意到这些 xff0c 只是快速完成屏幕上的选项 如果你遇到了和我一样的情况 xff0c 最
  • ROS与stm32通信

    0 概述 ros和stm32等嵌入式单片机的最大区别在于ros主要用于处理slam 机器视觉 人工智能这种对于算力要求高 xff0c 算法复杂的问题 xff1b 而stm32和arduino等主要用来处理一些边缘事件 xff0c 比如亮个L
  • 硬件仪器的使用

    示波器的使用 用于红外捕捉 xff0c 一开始可以把探头扣在探头补偿的位置 xff0c 显示出一个正常的方波信号5V 1KHz 按下CH1的菜单 xff0c 能够弹出右边的选项 xff0c 注意设置为直流和10X电压 按下触发处的Menu菜

随机推荐

  • pytorch显存越来越多的一个潜在原因-- 这个函数还没有在torch.cuda.Tensor中定义

    最近在用pytorch跑实验 xff0c 有如下操作需要用到 xff08 pytorch版本为0 3 1 xff09 class SpatialFilter nn Module def init self mode 61 True sf r
  • KPI异常检测【一】- 时间序列分解算法

    目录 1 相关概念 2 常见的时间序列 3 时间序列分解 3 1 方法介绍 3 2 经典方法 3 3 Holt Winter 指数平滑 3 4 STL分解 4 异常准则 5 异常检测算法 1 相关概念 1 1 异常 时序异常检测通常形式化为
  • KPI异常检测【三】- 机器学习算法

    目录 1 相关概念 1 1 异常类型 1 2 检测方法 2 点异常检测算法 2 1 基于统计 2 2 基于相似度 2 2 1 基于距离 2 2 2 基于密度 2 2 3 基于聚类 2 2 4 基于树 2 3 基于谱 spectral 3 上
  • 手把手教你如何安装ROS+Gazebo+PX4开发环境(ubuntu18.04 + Melodic)

    参考PX4官网 xff0c 做如下总结 xff1a 1 安装 Ubuntu 43 ROS 步骤省略 xff0c 提前配置好梯子 xff0c 很多安装问题都是网络原因引起的 2 下载并安装PX4源码 git clone https githu
  • ROS+Gazebo+PX4仿真步骤

    本文参考链接 xff1a 入门教程 PX4 Gazebo仿真 知乎 zhihu com 1 参照上一个帖子 手把手教你如何安装ROS 43 Gazebo 43 PX4开发环境 xff08 ubuntu18 04 43 Melodic xff
  • ROS+Gazabo+PX4仿真学习常用网站记录

    1 PX4官网 xff1a PX4 User Guide 中文网站 xff1a https docs px4 io master zh ros mavros custom messages html 2 ROS Wiki xff1a cn
  • 如何订阅(Subscribe)现有功能包节点的话题,介绍实现思路

    我们从github或其他途径获取到的ROS功能包 xff0c 如何快速的加入到自己的工程里边 xff0c 下边介绍一下我实现的思路 1 首先运行功能包 xff0c 利用 rqt graph 命令查看 节点图 xff0c 对功能包的节点和话题
  • PX4仿真时,如何在Gazebo下添加物理环境

    1 安装Gazebo xff0c 步骤略 2 下载安装Gazebo需要的世界模型 xff0c 否则自动安装速度很慢 3 在Ubuntu终端里输入 gazebo xff0c 打开一个空的 Gazebo 界面 4 点击左上方的 insert x
  • 树莓派如何使用串口,树莓派连接pixhawk

    参考链接 xff1a xff08 写的非常详细 xff0c 下述方法亲测有效 xff09 pi 3 How do I make serial work on the Raspberry Pi3 PiZeroW Pi4 or later mo
  • 树莓派备份系统

    使用 rpi backup 脚本进行备份 首先下载该脚本 xff1a git clone https github com nanhantianyi rpi backup git cd rpi backup 用法 xff1a sudo ba
  • Linux和Windows可执行文件的区分

    一些后缀区分 现在PC平台流行的可执行文件格式 xff08 Executable xff09 xff0c 主要有以下两种格式 xff08 COFF xff08 Common file format xff09 格式的变种 xff09 xff
  • 树莓派+ubuntu18.04+ROS-melodic+MAVROS+librealsense+vio+realsense_ros

    目录 一 树莓派安装ubuntu18 04 1 下载ubuntu系统文件 2 将系统文件烧入SD卡 3 强制修改HDMI输出分辨率 xff08 此步骤可忽略 xff09 4 设置wifi xff08 此步骤也可忽略 xff0c 后续连接网线
  • APM+Gazebo 垂起固定翼VTOL软件在环仿真

    APM 43 Gazebo 垂起固定翼VTOL软件在环仿真 1 APM软件环境下载并安装APM固件加入环境变量 2 运行APM仿真3 Gazebo环境安装4 增加VTOL模型5 多机仿真6 使用mavros 1 APM软件环境 参考官网链接
  • 进程间通信的五种方式

    进程间通信的意思就是在不同进程之间传递信息 它是一组编程接口 xff0c 让程序员协调不同进程 xff0c 使能够相互传递消息 IPC目的 1 xff09 数据传输 xff1a 一个进程需要将它的数据发送给另一个进程 xff0c 发送的数据
  • Arduino采集Microzone遥控器信号(ROSMicrozoneBridge)

    关注微信公众号 混沌无形 xff0c 后台回复 xff1a 13462F6 免费获取完整工程源码 xff01 本文采用Arduino mega2560的6个外部中断来采集Microzone接收机的6个通道的PPM信号 xff0c 主要是测量
  • 路径规划之基于优化的规划算法

    关注同名微信公众号 混沌无形 xff0c 阅读更多有趣好文 xff01 原文链接 xff1a 机器人曲线插值拟合算法研究现状简述 xff08 包含原文PDF百度云下载链接 xff09 第三类算法是主要是将多目标多变量多约束耦合的规划模型转化
  • 常见移动机器人多角度对比分析

    混沌无形 混沌系统是世界本质 xff0c 无形之中存在规律 机器人智能化发展从线性过渡到混沌 xff0c 本号将分享机器人全栈技术 xff08 感知 规划 控制 xff1b 软件 机械 硬件等 xff09 43篇原创内容 公众号 文末提供原
  • 麦克纳姆轮运动特性分析

    混沌无形 混沌系统是世界本质 xff0c 无形之中存在规律 机器人智能化发展从线性过渡到混沌 xff0c 本号将分享机器人全栈技术 xff08 感知 规划 控制 xff1b 软件 机械 硬件等 xff09 43篇原创内容 公众号 文末提供原
  • 全向轮运动特性分析

    文末提供原文PDF免费下载 期刊论文版式 混沌无形 混沌系统是世界本质 xff0c 无形之中存在规律 机器人智能化发展从线性过渡到混沌 xff0c 本号将分享机器人全栈技术 xff08 感知 规划 控制 xff1b 软件 机械 硬件等 xf
  • matlab稳态和时变卡尔曼滤波器Kalman filter的设计和仿真植物动力学模型案例研究

    最近我们被客户要求撰写关于卡尔曼滤波器的研究报告 xff0c 包括一些图形和统计输出 本案例研究说明了卡尔曼滤波器的设计和仿真 考虑稳态和时变卡尔曼滤波器 植物动力学 考虑一个在输入u n 上有加性高斯噪声w n 此外 xff0c 让 yv