黎柏春,王振宇,楊建宇,王宛山
(1.中國民航大學 航空工程學院,天津 300300; 2.東北大學 機械工程與自動化學院,遼寧 沈陽 110819)
銑削力作為研究銑削過程的基礎和前提,近年來很多學者對其進行了研究,而且理論建模和仿真已成為銑削力研究的重要手段[1].銑削力建模和仿真需要以銑削過程的幾何信息為基礎,包括實時刀具運動狀態、切觸區域等.其中,刀具與工件切觸區域是銑削力模型中確定積分邊界的重要依據.尤其對于球頭銑刀的多軸銑削,由于刀具的球面形狀和刀軸方向改變使得切觸情況復雜、多變,其切觸區域計算成為相關研究需要解決的首要問題.
Yang等[2]提出了一種基于實體修剪的切觸區域求解方法.Taner等[3]提出了一種基于幾何投影的切觸區域求解方法.Gong等[4]將刀具和工件表示為三角形網格描述的實體后,通過減法布爾運算不斷更新工件,確定切觸區域.Wei等[5]提出了一種改進的Z-Map離散方法.Inui等[6]設計了基于圖形處理器(Graphics Processing Unit,GPU)加速和單向Dexel離散的幾何仿真算法,由此確定切觸區域.Li等[7]提出了一種計算切觸區域的解析方法.魏北成等[8]將球頭銑刀多軸銑削過程考慮為一系列的微小斜平面切削,從而確定多軸銑削時的切觸區域.Zhu等[9]將平底圓角銑刀多軸銑削的切觸區域邊界分為3種曲線,由此得到切觸區域符號化解析模型.
綜合上述研究,切觸區域的計算方法可總結為實體仿真方法、離散仿真方法和解析方法.實體仿真方法具有較高的計算精度,但需要大量空間,而且計算效率低,計算100個刀位點耗時數分鐘[2],不適用于多軸銑削復雜曲面.離散仿真方法降低了對存儲空間的需求,但存在計算精度和計算效率的平衡矛盾,一般只適用于三軸銑削的情況[8].解析法具有較好的計算精度和計算效率,但切觸區域邊界模型往往比較復雜,尤其是球頭銑刀多軸銑削復雜曲面時,難以建立準確的邊界模型,因此,該方法只適用于工件輪廓可用數學模型描述的情況,不適用于銑削表面二次銑削以及多軸銑削復雜曲面的情況.鑒于此,本文針對球頭銑刀多軸銑削復雜曲面,提出一種實時計算刀具與工件切觸區域的方法.
切觸區域實時計算方法的總體流程如圖1所示,該方法主要包括以下關鍵環節:① 從數控程序中提取銑削工藝參數和刀具軌跡信息,計算每齒進給量,并以此為基本長度離散刀具軌跡一系列位置和位姿數據.② 根據刀具幾何參數,構建相距每齒進給量大小的兩相鄰刀位的刀具掃描體模型.③ 體素化工件和刀具掃描體模型,以便將復雜的三維空間布爾運算轉化為一維布爾運算.④ 進行布爾運算,更新工件的體素化數據,并標記當前更新的工件表面數據.⑤ 從當前更新的工件表面數據中篩選出切觸區域點數據,進行實時重建渲染.

圖1 總體流程Fig.1 Flow diagram
為了保證在高精度離散前提下,提高切觸區域計算效率,相關計算主要由GPU并行計算實現.前期工作[10-11]已完成刀具掃描體建模和模型體素化研究.
為了獲得刀具位置和位姿,需要模擬數控系統的譯碼和插補運算.模擬數控系統的譯碼就是將數控程序讀取到內存后,進行分類處理和數值提取,插補就是對數值進行分類插值.因此,可設計譯碼和插補的算法流程,如圖2所示.

圖2 數控程序譯碼和插補的模擬算法Fig.2 Algorithm for simulation of decoding numerical control codes and interpolation
不同數控程序的行數和程序段長度不同,譯碼時所需內存存儲空間動態多變.為此,圖2的算法采用鏈表嵌套鏈表的數據結構為其動態分配存儲空間,即將程序段以數據字為單元通過鏈表數據結構形式存儲,而且程序段之間也使用鏈表形式有序地組織為一體,其邏輯結構如圖3所示.
從數控程序中獲得刀具位置和機床旋轉軸角度后,還需要對其以每齒進給量為基本長度進行插值,并根據旋轉軸角度計算刀具位姿.數控系統實現多軸銑削時刀位和旋轉軸角度插補一般采用線性插值方式[12],據此可直接寫出刀尖位置的插值表達式為
(1)

