李 瑾
(山西工程技術學院,陽泉 045000)
工業機器人是一種高度集成了機械、液壓、電子、計算機等技術的工業產品,工業機器人的運動控制具有多變量、本質非線性等特征,在對工業機器人進行運動分析時,采用實物分析法雖具有很好的直觀性,但也存在成本高、操作復雜、精度受限、空間運動軌跡難以直觀展現等不利因素。利用計算機仿真技術可以很好地克服這些缺陷,直觀再現工業機器人的運動狀況[1]。
焊接機器人屬于連續軌跡控制型機器人,其軌跡要求是空間任意直線或曲線,運動軌跡插補算法要求有足夠的精度。本文以Puma250焊接機器人為研究對象,在MATLAB環境下,利用Robotics Toolbox 10.2工具箱,建立Puma250的運動模型,對機器人運動進行正運動和逆運動值的求解,并實現其末端直線運動軌跡的動畫仿真以及其直線運動過程中插補點的精確求解。

圖1 puma250機器人結構示意圖
Puma250結構如圖1所示,其運動分別為立柱旋轉,肩彎曲、軸彎曲、腕彎曲、腕旋轉以及緣旋轉運動。Puma250機器人共6個轉動關節,每個關節構成1個自由度,共6個自由度,可以實現末端執行器在其有效作業空間內的任意位姿,按Puma250結構依次給各個關節編號,如圖2所示。
按照D-H(Denavit-Hartenberg)方法分別建立Puma250的6個轉動關節的D-H坐標系;每個關節的轉動軸線方向為其D-H坐標系的z軸方向,兩相鄰關節轉動軸線之間的公垂線方向為其D-H坐標系的x軸方向,D-H坐標系的y軸方向由x軸和z軸方向確定,如圖2所示[2]。

圖2 Puma250機器人連桿坐標系
對于已經建立的每個連桿坐標系,可用4個參數來描述。首先定義連桿i為相鄰兩關節的軸線的公垂線段,則連桿長度Ai表示連桿i的長度,連桿扭角ɑi表示相鄰兩關節軸線在垂直于連桿i所在平面內的夾角,連桿距離Di表示沿關節i軸線的兩條公垂線之間的距離,連桿夾角θi表示在垂直于關節i軸線的兩個平面內的兩條公垂線之間的夾角[2]。對于Puma250,連桿夾角θi為其關節變量,其他參數為定值。按照圖2中連桿坐標系的位置確定各連桿的D-H參數值,如表1所示。

表1 Puma250機器人的D-H參數值
按照Puma250的D-H值,利用MATLAB中Robotics Toolbox中的link函數建立機器人的連桿結構,Link函數如式(1)所示。
L(i)=Link([θi Di Ai ɑi sigma]) (1)
式中,前4個參數θi、Di、Ai、ɑi分別表示連桿夾角、連桿距離、連桿長度、連桿扭角,與表1中一致;sigma表示關節類型,sigma值為0表示關節的類型為轉動關節,sigma值為1則表示關節類型為伸縮關節。Puma250關節類型皆為轉動關節。給定各關節變量的初始值q0后,利用SerialLink函數將各連桿結構構成機器人模型,程序如下:
L(1)=Link([0 13 0 pi/2 0]);
L(2)=Link([0 2 8 0 0]);
L(3)=Link([0 2 0 pi/2 0]);
L(4)=Link([0 8 0 -pi/2 0]);
L(5)=Link([0 0 0 -pi/2 0]);
L(6)=Link([0 2 0 0 0]);
q0=[0 0 pi/2 0 -pi/2 0];
Puma250=SerialLink(L,’name’,’PUMA250’)
利用plot函數將Puma250模型在笛卡爾坐標系空間中顯示出來[3]。利用teach函數,生成Puma250機器人關節變量控制框,用以驗證連桿坐標系的正確性,如圖3所示。程序如下:
Puma250.plot(q0);
teach(Puma250);

