陳勝奮,謝明紅
(華僑大學(xué)機(jī)電學(xué)院,福建廈門(mén) 361021)
隨著科技的發(fā)展,工業(yè)機(jī)器人在很多方面得到了應(yīng)用,例如焊接、裝配、運(yùn)輸、包裝及產(chǎn)品檢驗(yàn)[1]。但在將工業(yè)機(jī)器人直接利用來(lái)對(duì)工件進(jìn)行成型加工,還是一個(gè)相對(duì)新的研究領(lǐng)域。目前國(guó)內(nèi)制造業(yè)的發(fā)展飛快,廣泛地應(yīng)用使用了CAD/CAM軟件,同時(shí)對(duì)復(fù)雜曲面或形狀工件的需求量日益增加。所以CAD/CAM生成的刀位文件已經(jīng)在五軸數(shù)控機(jī)床上得到廣泛的應(yīng)用,但對(duì)工業(yè)機(jī)器人來(lái)說(shuō)卻相差甚遠(yuǎn),國(guó)內(nèi)外研究現(xiàn)狀也是差距很大,目前,國(guó)內(nèi)基本還是采用傳統(tǒng)示教方法[2]。所以將CAD/CAM的數(shù)據(jù)進(jìn)行處理與加工機(jī)器人進(jìn)行連接,這對(duì)工業(yè)機(jī)器人加工是非常必要的,可以輕松實(shí)現(xiàn)復(fù)雜工件加工。然而,加工機(jī)器人控制器一般不接受CAD/CAM等刀位數(shù)據(jù),因此,國(guó)內(nèi)外很多學(xué)者對(duì)特定環(huán)境下的NC代碼進(jìn)行研究。如SMITSI等[3]對(duì)機(jī)器人離線編程的軌跡規(guī)劃和加工代碼進(jìn)行研究,NETO Pedro等[4]提出一種新的基于CAD的離線機(jī)器人編程解決方案。王引等人[5]對(duì)將G代碼的數(shù)據(jù)信息轉(zhuǎn)化成虛擬刀具5個(gè)點(diǎn)的坐標(biāo)進(jìn)行研究。總之研究一種能將刀位文件轉(zhuǎn)換為工業(yè)機(jī)器人工作語(yǔ)言的后置處理器,將會(huì)開(kāi)辟工業(yè)機(jī)器人應(yīng)用新的領(lǐng)域,極大推動(dòng)國(guó)內(nèi)工業(yè)行業(yè)的發(fā)展。
數(shù)控加工中的刀位文件中的加工信息數(shù)據(jù)是以工件坐標(biāo)系為參考基準(zhǔn)即加工坐標(biāo)系,并沒(méi)把具體的加工設(shè)備結(jié)構(gòu)及其他參數(shù)考慮進(jìn)去。因此后置處理器的任務(wù)就是通過(guò)讀取CAD/CAM軟件處理生成的刀位文件,然后根據(jù)加工設(shè)備的一些具體參數(shù),運(yùn)動(dòng)特性及控制指令格式,進(jìn)行坐標(biāo)系變換,逆運(yùn)動(dòng)學(xué)求解,解的唯一性選擇,最后生成加工設(shè)備可以讀取的數(shù)據(jù)文件[6]。加工機(jī)器人的后置處理流程如圖1所示。

圖1 加工機(jī)器人的后置處理框圖
目前,機(jī)器人制造廠商所開(kāi)發(fā)的機(jī)器人加工語(yǔ)言不盡相同,對(duì)坐標(biāo)系的定義也不一樣。圖2是加工機(jī)器人末端執(zhí)行器(刀具)方位進(jìn)行定義。

