陳貴亮, 賈鎮(zhèn)濤, 楊冬, 李子浩, 杜文博
(河北工業(yè)大學(xué)機械工程學(xué)院, 天津 300401)
3D打印材料輸出和粘接的方法依所處理的材料的物理屬性而不同。目前常見的方法包括:光固化技術(shù)[1]、熔融沉積成型技術(shù)[2]、片材堆積制造技術(shù)、粉末粘接成型技術(shù)[3]、選擇性激光燒結(jié)技術(shù)[4]、激光直接燒結(jié)金屬技術(shù)等。所用材料涉及金屬、陶瓷、塑料、凝膠、紙張、水泥等,應(yīng)用范圍包括大到建筑構(gòu)件、航空航天大型腔體、支撐零件的制造,小到亞微米級的微機構(gòu)零件的成型[5],包括對生物材料的打印[6]。將上述成型方法中所使用的材料替換,也可實現(xiàn)其他方向的應(yīng)用。文獻[7]中將激光燒結(jié)技術(shù)中的金屬粉末替換為石英或石膏粉末即可打印出類巖石樣品。而目前成熟的3D打印技術(shù)并不適用于冰雪材料的打印。
冰雪運動是中國北方常見的運動與娛樂活動,其中的冰雪景觀的建筑和場景的修補一直由人工實施,存在著勞動強度大、效率低和對人員技術(shù)要求高的問題。北京冬奧會的即將召開,必將激發(fā)中國冬季運動的發(fā)展,因此對于冰雪景觀建筑和修補的需求也會擴大。為滿足這種需求,秉承科技冬奧的精神,提出了針對冰雪材料的機器人3D打印技術(shù)的研究課題。目前,機器人技術(shù)與建筑材料成型技術(shù)相結(jié)合的機器人化建筑3D打印在建筑領(lǐng)域已有成功的應(yīng)用實例,如用混凝土結(jié)合其他材料,打印建筑景觀、復(fù)原文物展覽[8]。文獻[9]研究了利用機器人移動打印混泥土建筑構(gòu)件的方法。
冰雪在松散情況下質(zhì)地松軟、強度低、易結(jié)塊,受壓縮時水分容易析出,可形成具有較高強度的塊[10],液態(tài)水流動性強,難于迅速凝結(jié)成型為足夠強度的實體,但實體的冰雪塊遇到水分容易相互粘接。文獻[11]中研究了微小冰結(jié)構(gòu)的3D打印成型方法,是在液氮氛圍中使微米級液滴沾附凝結(jié)從而成型的方法;文獻[12]也針對液態(tài)材料的微結(jié)構(gòu)凝結(jié)成型方法進行了研究,但均是在微尺度上有效,在宏觀尺度上這種方法不能實現(xiàn)。文獻[13]中將雪經(jīng)過噴嘴噴出,然后堆積成型,但是未壓實的冰雪材料松散而機械強度差,不能堆積過多,否則難以形成理想的形狀。文獻[14]使用液態(tài)水在冷平面上凍結(jié)成冰,最終層層疊加成為三維實體,液態(tài)水的流動性較強,因而難以成型。從設(shè)備角度考慮,多數(shù)3D打印均采用結(jié)構(gòu)封閉的框架結(jié)構(gòu)。文獻[15]設(shè)計了一種懸臂式3D打印機構(gòu),相對于傳統(tǒng)打印機構(gòu),具有高靈活性,可以很好地保證打印精度。但是如用于戶外,打印形體較大的作品,則需要較大的設(shè)備,顯然不利于在戶外多種環(huán)境下靈活的作業(yè)。
分析可知,實現(xiàn)戶外環(huán)境的冰雪3D打印,在設(shè)備上應(yīng)該采用可靈活移動、結(jié)構(gòu)開放的機器人系統(tǒng),在材料上使用制備的堅固冰雪顆粒材料通過排列,以水膜粘結(jié),可具有較好的材料機械強度,能滿足成型的效率需求。材料間用于粘接的水膜薄,在戶外寒冷溫度下容易凝結(jié)。以此形成冰雪雕塑的基本形體再輔以整體加強和外觀修飾手段,可以成為一種較實用的戶外場所大型冰雪雕塑3D打印技術(shù)。
軌跡規(guī)劃是3D打印的重要問題,需根據(jù)材料特性研究適合的方法[16-17],進行軌跡規(guī)劃的前提則是對材料填充的規(guī)劃計算。目前對于顆?;┨畛涞某墒旆椒ㄉ絮r見報道,常見的線成面、面成體的填充方法不能直接應(yīng)用于顆粒填充。針對這個問題,開展顆?;┑?D打印材料填充的快速規(guī)劃計算研究。
圖1 系統(tǒng)方案Fig.1 System scheme
根據(jù)我們設(shè)計的冰雪顆粒3D打印方案,如圖1所示,系統(tǒng)包含如下幾個模塊:移動平臺、機器人、冰雪3D打印輸出機構(gòu)、水霧噴淋系統(tǒng)、冰雪顆粒材料的儲存/輸送系統(tǒng)、機器人控制系統(tǒng),另外還有冰雪顆粒的制備成型和固化系統(tǒng)。其大致工藝過程是利用機器人進行顆粒坐標(biāo)定位、打印機構(gòu)接受輸送系統(tǒng)的顆粒進行定周期的間歇打印,同周期內(nèi)配合以水霧噴淋系統(tǒng)對顆粒粘結(jié)部位的間歇性水霧噴淋,作為顆粒的黏接劑。
整個工藝過程的實現(xiàn),要求計算機能夠預(yù)先對擬打印的數(shù)字模型根據(jù)顆粒的尺寸進行切片、逐層的顆粒排列填充。
由于是對等直徑球粒的打印,不僅要求同層內(nèi)球粒排列緊密有序,還要求相鄰層間凸凹互補,才能保證整個形體的穩(wěn)固致密,擁有最小的孔隙率。
把三維模型中,填充的球體總體積與模型體積的比例稱為密度。等直徑球體堆積與一個體區(qū)域中能夠達到的最大密度為74%。能實現(xiàn)密度為74%的堆積方法有兩種:一是六方緊密堆積,其中相隔層的球位置正對,記為ABABAB;二是面心立方緊密堆積,其中每相隔兩層的球位置正對,記為ABCABC。其中六方緊密堆積方式較為簡單,因此,冰雪顆粒3D打印采用此堆積方式。依據(jù)此方法,設(shè)圖2(a)為某一層的球體的緊密排列情況。任意球A共與6個球相鄰接觸,每3個球可圍成一個空隙,其中一半是尖角向下的B空隙,另一半是尖角向上的C空隙。相鄰的向上一層的球按照對應(yīng)放置于尖角向下的B空隙之上,每個下層球可以同時與3個上層球相互接觸,圍成如圖2(b)的四面體空隙。按此方法重復(fù)進行,層層累積,可以堆出圖3的效果。
圖2 顆粒兩層分布情況Fig.2 Particle distribution in two layers
圖3 顆粒堆積效果Fig.3 Particle accumulation effect
第一層網(wǎng)格直線表達式為
(1)
第二層網(wǎng)格直線表達式為
(2)
式中:i為網(wǎng)格水平線的取值范圍;j為網(wǎng)格斜線的取值范圍;yi1為第一層網(wǎng)格水平線縱坐標(biāo);與第一層網(wǎng)格斜線相交求得的球心橫縱坐標(biāo)為xj1和yj1;yi2為第二層網(wǎng)格水平線縱坐標(biāo);與第二層網(wǎng)格斜線相交求得的球心橫縱坐標(biāo)為xj2和yj2。
切片層厚度的計算公式為
(3)
模型被存為STL格式后可由MATLAB軟件的fread函數(shù)直接讀取,讀出的數(shù)據(jù)為表達包圍實體模型的外表曲面的三角面片。按照切片的厚度,在模型的坐標(biāo)系中設(shè)置一系列等距且于地面(x-o-y平面)平行的平面作為切片平面。逐個切平面檢索與之相交的三角面片,并且求這些面片與該切平面的交點,按順序連接這些交點成為若干個封閉的輪廓,此輪廓即形成了對應(yīng)層切平面的填充輪廓。
2.2.1 模型數(shù)據(jù)的讀取
為方便后面處理,將讀出的三角面片數(shù)據(jù)存入一個數(shù)組矩陣tri_facet,矩陣的一行表示一個三角面片,由3個頂點坐標(biāo)和面片平面的法相矢量共12個元素組成,如第i行表示第i個三角面片的參數(shù),可表示為
tri_facet(i,:)=[x1i,y1i,z1i,x2i,y2i,z2i,x3i,y3i,z3i,nix,niy,niz]
(4)
矩陣的行數(shù)等于三角面片的總數(shù)目。
2.2.2 切片處理并建立輪廓
對三角面片數(shù)據(jù)進行切片并生成切片面填充輪廓需要:①對三角面片按坐標(biāo)排序;②檢索匹配切片平面和三角面片;③求各層切片平面與三角面片的交點;④連接交點為填充輪廓曲線。具體步驟如下。
步驟1對三角面片按坐標(biāo)高低排序。提取tri_facet矩陣中每行數(shù)據(jù)的3個z向頂點坐標(biāo)的最大值zimax和最小值zimin,將三角面片按zimin由小到大進行升序排序,若有三角面片的zimin相同,則對zimax進行比較,zimax值小的序號靠前。經(jīng)過排序的面片存放于新的矩陣tri_facet_ord中,便于下一步的切平面匹配。
步驟2檢索匹配切片平面和三角面片。這一步是為每一切平面匹配與之相交的三角面片,是一個檢索過程。選擇檢索區(qū)域分割系數(shù),經(jīng)比較,最終確定采用黃金分割即0.618法速度較快。
根據(jù)切片層厚度和模型的高度確定切片層的數(shù)量和各層球心的高度(z值),將其由低到高存數(shù)組lay_z中。令切片層最小序號min=1,最高層序號max可由size函數(shù)求得數(shù)組的列數(shù)來表示,即
max=size(lay_z,2)
(5)
分割檢索區(qū)域的切平面層序號gold按式(6)計算,用floor函數(shù)將計算結(jié)果向負(fù)無窮大方向取整。分割檢索區(qū)域的切平面高度值表達式見式(7)。
gold=min+floor[0.618(max-min)]
(6)
zseg=lay_z(gold)
(7)
以zseg與步驟1中排序后的三角面片矩陣tri_facet_ord中的數(shù)值做比較,可按式(8)判斷三角面片與分割面的匹配關(guān)系。
(8)
式(8)中:zimin為第i個三角面片3個頂點坐標(biāo)中z坐標(biāo)的最小值;zimax為第i個三角面片3個頂點坐標(biāo)中z坐標(biāo)的最大值。
對于滿足第i個面片與分割面相交情況,建立新的矩陣,將面片i記錄為與gold層相交的面片;對于不相交、位于分割面上方情況,下一步對區(qū)間[gold+1,max]的層進行黃金分割檢索;對于不相交、位于分割面下方情況,下一步對[min,gold-1]區(qū)間的切片層進行黃金分割檢索。重復(fù)執(zhí)行這個檢索過程,直到切片平面檢索序號矩陣中元素為空,即所有切片平面均匹配到與之相交的三角面片。
步驟3求各層切片平面與三角面片的交點。按順序為每個切片平面層求解與之相交的三角面片的交點作為描繪輪廓的節(jié)點。
第i層切片平面的高度zi表達式為
(9)
步驟4連接交點為填充輪廓曲線。為避免節(jié)點過近或重復(fù),需要設(shè)置一個閾值,兩節(jié)點間距離小于該值即可認(rèn)為二者重復(fù),需刪掉一個點。將每層刪除冗余信息后的交點以此層原點為基準(zhǔn),根據(jù)三角面片的毗鄰關(guān)系,按逆時針排序,并將相鄰節(jié)點依次用線段相連,形成連續(xù)的平面輪廓線,在同一層內(nèi)的不同輪廓曲線之間用NaN(非數(shù)值點)進行分隔,避免不同輪廓之間產(chǎn)生無效鏈接導(dǎo)致輪廓出現(xiàn)錯誤。
文獻[18]中,對于相同問題采用二分法作為檢索匹配方法,為比較其與上述方法的效率,針對各模型分別采用兩種方法進行了對比,結(jié)果如表1所示??梢钥闯?,在所有計算示例中黃金分割法所用時間(計算10次取平均值)均略低于二分法,這個趨勢在三角面片數(shù)較多或者分層數(shù)較多時更明顯一點。
表1 黃金分割和二分法進行匹配計算的時間比較Table 1 Time comparison of matching calculation between golden section and dichotomy
由于一層中有可能存在相互獨立的多個輪廓島或者相互為內(nèi)外輪廓的復(fù)合輪廓,需要判別已確定層中材料填充的內(nèi)部區(qū)域,具體可參考文獻[19],采用與之類似算法。經(jīng)判斷整理的區(qū)域數(shù)據(jù)按節(jié)點的x、y坐標(biāo)值寫為兩個行矩陣分別為xv和yv。
多數(shù)3D打印采用線材輸出,其填充算法是實現(xiàn)連續(xù)的直線或曲線在區(qū)域內(nèi)的填充。采用顆粒材料實現(xiàn)冰雪3D打印,需要按照的等徑球粒排列方法實現(xiàn)在區(qū)域內(nèi)對點的陣列填充,而且相鄰切片層的球粒需要互補錯開排列。如果逐層按區(qū)域計算球粒中心的排放位置,不僅計算量較大,而且需要頻繁進行邊界判斷,影響該工作效率。為簡化計算,獲得較好的填充規(guī)劃效率和可靠性,提出利用平面排列網(wǎng)格模板進行區(qū)域篩選的規(guī)劃方法。
設(shè)置兩個可包容所有層輪廓的水平平面區(qū)域,分別在其內(nèi)設(shè)置直線網(wǎng)格,求出網(wǎng)格交點作為區(qū)域填充的種子點,然后逐層與層內(nèi)填充輪廓做比較,保留輪廓內(nèi)的種子點作為填充點即可。
假設(shè)顆粒半徑為10 mm,第一層網(wǎng)格的直線方程可寫為式(10),第二層為式(11),其中i、j分別為與x軸平行直線和斜線的序號。兩層的交點x、y坐標(biāo)分別為x1、y1和x2、y2,分別表示奇數(shù)層和偶數(shù)層的種子點集合。
(10)
(11)
判斷切片平面層中區(qū)域內(nèi)的點??梢灾苯诱{(diào)用MATLAB中的inpolygon函數(shù)來判斷網(wǎng)格交點是否在復(fù)合區(qū)域內(nèi)。
當(dāng)層數(shù)為奇數(shù)時,判斷程序為
in1=inpolygon(x1,y1,xv,yv);
當(dāng)層數(shù)為偶數(shù)時,判斷程序為
in2=inpolygon(x2,y2,xv,yv);
返回值為1的點即為復(fù)合區(qū)域內(nèi)的填充點。一層中所有點存于矩陣PointIn的對應(yīng)行中,當(dāng)對所有層均篩選完成后,即獲得所有層的填充區(qū)域中的填充點,即完成了填充規(guī)劃,以此為基礎(chǔ)即可繼續(xù)進行軌跡規(guī)劃。
為了驗證本文算法的準(zhǔn)確性,以圖4所示零件對該切片篩點算法進行測試。模型的尺寸為600 mm(長)×400 mm(寬)×400 mm(高),三角面片個數(shù)為952,分層厚度經(jīng)計算為16.329 9 mm,對之進行處理。圖5為第1層和第15層的球粒中心填充規(guī)劃情況。可以看出,該算法能夠精確篩選出多輪廓組成的復(fù)合區(qū)域內(nèi)部的填充點。
圖6為對各層填充點進行組合,形成的整個模型的球粒規(guī)劃,該算法能夠準(zhǔn)確地以六方緊密堆積原理,將三維實體以點為單位進行離散填充規(guī)劃。
圖4 顆粒填充規(guī)劃模型Fig.4 Particle filling programming model
圖5 切平面顆粒填充效果Fig.5 Particle filling effect of the layer tangent plane
為進一步驗證本文算法的可靠性,對圖7展示的兔子與熊的模型進行填充計算??梢钥闯觯疚乃惴▽τ诰哂袕?fù)雜曲面和多重輪廓的實體進行顆粒填充規(guī)劃也有效。其中,圖7(a)模型尺寸為576.6 mm(長)×576.6 mm(寬)×1 185 mm(高),填充點數(shù)量為 20 612,計算所需時間為 2.04 s;圖7(b) 模型尺寸為1 873.2 mm(長)×1 585.5 mm(寬)×1 608.4 mm(高),填充點數(shù)量為226 451,計算所需時間為15.18 s。該算法可以每秒篩選出超過104個填充點。
圖6 三維填充效果Fig.6 Three-dimensional filling effect
圖7 模型顆粒填充效果Fig.7 Model and particle filling effect
根據(jù)冰雪材料3D打印機器人課題,針對冰雪材料的物理特性,提出了顆粒材料3D打印的新方法,對打印模型的數(shù)據(jù)處理及材料的顆粒填充算法進行了研究。得出如下結(jié)論。
(1)針對三角面片的排序和切片層平面與三角面片的匹配問題,提出采用黃金分割法作為區(qū)域分割搜索的方法,可以提高匹配速度。對于切片平面內(nèi)顆粒材料區(qū)域填充的問題,確定采用六方緊密堆積方式,提出采用預(yù)設(shè)切片平面層的球粒填充模板,使之與切片平面輪廓進行比較的方法,保留其中輪廓內(nèi)的點作為填充點,而逐層實現(xiàn)顆粒材料對三維實體的填充規(guī)劃。這種方法簡單直觀,容易編程。通過實例計算可證明這種方法對于具有多重復(fù)合區(qū)域和具有復(fù)雜表面的模型的填充規(guī)劃均有效。
(2)所研究的填充方法是根據(jù)顆粒材料的特點進行的填充規(guī)劃,該工作為后續(xù)的路徑規(guī)劃奠定了基礎(chǔ)。由于顆粒材料可以通過簡單預(yù)制成為具有理想強度的材料,水分為粘接材料通常凝固速度較快,可以避免有些材料因為需要較長干透時間而影響打印效率的情況,該方法也可推廣到其他材料的打印中。因此本文研究方法應(yīng)該具有更廣的應(yīng)用前景。