任务

使用 matlab 的 robotics toolbox 完成5自由机械臂的建模与运动学仿真。并计算8个点的运动轨迹并绘制运动动画动画。

第一步 DH建模

首先,我们先来分析机器人的图纸,来建立一下机器人的DH参数。

python 机器人运动仿真 机器人matlab运动仿真_机械臂

机器人包含5个关节

我们建立以下的DH参数表。

连杆

python 机器人运动仿真 机器人matlab运动仿真_机械臂_02

python 机器人运动仿真 机器人matlab运动仿真_matlab_03

python 机器人运动仿真 机器人matlab运动仿真_运动学_04

python 机器人运动仿真 机器人matlab运动仿真_matlab_05

0

0

0

0

python 机器人运动仿真 机器人matlab运动仿真_matlab_06

1

0

python 机器人运动仿真 机器人matlab运动仿真_运动学_07

L1

python 机器人运动仿真 机器人matlab运动仿真_python 机器人运动仿真_08

2

0

python 机器人运动仿真 机器人matlab运动仿真_matlab_09

0

python 机器人运动仿真 机器人matlab运动仿真_机械臂_10

3

0

python 机器人运动仿真 机器人matlab运动仿真_运动学_07

L2

python 机器人运动仿真 机器人matlab运动仿真_python 机器人运动仿真_12

4

0

python 机器人运动仿真 机器人matlab运动仿真_matlab_09

0

python 机器人运动仿真 机器人matlab运动仿真_python 机器人运动仿真_14

连杆的参数建完之后,我们写一下代码,在matlab中看看效果

python 机器人运动仿真 机器人matlab运动仿真_运动学_15

发现我们末端执行器没有,这怎么办呢?

我们需要为SerialLink 指定一下 tool

python 机器人运动仿真 机器人matlab运动仿真_世界坐标系_16

发现末端执行器反方向了,我们把Link5的方向调整一下,增加一个offset,转180°。

python 机器人运动仿真 机器人matlab运动仿真_世界坐标系_17

这时候发现已经大致和我们想要的模型差不多了

但在坐标上还存在一下差别。

我们给机器人转个方向,通过设置base来完成,也可以通过给Link1添加一个offset来实现

在把Link5的关节转一下,通过设置Link4offset来实现

python 机器人运动仿真 机器人matlab运动仿真_python 机器人运动仿真_18

最后我们在把机械臂末端的坐标系转到与世界坐标系平行的形式

python 机器人运动仿真 机器人matlab运动仿真_matlab_19

这样就得到了和题目中一样的方式了。

python 机器人运动仿真 机器人matlab运动仿真_matlab_20

第二步 绘制目标点

这一步就很简单,我们只需要 将 问题中的目标点绘制出来就行,通过一个for循环就能实现。

第三步 逆运动学

逆运动学就是已知机器人末端的位姿,然后反解 机器人的关节角度。

robotics toolbox提供了六自由度机械臂的反解函数ikine,但是并不是所有情况都能求出反解的。我们这里面只有5自由度,所以在反解时一定要给定 mask

由于我们只有末端的位置,但反解需要末端的位姿,所以我们通过 transl函数构建末端的位姿矩阵,默认位姿矩阵与世界坐标系平行的。

然后可以通过逆运动学计算出来机器人的关节角组成的向量。

我们测试一下 让机器人反解出第一个目标位置的关节角,并绘制机器人的各个关节

python 机器人运动仿真 机器人matlab运动仿真_python 机器人运动仿真_21

发现没有问题。

第四步 运动轨迹

我们使用jtraj函数

jtraj计算两点之间一个关节(joint)的空间轨迹。

[Q,QD,QDD]=jtraj(Q0,QF,M)是一个joint空间轨迹Q(MxN)。其中joint 坐标从Q0 (1xN)变到 QF (1xN)。它使用具有0边界条件的5阶quintic多项式(http://en.wikipedia.org/wiki/Quintic_function)来表示速度和加速度。

该函数假定时间从0变到1,共经过M步。它将轨迹返回到Q中,速度和加速度返回到QD和QDD中,它们都是MxN矩阵,每个时间步长一行,每个joint一列。

[Q,QD,QDD] = jtraj(Q0, QF, M, QD0, QDF)在上述基础上指定轨迹的始终关节速度。

[Q,QD,QDD] = jtraj(Q0, QF, T) 同上但轨迹长度由时间矢量长度T (Mx1)定义。

[Q,QD,QDD] = jtraj(Q0, QF, T, QD0, QDF) 同上但指定轨迹的始终关节速度以及时间矢量。

计算出轨迹之后,我们再利用 机器人的plot绘制机器人的运动动画。

最终效果就是这个样子了。

python 机器人运动仿真 机器人matlab运动仿真_世界坐标系_22

完整代码查看

matlab仿真5自由度雄克机械臂代码