圖2 機(jī)器人各坐標(biāo)系名稱
利用PRO/E生成刀位文件[7]。PRO/E處理輸出的刀位文件包含工藝參數(shù),刀心的位置矢量和姿態(tài)矢量以及其他指令。刀位文件中的坐標(biāo)系是建立在工件坐標(biāo)系上的,而工業(yè)機(jī)器人控制系統(tǒng)能夠識(shí)別的語(yǔ)言中數(shù)據(jù)是建立在機(jī)器人坐標(biāo)系上的,并且只是關(guān)節(jié)的轉(zhuǎn)動(dòng)角度。因此要開(kāi)發(fā)一種根據(jù)工業(yè)機(jī)器人的結(jié)構(gòu)參數(shù),通過(guò)相應(yīng)坐標(biāo)的轉(zhuǎn)換,分離變量法求逆解,把刀具的位置矢量和姿態(tài)矢量轉(zhuǎn)換成工業(yè)機(jī)器人6個(gè)關(guān)節(jié)的轉(zhuǎn)動(dòng)角度的后置處理器。
如圖2所示,OtXtYtZt為刀具坐標(biāo)系,OwXwYwZw為工件坐標(biāo)系,OX0Y0Z0為機(jī)器人基坐標(biāo)系,OsXsYsZ為工作臺(tái)坐標(biāo)系。當(dāng)工業(yè)機(jī)器人擺放固定時(shí),機(jī)器人基坐標(biāo)系就固定不變,Z軸垂直于底座。工件坐標(biāo)系是把工件上的某點(diǎn)當(dāng)作坐標(biāo)系原點(diǎn)從而建立的一個(gè)坐標(biāo)系,這樣便于數(shù)據(jù)編程,這也是CAD/CAM生成刀位文件的參考坐標(biāo)系,方向與基坐標(biāo)系一致;刀具坐標(biāo)系中刀尖點(diǎn)是其坐標(biāo)原點(diǎn),固定在刀具上,Z軸垂直于刀軸。工作臺(tái)坐標(biāo)系是固定在工作臺(tái)上,當(dāng)工作臺(tái)擺放固定時(shí),工作臺(tái)坐標(biāo)系也是固定的,方向與機(jī)器人基坐標(biāo)系一致。安裝刀具,使刀具的軸線與第6軸的軸線重合。Om(軸4、軸5和軸6的交點(diǎn))為刀具旋轉(zhuǎn)中心,顯然,目的就是把刀位文件中的數(shù)據(jù)即工件坐標(biāo)系下的坐標(biāo),轉(zhuǎn)換為機(jī)器人基坐標(biāo)系下刀具的運(yùn)動(dòng),進(jìn)而求出各個(gè)關(guān)節(jié)角的角度。
如圖2所示,在初始狀態(tài)下,工件坐標(biāo)系和刀具坐標(biāo)系的方向是一致的。刀具坐標(biāo)系原點(diǎn)Ot到Om的向量為rm(0,0,l)。刀具在工件坐標(biāo)系下的姿態(tài)矢量為u(i,j,k)和位置矢量rp(x,y,z)。
根據(jù)上述的坐標(biāo)變換,可得:

POm是Om在工件坐標(biāo)系下的坐標(biāo),POt是刀位點(diǎn)在工件坐標(biāo)系的坐標(biāo)即為u。a是刀軸單位矢量即為rp。
當(dāng)工業(yè)機(jī)器人和工作臺(tái)安裝固定不動(dòng)時(shí),機(jī)器人坐標(biāo)系與工作臺(tái)坐標(biāo)系相對(duì)位置也就固定下來(lái)。當(dāng)工件裝夾到工作臺(tái)上面時(shí),工作臺(tái)坐標(biāo)系和工件坐標(biāo)系的相對(duì)位姿也可以確定。設(shè)機(jī)器人坐標(biāo)系與工作臺(tái)坐標(biāo)系相對(duì)位置為ro1(ex1,ey1,ez1),可以通過(guò)固定工件時(shí)得到工作臺(tái)坐標(biāo)系與工件坐標(biāo)系相對(duì)位置ro2(ex2,ey2,ez2),工件坐標(biāo)系的方向與機(jī)器人的坐標(biāo)系一致(可以通過(guò)裝夾做到)。工件坐標(biāo)系和機(jī)器人基坐標(biāo)系之間的轉(zhuǎn)換矩陣為

當(dāng)機(jī)器人坐標(biāo)系與工件坐標(biāo)系不一致時(shí),則需要在后處理過(guò)程中進(jìn)行坐標(biāo)變換。設(shè)工件坐標(biāo)系相對(duì)基坐標(biāo)系的旋轉(zhuǎn)矩陣M和平移矢量ro在機(jī)器人控制器中定義,編程時(shí)作為已知參數(shù)輸入。以POOm表示Om在機(jī)器人基坐標(biāo)系中的位置,則映射關(guān)系如下:

同理可得aO表示刀軸在機(jī)器人坐標(biāo)系下的姿態(tài),則映射關(guān)系如下:

對(duì)于6自由度工業(yè)機(jī)器人,當(dāng)最后3個(gè)關(guān)節(jié)軸相交于一點(diǎn)時(shí),這樣是存在解析解,把這種求解稱為工業(yè)機(jī)器人的解耦。
通常用歐拉角來(lái)表示空間物體的姿態(tài)[8]。由于五軸數(shù)控G代碼對(duì)歐拉角的(α,β,γ)中的γ沒(méi)有給出(γ為刀具軸線旋轉(zhuǎn)方向),因此一般六自由度工業(yè)機(jī)器人對(duì)于五軸G代碼是冗余的。可以通過(guò)固定第6個(gè)軸的轉(zhuǎn)動(dòng)(即θ6為0)來(lái)去除冗余。
如圖3所示,數(shù)控加工機(jī)器人最后3個(gè)關(guān)節(jié)軸相交于點(diǎn)O4,所以可以對(duì)點(diǎn)O4進(jìn)行解耦,將6個(gè)關(guān)節(jié)軸分為(θ1,θ2,θ3)和(θ4,θ5,θ6)兩個(gè)部分,分別對(duì)這兩組解進(jìn)行求逆解。

