劉長(zhǎng)柱,曹 巖,賈 峰,高 碩,韓 沖
機(jī)器人運(yùn)動(dòng)學(xué)分析是機(jī)器人研究和設(shè)計(jì)的基礎(chǔ),是機(jī)器人研究中動(dòng)力學(xué)分析、運(yùn)動(dòng)控制及機(jī)器視覺(jué)研究等內(nèi)容的前提[1]。機(jī)器人技術(shù)日新月異,機(jī)器人運(yùn)動(dòng)學(xué)仿真和軌跡規(guī)劃在機(jī)器人設(shè)計(jì)、控制方面具有重要意義。對(duì)于機(jī)器人運(yùn)動(dòng)系統(tǒng)的研究和確立,很大程度上影響了機(jī)器人系統(tǒng)整體的基本性能[2]。SCARA機(jī)器人關(guān)節(jié)較少,運(yùn)動(dòng)靈活,精度較高,經(jīng)常用來(lái)完成一些搬運(yùn)、裝配任務(wù)。由于機(jī)器人價(jià)格昂貴,不便用實(shí)物進(jìn)行試驗(yàn),因此在進(jìn)行裝配任務(wù)之前需要規(guī)劃其運(yùn)動(dòng)軌跡,對(duì)機(jī)器人進(jìn)行運(yùn)動(dòng)學(xué)仿真,研究機(jī)器人的動(dòng)態(tài)性能。
關(guān)節(jié)式機(jī)器人由一系列關(guān)節(jié)和連桿按任意的順序連接而成,根據(jù)關(guān)節(jié)與連桿參數(shù)進(jìn)行矩陣變換,利用高斯消去等方法求解變換矩陣的逆,推導(dǎo)出機(jī)器人運(yùn)動(dòng)學(xué)方程。本文以四自由度SCARA機(jī)器人為研究對(duì)象,利用D-H參數(shù)法建立SCARA機(jī)器人運(yùn)動(dòng)學(xué)模型,建立各關(guān)節(jié)坐標(biāo),求出正逆解表達(dá)式。然后借助MATLAB Robotics工具箱,驗(yàn)證SCARA機(jī)器人運(yùn)動(dòng)學(xué)參數(shù)的正確性,研究運(yùn)動(dòng)學(xué)方程和進(jìn)行軌跡規(guī)劃。求解各個(gè)機(jī)械臂運(yùn)動(dòng)參數(shù)變化,利用MATLAB工具箱,減少原本繁瑣的數(shù)學(xué)計(jì)算,具有一定的實(shí)際研究意義。
機(jī)器人運(yùn)動(dòng)學(xué)分析[3]是通過(guò)分析機(jī)器人各連桿參數(shù)進(jìn)一步計(jì)算末端執(zhí)行器的位姿。接下來(lái)通過(guò)D-H參數(shù)法建立SCARA機(jī)器人每個(gè)連桿的笛卡爾坐標(biāo)系和連桿參數(shù),利用齊次矩陣和D-H參數(shù)法建立機(jī)器人運(yùn)動(dòng)學(xué)方程。在SolidWorks軟件下建立SCARA機(jī)器人的三維模型,如圖1所示。SCARA機(jī)器人具有四個(gè)自由度,大臂、小臂的回轉(zhuǎn)運(yùn)動(dòng),執(zhí)行末端繞Z軸旋轉(zhuǎn)和沿Z軸上下移動(dòng)。SCARA機(jī)器人主要完成搬運(yùn)、裝配等工作,各關(guān)節(jié)的笛卡爾坐標(biāo)系如圖2所示,D-H連桿參數(shù)表如表1所示。
圖1 SCARA機(jī)器人三維模型
表1中,桿件長(zhǎng)度為:d1=370 mm,d3=320 mm,關(guān)節(jié)距離為:L1=300 mm,L2=250 mm。
圖2 SCARA機(jī)器人的D-H坐標(biāo)系
表1 運(yùn)動(dòng)參數(shù)和關(guān)節(jié)變量
機(jī)器人的正運(yùn)動(dòng)學(xué)的前提是已知各桿件的D-H參數(shù)和關(guān)節(jié)變量,進(jìn)一步計(jì)算機(jī)器人末端連桿的坐標(biāo)系相對(duì)于基礎(chǔ)坐標(biāo)系的位姿。通常i-1Ti表示連桿i-1在連桿i坐標(biāo)系中的位姿(i=1,2,3,4)。
式 (1) 中, cθi=cosθi, sθi=sinθi, cαi=cosαi,sαi=sinαi, θi為SCARA機(jī)器人i關(guān)節(jié)轉(zhuǎn)角, αi為繞 xi軸從zi-1轉(zhuǎn)至zi扭角,di為沿zi-1軸從xi-1軸量至xi軸連桿距離,將各個(gè)連桿變換矩陣依次相乘,求解機(jī)器人末端執(zhí)行器正運(yùn)動(dòng)學(xué)方程:
式(2)為SCARA機(jī)器人手臂變換矩陣0T4,指的是末端坐標(biāo)系相對(duì)基坐標(biāo)系的位姿,也是研究機(jī)器人關(guān)節(jié)運(yùn)動(dòng)的重要環(huán)節(jié)。式(2)中:
其中θ1、θ2、θ3和θ4為已知SCARA機(jī)器人各關(guān)節(jié)轉(zhuǎn)角,nx、ny、 px、 py和 pz是待求解的機(jī)械臂末端執(zhí)行器位姿,并且 nx=oy, ny=-ox, az=1, si=sinθi,ci=cosθi, sij=sin(θi+θj), cij=cos(θi+θj)。
機(jī)器人的逆運(yùn)動(dòng)學(xué)分析是使驅(qū)動(dòng)機(jī)器人達(dá)到期望位置,計(jì)算機(jī)器人各關(guān)節(jié)和連桿變量[3-5]。機(jī)器人逆運(yùn)動(dòng)學(xué)分析具有多解性,根據(jù)機(jī)器人的實(shí)際工作環(huán)境,得出唯一正確解。利用變量分離法,將單個(gè)矩陣的逆T-1n-1(n=1,2,3,4)左乘上面所列方程兩端,令對(duì)應(yīng)元素對(duì)應(yīng)相等,可求出各關(guān)節(jié)變量值。
(1)求關(guān)節(jié)變量1
(2)求關(guān)節(jié)變量2
(3)求關(guān)節(jié)變量d3
令左右矩陣中的第三行第四個(gè)元素(3.4)相等,可得:
式(5)中:d3為關(guān)節(jié)變量,即沿z2軸從x2軸量至x3軸連桿距離,pz是已知的機(jī)械臂末端執(zhí)行器位姿。
(4)求關(guān)節(jié)變量θ4
令左右矩陣中的第二行第一個(gè)元素(1.1,2.1)相等,即:
式(6)中:nx和ny是已知的機(jī)械臂末端執(zhí)行器位姿,θ1、θ2和θ4待求解的SCARA機(jī)器人關(guān)節(jié)1、2和4轉(zhuǎn)角。
軌跡規(guī)劃是根據(jù)機(jī)器人執(zhí)行的命令,滿(mǎn)足一定的束縛,分析機(jī)器人手臂關(guān)節(jié)在工程運(yùn)動(dòng)中各關(guān)節(jié)轉(zhuǎn)角的運(yùn)動(dòng)變化。機(jī)器人的軌跡規(guī)劃對(duì)機(jī)器人運(yùn)動(dòng)速度、精度、沖擊和振動(dòng)有重要影響,一種好的軌跡規(guī)劃方法可以提高機(jī)器人的穩(wěn)定性、工作效率[6]。
(1)在進(jìn)行運(yùn)動(dòng)學(xué)仿真前,根據(jù)表1的參數(shù),調(diào)用MATLAB工具箱中Robotics Toolbox的Link和Robot函數(shù)創(chuàng)建機(jī)器人對(duì)象[7],將機(jī)器人命名為‘SCARA’,L=Link([al?phaA theta D sigma],CONVENTION),
>>L1=LINK([0 0 0 370 0],'mod');
>>L2=LINK([0 300 0 0 0],'mod');
>>L3=LINK([0 250 0 0 1],'mod');
>>L4=LINK([0 0 0-500 0],'mod');
>>S=robot({L1,L2,L3,L4},'SCARA');
參數(shù)CONVENTION可以取‘standard’和‘modified’,其中‘standard’代表采用標(biāo)準(zhǔn)的D-H參數(shù),‘modified’代表采用改進(jìn)的D-H參數(shù)。參數(shù)‘a(chǎn)lpha’代表扭轉(zhuǎn)角,參數(shù)‘A’代表?xiàng)U件長(zhǎng)度,參數(shù)‘theta’代表關(guān)節(jié)角,參數(shù)‘D’代表橫距,參數(shù)‘sigma’代表關(guān)節(jié)類(lèi)型:0代表旋轉(zhuǎn)關(guān)節(jié),非0代表移動(dòng)關(guān)節(jié)。
(2)假使初始狀態(tài)機(jī)器人各關(guān)節(jié)角度為零。通過(guò)如下程序,即可顯示θi=0時(shí),SCARA機(jī)器人的三維圖,如圖3所示。
圖3 SCARA機(jī)器人三維模型圖
>>plot(S,[0 0 0 0])
(3)通過(guò)drivebot函數(shù)可以驅(qū)動(dòng)機(jī)器人運(yùn)動(dòng),如圖4所示,通過(guò)調(diào)節(jié)滑塊按鈕可以觀察機(jī)器人末端相對(duì)于基坐標(biāo)系的空間位置變化情況。
>>drivebot(SCARA)
圖4 SCARA機(jī)器人關(guān)節(jié)驅(qū)動(dòng)圖
假設(shè)該機(jī)器人的各關(guān)節(jié)的初始角度為Q0=[0 0 0 0],末關(guān)節(jié)角度為Q1=[pi/2 pi/4 0-pi/4]。利用工具箱中[Q QD QDD]=JTRAJ(Q0,Q1,T)命令來(lái)對(duì)多關(guān)節(jié)機(jī)器人進(jìn)行仿真。仿真程序如下:
圖5 機(jī)器人末端在X、Y、Z方向上的位移
>>t=0∶0.056∶2;%時(shí)間向量
>>Q0=[0 0 0 0];%初始位姿
>>Q1=[pi/2 0 pi/4-pi/4];%末位姿
>>[Q QD QDD]=JTRAJ(Q0,Q1,t);%關(guān)節(jié)空間規(guī)劃
>>T=FKINE(SCARA,Q);%機(jī)器人運(yùn)動(dòng)學(xué)正問(wèn)題求解
>> subplot(3,1,1);
>>plot(t,squeeze(T(1,4,∶)));
>>xlabel('Time(s)');
>>ylabel('X(m)');
…%機(jī)器人末端的運(yùn)動(dòng)軌跡曲線如圖5所示。
其中,參數(shù)Q為從初始狀態(tài)Q0到末狀態(tài)Q1的關(guān)節(jié)空間規(guī)劃軌跡,TR是Q定義的每個(gè)向前運(yùn)動(dòng)學(xué)的正解,QD和QDD為返回的規(guī)劃軌跡的速度和加速度。
用MATLAB Robotics中的plot函數(shù)對(duì)各關(guān)節(jié)運(yùn)動(dòng)軌跡進(jìn)行仿真,編程得出SCARA機(jī)器人關(guān)節(jié)角位移、速度和加速度規(guī)劃軌跡曲線如圖6所示。部分程序如下:
>>subplot(2,2,1);
>>plot(t,Q(∶,1));
>>xlabel('Time(s)');
>>ylabel('joint1(rad)');
>>subplot(2,2,2);
>> plot(t,Q(∶,2));
>>xlabel('Time(s)');
圖6 關(guān)節(jié)空間軌跡規(guī)劃仿真結(jié)果
>>ylabel('joint2(rad)');
…
結(jié)合各關(guān)節(jié)的運(yùn)動(dòng)仿真及圖6可得出,關(guān)節(jié)機(jī)器人從初始狀態(tài)到末狀態(tài)過(guò)程中,運(yùn)動(dòng)平穩(wěn),速度和加速度變化平滑,無(wú)突變。表明機(jī)器人手臂在工作過(guò)程中沖擊較小,SCARA機(jī)器人連桿參數(shù)設(shè)計(jì)合理,可以達(dá)到期望的效果。
機(jī)器人運(yùn)動(dòng)學(xué)正問(wèn)題給定關(guān)節(jié)角度變量Q,求末端執(zhí)行器相對(duì)基座的位姿矩陣0T4。運(yùn)用MATLAB對(duì)0T4進(jìn)行求解,取各連桿變量:Q=[pi/4 pi/2 0-pi/4],根據(jù)前面推導(dǎo)的方程可求得末端執(zhí)行器的位姿矩陣0T4,用fkine函數(shù)TR=FKINE(SCARA,Q),輸入上述關(guān)節(jié)變量值,直接得到機(jī)器人末端執(zhí)行器的位姿矩陣。兩者結(jié)果相等,表明運(yùn)動(dòng)學(xué)正問(wèn)題求解無(wú)誤。
機(jī)器人的運(yùn)動(dòng)學(xué)的逆問(wèn)題與正問(wèn)題不同具有復(fù)雜性。通過(guò)ikine函數(shù)設(shè)定初始值,運(yùn)用數(shù)值迭代法經(jīng)過(guò)多次迭代來(lái)求解關(guān)節(jié)角,可得到逆運(yùn)動(dòng)學(xué)的唯一解[8-9]。調(diào)用Q=IKINE(SCARA,T,Q)函數(shù),實(shí)現(xiàn)機(jī)器人運(yùn)動(dòng)學(xué)逆問(wèn)題的求解。MATLAB軟件為機(jī)器人的研究提供了強(qiáng)大的分析和仿真能力,為之后的機(jī)器人動(dòng)力學(xué)分析和軌跡規(guī)劃奠定了基礎(chǔ)。
本文以SCARA四自由度機(jī)器人為研究對(duì)象,借助MATLAB Robotics Toolbox工具箱,求解機(jī)器人的運(yùn)動(dòng)學(xué)方程和軌跡仿真。結(jié)果表明:(1)通過(guò)移動(dòng)手柄位置,可以觀察機(jī)器人末端執(zhí)行器運(yùn)動(dòng)狀態(tài);(2)通過(guò)規(guī)劃?rùn)C(jī)器人運(yùn)動(dòng)軌跡,得出末端執(zhí)行器軌跡曲線;(3)驗(yàn)證了運(yùn)動(dòng)學(xué)正逆解的正確性,表明機(jī)器人結(jié)構(gòu)參數(shù)設(shè)計(jì)合理。
參考文獻(xiàn):
[1]劉鵬,宋濤,贠超,等.焊接機(jī)器人運(yùn)動(dòng)學(xué)分析及軌跡規(guī)劃研究[J].機(jī)電工程,2013(4):390-394.
[2]NIKU S B.孫富春,朱紀(jì)洪,劉國(guó)棟,等譯.機(jī)器人學(xué)導(dǎo)論:分析、控制及應(yīng)用(第2版)[M].北京:電子工業(yè)出版社,2013.
[3]孫浩,趙玉剛,姜文革,等.碼垛機(jī)器人結(jié)構(gòu)設(shè)計(jì)與運(yùn)動(dòng)分析[J].制造業(yè)自動(dòng)化,2013(14):66-68.
[4]劉萍,陳瑩.五自由度關(guān)節(jié)式機(jī)械手運(yùn)動(dòng)學(xué)分析及仿真[J].制造業(yè)自動(dòng)化,2011(19):9-11.
[5]張普行,嚴(yán)軍輝,賈秋玲.六自由度機(jī)械手的運(yùn)動(dòng)學(xué)分析[J].制造業(yè)自動(dòng)化,2011(20):68-71.
[6]楊成文,張鐵.基于ADAMS的SCARA機(jī)器人運(yùn)動(dòng)學(xué)仿真研究 [J].機(jī)床與液壓,2011,39(21):118-121.
[7]謝斌,蔡自興.基于MATLAB Robotics Toolbox的機(jī)器人學(xué)仿真實(shí)驗(yàn)教學(xué)[J].計(jì)算機(jī)教育,2010(19):140-143.
[8]劉輝,毛璐瑤,陳啟愉,等.基于數(shù)值模擬技術(shù)的SCARA機(jī)器人本體設(shè)計(jì)與優(yōu)化[J].機(jī)電工程技術(shù),2017,46(6):1-6.
[9]陳桂,王建紅,湯玉東.KUKA機(jī)器人運(yùn)動(dòng)學(xué)仿真與實(shí)驗(yàn)研究[J].組合機(jī)床與自動(dòng)化加工技術(shù),2014(8):94-97.