根據上述機械手各關節的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;
根據座標系圖得到各個旋轉軸的轉角:0,-82.19pi/180,82.19pi/180,0,-pi/2,0. 必須轉化爲弧度,這個轉角需要根據三維模型和初始模型來確定。在robot6=SerialLink(L,‘name’,‘robot6’);後面添加如下兩行代碼:
qa=[0,-82.19pi/180,82.19pi/180,0,-pi/2,0];
robot6=SerialLink(L,‘offset’,qa);
或者合併爲一行:robot6=SerialLink(L,‘name’,‘robot6’,‘offset’,qa);
最後的座標系如下圖: