系统定义和布局
Simulink的顶层系统布局®模型是许多工程团队可以使用的通用上下文,并且是基于模型的设计范式中许多任务的基础:分析、设计、测试和实现。通过确定结构和各个组件,您可以在顶层定义系统。然后,以与组件相对应的分层方式组织模型。然后为每个组件和组件之间的连接定义接口。
本教程中的特色模型是一个平面机器人,可以在两个轮子的帮助下移动或旋转,类似于家庭吸尘机器人。这个模型假设机器人以以下两种方式之一移动:
线性-两个轮子以相同的速度向相同的方向转动,机器人线性移动。
转动-轮子以相同的速度向相反的方向转动,机器人原地旋转。
每一种运动都是从静息状态开始的,也就是说,转动速度和线速度都为零。有了这些假设,线性和旋转运动分量可以分别建模。
确定建模目标
在设计模型之前,考虑您的目标和需求。目标规定了模型的结构和细节级别。如果目标仅仅是计算出机器人能走多快,仅为线性运动建模就足够了。如果目标是为设备设计一组输入,使其遵循给定的路径,那么就涉及到旋转组件。如果目标是避开障碍物,那么系统需要一个传感器。本教程建立了一个模型,目标是设计传感器参数,以便机器人在检测到路径上的障碍时及时停止。为了实现这个目标,模型必须:
确定当电机停止时机器人停止的速度
提供一系列线性和旋转运动的命令,使机器人可以在二维空间中运动
第一个建模目标使您能够分析运动,以便设计传感器。第二个目标使您能够测试您的设计。
识别系统组件和接口
一旦您理解了您的建模需求,您就可以开始识别系统的组件。在顶层结构中识别单个组件及其关系有助于系统地构建潜在的复杂模型。在开始构建模型之前,您可以在Simulink外部执行这些步骤。
这个任务包括回答以下问题:
系统的结构和功能组成部分是什么?当布局反映了物理和功能结构时,它有助于您理解、构建、交流和测试系统。当在设计过程的不同阶段实现系统的各个部分时,这一点就变得更加重要。
每个组件的输入和输出是什么?画一幅图显示组件之间的连接。此图帮助您可视化模型中的信号流,识别每个信号的源和接收器,并确定是否存在所有必要的组件。
什么程度的细节是必要的?在图中包含主要的系统参数。创建系统的图片可以帮助您识别和建模对您想要观察的行为至关重要的部分。对建模目标有贡献的每个组件和参数都必须在模型中有一个表示,但是在复杂性和可读性之间有一个权衡。建模可以是一个迭代的过程。您可以从具有很少细节的高级模型开始,然后在需要的地方逐渐增加复杂性。
考虑以下几点通常是有益的:
系统的哪些部分需要测试?
测试数据和成功标准是什么?
分析和设计任务需要哪些输出?
识别机器人运动部件
本教程中的系统定义了一个在二维空间中用两个电动轮移动的机器人。它包括:
直线运动特性
旋转运动特性
转换以确定系统在二维中的位置
测量机器人与障碍物距离的传感器
该系统的模型包括两个相同的车轮、施加在车轮上的输入力、旋转动力学、坐标变换和一个传感器。该模型使用子系统要表示每个组件:
打开一个新的Simulink模型。看到打开新模式.
打开库浏览器。看到打开Simulink库浏览器.
添加子系统块。拖五子系统距离端口和子系统图书馆的新模式。
单击子系统。在格式选项卡,单击汽车名称下拉。清除隐藏自动块名称复选框。
排列并重命名子系统如图所示。要更改块名称,双击块名称并编辑文本。
定义组件之间的接口
识别子系统之间的输入和输出连接。输入和输出值在模拟过程中动态变化。连接块的线表示数据传输。这个表显示了每个组件的输入和输出。
块 | 输入 | 输出 | 相关信息 |
---|---|---|---|
输入 | 没有一个 | 右轮受力 左轮受力 |
不适用 |
右轮 | 右轮受力 | 右轮速度 | 方向性,负的意思是相反的方向 |
左车轮 | 左轮受力 | 左轮速度 | 方向性,负的意思是相反的方向 |
旋转 | 左右轮之间的速度差 | 旋转角 | 测量逆时针 |
坐标变换 | 正常速度 旋转角 |
X的速度 Y方向的速度 |
不适用 |
传感器 | X坐标 Y坐标 |
没有一个 | 没有建模所需的块 |
有些块输入与块输出不完全匹配。因此,除了单个组件的动力学之外,模型还必须计算以下内容:
输入到旋转计算-减去两个轮子的速度并除以2。
输入到坐标变换-平均两个轮子的速度。
传感器的输入-对坐标变换的输出进行积分。
车轮速度在大小上总是相等的,在这个假设下计算是准确的。
添加必要的组件并完成连接:
向每个子系统添加必要的输入和输出端口。双击一个子系统块。
每一个新子系统块包含一个轮廓尺寸(三机一体)和一个外港(着干活)块。这些块定义了模型层次结构中更高一级的信号接口。
每一个轮廓尺寸块上创建一个输入端口子系统块,每个外港块创建一个输出端口。模型将这些块的名称反映为输入/输出端口名称。为额外的输入和输出信号添加更多的块。在“Simulink编辑器”工具栏上,单击导航到父级按钮返回:回到顶层
对于每个块,添加并重命名轮廓尺寸而且外港块。
当复制轮廓尺寸块来创建一个新文件,请使用粘贴(Ctrl + V)的选择。
计算所需的输入坐标变换而且旋转子系统来自左轮和右轮的速度。
计算输入的线性速度坐标变换子系统。添加一个添加块,并连接两个轮组件的输出。添加一个增益块,并设置增益参数为
1/2
.的输出连接添加阻止这个获得块。的速度差输入计算旋转子系统。添加一个减去从数学运算库的块。连接右轮速度到+输入和左轮的速度-输入。连接两个轮组件的输出。添加一个增益块,并设置增益参数为
1/2
.的输出连接减去阻止这个获得块。
从X和Y速度计算X和Y坐标。添加两个积分器类的输出坐标变换块。的初始条件积分器块设置为
0
.完成系统的连接。
参数及数据
确定作为模型一部分的参数及其值。使用建模目标来确定这些值是总是固定的还是在不同的模拟中变化的。有助于建模目标的参数需要在模型中显式表示。这个表帮助确定建模每个组件时的详细级别。
参数 | 块 | 象征 | 价值 | 类型 |
---|---|---|---|---|
质量 | 左车轮 右轮 |
米 |
2.5公斤 | 变量 |
滚动阻力 | 左车轮 右轮 |
k_drag |
30 Ns2/ m | 变量 |
机器人半径 | 旋转 | r |
0.15米 | 变量 |
初始角 | 旋转 | 没有一个 | 0 rad | 固定 |
初始速度 | 左车轮 右轮 |
没有一个 | 0米/秒 0米/秒 |
固定 |
初始(X, Y)坐标 | 集成商 | 没有一个 | (0,0) m | 固定 |
Simulink使用MATLAB®计算参数的工作区。在MATLAB命令窗口中设置以下参数:
M = 2.5;K_drag = 30;R = 0.15;