matlab实现5自由度雄克机器人的运动仿真

任务

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

第一步 DH建模

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

matlab实现5自由度雄克机器人的运动仿真_第1张图片

机器人包含5个关节

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

连杆 a i − 1 a_{i-1} ai1 α i − 1 \alpha_{i-1} αi1 d i d_i di θ i \theta_i θi
0 0 0 0 θ 1 \theta_1 θ1
1 0 π / 2 \pi/2 π/2 L1 θ 2 \theta_2 θ2
2 0 − π / 2 -\pi/2 π/2 0 θ 3 \theta_3 θ3
3 0 π / 2 \pi/2 π/2 L2 θ 4 \theta_4 θ4
4 0 − π / 2 -\pi/2 π/2 0 θ 5 \theta_5 θ5

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

matlab实现5自由度雄克机器人的运动仿真_第2张图片

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

我们需要为SerialLink 指定一下 tool

matlab实现5自由度雄克机器人的运动仿真_第3张图片

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

matlab实现5自由度雄克机器人的运动仿真_第4张图片

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

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

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

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

matlab实现5自由度雄克机器人的运动仿真_第5张图片

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

matlab实现5自由度雄克机器人的运动仿真_第6张图片

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

matlab实现5自由度雄克机器人的运动仿真_第7张图片

第二步 绘制目标点

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

第三步 逆运动学

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

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

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

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

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

matlab实现5自由度雄克机器人的运动仿真_第8张图片

发现没有问题。

第四步 运动轨迹

我们使用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绘制机器人的运动动画。

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

matlab实现5自由度雄克机器人的运动仿真_第9张图片

完整代码查看

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

你可能感兴趣的:(机器人,matlab,运动学)