Matlab机器人工具箱机械手建模详解(同知乎)

首先给大家推荐一下我老师大神的人工智能教学网站。教学不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵黄段子!点这里可以跳转到网站 关于使用Matlab机器人工具箱建立机械手模型的一些经验分享给大家

使用软件版本为matlab2015a和rvctools9.8,matlab机械人工具箱下载地址:http://petercorke.com/wordpress/toolboxes/robotics-toolbox/

首先来看给出的机械手坐标系:

图 1 D-H参数坐标系

根据上述机械手各关节的D-H参数,利用工具箱中的Link函数创建机械手各连杆;然后利用SerialLink函数把独立的关节组合起来创建机器人对象。Link函数的调用格式为:

L(i)=Link( [theta,D,A,alpha,sigma],‘convention’)

其参数与D-H参数相对应,前四个参数依次表示:参数‘theta’代表关节角,参数‘D’代表横距,参数‘A’代表杆件长度,参数‘alpha’代表扭转角,参数‘sigma’代表关节类型:0代表旋转关节,非0代表移动关节,默认值为0。参数 ‘convention’ 表示使用D-H参数法创建机器人模型的类型:‘standard’表示采用标准D-H参数法创建机器人模型;‘modified’表示采用该改进D-H参数法创建机器人模型,默认值为’standard’,代码中使用默认值。

本文采用标准D-H参数法对机械手进行建模。

x1=-pi/2; a1=121.16; d1=191.99;

x2=0; a2=850.94;

x3=0; a3=482.6;

x4=pi/2; a4=133.35;

x5=-pi/2; a5=0;

x6=0; d6=380.9;

L(1)=Link([0 d1 a1 x1]); L(1).qlim=[-pi,pi];

L(2)=Link([0 0 a2 x2]); L(2).qlim=[-pi/6,pi/2];

L(3)=Link([0 0 a3 x3]); L(3).qlim=[-pi/2,pi/2];

L(4)=Link([0 0 a4 x4]); L(4).qlim=[-pi/2,pi/2];

L(5)=Link([0 0 a5 x5]); L(5).qlim=[-pi/2,pi/2];

L(6)=Link([0 d6 0 x6]); L(6).qlim=[-pi,pi];

robot6=SerialLink(L,’name’,’robot6′);

teach(robot6,’degrees’);

0坐标系不用建立,直接从1坐标系开始,建系原则:根据L(i)= Link( [theta,D,A,alpha,sigma])参数顺序。

1坐标系→2坐标系:沿z1轴平移d1→沿x1轴平移a1→绕x1轴旋转-90°→2坐标系;

2坐标系→3坐标系:此处对于z2轴有一定的旋转角度,暂且不管,沿x2轴平移a2即可;

3坐标系→4坐标系:沿x3轴平移a3→4坐标系;

4坐标系→5坐标系:沿x4轴平移a4→绕x4轴旋转90°→5坐标系;

5坐标系→6坐标系: 由于6坐标系的z6轴是旋转轴,所以只需绕x5轴旋转-90°→6坐标系;

6坐标系→手抓坐标系:这两个坐标系名义上是重合的,但是需要沿着z6轴平移一段距离d6;

下面来看初步建立的模型图:

 图 2 初始坐标系

上图中每一个绿色圆柱代表一个关节,注意6坐标系与手抓坐标系之间的关系。可以看出此模型与我们所建立的坐标系模型不一样,下面对各旋转轴Z轴进行初始化:

根据坐标系图得到各个旋转轴的转角:0,-82.19*pi/180,82.19*pi/180,0,-pi/2,0. 必须转化为弧度,这个转角需要根据三维模型和初始模型来确定。在robot6=SerialLink(L,’name’,’robot6′);后面添加如下两行代码:

qa=[0,-82.19*pi/180,82.19*pi/180,0,-pi/2,0];

robot6=SerialLink(L,’offset’,qa);

或者合并为一行:robot6=SerialLink(L,’name’,’robot6′,’offset’,qa);

最后的坐标系如下图:

图3 最终坐标系图

点这里可以跳转到人工智能网站