陳勝奮,謝明紅
(華僑大學(xué)機電學(xué)院,福建廈門 361021)
隨著科技的發(fā)展,工業(yè)機器人在很多方面得到了應(yīng)用,例如焊接、裝配、運輸、包裝及產(chǎn)品檢驗[1]。但在將工業(yè)機器人直接利用來對工件進行成型加工,還是一個相對新的研究領(lǐng)域。目前國內(nèi)制造業(yè)的發(fā)展飛快,廣泛地應(yīng)用使用了CAD/CAM軟件,同時對復(fù)雜曲面或形狀工件的需求量日益增加。所以CAD/CAM生成的刀位文件已經(jīng)在五軸數(shù)控機床上得到廣泛的應(yīng)用,但對工業(yè)機器人來說卻相差甚遠,國內(nèi)外研究現(xiàn)狀也是差距很大,目前,國內(nèi)基本還是采用傳統(tǒng)示教方法[2]。所以將CAD/CAM的數(shù)據(jù)進行處理與加工機器人進行連接,這對工業(yè)機器人加工是非常必要的,可以輕松實現(xiàn)復(fù)雜工件加工。然而,加工機器人控制器一般不接受CAD/CAM等刀位數(shù)據(jù),因此,國內(nèi)外很多學(xué)者對特定環(huán)境下的NC代碼進行研究。如SMITSI等[3]對機器人離線編程的軌跡規(guī)劃和加工代碼進行研究,NETO Pedro等[4]提出一種新的基于CAD的離線機器人編程解決方案。王引等人[5]對將G代碼的數(shù)據(jù)信息轉(zhuǎn)化成虛擬刀具5個點的坐標進行研究。總之研究一種能將刀位文件轉(zhuǎn)換為工業(yè)機器人工作語言的后置處理器,將會開辟工業(yè)機器人應(yīng)用新的領(lǐng)域,極大推動國內(nèi)工業(yè)行業(yè)的發(fā)展。
數(shù)控加工中的刀位文件中的加工信息數(shù)據(jù)是以工件坐標系為參考基準即加工坐標系,并沒把具體的加工設(shè)備結(jié)構(gòu)及其他參數(shù)考慮進去。因此后置處理器的任務(wù)就是通過讀取CAD/CAM軟件處理生成的刀位文件,然后根據(jù)加工設(shè)備的一些具體參數(shù),運動特性及控制指令格式,進行坐標系變換,逆運動學(xué)求解,解的唯一性選擇,最后生成加工設(shè)備可以讀取的數(shù)據(jù)文件[6]。加工機器人的后置處理流程如圖1所示。
圖1 加工機器人的后置處理框圖
目前,機器人制造廠商所開發(fā)的機器人加工語言不盡相同,對坐標系的定義也不一樣。圖2是加工機器人末端執(zhí)行器(刀具)方位進行定義。
圖2 機器人各坐標系名稱
利用PRO/E生成刀位文件[7]。PRO/E處理輸出的刀位文件包含工藝參數(shù),刀心的位置矢量和姿態(tài)矢量以及其他指令。刀位文件中的坐標系是建立在工件坐標系上的,而工業(yè)機器人控制系統(tǒng)能夠識別的語言中數(shù)據(jù)是建立在機器人坐標系上的,并且只是關(guān)節(jié)的轉(zhuǎn)動角度。因此要開發(fā)一種根據(jù)工業(yè)機器人的結(jié)構(gòu)參數(shù),通過相應(yīng)坐標的轉(zhuǎn)換,分離變量法求逆解,把刀具的位置矢量和姿態(tài)矢量轉(zhuǎn)換成工業(yè)機器人6個關(guān)節(jié)的轉(zhuǎn)動角度的后置處理器。
如圖2所示,OtXtYtZt為刀具坐標系,OwXwYwZw為工件坐標系,OX0Y0Z0為機器人基坐標系,OsXsYsZ為工作臺坐標系。當工業(yè)機器人擺放固定時,機器人基坐標系就固定不變,Z軸垂直于底座。工件坐標系是把工件上的某點當作坐標系原點從而建立的一個坐標系,這樣便于數(shù)據(jù)編程,這也是CAD/CAM生成刀位文件的參考坐標系,方向與基坐標系一致;刀具坐標系中刀尖點是其坐標原點,固定在刀具上,Z軸垂直于刀軸。工作臺坐標系是固定在工作臺上,當工作臺擺放固定時,工作臺坐標系也是固定的,方向與機器人基坐標系一致。安裝刀具,使刀具的軸線與第6軸的軸線重合。Om(軸4、軸5和軸6的交點)為刀具旋轉(zhuǎn)中心,顯然,目的就是把刀位文件中的數(shù)據(jù)即工件坐標系下的坐標,轉(zhuǎn)換為機器人基坐標系下刀具的運動,進而求出各個關(guān)節(jié)角的角度。
如圖2所示,在初始狀態(tài)下,工件坐標系和刀具坐標系的方向是一致的。刀具坐標系原點Ot到Om的向量為rm(0,0,l)。刀具在工件坐標系下的姿態(tài)矢量為u(i,j,k)和位置矢量rp(x,y,z)。
根據(jù)上述的坐標變換,可得:
POm是Om在工件坐標系下的坐標,POt是刀位點在工件坐標系的坐標即為u。a是刀軸單位矢量即為rp。
當工業(yè)機器人和工作臺安裝固定不動時,機器人坐標系與工作臺坐標系相對位置也就固定下來。當工件裝夾到工作臺上面時,工作臺坐標系和工件坐標系的相對位姿也可以確定。設(shè)機器人坐標系與工作臺坐標系相對位置為ro1(ex1,ey1,ez1),可以通過固定工件時得到工作臺坐標系與工件坐標系相對位置ro2(ex2,ey2,ez2),工件坐標系的方向與機器人的坐標系一致(可以通過裝夾做到)。工件坐標系和機器人基坐標系之間的轉(zhuǎn)換矩陣為
當機器人坐標系與工件坐標系不一致時,則需要在后處理過程中進行坐標變換。設(shè)工件坐標系相對基坐標系的旋轉(zhuǎn)矩陣M和平移矢量ro在機器人控制器中定義,編程時作為已知參數(shù)輸入。以POOm表示Om在機器人基坐標系中的位置,則映射關(guān)系如下:
同理可得aO表示刀軸在機器人坐標系下的姿態(tài),則映射關(guān)系如下:
對于6自由度工業(yè)機器人,當最后3個關(guān)節(jié)軸相交于一點時,這樣是存在解析解,把這種求解稱為工業(yè)機器人的解耦。
通常用歐拉角來表示空間物體的姿態(tài)[8]。由于五軸數(shù)控G代碼對歐拉角的(α,β,γ)中的γ沒有給出(γ為刀具軸線旋轉(zhuǎn)方向),因此一般六自由度工業(yè)機器人對于五軸G代碼是冗余的。可以通過固定第6個軸的轉(zhuǎn)動(即θ6為0)來去除冗余。
如圖3所示,數(shù)控加工機器人最后3個關(guān)節(jié)軸相交于點O4,所以可以對點O4進行解耦,將6個關(guān)節(jié)軸分為(θ1,θ2,θ3)和(θ4,θ5,θ6)兩個部分,分別對這兩組解進行求逆解。
各個連桿的參數(shù)如表1所示。
表1 各個連桿的參數(shù)表
求取所需的逆解,可以采取分離變量法來求解。從前面可以知道,手腕的位置只與θ1,θ2,θ3角度有關(guān),所以可以得到下式:
這樣可以求出θ1,θ2,θ3,再把θ1,θ2,θ3代入式(7)可以求出θ4,θ5,θ6。
對于6個自由度的工業(yè)機器人來講,逆解θi是通過反三角函數(shù)求得,而反三角函數(shù)解往往存在不只一個,所以關(guān)節(jié)角θi,i=1,2,…,6,是一般都存在多組解的。當對避障問題不進行考慮的情況下,文中所用目標函數(shù)D如下:
式中:li(i=1,2,3)是關(guān)節(jié)i直接驅(qū)動的連桿的長度。用計算“最短行程”解作為目標函數(shù),使得選擇的解是體現(xiàn)每次轉(zhuǎn)動的位移最小。即D取到最小值時,θ1,θ2,θ3就是所求的最優(yōu)解。
由于最后3個旋轉(zhuǎn)軸相交于一點,連桿長度為0,不能采用目標函數(shù)D。所以文中采用最優(yōu)解是直接取代數(shù)均值來作為目標函數(shù)T。
這樣可以得到θ4,θ5,θ6的最優(yōu)解。
由于機床結(jié)構(gòu)參數(shù)都不相同,很難得到通用的加工代碼,但機床結(jié)構(gòu)參數(shù)不影響加工時刀具的加工軌跡及姿態(tài)和通用信息,所以就可以用刀位文件來保存這些數(shù)據(jù)。不同CAD/CAM軟件生成的格式又不大相同。文中的刀位文件是由PROE軟件生成的,它包含了刀具的位姿狀態(tài)和一些指令信息,下面簡要介紹Proe刀位文件中的一些具體信息所代表的含義。
表2 PRO/E刀位文件命令符的功能
在讀取PROE刀位原文件的時候,先判斷讀到是否是標識符,否則就一直往下讀。直到出現(xiàn)標識符,提取標識符,繼續(xù)讀取文件遇到GOTO時開始記錄運算,然后就將接下來讀到的字符轉(zhuǎn)換成數(shù)據(jù)結(jié)構(gòu)類型。轉(zhuǎn)換后就可以提取到GOTO后的位姿矢量數(shù)據(jù),在讀到GOTO后面字符的時候,須把整個數(shù)據(jù)讀完。字符在刀位文件中是分兩行,獲得數(shù)據(jù)后就按照前面的得到的公式進行計算,得到最終所要的數(shù)據(jù)。然后再接著讀取后面的內(nèi)容,重復(fù)此過程,直到出現(xiàn)標識符FINI就完成了整個刀位文件讀取和數(shù)據(jù)的轉(zhuǎn)換。用此種方式轉(zhuǎn)換一個原文件所需時間相對較短。而將整個刀位文件讀取后再轉(zhuǎn)換,這種方式所需的時間比上種方式多了很多。
G代碼后置處理包括刀位原文件文件的讀取,提取關(guān)鍵標識符,刀位坐標,刀軸姿態(tài),然后將提取到的數(shù)據(jù)根據(jù)機器人的結(jié)構(gòu)轉(zhuǎn)換成機器人各個關(guān)節(jié)的轉(zhuǎn)動角度,最后生成加工代碼。當然PROE刀位文件中也包含了一些冗余的信息注釋,在讀取的時候可以直接讀過去,例如MFGNO指令,這樣可以除去冗余信息。
圖3 后置處理流程圖
后置處理流程圖如圖3所示。
根據(jù)圖3的流程圖,可以定義一個結(jié)構(gòu)體,用來存取工業(yè)機器人所需的加工代碼信息。
首先讀入刀位文件,提取刀位坐標及姿態(tài)和工藝等參數(shù)信息存放在對應(yīng)后置處理前的變量里,應(yīng)用運動學(xué)反解求出機械臂的各關(guān)節(jié)角,并存放在后置處理后的變量中,然后把計算后的結(jié)果顯示到界面,即可生成作業(yè)程序。
struct NODE
{
int Flag;//判斷G01還是G00
double Feed;//進給速度
int Speed;//保存主軸轉(zhuǎn)速
double x,y,z;//刀位文件中的刀位點坐標
double posture[3];//刀位文件中的刀具姿態(tài)
double post_x,post_y,post_z;//后置處理后的刀位點坐標
double post_posture[3];//后置處理后的刀具姿態(tài)
Float A,B,C,I,J,K;//機器人加工時各個關(guān)節(jié)角位置
};
代碼轉(zhuǎn)換過程是將APT文件讀入,讀取標識符,提取刀位數(shù)據(jù)、刀具參數(shù)、工藝參數(shù)等。利用刀位數(shù)據(jù)和工業(yè)機器人自身結(jié)構(gòu)參數(shù)求解工業(yè)機器人的位姿矢量,然后再將運動參數(shù)求得機械臂各個關(guān)節(jié)角度。
打開軟件,點擊“讀取文件”按鈕,選擇要加工的刀位原文件代碼,在軟件界面上顯示如圖4所示。點擊“轉(zhuǎn)換”按鈕,進入刀位數(shù)據(jù)的后置處理,得到工業(yè)機器人加工代碼,在軟件上顯示圖5所示。
圖4 讀入刀位文件數(shù)據(jù)界面
圖5 機器人加工代碼生成界面
通過對CAD/CAM軟件生成的刀位文件數(shù)據(jù)進行分析,提取刀位數(shù)據(jù)信息及一些控制指令。結(jié)合6R機器人的結(jié)構(gòu),通過各坐標系之間的平移和旋轉(zhuǎn)變換,推導(dǎo)出工件坐標系下的刀位數(shù)據(jù)在機器人基坐標系下各個關(guān)節(jié)角度。結(jié)合各個關(guān)節(jié)角的最優(yōu)解生成機器人加工代碼控制指令,最終達到控制機器人的運動目的。
[1]郭益友.工業(yè)機械手在機械制造工藝中的發(fā)展及應(yīng)用[J].淮南職業(yè)技術(shù)學(xué)院學(xué)報,2002,2(1):36-38.
[2]許陽,劉建群,劉雷.基于CPAC的六自由度開放式機器人控制系統(tǒng)的開發(fā)[J].制造業(yè)自動化,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è)機器人加工軌跡規(guī)劃研究[J].組合機床與自動化加工技術(shù),2012(8):14-17.
[6]劉雄偉,張定華,王增強,等.數(shù)控加工理論與編程技術(shù)[M].北京:機械工業(yè)出版社,2000.
[7]葛衛(wèi)京,杜娟,智紅英,等.Pro/E后置處理程序的研究[J].太原科技大學(xué)學(xué)報,2013,34(8):303-304.
[8]崔鯤,孫論強,吳林.V01弧焊機器人運動學(xué)反解及臂形標志的確定[J].機器人,1997,19(6):444-446.