【Matlab】SimMechanics机械臂建模流程

时间:2024-05-21 18:30:37

1.前言

最近做毕业设计使用了SimMechanics进行机械臂的建模仿真,网上资料也比较少,当然官方的文档才是最香的:https://ww2.mathworks.cn/help/physmod/sm/rigid-bodies-1.html?s_tid=CRUX_lftnav

自己摸爬滚打后,终于成功实现了建模并和S-Function写的控制算法一起仿真成功。这里记录一下自己的使用流程。

Matlab版本:2018及以上,本人使用2016a和2019b,当用到部分只在2018以上版本才有的功能时才使用2019b,太卡了,平时主力还是2016a。

本文采用i关节连接i个连杆方式,即每个Link与首端关节坐标系固连。

2.坐标系建立

我比较喜欢先把机械臂的坐标系照着实物建好,如果有需要的话可以先列出DH参数,在进行建立。

【Matlab】SimMechanics机械臂建模流程

使用AxGlyph软件画的坐标关系图,这软件真香,支持国产!买买买!接下来就是在SimMechanics中建立该组坐标系。

3.使用smnew命令建立新的SimMechanics仿真文件,也即启动Simulink

【Matlab】SimMechanics机械臂建模流程

中间的World Frame顾名思义就是惯性系,我们可以通过将其连接到Solid、Frame,来确定惯性系与我们坐标系的关系,在本例中,惯性系与机械臂第一个关节坐标系相连。

4.使用Frame Transform进行坐标系之间的变换

注意:本文坐标系之间只考虑旋转变化,平移变化由Link实现,具体做法就是让Link的两端都是同一方向坐标系,再连接一个Transform

因第一个坐标系与惯性系之间不需要变换,故设置保持默认为none

【Matlab】SimMechanics机械臂建模流程

第二个关节为第一个关节绕x1轴旋转-90°,故设置为

【Matlab】SimMechanics机械臂建模流程

后面如法炮制,把每个关节坐标系之间的关系表示出来。

5.添加Link和关节

这一步就很简单了,主要是要注意Link两端的坐标系要与该Link首端关节坐标系一致,如果需要用到质心位置,则也要将质心位置的坐标系调整到与关节一致。可以设置Link的惯性参数,如果为了省事可以直接设置成由形状计算,只需要设定质量or密度即可。

【Matlab】SimMechanics机械臂建模流程【Matlab】SimMechanics机械臂建模流程

关节则直接使用Joint模块,连接Transform和Link即可

【Matlab】SimMechanics机械臂建模流程

全部连接上即可。

【Matlab】SimMechanics机械臂建模流程

6.一些需要用到的参数的测量

6.1.两个关节之间的位置关系

使用Transform Sensor即可,注意设置测量参考坐标系,如果以该Link的首段关节坐标系为参考,则将模块的B连接至该坐标系,F连接目标坐标系,设置为Base即可。

【Matlab】SimMechanics机械臂建模流程

6.2.质量、转动惯量测量

此功能只有2018以上才有,我每次测量这些量的时候,就切换至2019。

使用Inertia Sensor,同样需要设置参考系和Sensor Extent,Sensor Extent的说明就不翻译了,以关节为终点,可以参考官方文档https://ww2.mathworks.cn/help/physmod/sm/ref/inertiasensor.html

附录 控制器仿真报错

【Matlab】SimMechanics机械臂建模流程

可能出现了除以0或者NAN等情况,如果确认程序算法没问题,可以通过调参数或者更换solver解决