錢 乘,江本赤,周 輝,李 震
利用STL模型加工部件時(shí),STL切片輪廓數(shù)據(jù)是生成刀路軌跡的基礎(chǔ)。在CAD模型轉(zhuǎn)換成STL模型時(shí),需要把設(shè)定的弦高差作為模型轉(zhuǎn)換的精度誤差[1]。目前,基于STL模型的切片算法是主流的研究?jī)?nèi)容,該算法以封閉多邊形表示二維封閉輪廓,而基于STL模型數(shù)控加工刀路軌跡的規(guī)劃算法存在精度方面的損失,造成加工模型與CAD模型之間的誤差增大?;贑AD模型的直接切片算法雖然可以提高加工精度,但需要特定的軟件支持,且運(yùn)算量大、效率低[2]。STL模型具有輸出廣泛、切片易于處理、拓?fù)溥m應(yīng)能力強(qiáng)等優(yōu)勢(shì),因此在加工一些復(fù)雜的零件時(shí),經(jīng)常采用STL模型[3]。
研究人員提出了多種基于STL模型的刀路軌跡規(guī)劃算法。ZHU H等[4]利用頂點(diǎn)的非等距偏置性建立了偏置模型,生成了具有恒定扇貝高度的螺旋刀具路徑。徐金亭等[5]利用頂點(diǎn)鄰接三角形角度的正弦值加權(quán)計(jì)算了該頂點(diǎn)的單位法矢量,利用偏置距離建立了偏置模型,通過(guò)對(duì)該模型做離散處理得到了加工軌跡。該方法雖然邏輯表達(dá)簡(jiǎn)單直觀,可以取得較好的計(jì)算結(jié)果,但需要通過(guò)偏移頂點(diǎn)對(duì)偏置模型進(jìn)行計(jì)算,這會(huì)造成計(jì)算量偏大、效率偏低等后果。另外,偏置模型的精度誤差也會(huì)導(dǎo)致加工精度的下降。LI M等[6]利用STL切片直接生成刀觸點(diǎn),通過(guò)刀觸點(diǎn)計(jì)算刀位點(diǎn),并對(duì)刀位點(diǎn)進(jìn)行干涉檢測(cè)處理。陳曉兵等[7]用刀觸點(diǎn)計(jì)算了刀位點(diǎn),并用最小二乘法將其擬合成NURBS刀路軌跡。趙萍等[3]對(duì)切片輪廓進(jìn)行三次分段NURBS曲線插值,通過(guò)刀觸點(diǎn)計(jì)算出刀位點(diǎn),提出了數(shù)控加工路徑的規(guī)劃算法。雖然該算法的計(jì)算過(guò)程簡(jiǎn)單,可以得到精確的刀路軌跡,但是離散技巧的運(yùn)用降低了加工精度。針對(duì)這一問(wèn)題,我們提出了基于STL模型的NURBS刀路軌跡規(guī)劃算法。在去除STL模型切片冗余數(shù)據(jù)的基礎(chǔ)上,先根據(jù)預(yù)設(shè)的閾值對(duì)封閉多邊形輪廓進(jìn)行分段,通過(guò)NURBS曲線進(jìn)行擬合,然后設(shè)定容差閾值,利用容差離散法對(duì)擬合的曲線進(jìn)行離散,得到了刀觸點(diǎn),給出了刀路軌跡規(guī)劃算法。
STL模型由CAD模型表面三角化處理生成。通過(guò)對(duì)STL模型的切片處理,可獲得一系列二維封閉多邊形輪廓,由這些多邊形輪廓生成的數(shù)據(jù)點(diǎn)是生成刀路軌跡的基礎(chǔ)。
獲取切片數(shù)據(jù)通常分為3步,這3步分別是分層方向的選取與分層厚度的確定、三角形與切平面交點(diǎn)計(jì)算、根據(jù)三角形鄰接關(guān)系排序與連接交點(diǎn)[8]。其中分層方向一般選取與z軸平行的方向,分層厚度需要根據(jù)模型的成型精度確定。分層厚度越小,打印精度越高,但耗費(fèi)的打印時(shí)間也就越長(zhǎng)。
用一系列平行于xoy平面的切平面分割STL模型,得出切平面與相交三角形的交點(diǎn),此時(shí)交點(diǎn)屬于無(wú)序狀態(tài),需要根據(jù)三角形間的拓?fù)潢P(guān)系以逆時(shí)針或者順時(shí)針的順序?qū)⑵渑判颉⑦B接。例如,圖1所示的就是簡(jiǎn)單STL模型和切片模型。
圖1 STL模型與切片模型
STL模型本身的缺陷導(dǎo)致了獲取的切片數(shù)據(jù)存在大量的冗余交點(diǎn)。這些冗余交點(diǎn)分為兩種類型,即同一交點(diǎn)有多個(gè)重合交點(diǎn)和同一直線上存在多個(gè)交點(diǎn)。例如,在圖2所示的模型中,切平面 zi、 zi+1與STL模型相切時(shí),從交點(diǎn) P5與 P6得到的二維輪廓信息中,存在重合的交點(diǎn)。若 T1、 T2和 T3處于同一平面,則從得到的二維輪廓信息中,可以發(fā)現(xiàn) P1和 P4可決定該線段,而P2和 P3為冗余數(shù)據(jù)點(diǎn)。
圖2 冗余數(shù)據(jù)點(diǎn)的說(shuō)明
對(duì)于同一交點(diǎn)有多個(gè)重合交點(diǎn)的情況可以進(jìn)行去重處理。假設(shè)切片之后得到一系列二維輪廓數(shù)據(jù)點(diǎn)Pi( i = 1 ,2,… ,t ),依次按順序從中選取3個(gè)交點(diǎn) Pk?1、Pk和Pk+1(k = 2,… ,t ?1), 計(jì)算 Pk?1Pk與 PkPk+1之間的夾角 α (圖3), P0點(diǎn)對(duì)應(yīng)的夾角可通過(guò) Pt、 P0和 P1計(jì)算。在數(shù)據(jù)點(diǎn)對(duì)應(yīng)的夾角中,有的夾角度數(shù)小于10-5,甚至更小。因此,需要設(shè)定一定的閾值 θ ,當(dāng) α <θ 時(shí),就認(rèn)為該數(shù)據(jù)點(diǎn)為同一直線上的交點(diǎn),并將此點(diǎn)刪除。例如,在圖4中,圖4a為切片模型某一層輪廓數(shù)據(jù)圖,圖4b為冗余數(shù)據(jù)點(diǎn)刪除之后的輪廓數(shù)據(jù)圖。
圖3 Pk-1Pk與PkPk+1夾角
圖4 輪廓數(shù)據(jù)的對(duì)比
基于CAD模型的直接切片算法的二維輪廓用NURBS曲線表示,這類算法雖然能提高加工精度,但需要特定軟件支持,且運(yùn)算量大、效率較低。基于STL模型的切片算法的二維輪廓用封閉多邊形表示,將CAD模型轉(zhuǎn)換為STL模型時(shí),這類算法因給定的弦高差會(huì)導(dǎo)致加工精度下降,故將由STL模型切片得到的二維封閉輪廓分段擬合成NURBS曲線,再將其離散得到加工刀路軌跡就可以提高加工精度[2,9]。
在對(duì)經(jīng)過(guò)預(yù)處理之后的輪廓數(shù)據(jù)點(diǎn)Pi( i =0,1,2,…,m)進(jìn)行擬合之前,必須做進(jìn)一步處理,才能判斷二維輪廓中是否存在需要擬合的頂點(diǎn)。在本文中,我們采用角度與長(zhǎng)度判斷準(zhǔn)則來(lái)判斷待擬合的頂點(diǎn),角度閾值設(shè)為 β ,并可根據(jù)模型成型精度自行定義。
任取3個(gè)連續(xù)的數(shù)據(jù)點(diǎn) Pk?1、 Pk和Pk+1(k =1,2,…,m ?1),計(jì)算 Pk?1Pk與 PkPk+1之間的夾角 α (圖3)。在判斷長(zhǎng)度時(shí),先設(shè)定閾值 δ ,再根據(jù)弦高差的定義計(jì) 算 | Pk?1Pk|與 | PkPk+1|的長(zhǎng) 度。
該方法可描述為:讀取一個(gè)數(shù)據(jù)點(diǎn),若該數(shù)據(jù)點(diǎn)不滿足
或不滿足
就以順時(shí)針或逆時(shí)針的方式讀取相鄰的數(shù)據(jù)點(diǎn),直到滿足式(1)和式(2),并將該數(shù)據(jù)點(diǎn)作為擬合的起點(diǎn) q0。依次讀取數(shù)據(jù)點(diǎn),若這些數(shù)據(jù)點(diǎn)滿足式(1)和式(2),就將這些數(shù)據(jù)點(diǎn)作為輪廓的擬合點(diǎn) qi( i = 1 ,2,… ,z )。若讀到的數(shù)據(jù)點(diǎn)不滿足式(1)或式(2),就將該數(shù)據(jù)點(diǎn)作為輪廓擬合的終點(diǎn)(記為qn),這樣就可以得到待擬合的分段輪廓數(shù)據(jù)Ci={q0, q1,… ,qz, qn}(i= 1 ,2,…,t )(圖5)。其中,數(shù)據(jù)點(diǎn)c與i對(duì)應(yīng)的夾角不滿足式(1),數(shù)據(jù)點(diǎn) a、f、g、m 對(duì)應(yīng)長(zhǎng)度不滿足式(2),因此可將二維輪廓分為4段進(jìn)行NURBS擬合,這4段分別為abc、cdef、ghi、ijlm。
圖5 輪廓的分段
2.2.1 NURBS曲線的定義
一條 k 次 NURBS 曲線[10]可表示為
其中:wi( i = 0 ,1,2,… ,n)為權(quán)因子,采用NURBS擬合時(shí),若權(quán)因子選擇不當(dāng),會(huì)產(chǎn)生較大的非線性誤差,因此取 wi= 1 ;di( i = 0 ,1,2,… , n)為控制頂點(diǎn); Ni,k(u)為定義在節(jié)點(diǎn)矢量 U = ( u1, u2, uk, … ,un+k+1)上的第i個(gè)k次B樣條基函數(shù),其德布爾-考克斯遞推公式為
2.2.2 節(jié)點(diǎn)矢量的確定
由式(3)與式(4)可知,給定控制頂點(diǎn) di和節(jié)點(diǎn)矢量U便可定義一條3次NURBS曲線。對(duì)于任意一條待擬合的分段輪廓,該輪廓存在 n +1個(gè)數(shù)據(jù)點(diǎn)。在反算控制頂點(diǎn)di的過(guò)程中,通常使首末數(shù)據(jù)點(diǎn)與曲線首末端點(diǎn)一致,并使內(nèi)數(shù)據(jù)點(diǎn)變?yōu)榍€的分段連接點(diǎn),以保證與三次NURBS曲線定義域的內(nèi)節(jié)點(diǎn)對(duì)應(yīng)[10]。該三次NURBS可由 n + 3 個(gè)控制頂點(diǎn)di( i = 0,1,2,… ,n, n +1,n+2)決定,對(duì)應(yīng)的節(jié)點(diǎn)矢量為 U = ( u0, u1, …,un+5, un+6)。
節(jié)點(diǎn)矢量的確定可選擇均勻參數(shù)法、向心參數(shù)法、積累弦長(zhǎng)參數(shù)法等。在本文中,我們選擇了積累弦長(zhǎng)參數(shù)法,其中端節(jié)點(diǎn)的重復(fù)度為4,相應(yīng)的積累弦長(zhǎng)參數(shù)法公式[10]為
其中,i = 1,2,… ,n ?1。
2.2.3 控制頂點(diǎn)的確定
將曲線定義域 u ∈ [ ui, ui+1]∈[0,1]內(nèi)的節(jié)點(diǎn)值代入以下公式[11]
可得到 n + 1 個(gè)方程,但未知頂點(diǎn)個(gè)數(shù)為 n +3。由這n+1個(gè)方程無(wú)法解出 n +3個(gè)未知頂點(diǎn)數(shù)的對(duì)應(yīng)的解。為了求解由這 n +1個(gè)方程組成的方程組,常常通過(guò)增加邊界條件的方法增加附加方程,而邊界條件的確定可通過(guò)選用自由端點(diǎn)、拋物線、切矢條件等實(shí)現(xiàn)。在本文中我們選取切矢條件公式
作為附加方程。
對(duì)于 C 2上的三次NURBS曲線,節(jié)點(diǎn)矢量的首、末節(jié)點(diǎn)的重復(fù)度為4,故有 d0= q0和 dn+2=qn,三次NURBS插值曲線的其他控制頂點(diǎn)可通過(guò)
經(jīng)過(guò)節(jié)點(diǎn)矢量的確定與控制頂點(diǎn)的反求,通過(guò)式(3)便可確定一條NURBS曲線。圖6為該二維輪廓的NURBS擬合效果。
圖6 二維輪廓的NURBS擬合效果
確定二維輪廓的分段三次NURBS差值曲線后,所有的刀觸點(diǎn)都在該條曲線上。由于數(shù)控加工中輸入的是刀觸點(diǎn)的坐標(biāo),數(shù)控機(jī)床依據(jù)該坐標(biāo)對(duì)毛坯進(jìn)行加工,因此需要對(duì)NURBS曲線進(jìn)行離散以獲取刀觸點(diǎn)。為了提高NURBS曲線在曲率變化較大處的離散精度,我們利用容差離散法對(duì)曲線進(jìn)行離散。容差的定義見(jiàn)圖7。其中:t為由加工精度定義的容差; Lstep為給出的步長(zhǎng),通常為0.05。刀觸點(diǎn)的軌跡如圖8所示。其中:圖8a是步長(zhǎng)等于0.05、容差等于0.06的刀觸點(diǎn)軌跡圖,圖8b是步長(zhǎng)等于0.05、容差等于0.04的刀觸點(diǎn)軌跡圖。
采用容差離散法獲取刀觸點(diǎn)步驟如下:
1)讀取一條NURBS曲線。
2)U1為該NURBS的參數(shù)定義域的下界,取初值
3)計(jì)算 U1U2所對(duì)應(yīng)的容差t。若t大于給定的容差,則有
4) U2大于該NURBS的參數(shù)定義域的上界,即U2>1,轉(zhuǎn)向步驟1);否則轉(zhuǎn)向步驟3)。
5)所有NURBS曲線處理完,結(jié)束該程序。
圖7 容差的定義
圖8 相同步長(zhǎng)不同容差的刀觸點(diǎn)軌跡
在本文中,我們對(duì)STL模型切片形成的二維輪廓進(jìn)行了分段三次NURBS插值,提高了STL模型切片的精度;利用容差離散法通過(guò)離散NURBS曲線獲取了刀觸點(diǎn),提高了NURBS曲線在曲率變化較大處的離散精度,使得刀路軌跡變得更加精確,也使加工后的模型表面更加光滑。
參考文獻(xiàn):
[1] ZHANG Z Y,JOSHI S.An improved slicing algorithm with efficient contour construction using STL files[J].The international journal of advanced manufacturing technology,2015,80(5):1347-1362.
[2] 趙方.3D打印中基于STL文件的分層算法比較[D].大連:大連理工大學(xué),2016.
[3] 趙萍,孫紅.基于STL模型的數(shù)控加工路徑規(guī)劃[J].機(jī)械設(shè)計(jì)與制造,2009(12):169-170.
[4] ZHU H,LI N.A new STL model-based approach for tool path generation in CNC incremental forming[J].The international journal of advanced manufacturing technology,2013,69(1/2/3/4):277-290.
[5] 徐金亭,劉偉軍,卞宏友,等.基于網(wǎng)格曲面模型的等殘留刀位軌跡生成方法[J].機(jī)械工程學(xué)報(bào),2010, 46(11):193-198.
[6] LI M,ZHANG L C,MO J H,et al.Tool-path generation for sheet metal incremental forming based on STL model with defects[J].International journal of advanced manufacture and technology,2012,63(5/6/7/8):535-547.
[7] 陳曉兵,廖文和.基于STL數(shù)據(jù)模型的NURBS刀軌生成算法[J].組合機(jī)床與自動(dòng)化加工技術(shù),2010(11):22-25.
[8] 胡亮,黃志剛,梁遠(yuǎn)標(biāo).STL模型切片數(shù)據(jù)的生成算法研究[J].機(jī)械工程與自動(dòng)化,2016(2):40-41.
[9] 李成,楊繼全,李超,等.基于NURBS曲線擬合的STL文件局部精度提高方法的研究[J].南京師范大學(xué)學(xué)報(bào)(工程技術(shù)版),2013,13(1):15-19.
[10]施法中.計(jì)算機(jī)輔助幾何設(shè)計(jì)與非均勻有理B樣條[M].北京:高等教育出版社,2013:303-308.
[11]葉麗,謝明紅.采用積累弦長(zhǎng)法擬合3次NURBS曲線[J].華僑大學(xué)學(xué)報(bào)(自然科學(xué)版),2010,31(4):383-387.