Matlab机器人工具箱(番外篇)———机器人建立的任意方法

  • 前言
  • 方法描述

前言

之前在Matlab机器人工具箱(1)——机器人的建立、绘制与正逆运动学中介绍了DH法和MDH建立机器人模型的方法,两种形式都很常用。但是这样有一个问题就是,对于一个机器人必须按照既定的格式建模,一步一步的建立DH坐标系,推导DH模型,形式上有些死板。本篇介绍RTB以任意的格式建立机器人模型的方法。

方法描述

对于一个串联机器人,无非就是一系列的平移旋转的变换,因此,可以任意在关节处建立坐标系,通过一系列关于关节角变量的平移/旋转变换推导机器人运动学。
例如,UR5机械臂的模型长这样:

在这里插入图片描述
我们不妨不按照DH方法建立坐标系,而选择一种最直观的方法,按照连杆的位置建模(rgb颜色的棒棒分别代表xyz轴):
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200421112752284.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzUwMjM5Mg==,size_16,color_FFFFFF,t_70

这样,整个机械臂就可以看做,首先沿基坐标z轴向上移动0.0892mm,然后绕z轴旋转q1(即关节1的转动),得到坐标系1,然后,沿y轴移动0.13585,然后绕y轴旋转90°,最后绕y轴旋转q2,得到坐标系2,以此类推,一直推到tool坐标系就完成了。
这样通过RTB的另一种建模方法,即为:

L1 = 0.0892;L2 = 0.13585;L3 = -0.1197;L4 = 0.425;L5 = 0.39225;L6 = 0.093;L7 = 0.09465;
s = 'Tz(L1) Rz(q1) Ty(L2) Ry(90) Ry(q2) Ty(L3) Tz(L4) Ry(q3) Tz(L5) Ry(90) Ry(q4) Ty(L6) Rz(q5) Tz(L7) Ry(q6)';
% 通过s的操作转化为DH参数
dh = DHFactor(s);
dh.display;
%建立机器人
cmd = dh.command('UR5');
UR5 = eval(cmd);
UR5.teach();

可以和标准DH法对比:

clear;clc;close all;
a = [0, -0.42500, -0.39225, 0, 0, 0];
d = [0.0892, 0, 0, 0.10915, 0.09465, 0.0823];
alpha = [1.570796327, 0, 0, 1.570796327, -1.570796327, 0];
for i = 1:6
    L(i)=Link([0 d(i) a(i) alpha(i)]);
    L(i).qlim=[-2*pi,2*pi];
end
UR5=SerialLink(L,'name','UR5');
UR5.teach();

最终得到的模型是一样的:
在这里插入图片描述