三、机械臂的运动仿真模拟

1.在第一节中,我们已经搭建了机械臂的模型,但他目前只是一个刚体模型,不具备任何运动条件,现在我们需要在他的关节处添加关节模型。目前,我们只需要旋转关节和平动关节,如图所示:
在这里插入图片描述
将我们需要的关节插入到之前建立的关节模型中。
后期补充:下图有一个地方是错误的,第一个关节应该 在第一节连杆与第二节连杆之间,调整一下顺序即可。
在这里插入图片描述
如上图所示,第一个关节所在的空间为世界坐标系原点空间,第二个关节所在空间为第二节连杆的末端所在空间,但三个关节是第三节连杆末端所在空间。

仔细观察上图,发现,最后一个关节后,还附加了一个关节,这是为什么呢?
是因为,当存在一个关节时,必须存在一个实体连杆使得关节可以驱动,如果没有,则关节的输出目标为空。

2.关节设置
双击某个关节,查看其属性设置:
在这里插入图片描述


注意:Z Revolute Primitive,每个关节,他的驱动轴都是当前空间的Z轴,这也就是为什么之前在建立连杆模型的时候,要把连杆末端处的空间的Z轴转化为关节空间。
State Tragets:初始位置,我们默认设置为0就好。
Limits:限位,设置可转动/平移范围。
Actuation:驱动,分为力矩驱动和运动驱动(角度/距离驱动),这里,我们设置为:
在这里插入图片描述

这样,可以通过直接输入指定角度,驱动该关节转动至该角度。
Sensing:传感,可以输出你想要查看的当前角度、距离、力矩等。我们暂不设置。


3.添加驱动源

我们需要驱动信号和信号转换。

在这里插入图片描述

Simulink-PS Converter,将无单位Simulink输入信号转换为物理信号。举个例子,无单位信号u=1,在该模块将单位uint设置为cm时,经过转换,输出为1cm的物理信号,如果将该物理信号接入到移动关节,则移动关节移动1cm,如果该信号连续可变,例如u=t,则移动关节随着时间的变化,其轨迹为斜率为1的直线。


我们尝试制作一个单关节控制器,输入信号分别为常量信号和变量信号(随着时间的改变而改变),观察机械臂的运动状态:
常量信号需要用到constant模块。 将该模块的值设置为1.57(也就是角度制的90度),
将Simulink-PS Converte的uint设置为rad
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
点击运行,可以看到在开始瞬间,第二关节转动90度,如果常量设置为0,则该关节不论收到多大的力的干扰,都不会转动。
现在我们将输入信号转化为变量信号,利用signal Builder模块。
在这里插入图片描述
Simulink-PS Converte模块的设置不需要改变,我们设置signal Builder的曲线轨迹,如图所示:
在这里插入图片描述
该曲线代表该关节的运动轨迹,注意,纵坐标为弧度制,连接好模块运行:
后期补充:下图有一个地方是错误的,第一个关节应该 在第一节连杆与第二节连杆之间,调整一下顺序即可。


在这里插入图片描述
至此,一个单关节的控制就完成了,如果在每个关节处都加入如上的驱动,则可以完成对每个关节的控制,注意:平动关节,他的Simulink-PS Converte模块设置的单位为cm或者其他长度单位!
在这里插入图片描述


如果我们加入先前制作的逆运动学模块,设定一个坐标,即可以得到每个关节的角度,将该角度输出至关节,即可驱动关节转动至该点。如果再加入轨迹规划模块,则可以使机械臂平滑的转动至目标点。关于这部分的内容,可以查看:


SimMechanics机械臂建模与仿真:利用Matlab的SimMechanics进行机械臂的模型搭建及动力学仿真(四)