文章目录
前言
本文主要介绍串联机械臂的动力学与控制。机械臂上每一个连杆由前一个连杆的反作用力和力矩支撑,另外它还受自身的重力,以及来自它所支撑的后一个连杆的反作用力和力矩。
正向动力学
正向动力学是已知施加各个关节上电机提供的力/力矩,在此力矩作用下,关节如何运动,求对应各个关节角度、角速度、角加速度。
以Puma560机器人为例,直接在命令行输入代码:
mdl_puma560
即可直接调用工具箱中的Puma560模型,在给定关节坐标(q)、关节速度(qd)和所施加的力矩(Q)的条件下,关节加速度可以用Serial-Link对象的accel方法计算得到:
qdd=p560.accel(q,qd,Q)
该功能也封装在Simulink的Robot模块中,以下为其应用的一个示例,直接在命令行输入:
sl_ztorque
如图1所示,施加给机器人的力矩为0,初始关节角被设定为Robot模块的一个参数,这里为“0角度位姿”。运行该仿真:
r=sim('sl_ztorque');
关节角作为随时间变化的函数被返回到r对象中:
t=r.find('tout');
q=r.find('yout');
我们用动画演示机器人的运动:
p560.plot(q,'trail','b-','movie','r.gif')
可以看到它在重力作用下崩溃,因为没有力矩来对抗重力来保持机器人直立。肩关节和肘关节都会垂下来并来回摆动。
我们还可以绘制出随时间变化的关节角度:
plot(t,q(:,1:3))
title('关节角度曲线');
lege