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

Simscape单摆模型搭建

打开MATLAB R2018a软件,依次点击顶部菜单栏“主页”-“Simulink”,在“Simulink Start Page”页面中选择“New”-“Simscape”-“Multibody”,操作步骤如下图1所示。

图1 打开Simscape Multibody步骤

打开的界面如图2所示。

图2 Simscape Multibody界面

点击顶部菜单栏中的“Display”选项,取消勾选“Hide Automatic Names”,点击右侧蓝色长方形“Open Simscape Multibody Library”可打开Simscape Multibody Library模块库。界面中的Simulink-PS Converter模块用来把Simulink信号转换为物理信号,以便能在Simscape物理建模环境里使用;而PS-Simulink Converter模块可以把Simscape物理建模环境中的物理信号转换为Simulink能够处理的信号。Scope模块用于可视化显示信号随时间变化的情况。在Multibody建模中,Solver Configuration、World Frame,Mechanism Configuration模块必不可少;Solver Configuration模块主要用于配置仿真求解器的相关参数;World Frame模块定义了整个机械系统的全局参考坐标系,也就是世界坐标系。它为机械系统中的各个刚体和关节提供了一个统一的参考框架,用于描述刚体的位置、姿态和运动。所有刚体的位置和姿态都是相对于世界坐标系来定义的;Mechanism Configuration模块用于配置机械系统的初始条件和仿真参数,常用于设置重力加速度方向。Solid模块主要用来表示机械系统中的刚体,可以定义刚体的质量特性、惯性特性等,从而对刚体在力和力矩作用下的运动进行建模和仿真。Rigid Transform模块主要用于描述坐标系之间的位置(平移)和姿态(旋转)转换。各模块如图3所示。

图3 各模块功能介绍

修改Solid模块中的“Geometry”参数,将宽和高修改为0.1m。要以左端为旋转关节,y轴为旋转轴,在Z-X平面旋转,则需要使用Rigid Transform模块将坐标系在X轴方向平移0.5m。如图4所示。

图4 修改Solid模块属性

图5 添加Rigid Transform模块

从图5中可以看出Rigid Transform模块中的B端指向世界坐标系,F端指向Solid模块刚体的几何中心,即F端相对于B端向X轴方向移动了0.5m。如果没使用Rigid Transform模块,Solid模块刚体的几何中心应与世界坐标系重合。

要使刚体绕左端旋转,则需添加Revolute Joint模块,双击界面空白处,输入“Revolute Joint”回车创建一个旋转关节模块。将Revolute Joint模块按照图6中的位置放置,从它的Description描述中可以看出,B端(Base,基础框架)和F端(Follower,从动框架)的坐标原点应该重合,且B端和F端的Z轴重合,从而从动框架中的X轴和Y轴绕Z轴旋转。

图6 添加Revolute Joint模块

从Mechanism Configuration模块中可以看出重力加速度的方向在-Z轴。要使刚体绕左端旋转,则旋转轴应为世界坐标系中的y轴。即需要添加Rigid Transform模块将世界坐标系中的y轴变换到Revolute Joint模块B端中的Z轴。在Rigid Transform1模块中修改“Rotation”参数,按照右手螺旋定则,大拇指为旋转轴,四指指向旋转方向,具体修改如图7所示。(此步也可不添加Rigid Transform模块,在Mechanism Configuration模块中修改重力加速度方向为非±Z轴方向,即刚体在XY平面内绕世界坐标系Z轴旋转)

图7 修改Rigid Transform1模块参数

点击顶部工具栏中的“Run”按钮,可以看到刚体只受重力的影响下在ZX平面内运动。进一步地,要对这个单摆模型进行动力学“正问题”分析(已知力或力矩,求运动),则需要修改旋转关节(Revolute Joint模块)相关属性。在Actuation(驱动)栏中,修改Torque(扭矩)为“Provided by Input”,Motion(运动)位“Automatically Computed”;在Sensing(传感)栏中选择Position(位置)、Velocity(速度)、Acceleration(加速度)、Actuator Torque(驱动力矩)作为输出。双击界面空白处输入“Sine Wave”,添加用于生成标准正弦波的信号模块,并设置Amplitude(振幅)为2。将各模块连接,具体操作如图8所示。

