关于使用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 最终坐标系图
|
|