当前位置: 首页 > news >正文

使用Simulink基于模型设计(三):建模并验证系统

  1. 可以对系统结构中的每个组件进行建模,以表示该组件的物理行为或功能行为。通过使用测试数据对组件进行仿真,以验证它们的基本行为。

打开系统布局

对各个组件进行建模时,需要从大局上把握整个系统布局。首先加载布局模型。这里以simulink自带的示例模型为例,在 MATLAB命令行中,输入:

open_system('system_layout.slx')

打开模型。

对组件进行建模

包含一个组件的 Simulink模型基于以下几点:

  • 物理组件的输出和输入之间的显式数学关系 - 您可以根据组件的输入通过代数计算和微分方程积分,直接或间接计算出组件的输出。例如,按照给定的进水速率计算水箱中的水位就是一种显式关系。每个 Simulink 模块基于从输入到输出的计算定义来执行。
  • 物理组件的模型变量之间的隐式数学关系 - 由于变量之间相互依赖,因此为组件指定输入和输出并不容易。例如,电路中连接的电机的 + 极电压和 - 极电压之间就存在一种隐式关系。要在 Simulink 中对这种关系进行建模,您可以使用 Simscape 等物理建模工具,也可以将这些变量建模为允许定义输入/输出的更大组件的一部分。有时候,更仔细地审视建模目的和组件定义有助于定义输入/输出关系。
  • 从实际系统获得的数据 - 您已经测得实际组件的输入/输出数据,但不存在完全定义的数学关系。许多设备具有符合此描述的未建模组件。例如,电视机散发的热量。
  • 显式功能定义 - 您可以根据功能组件的输入通过代数计算和逻辑计算来定义功能组件的输出。例如,调温器的开关逻辑。您可以将大多数功能关系建模为 Simulink 模块和子系统。
对物理组件进行建模

描述组件之间的关系,例如数据、能量和力的传递。在 Simulink 中使用系统方程构建系统的图形化模型。

为组件建模之前,需要思考以下问题:

  • 每个组件的常量是什么?什么值不会更改,除非您更改它们?
  • 每个组件的变量是什么?什么值会随着时间而更改?
  • 一个组件有多少个状态变量?

根据科学原理推导出每个组件的方程。许多系统方程不外乎以下三种类别:

  • 对于连续系统,微分方程描述变量的变化率,为所有时间值都定义方程。例如,一阶微分方程给出车速:

dv(t)dt=−bmv(t)+u(t)

  • 对于离散系统,差分方程描述变量的变化率,但只在特定时间定义方程。例如,来自离散比例微分控制器的控制信号:

pd[n]=(e[n]−e[n−1])Kd+e[n]Kp

  • 没有导数的方程是代数方程。例如,用代数方程表示包含两个组件的并联电路中的总电流:

It=Ia+Ib

轮子和线性运动.  作用在轮子上的力有两个:

  • 电机施加的力 - 此力 F 作用在速度变化的方向上,是轮子子系统的输入。
  • 阻力 - 此力 Fdrag 作用在速度变化的相反方向上,是速度的函数。

Fdrag=kdragVV

加速度与这两个力之和成正比:

(m/2)˙V(m/2)˙V˙V=FFdrag=FkdragVV∣=FkdragVV∣(m/2)

其中 kdrag 是阻力系数,m 是机器人的质量。每个轮子承载机器人一半的质量。

构建轮子模型:

  1. 在 system_layout 模型中,双击 Right Wheel 子系统以显示空子系统。
  2. 对速度和加速度进行建模。添加一个 Integrator 模块。将初始条件设置保留为 0。此模块的输入是加速度 Vdot,输出是速度 V。
  3. 对阻力进行建模。从 User-Defined Functions 库中添加一个 MATLAB Function 模块。MATLAB Function 模块提供一种在模型中实现数学表达式的快速方法。要编辑函数,请双击该模块以打开 MATLAB® Function 编辑器。
  4. 在函数编辑器中,输入以下内容:

function Fdrag=get_fdrag(V,k_drag)

Fdrag=k_drag*V*abs(V);

5. 定义 MATLAB Function 模块的参数。在 MATLAB Function 模块编辑器中,点击编辑数据 

 按钮。点击 k_drag,将作用域设置为参数并点击应用

6. 用 Subtract 模块从电机的作用力中减去阻力。使用带有参数 1/(m/2) 的 Gain 模块完成力-加速度方程。

7. 要反转 MATLAB Function 模块的方向,请选择该模块。在工具条的格式选项卡上,点击左右翻转 。连接这些模块。

