王錚, 趙東標(biāo)
(南京航空航天大學(xué) 機(jī)電學(xué)院,南京 210001)
增材制造(AM)又被稱為3D打印,包括光固化,激光燒結(jié),分層實(shí)體制造,熔融沉積(FDM)等等,是一種通過層層疊加特定材料直接制造特定模型的方法,其以簡單的打印方式打印復(fù)雜模型的能力使眾多領(lǐng)域受益。傳統(tǒng)的3D打印機(jī)是三軸設(shè)備,其3D打印過程通常包括建模、創(chuàng)建支撐、切片、路徑規(guī)劃及模型打印等幾個(gè)步驟。其設(shè)備結(jié)構(gòu)及打印算法在眾多學(xué)者的努力下不斷完善,如自適應(yīng)曲率計(jì)算[1],提高曲面模型打印精度;如設(shè)計(jì)蜂窩[2]、樹狀支撐結(jié)構(gòu)[3]節(jié)省打印材料和打印時(shí)間。盡管如此,對(duì)于復(fù)雜的模型,總是不可避免需要?jiǎng)?chuàng)建輔助支撐結(jié)構(gòu);而對(duì)于曲面模型,總是會(huì)在模型表面不可避免的產(chǎn)生“臺(tái)階”效應(yīng)從而導(dǎo)致精度誤差,對(duì)于大曲率表面,這種誤差效應(yīng)更為明顯。
近年來,為消減傳統(tǒng)3D打印制造過程中需要?jiǎng)?chuàng)建支撐結(jié)構(gòu)和“臺(tái)階”效應(yīng)的影響,許多基于多軸的3D打印算法[4-5]被提出?;谠鰷p材混合制造系統(tǒng), Li等[6]提出了一種針對(duì)旋轉(zhuǎn)部件自動(dòng)規(guī)劃打印路徑的無支撐打印算法,但算法所適應(yīng)的模型結(jié)構(gòu)有限制。同樣的,在增減材混合制造系統(tǒng)的輔助下,Kapil等[7]研究了一種金屬沉積算法,在沉積制造毛坯時(shí),實(shí)時(shí)更改熔融頭方向,然后再對(duì)制造好的毛坯進(jìn)行磨削獲得成品。在成型過程中既不需要支撐結(jié)構(gòu)的輔助,減少了材料消耗,也改善了模型的表面質(zhì)量,但磨削過程的存在同時(shí)也增加了時(shí)間和刀具的損耗。Chen等[8-9]為了削減模型表面的階梯效應(yīng),對(duì)偏置曲面進(jìn)行建模,提出了一種針對(duì)曲面的非均勻厚度切片及其打印方法,但這只能在支撐結(jié)構(gòu)的幫助下實(shí)現(xiàn)曲面的打印。Isa 等[10]為了削減模型表面的階梯效應(yīng),針對(duì)復(fù)雜的CAD數(shù)據(jù)對(duì)自由曲面進(jìn)行判別、采樣計(jì)算、分層打印。但這個(gè)算法僅對(duì)單一自由曲面模型及其組合體效果較好,而且對(duì)于模型曲面邊界的均勻采樣意味著當(dāng)邊界長度差距較大時(shí),算法適用性較差。Hu等[11]對(duì)模型依序采用k-means聚類、廣度優(yōu)先搜索等算法來尋找多個(gè)平面分解模型,分解成多個(gè)模型后規(guī)劃各模型的打印順序,從而在成型過程中取消支撐結(jié)構(gòu)的輔助,但這個(gè)算法所適用的模型需要具有明顯的分塊結(jié)構(gòu)。Zhao等[12]從模型的幾何參數(shù)中提取模型在平面和自由曲線上的特征來對(duì)模型進(jìn)行分解,并根據(jù)分解后的模型特征對(duì)其進(jìn)行平面切片或曲面切片,從而規(guī)劃相應(yīng)的打印路徑,但模型的特征需要提前定義記錄以便識(shí)別和分類。Wu等[13]提取模型的一維骨架特征和模型的高斯曲率分布來對(duì)模型進(jìn)行分解,并在六自由度系統(tǒng)的幫助下測(cè)試打印效果,但在模型細(xì)分解的過程中需要確定分解樹的數(shù)量以避免陷入局部最小。Wei等[14]提取模型的骨架特征,將模型的分解化為NP-hard問題解決。將分解部分在無需支撐的情況下打印出來后,再進(jìn)行組合,并不是針對(duì)整體模型的單次打印。而且當(dāng)兩個(gè)部件的接合處是圓時(shí),那么在組合的時(shí)候也會(huì)出現(xiàn)無法定位的情況。Xiao等[15]通過IGES、STEP等數(shù)據(jù)格式利用模型的幾何參數(shù)生成分割平面對(duì)模型進(jìn)行分解,處理較為復(fù)雜。本文針對(duì)傳統(tǒng)3D打印技術(shù)的不足,在當(dāng)前五軸3D打印算法的啟發(fā)下,提出了一種基于模型分解的五軸3D打印算法,能通過簡單的模型數(shù)據(jù)格式(如STL)分解模型,使需要的支撐結(jié)構(gòu)削減從而減少材料和時(shí)間消耗。
五軸3D打印算法設(shè)計(jì)的主要內(nèi)容為:對(duì)給定的CAD模型進(jìn)行分解,根據(jù)分解的模型和相應(yīng)分割平面,規(guī)劃各分解部分的打印順序和打印方向,使得五軸設(shè)備打印制造模型時(shí)無需輔助支撐結(jié)構(gòu)并在打印過程中不會(huì)產(chǎn)生干涉,如圖1所示。
圖1 五軸3D打印流程簡介Fig.1 Flow chart of five-axis 3D printing
1.1.1 起始支撐區(qū)域識(shí)別
首先,可以將輸入模型(圖2)表示為M0,并假定打印模型時(shí)的起始打印平面為Plane0。將會(huì)判斷:基于當(dāng)前的打印面或打印方向下,打印該模型時(shí)哪些部分需要支撐結(jié)構(gòu)。當(dāng)這些部分需要輔助支撐結(jié)構(gòu)才能打印時(shí),這些區(qū)域滿足條件:該區(qū)域的法向量n大于αmin;其中αmin是根據(jù)實(shí)驗(yàn)設(shè)備和環(huán)境得到的閾值,當(dāng)超過這個(gè)閾值且不通過支撐結(jié)構(gòu)打印時(shí),模型表面會(huì)因重力作用產(chǎn)生變形?;谄鹗即蛴∑矫?我們將初始模型M0中需要支撐結(jié)構(gòu)才能打印的區(qū)域記為MS如圖3所示。
圖2 假定輸入模型:斯坦福兔子BunnyFig.2 Expected input model: Stanford rabbit
圖3 需支撐打印的集合區(qū)域MSFig.3 Set regions MS needing support structure
1.1.2 層切法與分割區(qū)域識(shí)別
圖4 輪廓判別示意圖Fig.4 Diagram of contour discrimination
圖5 分割區(qū)域判別模型示意圖Fig.5 Diagram of segmentation region discrimination model
圖6 分割區(qū)域判別實(shí)現(xiàn)過程Fig.6 Algorithms of discrimination of segmentation regions
1.1.3 模型分割與再分解
得到需要分割的區(qū)域后,記邊界線Edgeij為(M0-MS)∩MS,根據(jù)Edgeij可擬合一個(gè)分割平面Planeij(i,j=0,1,…,n,指代分界線兩邊的模型)來對(duì)模型進(jìn)行分割,并確定平面的法向量方向?yàn)橛?M0-MS)指向MS(圖7)。相應(yīng)的,分割面將M0分解為兩個(gè)部分,Mpos和Mneg(圖8),分別位于平面的兩側(cè)。多個(gè)分割面分解模型則能得到多個(gè)子塊,以此往復(fù),對(duì)新的子塊進(jìn)行相同的分解步驟直至不能分解為止便能得到最終分解模型,其算法如圖9所示。
圖7 邊界線與分割平面示意圖Fig.7 Diagram of edge line and segmentation plane
圖8 模型分割Fig.8 Model segmentation
圖9 模型分割實(shí)現(xiàn)過程Fig.9 Algorithms of model segmentation
在分解模型的同時(shí),可以創(chuàng)建一個(gè)樹結(jié)構(gòu)來保存各個(gè)子塊的從屬結(jié)構(gòu)、打印方向等信息(圖10)。這個(gè)樹結(jié)構(gòu)中的每一個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)子塊。假定分割面將模型Mi分解為模型Mpos和Mneg,則記新的模型Mi表示為Mi=Mneg,并稱模型Mi是Mpos的父模型,模型Mpos是Mi的子模型。相應(yīng)的,樹結(jié)構(gòu)中的根節(jié)點(diǎn)即是代表父模型,葉節(jié)點(diǎn)即是代表子模型。每當(dāng)模型產(chǎn)生一次分解,則需在樹上增加一個(gè)子節(jié)點(diǎn)進(jìn)行維護(hù)。起始時(shí),樹中只有一個(gè)根節(jié)點(diǎn),代表初始模型。最后可根據(jù)創(chuàng)建的樹確定各個(gè)子塊的打印順序:1) 層序遍歷分解樹,依次打印相應(yīng)節(jié)點(diǎn)對(duì)應(yīng)的模型分解子塊,這樣確定的打印順序會(huì)使得在打印過程中空行程較多,但不易產(chǎn)生干涉;2) 先序遍歷分解樹,依次打印相應(yīng)節(jié)點(diǎn)對(duì)應(yīng)的模型分解子塊,這樣確定的打印順序能使打印過程中空行程較少,但會(huì)更容易造成熔融打印頭與已打印部分間的干涉。兩種方法對(duì)應(yīng)打印順序如圖11所示。
圖10 存儲(chǔ)分解結(jié)構(gòu)的樹Fig.10 Trees for storing decomposition structures
圖11 兩種不同遍歷方式確定的模型分解子塊打印順序Fig.11 Printing order of sub-models determined by two kinds of different traversal patterns
在打印的過程中可能會(huì)出現(xiàn)以下兩種碰撞問題:1) 3D打印頭噴嘴與打印平臺(tái)產(chǎn)生干涉;2) 3D打印頭噴嘴與模型中已打印好的部分產(chǎn)生干涉。對(duì)于情況1) (圖12),一般發(fā)生在模型的第一層分解打印,噴嘴軸線一般垂直于打印平面,即垂直分割平面Planeij,會(huì)與打印平臺(tái)產(chǎn)生干涉,因此需要適時(shí)改變噴嘴軸向角度避免干涉。對(duì)于情況2) (圖13),不能完全按照樹結(jié)構(gòu)生成的打印順序打印完整個(gè)模型,需要對(duì)造成干涉的子塊重新進(jìn)行分解規(guī)劃。
圖12 情況1)干涉情況示意圖Fig.12 Diagram of situation 1) interference
圖13 情況2)干涉情況示意圖Fig.13 Diagram of situation 2) interference
為了驗(yàn)證支撐消減的五軸3D打印算法的效果,對(duì)多種模型進(jìn)行分析。在傳統(tǒng)的三軸FDM增材制造過程中,為了提高模型的精度都會(huì)在制造模型前在模型的懸垂區(qū)域生成相應(yīng)的支撐結(jié)構(gòu),并在打印完結(jié)之后剔除這些材料。在如圖14與圖15所示的應(yīng)用案例中,對(duì)于傳統(tǒng)三軸3D打印,模型懸垂區(qū)需要輔助支撐結(jié)構(gòu),而與之對(duì)應(yīng)的“五軸分解打印”部分則是將各自的懸垂區(qū)域分解,基于已打印部分切換打印平面繼續(xù)打印剩余部分,從而消減了支撐結(jié)構(gòu)的需求。圖16為模型b)的五軸打印過程。
表1 三軸與五軸模型打印消耗對(duì)比Tab.1 Comparison of consumption between three axis model printing and five axis model printing
圖14 打印結(jié)構(gòu)比對(duì)Fig.14 Comparison of printing structures
圖15 成品比對(duì)Fig.15 Comparison of printed models
本文提出了傳統(tǒng)3D打印技術(shù)中存在的固有缺點(diǎn)。針對(duì)這些固有缺點(diǎn),基于模型分解提出了一種五軸3D打印算法,通過模型簡單的數(shù)據(jù)格式,建立了對(duì)模型的數(shù)學(xué)表達(dá),進(jìn)行了模型分解和碰撞分析,實(shí)現(xiàn)了輔助支撐消減的模型打印。為了分析算法的有效性,對(duì)多種三維模型執(zhí)行算法,得到它們的分解結(jié)果,并與三軸打印過程中附帶支撐結(jié)構(gòu)的相同模型進(jìn)行比對(duì),效果良好。