各個(gè)連桿的參數(shù)如表1所示。

表1 各個(gè)連桿的參數(shù)表

求取所需的逆解,可以采取分離變量法來(lái)求解。從前面可以知道,手腕的位置只與θ1,θ2,θ3角度有關(guān),所以可以得到下式:

這樣可以求出θ1,θ2,θ3,再把θ1,θ2,θ3代入式(7)可以求出θ4,θ5,θ6。
對(duì)于6個(gè)自由度的工業(yè)機(jī)器人來(lái)講,逆解θi是通過(guò)反三角函數(shù)求得,而反三角函數(shù)解往往存在不只一個(gè),所以關(guān)節(jié)角θi,i=1,2,…,6,是一般都存在多組解的。當(dāng)對(duì)避障問(wèn)題不進(jìn)行考慮的情況下,文中所用目標(biāo)函數(shù)D如下:

式中:li(i=1,2,3)是關(guān)節(jié)i直接驅(qū)動(dòng)的連桿的長(zhǎng)度。用計(jì)算“最短行程”解作為目標(biāo)函數(shù),使得選擇的解是體現(xiàn)每次轉(zhuǎn)動(dòng)的位移最小。即D取到最小值時(shí),θ1,θ2,θ3就是所求的最優(yōu)解。
由于最后3個(gè)旋轉(zhuǎn)軸相交于一點(diǎn),連桿長(zhǎng)度為0,不能采用目標(biāo)函數(shù)D。所以文中采用最優(yōu)解是直接取代數(shù)均值來(lái)作為目標(biāo)函數(shù)T。

這樣可以得到θ4,θ5,θ6的最優(yōu)解。
由于機(jī)床結(jié)構(gòu)參數(shù)都不相同,很難得到通用的加工代碼,但機(jī)床結(jié)構(gòu)參數(shù)不影響加工時(shí)刀具的加工軌跡及姿態(tài)和通用信息,所以就可以用刀位文件來(lái)保存這些數(shù)據(jù)。不同CAD/CAM軟件生成的格式又不大相同。文中的刀位文件是由PROE軟件生成的,它包含了刀具的位姿狀態(tài)和一些指令信息,下面簡(jiǎn)要介紹Proe刀位文件中的一些具體信息所代表的含義。

表2 PRO/E刀位文件命令符的功能
在讀取PROE刀位原文件的時(shí)候,先判斷讀到是否是標(biāo)識(shí)符,否則就一直往下讀。直到出現(xiàn)標(biāo)識(shí)符,提取標(biāo)識(shí)符,繼續(xù)讀取文件遇到GOTO時(shí)開(kāi)始記錄運(yùn)算,然后就將接下來(lái)讀到的字符轉(zhuǎn)換成數(shù)據(jù)結(jié)構(gòu)類型。轉(zhuǎn)換后就可以提取到GOTO后的位姿矢量數(shù)據(jù),在讀到GOTO后面字符的時(shí)候,須把整個(gè)數(shù)據(jù)讀完。字符在刀位文件中是分兩行,獲得數(shù)據(jù)后就按照前面的得到的公式進(jìn)行計(jì)算,得到最終所要的數(shù)據(jù)。然后再接著讀取后面的內(nèi)容,重復(fù)此過(guò)程,直到出現(xiàn)標(biāo)識(shí)符FINI就完成了整個(gè)刀位文件讀取和數(shù)據(jù)的轉(zhuǎn)換。用此種方式轉(zhuǎn)換一個(gè)原文件所需時(shí)間相對(duì)較短。而將整個(gè)刀位文件讀取后再轉(zhuǎn)換,這種方式所需的時(shí)間比上種方式多了很多。
G代碼后置處理包括刀位原文件文件的讀取,提取關(guān)鍵標(biāo)識(shí)符,刀位坐標(biāo),刀軸姿態(tài),然后將提取到的數(shù)據(jù)根據(jù)機(jī)器人的結(jié)構(gòu)轉(zhuǎn)換成機(jī)器人各個(gè)關(guān)節(jié)的轉(zhuǎn)動(dòng)角度,最后生成加工代碼。當(dāng)然PROE刀位文件中也包含了一些冗余的信息注釋,在讀取的時(shí)候可以直接讀過(guò)去,例如MFGNO指令,這樣可以除去冗余信息。

