葛 嘯 史廷春 黃志鵬 岳秀艷
(①杭州電子科技大學(xué)自動化學(xué)院,浙江 杭州 310018;②杭州電子科技大學(xué)圖書館,浙江 杭州310018)
3D打印技術(shù)又稱增材制造(additive manufacturing, AM)技術(shù),產(chǎn)生于20世紀(jì)80年代后期[1],如今在醫(yī)療儀器、軌道交通及航空航天等戰(zhàn)略新興產(chǎn)業(yè)中都有重要的應(yīng)用價值[2],所以成型件的精度對其實際應(yīng)用是至關(guān)重要的[3]。而成型過程中的翹曲變形是一個主要缺陷。在成型過程中由于填充路徑而導(dǎo)致的材料冷卻收縮時處于層間、層內(nèi)的位置不同而導(dǎo)致翹曲變形[4]。而FDM技術(shù)是通過逐層累計噴射加熱的熱塑性材料來打印結(jié)構(gòu)[5],不恰當(dāng)?shù)穆窂皆O(shè)置會導(dǎo)致成品質(zhì)量的降低[6],所以成型時材料的填充路徑對成型件的翹曲變形程度有著重要的影響。
目前存在著許多3D打印路徑規(guī)劃算法,平行線填充法、輪廓偏置填充法[7]和空間曲線填充法是最常用的3種方法[8],許多路徑規(guī)劃方法是都是在它們的基礎(chǔ)上優(yōu)化而來的。平行線填充法填充路徑相互平行,方法簡單,使用最為廣泛,但其打印時的方向為一固定方向,在很多時候會與成型件的表面有一定的夾角,打印時會出現(xiàn)臺階效應(yīng)[9]。同時該填充方法在同一層面上的填充方向一致,會帶來同方向的收縮應(yīng)力,很大程度上會導(dǎo)致成型件產(chǎn)生較大的翹曲變形。Park S C等[10]針對填充角度與加工區(qū)域之間的關(guān)系進行了研究,提出了將路徑分段存儲最終連接而形成全局連續(xù)的路徑。Yang J等[11]利用FASS曲線進行自適應(yīng)路徑填充。
輪廓偏置填充法可以很好地保持打印件邊緣精度,是以其自身輪廓線為基礎(chǔ)生成內(nèi)部填充線的一種方式。這種方法可以有效地避免臺階效應(yīng),同時可以使材料冷卻時的應(yīng)力收縮沒有一致性,減少翹曲變形的發(fā)生,有利于提高成型零件的表面精度質(zhì)量,但其在形狀復(fù)雜的輪廓填充時會存在斷口[12],也會在終點處產(chǎn)生多余的固化毛刺[13]。Held M等[14]提出利用一條Fermat螺線進行不間斷填充。王騰飛[15]為了減少輪廓偏置時產(chǎn)生自相交進而提出一種等距偏置的路徑規(guī)劃算法;王益康[16]提出基于輪廓交點分組排序的混合填充方法,提高打印效率;翟曉雅等[17]將填充區(qū)域分為輪廓層,過渡層及內(nèi)層,更適用于具有復(fù)雜邊界及多連通區(qū)域的幾何模型;張鴻平[18]等將輪廓偏置算法與并行柵格的方法進行了混合,提出了新的路徑規(guī)劃方法;韓興國等[19]將蟻群算法運用到對多連通區(qū)域上不同環(huán)的打印次序上;為生成連續(xù)的空間掃描曲線,晁艷艷等[20]一方面保證成型件的表面質(zhì)量,另一方面減少噴頭的行程及啟停次數(shù),從而提出了基于網(wǎng)格法的分型中Hilbert曲線掃描填充算法,降低零件殘余熱應(yīng)力,減小零件的翹曲變形量。
對FDM式的3D打印中已有路徑規(guī)劃的描述,不難發(fā)現(xiàn)大多數(shù)傳統(tǒng)路徑填充方式都會存在填充路徑不連續(xù),噴頭需不斷啟停的情況,降低了打印效率。在制件成型過程中,打印頭必然會多次啟停變速,無法保持恒定不間斷的速度,在路徑的拐角處降速并且存在打印頭啟停和變速問題,影響打印效率以及造成制件成型質(zhì)量差[21],打印路徑中如果存在一個方向上長的直線打印則會產(chǎn)生較大的翹曲變形[22],同時,不合適的打印路徑會引起不必要的材料各向異性[23],使成型件在沿打印路徑方向上的抗拉強度遠遠大于其沿橫向方向的抗拉強度[24]。而Hilbert曲線填充則是一種連續(xù)的填充路徑,減少電機啟停次數(shù)就可以降低打印件的各向異性,提高打印效率[25]。由于Hilbert曲線其自身有多次轉(zhuǎn)向的特點,具有明顯的連續(xù)性和各向同性[26],使單層截面上的應(yīng)力收縮方向是分散的且沒有一致性,在較大截面上產(chǎn)生翹曲變形的可能性大大減小。但它存在的問題是曲線所有的轉(zhuǎn)彎處都是直角,在此處打印時必定會造成打印噴頭一個方向速度的突然變化,這樣不僅會影響打印電機的使用壽命,降低打印效率,還會造成精度的降低[27]。
故本文提出一種優(yōu)化的Hilbert曲線路徑規(guī)劃方法,在保持路徑連續(xù)的基礎(chǔ)上進一步優(yōu)化打印過程中的速度,從而達到提高打印件的精度?;贖ilbert曲線優(yōu)化的路徑規(guī)劃方法的具體實施步驟如下:
(1)確定層高,對打印件進行分層切片;首先對切片層輪廓進行輪廓偏置,使之可以更好地保持原有的外形輪廓而減少變形。
(2)根據(jù)輪廓偏置后的層面輪廓以及需要填充的實際需求,如填充率以及打印效率等生成相應(yīng)階數(shù)的Hilbert曲線。
(3)對生成的Hilbert曲線進行優(yōu)化擬合,使用三次B樣條曲線進行擬合,然后插值,使之生成光滑的曲線,將擬合后的曲線所有控制點坐標(biāo)保存為txt文本文件。
(4)使用擬合后的曲線坐標(biāo)生成G代碼,導(dǎo)入打印機相應(yīng)的打印軟件中,實現(xiàn)打印。
曲線擬合的方式有很多,如B樣條曲線擬合[28]、三次樣條曲線擬合和貝塞爾曲線擬合等。三次參數(shù)樣條曲線擬合屬于樣條插值曲線擬合,在擬合后曲線過所有樣本點如圖1,實線為原曲線,虛線為三次樣條插值擬合后曲線,可以看出這樣會產(chǎn)生額外不必要的行程,導(dǎo)致路徑的增長,降低整體的打印效率。
貝塞爾曲線只有第一個頂點和最后一個頂點落在控制多邊形上,且曲線可以表示出控制多邊形的導(dǎo)數(shù)、階次和形狀。但貝塞爾曲線擬合存在著不足之處:確定了控制多邊形的頂點個數(shù)(n+1),就確定的曲線的次數(shù)(n);控制多邊形的頂點越多,曲線的逼近程度越差。這兩點使得貝塞爾曲線并不適用于Hilbert曲線的擬合。B樣條曲線比貝塞爾曲線更貼近控制多邊形,且曲線更加光滑,曲線的次數(shù)是根據(jù)需求確定的而不是由控制點的個數(shù)確定。在此,我們選擇B樣條曲線擬合。
常用的B樣條曲線擬合有二次B樣條曲線擬合及三次B樣條曲線擬合,使用兩種方法對Hilbert曲線擬合,對擬合后的曲線進行仿真打印分析,具體過程為:計算擬合后曲線相鄰兩點之間的距離,相加之后求得擬合曲線的總長度;然后,給定打印速度,求出打印相鄰兩點需要的時間,便可以判斷出兩種曲線填充的打印時間;使用打印相鄰兩點所用時間與這兩點之間橫向距離和縱向距離求出打印時x軸電機運行速度和y軸運行速度。便可以繪制出兩軸打印速度時間圖。打印過程中,x、y方向噴頭移動速度如圖2所示,可以看出,使用二次B樣條擬合打印電機經(jīng)過速度為0點的次數(shù)更多,且速度變化率更高,考慮打印效率及精度的綜合因素,選擇三次B樣條曲線擬合作為曲線優(yōu)化方法。
本文對Hilbert曲線擬合主要包括兩個步驟:首先將曲線控制點的坐標(biāo)輸入,進行三次B樣條平滑,把給定的點,平滑到B樣條曲線上,不會增加點的數(shù)目;然后進行三次B樣條擬合,在節(jié)點之間均勻插入指定個數(shù)的點,完成擬合。三次B樣條曲線擬合方法中,n次B樣條曲線的參數(shù)表達式為:
(1)
式中:Pi為給定的n+1個控制點Pi(i=0,1,0,...,n)的坐標(biāo);Fi,n(t)為n次B樣條曲線的基函數(shù),其形式為:
(2)
而三次B樣條曲線的基函數(shù)為:
(3)
(4)
(5)
(6)
(7)
擬合后的Hilbert曲線如圖3所示,實線為原Hilbert曲線,虛線為擬合后的曲線。可以看出,經(jīng)過三次B樣條擬合后的曲線在原曲線需要直角轉(zhuǎn)彎處全都變得光滑,減少急轉(zhuǎn)彎也就是減少打印過程中電機的快速變化,電機的變化率變慢可以使整個打印過程中殘余應(yīng)力變少,打印精度提高。同時,曲線的整體長度變得更短,這樣會使打印時間減少,效率提高。
其算法流程圖如圖4所示,將輸入的Hilbert曲線控制點的個數(shù)及坐標(biāo),將其按三次B樣條曲線基函數(shù)整體平滑,對于首點和尾點,它們沒有前一點或后一點,故需要將曲線前兩點的連線延長,在延長線上取一點為第一個點。同理,在曲線最后兩點的連線延長線上取一點為最后一個點,這樣便可以將整條曲線的控制點平滑到新的曲線上。平滑后,點的個數(shù)不變。然后,在平滑后的曲線上進行插值擬合,每條線段上的插值個數(shù)可以根據(jù)實際需求指定,在每條線段中均勻插值,完成Hilbert曲線擬合的過程。
3D打印時,為保證打印件邊緣較高的打印精度,通常會首先對打印件的切片層輪廓進行輪廓偏置,輪廓偏置次數(shù)一般設(shè)置為2~3次,本文取偏置次數(shù)為2;將偏置后的內(nèi)輪廓使用擬合后的Hilbert曲線填充,圖5為不同形狀輪廓單層填充的示意圖。
此外,優(yōu)化后的曲線填充會使打印過程中噴頭的停止次數(shù)大大減少。具體過程如圖6,將連續(xù)2次停止的點記做電機的一次停止。圖7所示為兩種打印路徑工作下,x軸電機停止次數(shù)減少了65.83%,y軸電機停止次數(shù)減少了68.09%。
本實驗使用型號為Prusa i3型打印機,材料為PLA,本文路徑填充方法使用C++擬合,使用MATLAB保存為G-code來實現(xiàn)。G-code是最為廣泛使用的數(shù)控編程語言,它可實現(xiàn)打印機噴頭及熱床的加熱,通過坐標(biāo)點控制噴頭的移動[29]。Repetier-Host是一款切片軟件,將STL文件導(dǎo)入其中后便可以使用Cura Engine對其進行分層和路徑規(guī)劃,生成G-code供機器打印。使用擬合曲線和原曲線的坐標(biāo)點生成G-code,將其直接導(dǎo)入Repetier-Host,可以生成打印預(yù)覽。
基本設(shè)置為噴頭直徑0.3 mm,打印速度為30 mm/s,空行程速度為70 mm/s,層高為0.2 mm,熱床溫度為60 ℃,噴頭溫度為200 ℃。
本文選取的打印樣件是高為5 mm,邊長為46.8 mm的長方體,以四階Hilbert曲線進行填充,使用未優(yōu)化過的Hilbert曲線和擬合后的曲線對其打印為1組,共打印10組樣件,分析不同填充方法的打印時間、消耗材料以及翹曲變形的情況。
打印結(jié)果可直接反映出打印填充方法優(yōu)劣性,同樣的樣件打印時間及耗材對能否實現(xiàn)快速大批量生產(chǎn)有著重要的影響;電機的啟停次數(shù)不光影響打印效率,頻繁的停止會產(chǎn)生應(yīng)力集中,發(fā)生翹曲變形。
由表1可以看出,對于相同的樣件,優(yōu)化前打印花費時間為1 805 s,需要材料4 062 mm,優(yōu)化后則打印花費時間為1 734 s,效率提高了3.93%,需要材料3 877 mm,減少了4.55%。
表1 打印結(jié)果對比
翹曲變形影響打印件的成型精度,不僅會影響模型的美觀性,甚至?xí)钩尚图适г械氖褂脙r值。
本文測量成型樣件底層中心與四周邊角處高度的差值來計算樣件翹曲變形的情況,中心高度采用多次測量求平均值的方法計算。打印10組樣件,分別測它們翹曲變形的情況,圖8與圖9分別為兩種打印路徑下,最大翹曲量變化和平均翹曲量變化曲線圖。
使用Hilbert曲線填充樣件的平均最大翹曲量為0.446 mm,總平均翹曲量為0.295 mm;使用優(yōu)化后方法填充樣件的平均最大翹曲量為0.175 mm,總平均翹曲量為0.112 mm,平均最大翹曲量減少60.7%,總平均翹曲量減少62.26%。
表2 Hilbert曲線填充翹曲量 mm
表3 本文方法填充翹曲量 mm
打印效果實物圖如圖10所示,以第7組樣件為例,可以看出使用輪廓偏置和Hilbert曲線作為填充路徑打印出的成型件在邊角處存在輕微的翹曲變形,最大翹曲量為0.435 mm,平均翹曲量為0.356 mm,是由于打印時電機運轉(zhuǎn)過快以及頻繁換向?qū)е麓蛴r散熱不均勻產(chǎn)生殘余應(yīng)力,翹曲變形集中體現(xiàn)在成型件最下層的邊角處;使用輪廓偏置和優(yōu)化后曲線作為打印填充路徑時,最大翹曲量為0.182 mm,平均翹曲量為0.107 mm。
3D打印中成型件的精度至關(guān)重要,本文從填充路徑的連續(xù)性、填充時噴頭運行的流暢性方面入手,在連續(xù)的Hilbert曲線的基礎(chǔ)上,優(yōu)化了曲線的形狀,使噴頭在填充時減少在單方向的停止次數(shù),速度變化更為平緩,進而減少成型件的翹曲變形。此外,本文從打印時間、耗費材料、電機停止次數(shù)及翹曲變形等方面進行實驗驗證,對比了本文方法與使用Hilbert去曲線填充的差別。
實驗證明,基于Hilbert曲線優(yōu)化填充曲線和輪廓偏置相結(jié)合,不僅具備了輪廓偏置算法的較高外輪廓精度的優(yōu)點,同時經(jīng)過三次B樣條擬合后的Hilbert曲線填充降低了打印過程中電機變化率,減少了電機轉(zhuǎn)向次數(shù),進而減少打印件的翹曲變形,提高打印件精度。G-code的生成使算法可以在大多數(shù)FDM打印機直接實現(xiàn)打印。
此外,盡管該方法在填充路徑連續(xù)及噴頭速率變化減緩等方面有一定的優(yōu)點,可以減少翹曲變形,提高打印效率,但輪廓偏置固有的對于復(fù)雜邊界偏置時容易產(chǎn)生偏置線自相交問題依舊存在。此外,本方法會存在輕微的翹曲變形以及難以填充多連通區(qū)域復(fù)雜模型的問題。今后的工作將針對本方法在用于多連通區(qū)域復(fù)雜模型的填充時會出現(xiàn)路徑不連續(xù),曲線難以完整填充等問題的優(yōu)化,進一步優(yōu)化填充曲線。