10. 这两个轮子的动态特性相同。复制您刚刚建模的 Right Wheel 子系统,并将其粘贴到 Left Wheel 子系统中。

11. 查看模型的顶层。点击向上导航到父级按钮 

旋转运动.   当两个轮子沿相反方向转动时,它们沿半径为 r 的圆周运动,从而产生机器人的旋转运动。当这些轮子向相同方向转动时,没有旋转。假设轮子的速度大小始终相等,则可将旋转运动视为两个轮子速度 VR 与 VL 之差的因变量来对其进行建模:

˙θ=VRVL2r

构建 Rotation Dynamics 模型:

  1. 在 system_layout 模型的顶层,双击 Rotation 子系统以显示空子系统。删除 Inport 和 Outport 模块之间的连接。
  2. 对角速度和角度进行建模。添加一个 Integrator 模块。将初始条件设置保留为 0。此模块的输出是角度 theta,输入是角速度 theta_dot。
  3. 根据切向速度计算角速度。添加带有参数 1/(2*r) 的 Gain 模块。
  4. 连接这些模块。

   5. 查看模型的顶层。点击向上导航到父级按钮 

对功能组件进行建模

通过一个函数从输入到输出的整个过程来描述功能。此描述可以包含代数方程和逻辑构造,您可以使用它们在 Simulink 中构建系统的图形化模型。

坐标变换.  机器人在 X 坐标和 Y 坐标上的速度 VX 和 VY 与线性速度 VN 和角度 theta 相关:

VX=VNcos(θ)VY=VNsin(θ)

构建坐标变换模型:

  1. 在 system_layout 模型的顶层,双击 Coordinate Transform 子系统以显示空子系统。
  2. 对三角函数进行建模。从 Math Operations 库中添加一个 SinCos 模块。
  3. 对乘法进行建模。从 Math Operations 库中添加两个 Product 模块。
  4. 连接这些模块。

5. 查看模型的顶层。点击向上导航到父级按钮 

设置模型参数

模型参数值的来源可以是:

  • 书面规范,如标准属性表或制造商的数据表
  • 直接测量现有系统所得的测量值
  • 基于系统输入/输出的估计值

此模型使用以下参数:

参数

符号

质量

m

2.5 kg

滚阻

k_drag

30 Ns2/m

机器人半径

r

0.15 m

Simulink 使用 MATLAB 工作区来计算参数。可在 MATLAB 命令行窗口中设置这些参数:

m = 2.5;
k_drag = 30;
r = 0.15;

通过仿真来验证组件

通过提供输入并观察输出来验证组件。即使这样简单的验证也能指出改进模型的直接方法。此示例验证以下行为:

  • 当向轮子连续施加力时,速度会增加,直到达到稳定状态的速度为止。
  • 当两个轮子向相反方向转动时,旋转角度以恒定速率增加。
验证轮子组件

为轮子组件创建并运行测试模型:

  1. 创建一个新模型。在仿真选项卡中,点击新建 ​​​​​​​。将 Right Wheel 模块复制到新模型中。
  2. 创建一个测试输入。从 Sources 库中添加一个 Step 模块,并将其连接到 Right Wheel 模块的输入端口。将步长时间参数设置保留为 1
  3. 在输出端口添加一个查看器。右键点击 Right Wheel 模块的输出端口,然后选择创建并连接查看器 > Simulink > Scope

5. 运行仿真。在仿真选项卡中,点击运行 ​​​​​​​

仿真结果表现出大致的预期行为。在步长时间处施加力之前,没有运动。施加力后,速度开始增加,当施加的力和阻力达到平衡后,速度将保持稳定。除验证外,此仿真还提供了在给定的作用力下轮子的最大速度信息。

验证旋转组件

为旋转组件创建并运行测试模型:

  1. 创建一个新模型。点击 ​​​​​​​,将 Rotation 模块复制到新模型中。
  2. 在新模型中创建测试输入。从 Sources 库中添加一个 Step 模块。将步长时间参数设置保留为 1。将其连接到 Rotation 模块的输入端口。此输入表示当两个轮子沿相反方向旋转时的轮子速度之差。
  3. 在输出端口添加一个查看器。右键点击 Rotation 模块的输出端口,然后选择创建并连接查看器 > Simulink > Scope

4. 运行仿真。在仿真选项卡中,点击运行 ​​​​​​​

