楊 林,李 霆,黃桂武,扶宇陽
(1.五邑大學(xué)機(jī)電學(xué)院,廣東江門 529020;2.廣東科杰機(jī)械自動化有限公司,廣東江門 529020)
MATLAB軟件主要是面對科學(xué)計算、可視化及交互式程序設(shè)計的環(huán)境,它的基本數(shù)據(jù)單位是矩陣。通過調(diào)用其附加的神經(jīng)網(wǎng)絡(luò)等工具箱,可使開發(fā)算法的效率比C、C++等高。機(jī)器人學(xué)的相關(guān)運算主要以矩陣運算為主,且開發(fā)機(jī)器人路徑規(guī)劃、逆運動學(xué)等算法時有的需要用到神經(jīng)網(wǎng)絡(luò)、遺傳算法等,而這在MATLAB中的調(diào)用十分方便。而SolidWorks等三維軟件可以模擬現(xiàn)實物理環(huán)境,通過給關(guān)節(jié)添加電機(jī)可以模擬現(xiàn)實環(huán)境中的電機(jī)驅(qū)動機(jī)器人關(guān)節(jié),如果解決了Solid?Works引用MATLAB生成的電機(jī)數(shù)據(jù)的問題,就可以實現(xiàn)SolidWorks與MATLAB的聯(lián)合仿真。
要求機(jī)器人末端跟蹤一個在30°斜面上的矩形,矩形輪廓為:500 mm×200 mm,如圖1所示。
機(jī)器人初始位置設(shè)為θ2為90°,其余為0°,跟蹤路徑要求機(jī)器人末端從初始位置0運動到點3用PTP跟蹤,再按照3-1-2-4-3順序直線連續(xù)跟蹤,再按PTP方式從位置3回到初始位置0。各段所用時間設(shè)置為2 s。
圖1 任務(wù)說明
圖2 跟蹤路徑
JRB608機(jī)器人是某公司研發(fā)的一款用于搬運、焊接的6自由度機(jī)器人,末端負(fù)載能力為8 kg。各關(guān)節(jié)全部為旋轉(zhuǎn)關(guān)節(jié),其中4、5、6關(guān)節(jié)軸線相互垂直且交于一點,其幾何結(jié)構(gòu)滿足Pieper準(zhǔn)則。結(jié)構(gòu)如圖3所示。
為分析機(jī)器人運動學(xué)正逆解問題,按照Dena?vit-Hartenberg方法[1],結(jié)合MATLAB機(jī)器人工具箱[3]函數(shù)格式,建立如圖4所示的前置坐標(biāo)系,即將關(guān)節(jié)i的軸線置為第i個連桿坐標(biāo)系的Zi軸,指向任意。具體建立方法為將機(jī)器人所有桿件移動到初始位置,對應(yīng)所有變量均為零值。基坐標(biāo)系{0}與坐標(biāo)系{1}的初始位置重合,坐標(biāo)系{i}的原點位于公垂線ai與關(guān)節(jié)軸i的交點處,Xi方向為沿ai方向由關(guān)節(jié)i指向關(guān)節(jié)i+1;坐標(biāo)系{N}的Yi軸由右手定則確定。機(jī)器人后三個關(guān)節(jié)軸線交與一點,原點都設(shè)在交點上。對應(yīng)于圖4所建立的坐標(biāo)系,機(jī)器人D-H參數(shù) αi、ai、 di、 θi(i=1,2…6)如表1所示。四個參數(shù)依次表示連桿扭角、連桿長度、兩連桿距離、兩連桿夾角。
圖3 JRB608結(jié)構(gòu)
圖4 機(jī)器人坐標(biāo)系
表1 JRB608機(jī)器人連桿參數(shù)
2.2.1 機(jī)器人正向運動學(xué)
運動學(xué)正問題就是給定桿件的幾何參數(shù)和關(guān)節(jié)的位移,求解末端連桿坐標(biāo)系相對于基座標(biāo)系的位姿。
式(1)中c=cos,s=sin。代入數(shù)據(jù)可得到機(jī)器人末端相對于基座標(biāo)系的位置和姿態(tài),矩陣表示為:
式(2) 中, nx、ny、nz表示坐標(biāo)系{6}的 X 軸與基坐標(biāo)系{0}的 X0、Y0、Z0軸夾角的余弦值,ox、oy、oz表示坐標(biāo)系{6}的 Y 軸與基坐標(biāo)系{0}的X0、Y0、Z0軸夾角的余弦值, ax、ay、az表示坐標(biāo)系{6}的Z軸與基坐標(biāo)系{0}的 X0、Y0、Z0軸夾角的余弦值。 px、py、pz表示坐標(biāo)系{6}的原點在基坐標(biāo)系{0}中的位置。
2.2.2 機(jī)器人逆向運動學(xué)
機(jī)器人逆運動學(xué)問題是根據(jù)已知的末端執(zhí)行器的位姿,求解各個關(guān)節(jié)的角度值。
本文采用微分變換求解逆向運動學(xué)問題[3]。將問題描述為:已知坐標(biāo)系{6}相對于基坐標(biāo)系{0}的微分變化時,求出各關(guān)節(jié)角度值的相應(yīng)變化。
當(dāng)微分運動相對于基座標(biāo)系進(jìn)行時,微分變換記為Δ,相對于坐標(biāo)系T進(jìn)行時,記為ΔT,微分變換一般表達(dá)式為[2]:
其中,δx,δy,δz分別表示dθ繞指定坐標(biāo)系的X,Y,Z軸的微分旋轉(zhuǎn),dx,dy,dz表示相應(yīng)的微分平移。
表1是結(jié)合MATLAB機(jī)器人工具箱格式得出的連桿參數(shù),代入相關(guān)參數(shù),得到MATLAB環(huán)境下的機(jī)器人模型。建立機(jī)器人模型過程如下:
連桿參數(shù):
L{1}=link([pi/2.1175 0 0 0]);
L{2}=link([0.59 0 0 0]);
L{3}=link([pi/2.1675 0 0 0]);
L{4}=link([-pi/2 0 0.671 0]);
L{5}=link([pi/2 0 0 0 0]);
L{6}=link([0 0 0 0 0]);
構(gòu)建機(jī)器人:
JRB_608=robot(L,'JRB608');
JRB_608.name='JRB608';
模型可視化:
theta=[0 pi/2 0 0 0 0];
plot(JRB_608,theta);
drivebot(JRB_608);
圖5是根據(jù)連桿參數(shù)繪制出的連桿模型,圖6為滑塊控制圖,可以驅(qū)動模型并查看各關(guān)節(jié)角度范圍限制。
自編check.m函數(shù)用于檢測所給角度是否超出角度限制,關(guān)鍵語句為:
圖5 JRB608模型
theta(i)<min(L{i}.qlim)|theta(i)>max(L{i}.qlim)error(''):%引號內(nèi)為錯誤提示內(nèi)容。
SolidWorks環(huán)境下,使焊槍末端與點3重合,且使焊槍與焊接平面垂直,依次與點1、點2、點4重合,初始點為0,得出4種位姿下各關(guān)節(jié)的角度:
q0=[0 90 0 0 0 0]*pi/180;%起始點位置
q3=[-10.33 71.17-7.69-5.15-42 0]*pi/180;
q1=[-11.5 88.83-19.56-5.79-47 0]*pi/180;
q2=[11.5 88.65-17.9 5.8-47.4 0]*pi/180;
q4=[10.1 71.16-7.68 5-42.1 0]*pi/180;
機(jī)器人在點0、3時的位姿矩陣,運用MAT?LAB機(jī)器人工具箱函數(shù)fkine()求解:
T0=fkine(JRB_608,q0);%點0位姿矩陣
T3=fkine(JRB_608,q3);%點3位姿矩陣
機(jī)器人在點1,2,4處的位姿矩陣通過平移變換得到:
T1=transl(-0.165,0,0.095)*T3;%點1處位姿矩陣
T2=transl(0,0.49,0)*T1;%點2處位姿矩陣
T4=transl(.165,0,-0.095)*T2;%點4處位姿矩陣
圖6 滑塊控制圖
由于所給任務(wù)為在笛卡爾空間的直線運動,必須將笛卡爾空間轉(zhuǎn)換到關(guān)節(jié)空間以得到關(guān)節(jié)位移增量。MATLAB中ctraj()函數(shù)可以計算兩點間笛卡爾空間軌跡插補(bǔ)的函數(shù)。求解關(guān)節(jié)角度語句如下:
t1=0:0.02:2;%0~2s,采樣時間20ms
Q0_3=ctraj(T0,T3,length(t1));%點0到點3
Q03=ikine(JRB_608,Q0_3,q0);
%點0到3各時刻關(guān)節(jié)角位移,起始位置q0
同理,可得到Q31(點3到點1)、Q12(點1到點2)、Q24(點2到點4)、Q43(點4到點3)、Q30(點3到點0)。
程序運行出來的數(shù)據(jù)就是6個關(guān)節(jié)在每個時刻的角度值,可使用語句:plot(JRB_608,Q04)在MATLAB環(huán)境下動態(tài)仿真,以檢查結(jié)果的正確性。
圖7 定義關(guān)節(jié)馬達(dá)
圖8 裝載數(shù)據(jù)
對于6自由度機(jī)器人,要完成末端執(zhí)行器在笛卡爾空間直線軌跡仿真,想簡單的靠給電機(jī)輸入數(shù)據(jù)點,工作量非常大,而且一旦數(shù)據(jù)更改,就得重新輸入,費時且費力。但是MATLAB能夠生成txt、dat、mat等格式的文件,而SolidWorks motion可以讀取txt文件格式的數(shù)據(jù)給電機(jī),這給驗證運動學(xué)算法和機(jī)器人仿真帶來很大方便。
MATLAB生成txt文件語句為:
save('d:JRB6J1zhou.txt','J1','-ascii');
語句中,J1代表要寫入數(shù)據(jù),J1zhou.txt為要生成的文件名。
SolidWorks Motion是集成于SolidWorks premi?um中的運動學(xué)與動力學(xué)分析插件,還可以檢測運動過程中是否會發(fā)生干涉。使用motion分析,軟件按照用戶定義的裝配關(guān)系,精確模擬并分析裝配體的運動,以圖形、動畫、表格等多種方式輸出分析結(jié)果。由于SolidWorks Motion運動算例分析同時計及了運動約束、材料屬性、質(zhì)量、及零部件接觸,所以可以很方便地模擬和求解現(xiàn)實受力情況。
首先在SolidWorks環(huán)境下建立好機(jī)器人模型,定義好裝配關(guān)系,進(jìn)入運動算例界面,按照2.1節(jié)所建立的連桿坐標(biāo)系給每個關(guān)節(jié)定義電機(jī),電機(jī)方向如圖7所示,再點擊“從文件裝載”,如圖8所示,給馬達(dá)選擇3.4節(jié)生成的相應(yīng)txt文件,點擊“計算運動算例”,就可以使機(jī)器人按照編寫的算法運動。
干涉檢查。本文在環(huán)境中放置一個干涉零件,如圖9所示的矩形零件,以說明焊槍與環(huán)境干涉檢查方法。在Motion Manager設(shè)計樹欄右鍵單擊“檢查干涉”,彈出圖10所示對話框,選中要檢查干涉的零部件,圖10中“結(jié)束幀數(shù)”選項按照motion分析中的每秒幀數(shù)設(shè)置,本算例中每秒幀數(shù)時42,為檢查前1.5 s內(nèi)有無干涉出現(xiàn),結(jié)束幀數(shù)應(yīng)該為63。計算出的干涉顯示在文本框中,點擊干涉,干涉區(qū)域會著重顯示,并且干涉位置會跟隨幀數(shù)變化,且干涉區(qū)域可以放大以更清楚查看。根據(jù)干涉結(jié)果,可以對機(jī)器人路徑規(guī)劃算法進(jìn)行檢驗,在三維實體模型下查看是否機(jī)器人已經(jīng)避開環(huán)境中的障礙。
圖9 干涉零件
圖10 干涉檢查
軌跡與速度曲線跟蹤。在Motion界面,單擊“結(jié)果和圖解”,能生成運動過程中的關(guān)節(jié)力矩、目標(biāo)點運動速度、加速度、角位移,還能對目標(biāo)點進(jìn)行跟蹤。本文根據(jù)生成的文件,運行后對焊槍末端進(jìn)行軌跡跟蹤,跟蹤結(jié)果如圖11所示。
從圖11說明此算法可以完成軌跡跟蹤要求,但圖12表明,末端速度有跳變,對機(jī)械結(jié)構(gòu)會產(chǎn)生沖擊,在軌跡規(guī)劃階段還需要對算法進(jìn)行優(yōu)化。從而為后期軟件規(guī)劃指明方向。
圖11 末端軌跡
圖12 末端運行速度
本文通過SolidWorks與MATLAB之間文件共享,實現(xiàn)了兩者之間的聯(lián)合仿真。SolidWorks能將現(xiàn)實生活中的物理環(huán)境簡單而又逼真地顯示出來,而軟件開發(fā)工作人員又正好缺少這樣一個檢驗環(huán)境,通過觀察仿真得出的曲線,軟件開發(fā)人員可以直觀看出已經(jīng)實現(xiàn)了哪些功能,所編程序在實際運行中會不會產(chǎn)生干涉,還需要在哪些地方進(jìn)行改進(jìn)等;而對于機(jī)器人結(jié)構(gòu)設(shè)計人員,還可以在添加了Simulation之后,機(jī)器人本體結(jié)構(gòu)變形情況也會顯示在仿真當(dāng)中,可直觀看出在完成該任務(wù)下各個零件的變形情況,從而指導(dǎo)結(jié)構(gòu)優(yōu)化設(shè)計。
綜上所述,通過聯(lián)合仿真,將軟件開發(fā)工作者與結(jié)構(gòu)設(shè)計工作者聯(lián)系起來,使得在開發(fā)階段可以得到各自想要的數(shù)據(jù),從而為后續(xù)結(jié)構(gòu)設(shè)計和軟件設(shè)計工作人員提供改進(jìn)方向。
[1]John J.Craig.機(jī)械人學(xué)導(dǎo)論[M].北京:機(jī)械工業(yè)出版社,2006.
[2]蔡自興.機(jī)械人學(xué)[M].北京:清華大學(xué)出版,2000.
[3] Corke P I.A Robotics Toolbox for MATLAB [J].IEEE Robotics and Automation Magazine, 1996, 3 (1):24-32.
[4]張愛紅,張秋菊.機(jī)器人示教編程方法[J].組合機(jī)床與自動化加工技術(shù),2005,27(2):75-78.
[5] YUN Xiao-ping,ERIC R B.Design,Implementation,and Experimental Results of a Quaternion-Based Kalman Filter for Human Body Motion Tracking [J].IEEE Transaction on Robotics and Automation, 2004, 20(1): 160-167.
[6] A.Gasparetto,V.Zanotto.A new method for smooth tra?jectory planning of robot manipulators [J].Mecha?nism,2004,42:455-471.
[7]熊震宇,陳煥明,葛楊.基于ADAMS的弧焊機(jī)器人運動仿真[J].計算機(jī)工程與應(yīng)用,2005,11:166-167,213.
[8]孔凡斌,姜培剛,宋玲玲.基于UGOpenC的FANUCM-16iB/20工業(yè)機(jī)器人動態(tài)仿真[J].計算機(jī)應(yīng)用與軟件,2008,25(6):169-171.
[9]王嵐,陸露.套裝式助力機(jī)器人動力學(xué)建模與仿真[J].機(jī)電工程,2011(03):324-328.
[10]劉成良,張為公,翟羽健,等.RV12L6R焊接機(jī)器人運動學(xué)及計算機(jī)仿真系統(tǒng)研究[J].機(jī)器人,1998,20(05):333-341.