圖3 Puma250的三維模型及其變量控制器
機器人正運動學求解可以實現從機器人關節變量值到連桿末端位姿的轉換,在Robotics Toolbox 10.2工具箱中,針對Puma250模型,給定各關節旋轉變量值qa后,利用fkine函數求解Puma250關節末端的位姿T0,程序如下:
qa=[-pi -pi/4 3*pi/4 pi pi/2 pi/2];
T0=fkine(Puma250,qa);
Puma250.plot(qa);
機器人的逆運動學是給出連桿末端的位姿參數,求解連桿結構的各個關節變量值。在實際應用過程中往往是給出末端執行器的狀態信息,通過控制器內部計算和算法優化得到各個關節變量的值,再將這些信息值以脈沖的形式傳遞給各個關節的運動伺服機構單元驅動各個關節運動[4]。在Robotics Toolbox 10.2工具箱中,在已知Puma250關節末端位姿T0情況下,利用ikine函數可以求解出一組對應的關節變量值,利用jacob0函數可以求得對應的雅各比矩陣,程序如下:
qz=Puma250.ikine(T0);
Puma250.plot(qz);
J=Puma250.jacob0(qz)
圖4(a)是給定關節變量初始值qa的情況下,求解出末端關節位姿T0的結果,圖4(b)是利用圖4(a)中結果T0,逆運動學求解關節變量值qz的結果。機器人逆運動學存在多解性,Puma250的逆運動學解存在8種可能,但由于機械結構的制約,解不能完全實現。對比圖4(a)與圖4(b)兩圖中Puma250雖然關節末端的位姿都為T0,但其他關節的姿態卻不同,圖4(a)與(b)兩圖對應的關節變量值qz與qa也不相同,這是由于逆運動學的多解性導致的。

圖4 puma250運動仿真結果
已知Puma250機器人關節末端運動初始點和運動結束點信息的情況下,可以通過MATLAB中ctraj函數求出機器人在兩點之間的直線運動軌跡,過程如下:
init_ang=[0 pi/6 pi/2 0 -pi/2 0];
targ_ang=[pi/2 pi/6 pi/2 0 -pi/2 0];
T1=fkine(Puma250,init_ang);
T2=fkine(Puma250,targ_ang);
n=40;
Tc=ctraj(T1,T2,n);
Tjtraj=transl(Tc);
Q=Puma250.ikine(Tc) ;
w=[-18,30,-18,18,-2,18];
Puma250.plot(Q,’workspace’,w);
plot2(Tjtraj,’r’);
程序中首先已知Puma250機器人運動初始點關節變量init_ang和結束點關節變量targ_ang,通過fkine函數分別求出兩點的變換矩陣T1和T2,通過ctraj函數將T1和T2之間直線空間分成40等份,得到一系列連續的位姿點集合Tc,Tc為T1與T2之間一系列直線插補點,利用ikine函數求出集合Tc中各個點對應的Puma250的關節變量值集合Q,通過plot函數連續顯示集合Q中各點對應的Puma250位姿即可得到T1點到T2點之間Puma250運動動畫,圖5顯示為運動仿真動畫最后一幀。利用transl函數可以得到集合Tc中各點對應的笛卡爾坐標系的坐標點集合Tjtraj,利用plot2函數顯示Tjtraj中各點即可得到Puma250末端端點直線運動軌跡圖,如圖5所示,運動軌跡呈現完美的直線,驗證了此方法的高精度性。

圖5 運動軌跡顯示
本文基于D-H方法對Puma250在Matlab環境下利用Robotics Toolbox 10.2工具箱中Link函數進行了建模,利用ikine函數和fkine函數對Puma250的正運動學和逆運動學分別進行仿真,給出其關節末端在空間中任意兩點間的直線運動軌跡的仿真方法,利用ctraj函數實現兩點之間高精度直線插補,為Puma250機器人運動軌跡研究提供計算方法和工具。