圖3 數控程序存儲的邏輯結構示意圖Fig.3 Diagram of logical constructs for storing numerical control codes
式中:pi-1,pi為插值得到的相鄰刀尖位置坐標;f為進給速度(mm/min);n為主軸轉速(r/min);Nf切削刃數;pj為從數控程序提取的離散刀具位置;條件1為pi-1∈[pj-1pj]且pi∈[pj-1pj];條件2為pi-1∈[pj-1pj]且pi∈[pjpj+1].
刀具位姿與機床結構形式密切相關,文中以回轉擺動形式的五軸機床為例,如圖4所示.

圖4 五軸機床Fig.4 5-axis machine tool
根據線性插值可得到刀位pi對應的旋轉軸角度Bi和Ci為
(2)
(3)
式中:Bj和Cj分別為pj對應的B,C旋轉軸角度,從數控程序中提取得到.
圖4中,om-xmymzm為機床坐標系,ow-xwywzw為工件坐標系,o-xyz為刀具坐標系.其中,刀具坐標系o-xyz以刀尖為原點,刀軸方向為z軸正方向,進給方向在垂直于z軸平面內的投影方向作為x軸正方向,y軸正方向則由笛卡爾坐標系右手定確定.根據圖4坐標系和B,C旋轉軸運動關系,可寫出刀具位姿在工件坐標系下的矢量形式為
(4)

插值獲得刀具位置和位姿后,利用文獻[10]的方法可實時建立刀具掃描體模型.為了能夠計算每齒進給量的切觸區域,必須將每相鄰的兩個刀具位置和位姿構建為獨立的刀具掃描體模型.然后,利用文獻[11]的方法,將工件模型和刀具掃描體模型離散為3方向的Dexel體數據,進行布爾運算.
為了實現布爾運算的GPU并行加速,利用著色語言GLSL控制頂點著色器和transform feedback步驟實現在GPU上的布爾運算.具體思路是將工件的Dexel數據以頂點屬性的形式存儲到transform feedback對象申請的顯卡緩存區,需要存儲的每個Dexel數據主要包括網格坐標、長度坐標、法向量和切削狀態標識符;而刀具掃描體的Dexel數據則以顏色紋理形式存儲,如圖5所示.紋理坐標可作為Dexel數據的網格坐標,因此,顏色紋理只需存儲每個Dexel數據的長度坐標和法向量.
工件、刀具掃描體離散后的布爾運算和工件數據更新過程可分為6類,如圖6所示.為了方便表達,將工件Dexel數據兩端的長度坐標分別記為bw和tw(沿Dexel投射方向,bw為近端,tw為遠端),對應的表面法向量記為ξ1和ξ2.將掃描體Dexel數據兩端的長度坐標分別記為bc和tc,對應的表面法向量記為n1和n2.

圖5 刀具掃描體到顏色紋理的映射示意圖Fig.5 Schematic diagram of mapping cutter swept volume into color texture

圖6 布爾運算和工件數據更新Fig.6 Boolean operation and workpiece update
(1) 圖6(a)中bc>tw,此時工件的Dexel線段未被切削,無更新.
(2) 圖6(b)中bw>tc,此時工件的Dexel線段未被切削,無更新.
(3) 圖6(c)中tc>tw>bc>bw,此時工件Dexel線段的遠端被切削,即更新tw為bc,更新ξ2為-n1.
(4) 圖6(d)中tw>tc且bc>bw,此時工件Dexel線段的中間部分被切削,生成2個新Dexel線段.
(5) 圖6(e)中tc>tw且bw>bc,此時工件Dexel線段被全部切除.
(6) 圖6(f)中tw>tc>bw>bc,此時工件Dexel線段的近端被切削,即更新bw為tc,更新ξ1為-n2.
根據數據存儲、布爾運算和工件數據更新,設計基于GPU并行計算的布爾運算算法,如圖7所示.
圖7所述算法能夠標記每次新生成的點集,但布爾運算是工件模型和刀具掃描體模型之間的布爾運算,因此,標記的離散點集并非完全位于刀具表面,不能直接作為構建切觸區域的點集.為此,通過點和球心(球頭部分的球心)距離篩選刀具切觸區域點集.假設布爾運算新生成的任意點坐標為(wx,wy,wz),由前述可知該坐標為工件坐標系下坐標,為了計算方便將其變換到刀具坐標系下為
(5)