此仿真显示,当两个轮子以相同速度向相反方向转动时,角度会稳定增加。您可以对模型进行一些改进,以便更容易解释角度输出,例如:

  • 您可以将弧度输出转换为角度。添加增益为 180/pi 的 Gain 模块。
  • 您可以按 360 度为一圈显示角度输出。添加带有函数 mod 的 Math Function 模块。

MATLAB 三角函数采用弧度输入。

验证模型

验证单个组件后,您可以对整个模型进行类似的验证。此示例验证以下行为:

  • 当沿相同方向对两个轮子施加相同的力时,机器人沿直线运动。
  • 当沿相反方向对两个轮子施加相同的力时,机器人原地旋转。
  1. 在 system_layout 模型中,双击 Inputs 子系统以显示空子系统。
  2. 通过添加 Step 模块创建测试输入。将步长时间参数设置保留为 1。将其连接到两个 Outport 模块上。

3. 在模型的顶层,将两个输出信号连接到同一个波形查看器:

4. 运行模型。

在上图中,黄线是 X 方向,蓝线是 Y 方向。由于角度为零并且保持不变,因此机器人只在 X 方向上移动,跟预期一样。

5. 双击 Inputs 子系统,在信源和第二个输出之间添加具有参数 -1 的 Gain 模块。这将反转左轮的方向。

6. 为角度输出添加一个示波器。

7. 运行模型。

第一个视图显示 X-Y 平面上没有运动。第二个视图显示有稳定旋转。

相关文章:

使用Simulink基于模型设计(三):建模并验证系统

可以对系统结构中的每个组件进行建模,以表示该组件的物理行为或功能行为。通过使用测试数据对组件进行仿真,以验证它们的基本行为。 打开系统布局 对各个组件进行建模时,需要从大局上把握整个系统布局。首先加载布局模型。这里以simulink自…...

基于go 1.19的站点模板爬虫

好像就三步: 1 建立http连接 2 解析html内容 3 递归遍历 创建一个基于 Go 1.19 的网站模板爬虫主要涉及几个步骤,包括设置 HTTP 客户端来获取网页内容、解析 HTML 来提取所需的数据,以及处理可能的并发和错误。下面我会给出一个简单的例子来说明如何…...

0基础学会在亚马逊云科技AWS上搭建生成式AI云原生Serverless问答QA机器人(含代码和步骤)

小李哥今天带大家继续学习在国际主流云计算平台亚马逊云科技AWS上开发生成式AI软件应用方案。上一篇文章我们为大家介绍了,如何在亚马逊云科技上利用Amazon SageMaker搭建、部署和测试开源模型Llama 7B。下面我将会带大家探索如何搭建高扩展性、高可用的完全托管云原…...

[PaddlePaddle飞桨] PaddleOCR图像小模型部署

PaddleOCR的GitHub项目地址 推荐环境: PaddlePaddle > 2.1.2 Python > 3.7 CUDA > 10.1 CUDNN > 7.6pip下载指令: python -m pip install paddlepaddle-gpu2.5.1 -i https://pypi.tuna.tsinghua.edu.cn/simple pip install paddleocr2.7…...

C语言 | Leetcode C语言题解之第227题基本计算题II

题目&#xff1a; 题解&#xff1a; int calculate(char* s) {int n strlen(s);int stk[n], top 0;char preSign ;int num 0;for (int i 0; i < n; i) {if (isdigit(s[i])) {num num * 10 (int)(s[i] - 0);}if (!isdigit(s[i]) && s[i] ! || i n - 1) {s…...

kafka.common.KafkaException: Socket server failed to bind to xx:9092

部署分布式集群的时候遇到的错误。 解决方案: 修改config下的server.properties,添加 listenersPLAINTEXT://:9092 advertised.listenersPLAINTEXT://自己的服务器ip:9092 然后重新启动&#xff0c;检查进程是否存在ps -aux | grep kafka。 成功启动。...

【JS+H5+CSS实现烟花特效】

话不多说直接上代码 注意:背景图路径是picture/star.jpg&#xff0c;自己在同级目录先创键picture目录再下载一张图片命名为star.jpg HTML: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"vi…...

uniapp小程序使用webview 嵌套 vue 项目

