在寻找虚拟样机的漫漫长路中,最终回归到了传统的办法——MATLAB
概念摘自百科:
SimMechanics 立足于Simulink 之上,是进行控制器和对象系统跨领域/学科的研究分析环境。SimMechanics 为多体动力机械系统及其控制系统提供了直观有效的建模分析手段,一切工作均在 Simulink 环境中完成。
中文学习资料不多,在YouTube上找到密歇根大学的Gordon Parker教授的教学视频共5集,看完之后决定开坑记录一下,顺便巩固复习。
地址:https://www.youtube.com/watch?v=iVrjuHYtr_o
====================================================================
本章将做一个简单的弹簧阻尼滑块系统。
在MATLAB的command window中键入:
smnew
此时会弹出两个窗口,一个是simmechanics的library,一个是工作窗口。
library可以再simulink中的库中找到:
simulink >> simscape >> simmechanics >> second generation
我们回到工作窗口:
插播几条simulink的操作:
左键拖动 —— 移动
右键拖动 —— 复制
中键拖动 —— 移动视图
滚轮 —— 放大缩小
空格 —— 调整视图至全局
ctrl + R —— 旋转元件方向
双击元件 —— 调整参数
右键元件 >> properties —— 修改备注
回到上图:
这三个元件为基本环境配置,大多数情况下不去修改它。
solver configuration 求解器配置 。。。不动它
world frame 世界坐标系,接下来一切的机构或者系统都是基于这个根的。
mechanism configuration 双击打开可以修改重力场参数(大小或方向)
下面来修改这个系统的主角,滑块mass,双击solid:
右边为预览窗口,左边为description和properties,我们仔细看下properties部分:
>>Geometry 几何
>> Shape 形状
圆柱,球体,方块,椭圆,多棱柱,自定义柱体,旋转体,来自文件。
>> Inertia 惯性
>> density 密度
>> mass 质量
>> Graphic 图形
>> color 颜色
>> opacity 透明度
(以上,做了一下百度翻译的工作。。)
将solid的参数修改为如下:
简单设置一下备注:
右键solid,选择properties >> Block Annotation
这里设置备注可以将元件内部的参数调出来,实时地显示。
在左边菜单中找到两个参数,双击到右边,进行一些装饰。
确定后,发现solid元件旁边的备注为:(灰色字为备注,黑色的是名字需要手动修改)
接下来,配置弹簧阻尼。
在库中找到,Joints >> Prismatic Joint 添加进系统。
双击修改参数:
Internal Mechanics 内部力学
equilibrium position 静态位置,弹簧原长。
spring stiffness 弹性系数
damping coefficient 阻尼系数
再返回来介绍 State Targets
勾选specific position 特定的位置,我们设置5cm,意思为阻尼弹簧的初始位置。
sensing中的position表示,输出末端的位置。
在设置一下阻尼弹簧的备注:
效果如下:
现在我们有了世界坐标系,阻尼弹簧,以及滑块。
接下来将这些东西联系在一起。
首先,利用随创建就有的Rigid Transform,将阻尼弹簧安装到世界坐标系。
链接如下图:
这里稍微解释一下,transform中,B表示base,F表示follower,连接的时候顺序不能颠倒。
在spring中由于我们勾选了sensing中的position,所以会有一个p的输出口,输出位置量。然而这里输出的位置量,为一个物理量我们要通过PS converter将物理量转化为数字量,在接到scope示波器中显示。
运行一下可以看到模拟阻尼弹簧滑块系统:
左边的结构树可以看到每个元件的坐标系,可据此参考修改各元件之间的位置关系。
双击示波器查看波形:
可能波形不是很光滑,运动跳帧明显,可在simulink中的设置修改参数如下:
这样运动就变得流畅了。