图8 单摆动力学正问题分析

点击顶部工具栏中的“Run”按钮,依次双击打开右侧scope、scope1、scope2、scope3模块的曲线图,如图9、10、11、12所示。从图10 Position图中可以看出,x轴为采样时间,y轴为杆与x轴的夹角,单位为弧度,在0到5s内单摆大约做了不到5圈正向旋转,之后做了两圈多的逆向旋转,再做了1圈多的正向旋转。图10为对应位置的速度曲线图。图11为对应位置的加速度曲线图。图12为驱动力矩随时间变换的曲线图,对应Revolute Joint模块中的左侧t口中的Sine Wave信号,为2sin(t)。

图9 Position曲线图

图10 Velocity曲线图

图11 Acceleration曲线图

图12 Actuator Torque曲线图

进行逆动力学分析,修改左侧Simulink-PS Converter模块的参数。将“Units”页下的“Input signal unit”标签值改为“deg”,表示将输入信号转为单位为deg角度的物理量;将“Input Handling”页下的Filtering and derivatives标签值改为“Provide signals”,“Provided signals”标签改为“Input and first two derivatives”,表示该模块需要外部提供输入信号及其前两阶导数信号。修改如图13所示。

图13 修改Simulink-PS Converter模块参数

在界面空白处双击输入“Derivative”添加求Derivative微分模块,操作如图14所示。值得注意的是,simulink中的Derivative模块有局限性,容易造成突变,建议手动求微分。

图14 添加Derivative模块

则运行结果如图15、16、17、18所示。图15为单摆旋转的角度;图16为其速度变化曲线图,可以看出前1s内产生了突变;图17为其加速度变化曲线图,也可看出前1s内产生了突变;图18为驱动力矩随时间变化图。

图15 Position曲线图

图16 Velocity曲线图

图17 Acceleration曲线图

图18 Actuator Torque曲线图

为了防止使用Derivative模块而造成的开始波动比较大的问题,可以使用Function模块或者手动搭建角速度和角加速度模块。Function模块需要搭配clock模块使用,在界面空白处添加clock模块,并设置Decimation为10为仿真时间,添加MATLAB Function模块,双击该模块编写数学表达式,如图19所示。手动搭建角速度和角加速度模块如图20所示,只需要在sine Wave2模块上修改Phase(相位)值为pi/2。

图19

图20 手动搭建角速度和角加速度模块

最后结果如图21、22、23、24所示。

图21 Position曲线图

图22 Velocity曲线图

图23 Acceleration曲线图

图24 Actuator Torque曲线图

 

相关文章:

  • 快速启动 Rust + WebAssembly 项目
  • [从零开始学数据库] 基本SQL
  • 谷歌发布大模型提示工程《Prompt Engineering》白皮书
  • STM32F4移植FATFS管理SD卡
  • AI测试引擎中CV和ML模型的技术架构
  • 【Linux】VIM 编辑器,编辑加速引擎
  • 赚钱的底层逻辑
  • 开关二极管热插拔保护方案
  • MySQL-存储引擎和索引
  • [dp11_最长子序列(不连续)] 最长数对链 | 最长定差子序列 最长的斐波那契子序列的长度
  • Nginx底层架构(非常清晰)
  • redis系列--1.redis是什么
  • qt(vs2010) 手动配置moc生成规则
  • 数据大屏只能撑撑场面?
  • Uniapp:本地存储
  • 卫星电话扬帆智慧海洋,构筑蓝海通信新生态
  • 48V/2kW储能电源纯正弦波逆变器详细设计方案-可量产
  • 【7】深入学习Buffer缓冲区-Nodejs开发入门
  • CS5346 - Annotation in Visualization (可视化中的注释)
  • 【Python爬虫】简单案例介绍3
  • 东航推出“上博号”班机,上博设立“东航特展厅”
  • 祥源文旅:2024年营业收入约8.64亿元,今年旅游经济总体预期更为乐观
  • 关注“老旧小区加装电梯”等安全隐患,最高检发布相关典型案例
  • 人民日报和音:开启中马关系新的“黄金五十年”
  • 不做“正常”的囚徒
  • 精致优雅:近代早期英国的“文明礼仪”