uniapp小程序使用webview 嵌套 vue 项目 小程序中发送 <web-view :src"urlSrc" message"handleMessage"></web-view>export default {data() {return {urlSrc: "",};},onLoad(options) {// 我需要的参数比较多 所以比较臃肿// 获取…...

命令模式在金融业务中的应用及其框架实现

引言 命令模式(Command Pattern)是一种行为设计模式,它将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,并且支持请求的排队和撤销操作。在金融业务中,命令模式可以用于实现交易请求、撤销操作等功能。本文将介绍命令模式在金融业务中的使用,并探讨…...

WordPress的性能优化有哪些方法?

WordPress的性能优化方法主要包括以下几个方面&#xff1a; 1. 使用缓存插件&#xff1a;缓存插件可以降低服务器负载&#xff0c;提高网站加载速度。常用的缓存插件有WP Rocket、WP Fastest Cache和Cache Enabler等。 2. 代码压缩和整合&#xff1a;通过压缩JavaScript、CSS…...

【Python基础】代码如何打包成exe可执行文件

本文收录于 《一起学Python趣味编程》专栏&#xff0c;从零基础开始&#xff0c;分享一些Python编程知识&#xff0c;欢迎关注&#xff0c;谢谢&#xff01; 文章目录 一、前言二、安装PyInstaller三、使用PyInstaller打包四、验证打包是否成功五、总结 一、前言 本文介绍如何…...

Golang | Leetcode Golang题解之第227题基本计算器II

题目&#xff1a; 题解&#xff1a; func calculate(s string) (ans int) {stack : []int{}preSign : num : 0for i, ch : range s {isDigit : 0 < ch && ch < 9if isDigit {num num*10 int(ch-0)}if !isDigit && ch ! || i len(s)-1 {switch preS…...

云端美味:iCloud中食谱与餐饮计划的智能存储方案

云端美味&#xff1a;iCloud中食谱与餐饮计划的智能存储方案 在数字化生活管理中&#xff0c;我们的食谱和餐饮计划是日常饮食健康与乐趣的重要部分。iCloud提供了一个无缝的解决方案&#xff0c;让我们可以在所有设备上存储、同步和访问这些珍贵的信息。本文将详细介绍如何在…...

leetcode:1332. 删除回文子序列(python3解法)

难度&#xff1a;简单 给你一个字符串 s&#xff0c;它仅由字母 a 和 b 组成。每一次删除操作都可以从 s 中删除一个回文 子序列。 返回删除给定字符串中所有字符&#xff08;字符串为空&#xff09;的最小删除次数。 「子序列」定义&#xff1a;如果一个字符串可以通过删除原字…...

智慧交通的神经中枢:Transformer模型在智能交通系统中的应用

智慧交通的神经中枢&#xff1a;Transformer模型在智能交通系统中的应用 随着城市化进程的加快&#xff0c;交通拥堵、事故频发、环境污染等问题日益严重。智能交通系统&#xff08;ITS&#xff09;作为解决这些问题的关键技术之一&#xff0c;受到了广泛关注。Transformer模型…...

PCIe驱动开发(1)— 开发环境搭建

PCIe驱动开发&#xff08;1&#xff09;— 开发环境搭建 一、前言 二、Ubuntu安装 参考: VMware下Ubuntu18.04虚拟机的安装 三、QEMU安装 参考文章&#xff1a;QEMU搭建X86_64 Ubuntu虚拟系统环境 四、安装Ubuntu 下载地址&#xff1a;https://old-releases.ubuntu.com…...

YOLOv10改进 | Conv篇 | CVPR2024最新DynamicConv替换下采样(解决低FLOPs陷阱)

一、本文介绍 本文给大家带来的改进机制是CVPR2024的最新改进机制DynamicConv其是CVPR2024的最新改进机制&#xff0c;这个论文中介绍了一个名为ParameterNet的新型设计原则&#xff0c;它旨在在大规模视觉预训练模型中增加参数数量&#xff0c;同时尽量不增加浮点运算&#x…...

变革设计领域:Transformer模型在智能辅助设计中的革命性应用

变革设计领域&#xff1a;Transformer模型在智能辅助设计中的革命性应用 在人工智能技术的推动下&#xff0c;智能辅助设计&#xff08;Intelligent Assisted Design, IAD&#xff09;正逐渐成为现实。Transformer模型&#xff0c;以其卓越的处理序列数据的能力&#xff0c;为…...

Spring——配置说明

1. 别名 别名&#xff1a;如果添加了别名&#xff0c;也可以使用别名获取这个对象 <alias name"user" alias"user2"/> 2. Bean的配置 id&#xff1a;bean 的唯一标识符&#xff0c;也就是相当于我们学的对象名class&#xff1a;bean 对象所对应的…...

禁用华为小米?微软中国免费送iPhone15

微软中国将禁用华为和小米手机&#xff0c;要求员工必须使用iPhone。如果还没有iPhone&#xff0c;公司直接免费送你全新的iPhone 15&#xff01; 、 这几天在微软热度最高的话题就是这个免费发iPhone&#xff0c;很多员工&#xff0c;收到公司的通知。因为&#xff0c;登录公司…...

从零开始:用FoxGlove搭建OriginCar实时监控系统(Windows/Ubuntu双平台教程)

从零开始&#xff1a;用FoxGlove搭建OriginCar实时监控系统&#xff08;Windows/Ubuntu双平台教程&#xff09; 在智能车开发领域&#xff0c;实时监控系统的重要性不言而喻。无论是调试传感器数据、验证算法效果&#xff0c;还是进行远程控制&#xff0c;一个直观高效的监控平…...

Pixel Dimension Fissioner 学术研究辅助:快速生成论文图表与概念示意图

Pixel Dimension Fissioner 学术研究辅助&#xff1a;快速生成论文图表与概念示意图 1. 科研绘图的痛点与解决方案 科研工作者每天都要面对一个共同的挑战&#xff1a;如何高效制作专业、美观的学术图表。传统绘图工具如Photoshop或Illustrator需要大量学习成本&#xff0c;而…...

7个深度学习框架!Text-Classification-Pytorch 文本分类从入门到实践全攻略

7个深度学习框架&#xff01;Text-Classification-Pytorch 文本分类从入门到实践全攻略 【免费下载链接】Text-Classification-Pytorch Text classification using deep learning models in Pytorch 项目地址: https://gitcode.com/gh_mirrors/te/Text-Classification-Pytorc…...

Horos医疗影像处理系统:技术架构与临床应用全解析

Horos医疗影像处理系统&#xff1a;技术架构与临床应用全解析 【免费下载链接】horos Horos™ is a free, open source medical image viewer. The goal of the Horos Project is to develop a fully functional, 64-bit medical image viewer for OS X. Horos is based upon O…...

小红书内容采集工具终极指南:如何5分钟掌握无水印下载技巧

小红书内容采集工具终极指南&#xff1a;如何5分钟掌握无水印下载技巧 【免费下载链接】XHS-Downloader 免费&#xff1b;轻量&#xff1b;开源&#xff0c;基于 AIOHTTP 模块实现的小红书图文/视频作品采集工具 项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader…...

面试50场才懂:20道高频题决定成败;面试是双向选择,不是你求着公司给你工作,你要做的是展示自己的价值,和公司互相匹配,不用卑微,大方就好

面了50场终于悟了:99%的面试,翻来覆去就考这20道题! 目录 面了50场终于悟了:99%的面试,翻来覆去就考这20道题! 一、开场破冰&自我认知类(第一印象定基调) 1. 请做一下自我介绍 6. 说说你的优点? 15. 你领导同事对你的评价如何? 19. 说说你的缺点? 二、求职动机…...

5步构建企业级视频分享平台后端框架搭建指南

5步构建企业级视频分享平台后端框架搭建指南 【免费下载链接】teriteri-backend 一个基于 springboot mybatis-plus 搭建的视频网站平台后端 项目地址: https://gitcode.com/gh_mirrors/te/teriteri-backend Teriteri后端框架是基于SpringBoot视频后端技术栈构建的开源…...

供应链人必看:用Excel快速实现(s,S)库存策略的3种方法

供应链人必看&#xff1a;用Excel快速实现(s,S)库存策略的3种方法 在制造业和零售业的日常运营中&#xff0c;库存管理始终是供应链从业者的核心挑战之一。面对波动的市场需求和有限的仓储空间&#xff0c;如何在保证服务水平的同时最小化库存成本&#xff1f;(s,S)库存策略作为…...

浏览器AI助手终极指南:如何让智能代理为你完成90%的网页操作

浏览器AI助手终极指南&#xff1a;如何让智能代理为你完成90%的网页操作 【免费下载链接】web-ui Run AI Agent in your browser. 项目地址: https://gitcode.com/GitHub_Trending/web/web-ui 想象一下&#xff0c;每天上班第一件事就是打开浏览器&#xff0c;重复着同样…...

图片旋转判断模型联邦学习:多机构协作提升泛化但不共享原始图

图片旋转判断模型联邦学习&#xff1a;多机构协作提升泛化但不共享原始图 你有没有遇到过这样的烦恼&#xff1f;从不同设备、不同渠道收集来的图片&#xff0c;有的头朝上&#xff0c;有的却莫名其妙地旋转了90度甚至180度。手动一张张去调整&#xff0c;费时费力&#xff1b…...