(6)
其中,nx為刀具坐標系x軸正方向單位矢量
(7)
nf為刀具瞬時進給方向的單位矢量
(8)
球心在刀具坐標系下坐標為(0, 0,R),R為刀具半徑.由式(5)計算得到的坐標和球心坐標,在考慮離散誤差情況下,可將刀具切觸區域點集表示為

圖7 GPU加速的布爾運算算法Fig.7 Algorithm of Boolean operation based on GPU acceleration
(9)
式中:δ為三維模型的離散精度.
在Dexel結構中,點數據包括點的位置坐標和表面法向量.因此,可以通過在點位置坐標中心創建基本圖元重建表面,例如:三角面片、四邊形等.但此時存在基本圖元之間融合問題,不能實現基本圖元無縫連接,形成光滑表面.為此,需要對點位置坐標進行微小調整,然后以各點為中心創建以離散精度δ為邊長的四邊形圖元,其原理如圖8所示.

圖8 切觸區域表面重建原理Fig.8 Surface reconstruction of cutter-workpiece engagement
點(cx,cy,cz)調整后的新點為
(10)
其中,(cx1,cy1,cz1)和(cx2,cy2,cz2)為
此外,渲染重建表面時,光照計算使用Dexel中的表面法向量cξ,以保證表面顯示的光滑連續.
為驗證文中方法的可行性,利用C++語言、OpenGL 4.5圖形接口和GLSL著色語言開發實現切觸區域計算的相關算法,并通過模擬葉輪開粗銑削過程實時計算切觸區域.葉輪開粗銑削過程選擇半徑為R=4 mm的球頭銑刀作為刀具,主軸轉速6 000 r/min,進給速度3 200 mm/min,其仿真結果如圖9所示.由圖9可以看出,文中方法適用于多軸銑削復雜曲面的切觸區域仿真計算,且切觸區域光滑連續,具有良好的渲染顯示效果.

圖9 切觸區域的仿真計算結果Fig.9 Simulation results of cutter-workpiece engagement
為了驗證文中方法的準確性,通過三維建模軟件中實體布爾運算功能(實體仿真方法),計算葉輪開粗銑削過程中某個刀位點的切觸區域,并將其與文中方法的計算結果進行對比分析.為了便于比較,將切觸區域沿刀具坐標系z軸負方向投影,如圖10所示.

圖10 切觸區域仿真結果對比分析Fig.10 Comparison and analysis of simulation results of cutter-workpiece engagement
由圖10可以看出:實體布爾運算計算得到切觸區域具有清晰輪廓、較高精度,可作為驗證文中方法的依據.但其計算過程復雜、效率低,需要大存儲空間,實用性較差.此外,文中方法和實體布爾運算方法分別計算得到的切觸區域具有較高吻合度,且偏差極小,從而驗證了文中方法的準確性.
對于文中方法的實時性,在普通PC機(Intel Core i3-7350K 4.2 GHz,內存8 GB,顯卡Nvidia GeForce GTX 970)上仿真計算葉輪開粗銑削切觸區域時,幀率可達40 幀/s左右,即每分鐘大約能計算2 400個刀位點的切觸區域,具有良好的實時性.
結合前期研究成果,以3方向離散方法和GPU并行計算為基礎,提出了針對球頭銑刀多軸銑削復雜曲面的切觸區域實時計算方法.給出了刀具與工件切觸區域實時計算的基本流程,設計了模擬數控程序譯碼和插補過程的算法流程,推導了插值計算刀具位置和位姿的表達式,設計了GPU加速下面向切觸區域計算的工件和刀具掃描體布爾運算算法,給出了并行重建切觸區域的方法.
為了驗證文中方法和相關論述,開發實現了切觸區域計算的相關算法/方法.以典型的葉輪開粗銑削為例,進行切觸區域仿真計算,并與三維建模軟件中的實體布爾運算結果進行對比分析.相關結果表明:文中方法不僅具有較好的可行性和良好的實時性,而且計算的切觸區域具有較高準確度和精度.因此,文中的切觸區域計算方法具有較強的實用性和應用價值,對球頭銑刀多軸銑削的進一步研究和應用具有重要意義.