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