王嘉翀,郭恩澍,李宏偉
(北京航星機器制造有限公司,北京 100010)
隨著數控加工技術的不斷發展,UG等CAD軟件在數字化制造中起著越來越重要的作用[1]。當前通用CAD/CAM軟件主要應用于數控機床的加工制造中,而對于工業機器人,一方面由于形成刀位軌跡邏輯的差異,另一方面由于缺乏對應的后置處理算法支持,使得其在工業機器人應用極為有限。通過分析二者的差異,發現除了語言指令的差別,在插補算法中特別是圓弧插補算法也存在較大的差異,工業機器人常用三點法圓弧插補指令,故研究一種將數控圓弧插補指令轉換為工業機器人可利用的空間圓弧插補指令的算法,具有重要的應用意義。
空間圓弧曲線插補可以使數控系統可以直接加工各種圓弧[2]。陳漢軍等[3]提出了一種根據給定精度利用圓弧逼近平面任意曲線的方法,為解決空間任意曲線插補提供了解決辦法,但其利用點的離散化和曲率半徑的算法并不適用于UG軌跡所提供的參數信息。裴世聰[4]對基于坐標系變換的空間任意圓弧插補算法進行了分析,但其主要是針對圓弧點的增量進行求解,而未對具體點值進行深入研究。趙燕偉、郭吉昌等[5-6]提出了基于UG加工信息進行工業機器人的軌跡規劃,但未對運動的插補算法進行具體的研究。此外,還有其他學者[7-9]針對工業機器人的運動插補算法進行分析及優化,并實現了運動軌跡仿真,但只是針對路徑規劃角度的優化,并未對后置處理算法程序開展進一步的研究。
本文以UG后置處理中可獲得的變量參數為基礎,基于齊次變換矩陣方法研究了工業機器人的三點圓弧插補算法,并基于UG后置處理器進行了適用于工業機器人語言規則的程序開發及驗證。
工業機器人的空間圓弧指令是通過給定起點、中點、終點,從而確定一段圓弧曲線。而數控機床代碼則是利用R或IJK模式實現。針對這個編碼差異,筆者利用UG中圓弧指令可提供的參數,包括起點、終點、旋轉角度以及圓軸矢量等,進行從二維平面到三維空間的遞進圓弧插補算法轉換和研究。
在二維平面中,設O點坐標為(x0,y0),A點坐標為(x1,y1),中點C點坐標為(x,y),旋轉角度為θ,半徑為r。由于圓軸矢量為固定值,因此求C點的坐標有如下2種方式。
1)復數域法。根據復數的定義公式求得:
x=a+(x0-a)cosα-(y0-b)sinα
y=b+(x0-a)sinα+(y0-b)cosα
2)向量法。
OA向量為:

OC向量為:

OC與OA向量的模均為:
|OC|=|OA|=r
(1)
OC與OA的夾角為θ,則有:
(2)
由式1和式2可求得坐標值X、Y。
對比驗證見表1。

表1 2種算法對比結論
在分析了二維平面的相關算法后,由于空間圓軸矢量的變化,使得矢量法求解極為復雜,但如果先基于二維平面的中點算法求出相對坐標系下的中點值,再結合三維空間的齊次坐標變換思路,解出基坐標系下的中點坐標,就為空間圓弧中點的求解提供了方法??臻g圓弧中點圖如圖1所示。

圖1 空間圓弧中點圖
圖1中,假定已知圓軸矢量為a(ax,ay,az),起點為A(x1,y1,z1),終點為B(x,y,z),圓心O為(x0,y0,z0),旋轉弧度為θ,XYZ為基坐標系,X′Y′Z′為圓弧平面坐標系,已知圓半徑r,算法如下。


根據右手螺旋法則,Y′軸方向為:
(3)
相對坐標系X′Y′Z′與基坐標系XYZ的旋轉變換矩陣為(需單位向量):

(4)
在X′Y′Z′坐標系中,圓弧面在平面X′O′Y′上,則中點B坐標可描述為:

(5)
下一步需要將B點坐標轉換至基坐標系XYZ下,利用坐標齊次變換,有:

(6)
將式3~式5代入式6并展開,則有

至此,已經可以求得空間圓弧中點一般算法公式,但在驗證過程中發現一個問題,就是未將建立新建坐標系中X軸方向和所在圓弧的圓心位置圓軸矢量的垂直關系進行約束,可能導致圓弧面不垂直圓軸矢量的情況。故需要引入約束條件,直接建立圓軸矢量與X、Y方向的平面方程,引入X軸同Z軸垂直的約束條件,設(xp,yp,zp)為圓軸矢量恒通過的一點:

