Simulink 快速入门(五)--系统定义和布局

目录

确定建模目的

确定系统组件和接口

确定机器人运动组件

定义组件之间的接口

参数和数据


        Simulink® 模型的顶层系统布局是许多工程团队可以使用的公共环境,是基于模型的设计范式:分析、设计、检验和实现。可以通过确定模型的结构和各个组件来定义顶层系统。然后,可以将模型按照层次结构进行组织,分别与系统的各个组件相对应。接下来,可以定义每个组件的接口以及组件之间的连接。

        本教程中讨论的模型是一个平板机器人,它可以借助两个轮子进行移动或旋转,类似于家用扫地机器人。此模型假设机器人以下列两种方式之一进行移动:

  • 线性 - 两个轮子以相同的速度向同一方向转动,机器人线性移动。

  • 旋转 - 两个轮子以相同的速度向相反方向转动,机器人原地旋转。

如图所示:                                                           

        这两种运动都从静止状态开始,也就是说,旋转速度和线性速度均为零。按照这些假设,可以对线性运动组件和旋转运动组件分别建模。

确定建模目的

        在设计模型之前,请明确目的和需求。目的决定模型的结构和详细程度。如果目的只是弄清楚机器人可以走多快,那么只对线性运动进行建模就足够了。如果目的是为设备设计一组输入,使它按照给定的路径移动,那就会涉及到旋转组件。如果目的是避障,那么系统就需要一个传感器。本教程的模型构建目的是设计一些传感器参数,使机器人能够在检测到路径中的障碍物时及时停止。要实现此目的,模型必须:

  • 确定电机停止后机器人多长时间能停止下来

  • 提供一系列线性运动和旋转运动的命令,使机器人能够在一个二维空间内移动

第一个建模目的是让您能够分析运动,以便设计传感器。第二个目的是能够对设计进行测试。

确定系统组件和接口

        明确建模需求之后,即可开始确定系统的组件。确定顶层结构的各个组件及其关系有助于以系统化方式构建比较复杂的模型。这些步骤是在构建模型之前在Simulink外部进行的。

执行此任务需要回答以下问题:

  • 系统需要哪些结构组件和功能组件?当布局能够反映物理结构和功能结构时,将有助于理解、构建、进行通信和测试系统。当需要在设计过程中的不同阶段实现系统的各个组成部分时,这一点将变得更加重要。

  • 每个组件的输入和输出是什么?绘制一个显示各组件连接情况的图形。此图可帮助可视化模型中的信号流,确定每个信号的信源和信宿,并确定是否所有必要的组件都存在。

  • 需要达到多高的详细程度?在图中包括主要系统参数。绘制系统图可以帮助识别并建模对要观察的行为非常重要的部件。实现建模目的所需要的每个组件和参数在模型中都要有一个对应的表示,但需要在模型的复杂程度和可读性之间进行权衡。建模可以是一个反复的过程。可以从具有很少细节的简要模型开始,然后根据需要逐渐提高复杂程度。

思考以下问题通常也很有帮助:

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

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

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

确定机器人运动组件

        本教程中的系统定义了一个机器人,它通过两个电动轮子在两个维度上移动。其中包括:

  • 线性运动特性

  • 旋转运动特性

  • 用于确定系统在两个维度上的位置的变换

  • 用于测量机器人与障碍物之间的距离的传感器

        如图所示:

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

(1)打开一个新的 Simulink 模型。请参考前面的内容。

(2)打开 Library Browser。请参前面的内容。

(3)添加 Subsystem 模块。将五个 Subsystem 模块从 Ports & Subsystems 库拖放到新模型中。

(4)按如下所示放置并重命名这五个 Subsystem 模块。要更改模块名称,请双击模块名称并编辑文本。

        如图所示:

定义组件之间的接口

        确定子系统之间的输入和输出连接。输入和输出值在仿真过程中动态变化。模块之间的连接线代表数据传输。下表显示每个组件的输入和输出。

模块输入输出相关信息
输入

右轮作用力

左轮作用力

不适用
右轮右轮作用力右轮速度有方向性,负值表示相反方向
左轮左轮作用力左轮速度有方向性,负值表示相反方向
旋转左右轮之间的速度差旋转角度逆时针测量
坐标变换

正常速度

旋转角度

X 速度

Y 速度

不适用
传感器

X 坐标

Y 坐标

建模不需要任何模块。

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

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

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

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

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

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

(1)为每个子系统添加必要的输入端口和输出端口。双击 Subsystem 模块,如图所示:

        每个新的 Subsystem 模块都包含一个 Inport (In1) 和一个 Outport (Out1) 模块。这些模块定义信号与模型层次结构中下一个更高层级进行交互的接口。每个 Inport 模块在 Subsystem 模块上创建一个输入端口,每个 Outport 模块创建一个输出端口。模型通过输入/输出端口名称反映这些模块的名称。为更多的输入和输出信号添加更多模块。

        在 Simulink Editor 工具栏上,点击 Navigate Up To Parent 按钮   返回顶层。对于每个模块,添加并重命名 Inport 和 Outport 模块。如图示所示:

        在复制 Inport 模块以创建新模块时,请使用 Paste (Ctrl+V) 选项。

(2)根据左轮和右轮速度计算 Coordinate Transform 和 Rotation 子系统所需的输入。

        a、计算 Coordinate Transform 子系统的线性速度输入。从 Math Operations 库中添加一个 Add 模块,并将两个轮子组件的输出连接起来。添加一个 Gain 模块,并将 Gain 参数设置为 1/2。将 Add 模块的输出连接到此 Gain 模块。

        b、计算 Rotation 子系统的速度差输入。从 Math Operations 库中添加一个 Subtract 模块。将右轮速度连接到 + 输入,将左轮速度连接到 - 输入。连接两个轮子组件的输出。添加一个 Gain 模块,并将 Gain 参数设置为 1/2。将 Subtract 模块的输出连接到此 Gain 模块。

        如图所示:                  

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

(4)完成系统连接。如图所示:

参数和数据

        确定模型需要的参数以及参数的值。根据建模目的决定这些值是始终固定,还是针对不同的仿真而更改。实现建模目的所需要的参数必须在模型中显式表示。下表可以确定对每个组件进行建模时的详细程度。

参数模块符号Type
质量

左轮

右轮

m2.5 kg可变
滚阻

左轮

右轮

k_drag30Ns2/m可变
机器人半径旋转r0.15 m可变
初始角度旋转0 rad固定
初始速度

左轮

右轮

0 m/s

0 m/s

固定
初始 (X, Y) 坐标积分器(0, 0) m固定

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

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

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值