DH法下的变换关系

上一篇我们利用两种DH法对6轴机械臂进行了建模。本篇将介绍两种DH法下的变换关系。

我们在建模时已知是按照一定的顺序将相邻的坐标系进行变换的。

SDH的顺序是[公式]
MDH的顺序是[公式]

所以根据以上顺序,通过右乘表示四个运动的四个矩阵就可以得到变换矩阵A,A表示了四个依次的运动。由于所有变换都是相对于当前坐标系的,因此所有的矩阵都是右乘的。从而得到两个变换矩阵:

1)SDH

2)MDH

则机器人的基座与手之间的总变换则为

下面我们利用matlab-robotics-toolbox中SDH法和MDH法的innfos-Gluon-6L3的模型进行仿真。

Matlab仿真程序

clear,close all
%% SDH
figure
%% 建立机器人SDH参数,初始姿态为竖直。
SL(1) = Link('d', 105.03, 'a', 0, 'alpha', pi/2,'offset',pi/2,'standard');
SL(2) = Link('d', 0, 'a', -174.42, 'alpha',0,'offset',-pi/2,'standard');
SL(3) = Link('d', 0 ,'a', -174.42, 'alpha', pi,'standard');
SL(4) = Link('d', -75.66 ,  'a', 0, 'alpha',-pi/2,'offset',-pi/2,'standard');
SL(5) = Link('d', -80.09, 'a',0, 'alpha', pi/2,'standard');
SL(6) = Link('d', -44.36, 'a', 0, 'alpha', 0,'standard');
robotS=SerialLink(SL,'name','Gluon_6L3-SDH', 'manufacturer','innfos');  
robotS.display(); 
thetas=[0,0,0,0,0,0];
thetas=thetas/180*pi;
%% 正解,给定关节角,求末端位姿
Ts =robotS.fkine(thetas)
robotS.plot(thetas,'tilesize',150);
%% MDH
figure
%% 建立机器人MDH参数,初始姿态为竖直。
ML(1) = Link('d', 105.03, 'a', 0, 'alpha', 0,'offset',pi/2,'modified');
ML(2) = Link('d', 80.09, 'a', 0, 'alpha', pi/2,'offset',pi/2,'modified');
ML(3) = Link('d', 0 ,'a', 174.42, 'alpha', 0,'modified');
ML(4) = Link('d', 4.44, 'a', 174.42, 'alpha', pi,'offset',pi/2,'modified');
ML(5) = Link('d', -80.09, 'a',0, 'alpha', -pi/2,'modified');
ML(6) = Link('d', -44.36, 'a', 0, 'alpha', pi/2,'offset',0,'modified');
robotM=SerialLink(ML,'name','Gluon_6L3-MDH', 'manufacturer','innfos');  
robotM.display();  
%% 正解,给定关节角,求末端位姿
thetam=[0,0,0,0,0,0];
thetam=thetam/180*pi;
Tm =robotM.fkine(thetam)
robotM.plot(thetam,'tilesize',150);

结果如下

由于两种方法的首末段关节坐标一样,所以可得到相同的位姿矩阵。

*offset指的是theta的初始位置

总结

至此,我们就利用DH法将机械臂的几何关系模型建立出来了。可以如下式表示

若只考虑关节参数关节转动角theta的话,可以写成

若建模时的首末位姿T0和T6相同时,T_SDH=T_MDH=T。

所以从上式可知,当给定各关节转动角theta_i时,我们可求出末端位姿,我们叫这个过程为机械臂正运动;当我们已知末端位姿,要去求个关节转动角theta_i时,这个过程被称为机械臂的逆运动

下一篇我们将从机器人位置关系的建立进阶到运动学分析。