IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Simulink 学习(三) -> 正文阅读

[人工智能]Simulink 学习(三)

基于模型的设计任务的工作流程:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

仿真实例:平板机器人

此模型假设机器人以机器人线性移动,机器人原地旋转之一进行移动,故对线性运动组件和旋转运动组件分别建模。

1、确定建模目的

本教程的模型构建目的是设计一些传感器参数,使机器人能够在检测到路径中的障碍物时及时停止。要实现此目的,模型必须:

  • 确定电机停止后机器人多长时间能停止下来(分析运动)

  • 提供一系列线性运动和旋转运动的命令,使机器人能够在一个二维空间内移动(对设计进行测试)

2、确定系统组件和接口

  • 系统的哪些组成部分需要测试?

  • 测试数据和成功的标准是什么?

  • 哪些输出是分析和设计任务所必需的?

3、确定机器人运动组件

此系统的模型包括两个相同的轮子、施加在轮子上的输入作用力、旋转动态特性、坐标变换和一个传感器。此模型使用 Subsystem 表示每个组件:

4、定义组件之间的接口

一些模块输入与模块输出并不完全匹配。因此,除了各个组件的动态特性之外,模型还必须计算以下内容:

旋转计算的输入 - 两个轮子的速度相减并除以 2。

坐标变换的输入 - 两个轮子的平均速度。

传感器的输入 - 对坐标变换的输出进行积分。

轮子的速度大小始终相等,并且计算在该假设内是精确的。

? ? ? ? 添加必要的组件并完成连接:

根据左轮和右轮速度计算?Coordinate Transform?和?Rotation?子系统所需的输入。添加Add,Subtract和两个Gain模块。

根据 X 速度和 Y 速度计算 X 坐标和 Y 坐标。从 Continuous 库中添加两个 Integrator 模块,并连接 Coordinate Transform 模块的输出。将 Integrator 模块的初始条件设置保留为 0。如图所示:

完成连接

?

?5、对组件建模

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

物理组件的输出和输入之间的显式数学关系 --- 可以根据组件的输入通过代数计算和微分方程积分,直接或间接计算出组件的输出。

物理组件的模型变量之间的隐式数学关系 --- 由于变量之间相互依赖,因此为组件指定输入和输出并不容易。

从实际系统获得的数据 --- 已经测得实际组件的输入/输出数据,但不存在完全定义的数学关系。许多设备具有符合此说明的未建模组件。

显式功能定义 --- 可以根据功能组件的输入通过代数计算和逻辑计算来定义功能组件的输出。

? ? ? ? 该教程对具有显式输入/输出关系的物理组件和功能组件进行建模。在本教程中将:

(1)使用系统方程创建一个 Simulink 模型。

(2)在 Simulink Editor 中添加并连接 Simulink 模块。模块代表方程中的系数和变量。

(3)分别为每个组件构建模型。构建系统模型最有效的方法是首先独立地考虑各个组件。

(4)首先,使用接近于系统的模型构建简单的模型。找出可能会影响模型准确性的假设条件。以迭代方式添加细节,直到复杂度满足建模和准确性要求。


6、对物理组件进行建模

7、轮子和线性运动?

作用在轮子上的力有两个:

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

阻力 - 此力 Fdrag 作用在速度变化的相反方向上,是速度的函数。 ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ?Fdrag =? kdragV|V|? ? ?

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

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

8、构建轮子模型

8.1 对速度建模

?

8.2 对阻力建模

添加一个?MATLAB Function?模块,双击进行编辑,如图

?

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

反转 MATLAB Function 模块的方向,请右键点击该模块并选择 Rotate & Flip > Flip Block,连接这些模块。

同理,复制到left wheel

8.3旋转运动

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

?

8.4?构建 Rotation Dynamics 模型

(1)在 system_layout 模型的顶层,双击 Rotation 子系统以显示空子系统。删除 Inport 和 Outport 模块之间的连接。

(2)对角速度和角度进行建模。添加一个 Integrator 模块。将初始条件设置保留为 0。此模块的输出是角度 theta,输入是角速度 theta_dot。

(3)根据切向速度计算角速度。添加带有参数 1/(2*r) 的 Gain 模块。

(4)连接这些模块

对功能组件进行建模,坐标变换

8.5 构建坐标变换模型

(1)在 system_layout 模型的顶层,双击 Coordinate Transform 子系统以显示空子系统。

(2)对三角函数进行建模。从 Math Operations 库中添加一个 SinCos 模块。

(3)对乘法进行建模。从 Math Operations 库中添加两个 Product 模块。

(4)连接这些模块。

8.6 参数设置

m = 2.5;%质量
k_drag = 30; ?%滚阻
r = 0.15; ? %机器人半径

9.通过仿真来验证组件

  • 当向轮子连续施加力时,速度会增加,直到达到稳定状态的速度为止。

  • 当两个轮子向相反方向转动时,旋转角度以恒定速率增加。

9.1 验证轮子组件

创建新模型,将Right_Wheel复试过来,插入Step,右键点击 Right Wheel 模块的输出端口,右键点击 Right Wheel 模块的输出端口,

运行仿真

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

9.2 验证旋转组件

创建一个新模型,将 Rotation 模块复制到新模型中。

步骤同上一小节?

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

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

9.3 验证模型

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

  • 当沿相同方向对两个轮子施加相同的力时,机器人沿直线运动。

  • 当沿相反方向对两个轮子施加相同的力时,机器人原地旋转

  • inputs主页中添加?Step?模块创建测试输入。将步长时间参数设置保留为?1。将其连接到两个?Outport?模块上。在模型顶层,连接到同一个波形查看器

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

?

?

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

? ? ? ? 通过更改输入,可以使用这个最终模型来回答有关模型的许多问题。下面是一些示例:

当初始角度非零时会发生什么?

当作用力下降到零时,运动需要多长时间才能停止?

当机器人更重时会发生什么?

当机器人在更光滑的平面上移动时(即阻力系数更低时)会发生什么?
?

学习:
原文链接:https://blog.csdn.net/jk_101/article/details/107386989

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-06-23 00:53:40  更:2022-06-23 00:55:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:52:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码