圖3 后置處理流程圖
后置處理流程圖如圖3所示。
根據(jù)圖3的流程圖,可以定義一個(gè)結(jié)構(gòu)體,用來(lái)存取工業(yè)機(jī)器人所需的加工代碼信息。
首先讀入刀位文件,提取刀位坐標(biāo)及姿態(tài)和工藝等參數(shù)信息存放在對(duì)應(yīng)后置處理前的變量里,應(yīng)用運(yùn)動(dòng)學(xué)反解求出機(jī)械臂的各關(guān)節(jié)角,并存放在后置處理后的變量中,然后把計(jì)算后的結(jié)果顯示到界面,即可生成作業(yè)程序。
struct NODE
{
int Flag;//判斷G01還是G00
double Feed;//進(jìn)給速度
int Speed;//保存主軸轉(zhuǎn)速
double x,y,z;//刀位文件中的刀位點(diǎn)坐標(biāo)
double posture[3];//刀位文件中的刀具姿態(tài)
double post_x,post_y,post_z;//后置處理后的刀位點(diǎn)坐標(biāo)
double post_posture[3];//后置處理后的刀具姿態(tài)
Float A,B,C,I,J,K;//機(jī)器人加工時(shí)各個(gè)關(guān)節(jié)角位置
};
代碼轉(zhuǎn)換過(guò)程是將APT文件讀入,讀取標(biāo)識(shí)符,提取刀位數(shù)據(jù)、刀具參數(shù)、工藝參數(shù)等。利用刀位數(shù)據(jù)和工業(yè)機(jī)器人自身結(jié)構(gòu)參數(shù)求解工業(yè)機(jī)器人的位姿矢量,然后再將運(yùn)動(dòng)參數(shù)求得機(jī)械臂各個(gè)關(guān)節(jié)角度。
打開(kāi)軟件,點(diǎn)擊“讀取文件”按鈕,選擇要加工的刀位原文件代碼,在軟件界面上顯示如圖4所示。點(diǎn)擊“轉(zhuǎn)換”按鈕,進(jìn)入刀位數(shù)據(jù)的后置處理,得到工業(yè)機(jī)器人加工代碼,在軟件上顯示圖5所示。

圖4 讀入刀位文件數(shù)據(jù)界面

圖5 機(jī)器人加工代碼生成界面
通過(guò)對(duì)CAD/CAM軟件生成的刀位文件數(shù)據(jù)進(jìn)行分析,提取刀位數(shù)據(jù)信息及一些控制指令。結(jié)合6R機(jī)器人的結(jié)構(gòu),通過(guò)各坐標(biāo)系之間的平移和旋轉(zhuǎn)變換,推導(dǎo)出工件坐標(biāo)系下的刀位數(shù)據(jù)在機(jī)器人基坐標(biāo)系下各個(gè)關(guān)節(jié)角度。結(jié)合各個(gè)關(guān)節(jié)角的最優(yōu)解生成機(jī)器人加工代碼控制指令,最終達(dá)到控制機(jī)器人的運(yùn)動(dòng)目的。
[1]郭益友.工業(yè)機(jī)械手在機(jī)械制造工藝中的發(fā)展及應(yīng)用[J].淮南職業(yè)技術(shù)學(xué)院學(xué)報(bào),2002,2(1):36-38.
[2]許陽(yáng),劉建群,劉雷.基于CPAC的六自由度開(kāi)放式機(jī)器人控制系統(tǒng)的開(kāi)發(fā)[J].制造業(yè)自動(dòng)化,2013,35(5):29-31.
[3]MITSI S,Bouzakis K-D.Off-line Programming of an Industrial Robot For Manufacturing[J].The International Journal of Advanced Manufacturing Technology,2005,26(3):262-267.
[4]NETO Pedro,MENDES Nuno.Direct Off-line Robot Programming Via a Common CAD Package[J].Robotics and Autonomous Systems,2013,61(8):896-910.
[5]王引,仇曉黎,劉明燈,等.基于NC代碼的工業(yè)機(jī)器人加工軌跡規(guī)劃研究[J].組合機(jī)床與自動(dòng)化加工技術(shù),2012(8):14-17.
[6]劉雄偉,張定華,王增強(qiáng),等.?dāng)?shù)控加工理論與編程技術(shù)[M].北京:機(jī)械工業(yè)出版社,2000.
[7]葛衛(wèi)京,杜娟,智紅英,等.Pro/E后置處理程序的研究[J].太原科技大學(xué)學(xué)報(bào),2013,34(8):303-304.
[8]崔鯤,孫論強(qiáng),吳林.V01弧焊機(jī)器人運(yùn)動(dòng)學(xué)反解及臂形標(biāo)志的確定[J].機(jī)器人,1997,19(6):444-446.