一、引入
本科学机械设计的时候,就发现ppt上有很多运动的机构,一直想知道是怎么做出来的,后来发现solidwork、admas可以制作动画,也用3dmax制作过,但总感觉不太像回事。
这是一个共轴旋翼的运动仿真,也是意外的发现simlink竟然可以做那么多有趣的事。碰巧研究了一下simscape_multibody。
二、功能介绍
Simulink是一个模块图环境,用于多域
仿真
以及基于模型的设计。 Simulink提供图形编辑器、可自定义的模块库以及求解器,能够进行动态系统建模和仿真。
Simulink – Simulation and Model-Based Design – MATLAB & Simulink
Simscape构建物理组件模型基于直接物理连接,集成块图和其他建模范例。如电动马达,桥整流器,液压执行机构,和制冷系统,通过装配基本组件示意图。
Simscape – MATLAB & Simulink
Simscape Multibody提供了一个为3d机械系统多体仿真环境,如机器人、车辆悬挂、建筑设备、飞机起落架。您可以使用块模型多体系统代表身体关节,约束、力元素,和传感器。Simscape多体制定和解决整个机械系统的运动方程。可以导入完整的CAD程序集,包括所有的质量、惯量、关节,限制,3d模型。
Simscape Multibody – MATLAB & Simulink
三、操作经验
3.1安装Simscape Multibody
1.进入官网
Simscape Multibody – SimMechanics Link – MATLAB & Simulink
,可以看到支持多种三维建模软件。
2. 在下方输入邮箱及各种信息便可以跳转网页,选取适合自己matlab版本下载即可(两个文件都需要下载),一个install_addon.m文件,一个smlink.rxxxx.win64.zip文件。
3.下载好后,打开matlab,在matlab切换至包含这两个文件的文件夹,在命令行中输入
install_addon(‘smlink.rxxxx.win64.zip’)
即可安装完成。 若要查看此工具的help,在命令行输入
doc smlink
即可。
4.与三维建模软件建立联系,以常用的SolidWorks为例。在matlab命令行中输入
smlink_linksw,
会提示
Registering dll: regsvr32 “F:\Matlab_R2014a\bin\win64\cl_sldwks2sm.dll”。
5.打开SolidWorks,点击工具,选择插件。在此处勾选 SimMechanics Link。完成后就会看到SimMechanics Link添加到新的菜单中(需要在打开装配体*.SLDASM时才能看到)。
6. 将sldasm文件导出为xml格式,选择 SimMechanics Link 插件里面的export,选择第二个版本。关于第一和第二版本,官方文档这样说的:Export in first-generation format generates a Physical Modeling XML file. Export in second-generation format generates a SimMechanics Import XML file. 两种不同的版本,有不同的打开方式,切换到xml文件所在的文件目录,第一种使用 mech_import命令打开,第二版本使用smimport命令打开。语法为 H = smimport(‘filename’).。执行后会出现一个树状机构,上面是每一个部件的名字。点击run可以看到三维模型。
附官网视频:
Simscape Multibody – Videos – MATLAB & Simulink
官方documentation:
Simscape Multibody Documentation
3.2可能会出现的问题
启动安装位置(“D:\Program Files\MATLAB\R2018b\bin\win64\MATLAB.exe”)下的matlab(如果启动慢,可以先创建快捷方式到桌面,打开快捷方式属性,在目标位置添加 -c +“注册表路径”,便可快速启动),在命令窗口输入
enableservice('AutomationServer')
看其是否为1判断期前是否是服务器版本的matlab
若为0,在命令窗口输入:
enableservice('AutomationServer' ,true)
将其转换为服务器版本的matlab
然后再次打开solidwork,尝试运行Simscape Multibody Link——export。
3.3Simscape Multibody的坐标系统
一些例子(
Example List- MATLAB & Simulink
)
3.4利用刚体变换创建坐标系
3.4.1World Frame
在这个系统中,有世界坐标系,它是一切坐标系的基准,所有的World Frame指代同一个坐标系。
3.4.2Graphic
第二是:
,模块名为:Graphic,表示可以添加到机械模型中的参数化图形元素。
1.shape可以定义形状,包括cube正方体, sphere球形,Frame坐标系三种形式
2.diffuse color:漫射颜色
3.opacity:不透明度
3.4.3Rigid Transform
与B相连的代表基坐标系,与F相连的代表变换后的坐标系。
包括两种变换,旋转和平移变换。为了将两个坐标系区别开来,先介绍一下平移变换:
cartesian | 笛卡儿坐标系 | |
standard Axis | 标准轴坐标系 | |
cylindrical | 圆柱坐标系 |
前两个平移变换形式比较容易理解,我们尝试一下第三个cylindrical:
因此:Radius代表绕Z轴的半径,Theta代表与坐标系原点连线与基坐标系的夹角,Z offset代表相对于基坐标系的偏移量。
再来看旋转变换,有5中方式:
Aligned Axes |
轴对齐形式 |
|
Standard axis |
标准轴形式 |
|
Arbitrary axis |
任意轴 |
|
Rotation sequence |
旋转序列 |
|
Rotation matrix |
旋转矩阵 |
第一种: Aligned Axes:轴对齐。
顾名思义就是基坐标系和变换坐标系的轴相互对应。如下图,
变换后的坐标系的+X轴与基坐标系的+Y对应,+Y与+Z对应。
具体效果,和预期的一样。
第二种: Standard axis。
第三种: Arbitrary axis。
以xz对角线为轴线,旋转90度:
第四种:Rotation sequence。
以右手定则,先绕基坐标X轴90度,在绕Y轴90度。
第五种:Rotation matrix,高级表达
3.4.4Transform Sensor:用于测坐标系的位置关系
3.4.5Connection Label:用于标记信号,无线连接。
3.4.6 PS-Simulink Converter(Simulink-PS Converter):用于信号转化。
3.4.7 Scope:示波器
先测试一下:
效果:
位移变化很好理解,但是angle和axis不够直观。官方给出的解释如下图:
Rotational Measurements- MATLAB & Simulink
意思就是Axis是一个F相对于B的向量,angle代表相对于Axis转动多少。我们希望得到的是相对于自身XYZ的转角。具体如何推导,容我后续更新。
3.4.8 Solid(可以用它进行简单的物理模型构建,也可以导入)
下面举一个例子:
我们来新建一个坐标系:
3.5常用工具
在命令行输入
sm_lib
3.6运动副
3.6.1 Revolute
下面用Revolute来演示运动副的使用:
运动效果:
可以看出,在两个坐标系之间添加运动副后,F坐标系相对于B坐标系发生运动。使用Revolute的效果是F坐标系绕B坐标系的Z轴以一定转速转动。也可以给定一个初始角度:
3.6.2 后续更新