(7)
圓弧所在平面的法向量平面方程為:
ax*(x-x1)+ay*(y-y1)+
az*(z-z1)=0
(8)
那么聯立式7和式8可確定圓心所在點的坐標參數t0:
t0=ax*(x1-xp)+ay*(y1-yp)+
az*(z1-zp)
(9)
將t0代入式10可得約束后圓心坐標為:

(10)
將式10代入式6,同時默認矢量恒通過已知圓心點,即可得到空間圓弧三點插補算法的求值函數:
式中,C=ax*x0+ay*y0+az*z0;K=1-cosθ。
在得到空間三點法圓弧取值算法后,需要在UG后置處理程序中進行相關程序的開發[10],開發過程如下。
1)確定可獲取變量信息,將UG/post中可獲取的mom變量進行獲取
global mom_arc_angle圓弧度數
set angle mom_arc_angle
……
2)算法程序編程,對旋轉方向進行判定并引入算法函數(見圖2a)。
判斷旋轉方向確定角度符號
if {[string match dir "clw"]} {set theta [expr angle/2*(-1)]
……
} else {set theta [expr angle/2*(-1)] }
參數值引入
set theta [expr theta*DEG2RAD]
……
set x_n [expr (a…)]
……
上述x_n,y_n,z_n即為求取的數值。
3)對后置處理變量信息進行替換輸出變量(見圖2b)。
首先在UG后置處理圓弧運動事件中,移取機床自帶的G代碼形式,重新定義三點的變量名稱,再以ABB機器人圓弧插補指令格式進行格式轉換和變量替換并輸出。
工業機器人圓弧插補基本格式:
MoveL point{X,Y,Z}
MoveC Cirpoint{X,Y,Z},Topoint{X,Y,Z},speed[v]…
操作過程:在UG/post Builder中新建圓弧中點變量,在circle move事件中,先插入上述算法定制命令,再按照工業機器人基本指令格式引入變量參數并輸出。
1)應用MATLAB軟件對算法程序生成點位的算法進行驗證,分別確認引入約束條件前和引入約束后旋轉點位準確性。同時通過余弦公式對生成點位的轉角進行反求驗證。

a) 定制命令編程

b) 圓弧插補指令格式
約束前后點位圖如圖3所示,以(1,1,2)為圓軸矢量,點(1,1,2)為圓心,點(2,2,1)為起點,以10°為轉角旋轉1周,圖4所示為以約束后算法旋轉3/4周并生成10個點位。

圖3 約束前后點位圖

圖4 算法點位圖
驗證結果:a.根據圖3可知,約束前旋轉平面與旋轉矢量發生傾斜,通過計算旋轉點與圓心連線的矢量與圓軸矢量的夾角,約束前旋轉平面同圓軸矢量存在傾斜,約束后旋轉平面與圓軸矢量為垂直關系,算法正確;b.圖4中,輸出各點坐標,通過空間余弦公式,計算得到相鄰點轉角為27°,驗證正確。
2)應用MATLAB軟件建立工業機器人模型,并對算法程序進行函數編程用于生成點位信息,進行仿真運動用于對圓弧軌跡進行確認。
a.對算法進行編程,建立ThreePoint2Circle.m算法函數,對起點、終點坐標點位進行換算,并固定圓軸矢量為(0,1,0),圓心為點(0,0,0)。
b.建立工業機器人模型,并確定50個采樣點進行仿真運動(見圖5)。

圖5 MATLAB算法建模及編程
驗證結果:工業機器人模型根據該算法得到的點位信息可正確輸出圓弧插補曲線(見圖6)。

圖6 工業機器人圓弧插補模擬
該算法最終結論要應用于基于UG的后置處理程序中,需進行相關程序的加工編程并輸出后置處理程序驗證。
1)確定加工零件并對工件進行圓弧段加工編程(見圖7)。
2)利用上述修改后后置處理器輸出程序,并確認結果。

圖7 UG后置處理程序結果示意圖
圖7中,UG加工模擬中存在進退刀和切削兩部分圓弧運動,對比后置處理程序,存在進退刀和切削兩部分圓弧插補指令,并符合工業機器人編碼規則,同時提取點位信息進行驗算,結果表明,生成三點信息滿足對應圓弧段起點、中點、終點相關坐標,該算法可正確應用于UG后置處理程序。
通過上述研究可以得出如下結論。
1)通過對圓弧插補指令的差異及原理進行分析,基于齊次變換矩陣的思路,研究了空間圓弧三點插補算法,對算法進行了約束優化,并經MATLAB仿真驗證算法無誤。
2)基于UG/post builder,將推導得到的空間算法進行編程嵌入,成功開發了由UG CAM得到的圓弧軌跡輸出符合工業機器人的圓弧插補算法指令的后置處理程序,為進一步開發基于UG的工業機器人后置處理器提供算法基礎。