陳廉杰 寧 萌 陳慧濤 張 帆
(1.江南大學(xué)機(jī)械工程學(xué)院,江蘇 無錫 214122;2.江蘇省食品先進(jìn)制造裝備技術(shù)重點(diǎn)實(shí)驗(yàn)室,江蘇 無錫 214122)
3D打印技術(shù)目前已被廣泛應(yīng)用于生物、食品、機(jī)械和航空航天等工業(yè)領(lǐng)域,但其仍面臨諸多問題與挑戰(zhàn)[1]。近年來,伴隨著人造肉發(fā)展的浪潮,人造肉3D打印技術(shù)被各國大力研究,理論上可通過3D打印制造出各種形態(tài)復(fù)雜與營養(yǎng)均衡的可滿足大部分人群飲食所需的既科學(xué)又能產(chǎn)生食欲的肉制品[2]。在人造肉3D打印技術(shù)中最常見的打印方法有擠出式與噴墨式兩種[3-4]。研究擬采用基于熔融堆積(FDM)的3D打印技術(shù),將海藻酸鈉包裹植物油脂并與瓊脂結(jié)合所得原料作為人造肉脂肪部分打印原料,其原理如圖1所示,在噴頭內(nèi)向物料施加壓力使其以絲狀形態(tài)擠出,并在噴口處逐漸降溫,以所設(shè)置運(yùn)動軌跡在平臺上冷卻堆積形成成品。
圖1 打印原理圖
相比于常見聚乳酸(PLA)與丙烯腈—丁二烯—苯乙烯共聚物(ABS)等材料3D打印技術(shù),國內(nèi)外關(guān)于人造肉3D打印軌跡規(guī)劃的研究仍然較少。人造肉原料各項(xiàng)物理性質(zhì)均與常規(guī)固體材料不同,其在噴頭內(nèi)處于熔融態(tài),打印后在平臺上由于熱傳導(dǎo)時(shí)間問題原料仍會保持極短暫的不穩(wěn)定流動狀態(tài),若處理不好,最終會影響成品質(zhì)量。目前對于人造肉3D打印運(yùn)動軌跡路徑大多仍采用常規(guī)材料的運(yùn)動算法,如平行掃描法[5-7]、星形發(fā)散掃描法[8]或分形掃描法[9-10]等,在實(shí)際打印中將會導(dǎo)致打印物料在軌跡交互與拐角處坍塌堆積從而產(chǎn)生大象腳現(xiàn)象。
針對以上問題,研究提出一種人造肉脂肪組織3D打印成型軌跡優(yōu)化算法,采用貝葉斯算法庫進(jìn)行模型切片層分區(qū)處理,結(jié)合遺傳算法與蟻群算法并通過掃描最優(yōu)運(yùn)動路徑角度,同時(shí)對傳統(tǒng)的zigzag路徑掃描法進(jìn)行改進(jìn),減少運(yùn)動路徑中的尖角與拐角及打印噴頭的間斷次數(shù),以此對運(yùn)動路徑進(jìn)行優(yōu)化,實(shí)現(xiàn)符合3D打印人造肉的打印運(yùn)動軌跡的合理規(guī)劃。
zigzag掃描法因其算法簡單以及與硬件適配度高,在人造肉3D打印領(lǐng)域應(yīng)用較為廣泛。3D打印對象為基于植物原料的人造肉制品,要求成品紋理能夠模擬真實(shí)動物肉制品復(fù)雜紋理[11]。若采用傳統(tǒng)zigzag掃描法,作業(yè)時(shí)對于復(fù)雜紋理填充會使得運(yùn)動路徑過渡點(diǎn)與拐角增多且噴頭頻繁間斷,導(dǎo)致打印效率與成品質(zhì)量嚴(yán)重下降。研究基于貝葉斯算法并結(jié)合實(shí)際情況,對傳統(tǒng)zigzag掃描算法進(jìn)行適配于3D打印人造肉的優(yōu)化處理,對運(yùn)動軌跡進(jìn)行合理有效規(guī)劃,同時(shí)通過試驗(yàn)不斷提高整體優(yōu)化效果。其優(yōu)化方法如圖2所示。
圖2 軌跡規(guī)劃流程圖
具體實(shí)施步驟:
(1)對所需打印的人造肉進(jìn)行建模與切片處理,并采用貝葉斯算法庫對切片后的模型截面層進(jìn)行分區(qū)處理以得到若干滿足簡單多邊形特性的小型子分區(qū)。
(2)采用經(jīng)改進(jìn)的近鄰法確定各子分區(qū)輪廓最優(yōu)運(yùn)動起始點(diǎn)。
(3)采用遺傳算法和蟻群算法同時(shí)充分考慮成品質(zhì)量與打印效率,對經(jīng)分區(qū)處理得到的模型截面層子分區(qū)輪廓的打印軌跡進(jìn)行合理規(guī)劃。
(4)以zigzag掃描法為基礎(chǔ),進(jìn)一步對截面子分區(qū)內(nèi)部填充軌跡進(jìn)行優(yōu)化,減少尖角拐角的數(shù)量以此提高模型打印質(zhì)量。
(5)輸出優(yōu)化處理結(jié)果,同時(shí)將計(jì)算所得優(yōu)化軌跡輸出為G代碼用于3D打印并進(jìn)行驗(yàn)證。
3D打印人造肉成品要做到仿真效果,首先在視覺上需要模擬真實(shí)動物肉制品紋理,因此噴頭在對各細(xì)小花紋走線時(shí)每層截面都會產(chǎn)生數(shù)量與大小均不同的島嶼結(jié)構(gòu),此時(shí)傳統(tǒng)的zigzag掃描算法會使噴頭運(yùn)動時(shí)產(chǎn)生過多的加減速與間斷動作,降低打印效率與質(zhì)量。因此在軌跡規(guī)劃時(shí)首先需要對模型切片后含有島嶼的復(fù)雜截面層進(jìn)行分區(qū)處理,分割成若干形狀簡單的小型連續(xù)子分區(qū),為輪廓與內(nèi)部紋理填充部分規(guī)劃運(yùn)動路徑奠定基礎(chǔ),以實(shí)現(xiàn)各子分區(qū)的連續(xù)打印功能,最終減少打印噴頭的運(yùn)動中斷次數(shù),同時(shí)避免較長的打印運(yùn)動路徑帶來的過大的剪切應(yīng)力,從而可進(jìn)一步提高打印成品質(zhì)量[12]。
采用經(jīng)keil算法進(jìn)一步優(yōu)化的貝葉斯算法[13]對模型截面層進(jìn)行分區(qū)處理,利用凸多邊形區(qū)域融合方法將截面層復(fù)雜圖形分解為多個(gè)連續(xù)簡單多邊形,以此減少打印軌跡中的復(fù)雜圖形數(shù)量[14]。由于人造肉原料擠出時(shí)的短暫流動性,且相比普通3D打印材料其直徑較大,因此為避免打印路徑中出現(xiàn)畸變以及拐角處的物料堆積現(xiàn)象,應(yīng)盡量保證求解得到的圖形為簡單多邊形,且其中每個(gè)內(nèi)角盡可能大和均勻。
采用FarseerUnity物理引擎提取貝葉斯算法開源庫,并結(jié)合Matlab進(jìn)行相關(guān)實(shí)驗(yàn)驗(yàn)證。提取一種3D打印人造肉模型截面脂肪部分紋理進(jìn)行分區(qū),如圖3所示。由結(jié)果分析可得,采用貝葉斯算法分區(qū)得到的復(fù)雜截面連續(xù)子分區(qū)均能滿足要求,且由此為后續(xù)掃描軌跡優(yōu)化打下基礎(chǔ)。
圖3 分區(qū)結(jié)果
2.2.1 輪廓起始點(diǎn)確定 在對模型截面層進(jìn)行分區(qū)后可得到若干連續(xù)多邊形子分區(qū),隨后需要對每個(gè)子分區(qū)分別進(jìn)行軌跡規(guī)劃,以此實(shí)現(xiàn)對各分區(qū)的打印成型。因此在打印前需對每個(gè)子分區(qū)輪廓確定一個(gè)運(yùn)動起始點(diǎn),要求各子分區(qū)僅有一個(gè)輪廓起始點(diǎn)且僅被經(jīng)過一次,同時(shí)各分區(qū)在空間上運(yùn)動連續(xù),以此有效降低打印噴頭運(yùn)動的空行程距離,減少物料滴落,提高打印效率與模型成型質(zhì)量[15-18]。
研究采用一種改進(jìn)的近鄰法確定各輪廓起始點(diǎn)[19],分析時(shí)設(shè)置各復(fù)雜截面層共分有m個(gè)簡單多邊形子分區(qū),各分區(qū)可表示為L={L1,L2,L3,…,Lm},各多邊形子分區(qū)共有n個(gè)頂點(diǎn),則該頂點(diǎn)集合可表示為p={p1,p2,p3,…,pm},此時(shí)任意子分區(qū)的頂點(diǎn)集合可表示為pi={pi1,pi2,…,pikm},n=k1+k2+…+km。因此,確定各子分區(qū)輪廓起始點(diǎn)的實(shí)施步驟如下:
(1)根據(jù)子分區(qū)輪廓運(yùn)動路徑連續(xù)且起始點(diǎn)距離最小原則,可確定輪廓起始點(diǎn)的計(jì)算目標(biāo)函數(shù)為:
(1)
式中:
s——子分區(qū)輪廓起始點(diǎn),mm;
d——運(yùn)動路徑相鄰兩子分區(qū)起始點(diǎn)距離,mm;
x、y——起始點(diǎn)坐標(biāo)。
(2)選取點(diǎn)集pi中的p11(0,0)作為該分區(qū)輪廓運(yùn)動起始點(diǎn),令s1=p11,根據(jù)式(1)可求得各子分區(qū)順序起始點(diǎn)s1到各分區(qū)輪廓L的距離,隨后將點(diǎn)p11從p中摘除。
(3)根據(jù)步驟(2)所求距離,可找出距離頂點(diǎn)s1最近的起始點(diǎn)pij,并將其摘除集合,同時(shí)令s2=pij。
(4)可根據(jù)式(1)依次求得頂點(diǎn)si到集合p中各個(gè)點(diǎn)的距離,并將所有計(jì)算結(jié)果比較得出距離頂點(diǎn)si最近的點(diǎn),將其命名為sh。按照該思路依次遍歷所有復(fù)雜截面子分區(qū)多邊形輪廓頂點(diǎn),可求得該子分區(qū)起始點(diǎn)集合L1={s1,s2,s3,…,sh}。
(5)比較集合L中各值,分別遍歷其中各點(diǎn)并求任意兩點(diǎn)間的距離,將其順序排列,依次找出各距離最小值并對其求和,可表示為di=s1s2+s2s3+…+sn-1sn。
(6)遍歷頂點(diǎn)集合p中各點(diǎn),作為子分區(qū)輪廓運(yùn)動起始點(diǎn),并根據(jù)上述思路分別求解出所有起始點(diǎn)集合Li,并解出其中各起始點(diǎn)相對應(yīng)最小距離di,可表示為集合D={d1,d2,d3,…,di}。
(7)比較集合D中各值大小,此時(shí)最小值di對應(yīng)的起始點(diǎn)集合Li即為該復(fù)雜截面子分區(qū)輪廓運(yùn)動軌跡最優(yōu)起始點(diǎn)集合。
2.2.2 子分區(qū)輪廓路徑規(guī)劃 在確定各子分區(qū)輪廓運(yùn)動起始點(diǎn)后,需要從起始點(diǎn)開始對分區(qū)輪廓進(jìn)行穩(wěn)定打印以此可以更好地包裹住內(nèi)部填充,防止物料向外流動與坍塌。輪廓運(yùn)動軌跡為從一起始點(diǎn)運(yùn)動到終止點(diǎn),可將該軌跡規(guī)劃總結(jié)為旅行商問題(TSP),因此可采用蟻群算法對其進(jìn)行求解。但由于傳統(tǒng)蟻群算法求解初期的耗時(shí)長與盲目性大的缺點(diǎn)[20],進(jìn)一步將遺傳算法優(yōu)秀的全局搜索特性融入蟻群算法,以得到子分區(qū)輪廓軌跡規(guī)劃的最優(yōu)解。
將已得到的各子分區(qū)輪廓最優(yōu)起始點(diǎn)作為蟻群算法中運(yùn)動蟻的待訪點(diǎn),進(jìn)而對其進(jìn)行迭代獲得初步軌跡解集。將迭代后所得結(jié)果作為遺傳算法的種群變量參數(shù),并進(jìn)行收斂求解出該復(fù)雜截面子分區(qū)輪廓運(yùn)動軌跡最優(yōu)解,以此優(yōu)化運(yùn)算精度,提高求解速度與效率。求解過程如圖4所示。
圖4 子分區(qū)輪廓軌跡規(guī)劃流程
(2)
(3)
式中:
α——信息素影響因子;
β——啟發(fā)函數(shù)影響因子。
在螞蟻移動過程中,每移動一次就需統(tǒng)計(jì)增加其在所經(jīng)過子分區(qū)輪廓路徑上釋放的信息素濃度,令該螞蟻經(jīng)過所有子分區(qū)輪廓后所產(chǎn)生的信息素總量記為Q,其所經(jīng)過的有效路徑(即從子分區(qū)輪廓i起始點(diǎn)到子分區(qū)輪廓j起始點(diǎn))總路程長度記為Lw。為避免產(chǎn)生過多的冗余信息導(dǎo)致對啟發(fā)信息與結(jié)果產(chǎn)生過多干擾因素,因此在對每只螞蟻迭代過后都需要更新一次信息素濃度τij(t),其結(jié)果為:
(4)
式中:
ρ——信息素濃度降低影響因子。
考慮到螞蟻的數(shù)量與實(shí)際影響因素,當(dāng)螞蟻所經(jīng)過子分區(qū)輪廓路徑無效時(shí),此時(shí)更新的信息素濃度結(jié)果為:
τij(t+1)=(1-ρ)τij(t) (0<ρ<1)。
(5)
在對釋放的所有螞蟻都迭代完成后,可將該種群螞蟻所經(jīng)過的所有最優(yōu)軌跡節(jié)點(diǎn)順序路徑歸納為集合C={c1,c2,c3,…,cm},此時(shí)該集合即為遺傳算法的初始種群變量參數(shù)。
經(jīng)蟻群算法迭代后,為滿足遺傳算法使用要求,需將該初始種群C進(jìn)行遺傳矩陣編碼。此時(shí)可將該截面子分區(qū)表示為一個(gè)數(shù)組,令任兩起始點(diǎn)之間的運(yùn)動軌跡為一個(gè)數(shù)組元素,即遺傳染色體,當(dāng)求解完整個(gè)數(shù)組時(shí),所有結(jié)果點(diǎn)之間的順序連線即為所得出的一條運(yùn)動軌跡。再次通過隨機(jī)順序遍歷數(shù)組元素即可產(chǎn)生多條路徑,并對其進(jìn)行編號處理。
通過以上對數(shù)組元素的迭代處理便可形成一定數(shù)量的可行軌跡及其對應(yīng)的一代染色體,進(jìn)一步對該染色體群進(jìn)行適應(yīng)度篩選,通過適應(yīng)度函數(shù)計(jì)算任一兩子分區(qū)起始點(diǎn)間路徑值,直到迭代完所有分區(qū),并進(jìn)一步對其結(jié)果進(jìn)行比較。經(jīng)比較該值越小則表示結(jié)果越好,即通過優(yōu)勝劣汰對此一代染色體進(jìn)行篩選所得對應(yīng)的染色體品質(zhì)越優(yōu)異。此適應(yīng)度函數(shù)可表示為:
(6)
式中:
S(x)——計(jì)算所有節(jié)點(diǎn)時(shí)所經(jīng)過的軌跡路徑總長度,mm。
進(jìn)一步,對以上所篩選的結(jié)果采用交叉運(yùn)算,即將交叉算子作用于二代染色體種群,以此根據(jù)交叉概率生成新的子代個(gè)體。然后以新的子代個(gè)體為基礎(chǔ)按照變異概率執(zhí)行變異運(yùn)算隨機(jī)產(chǎn)生變異個(gè)體,組成集合C',即新的子分區(qū)打印軌跡起始點(diǎn)集合,并在集合中不斷隨機(jī)選取兩個(gè)未被重復(fù)選取的數(shù)值進(jìn)行逆序排列以得到新的個(gè)體種群。
對上述所得出的最新種群以相同方法繼續(xù)迭代得出新一輪子分區(qū)起始點(diǎn)集合以及各點(diǎn)間的距離值。最后,通過比較距離得出最小值,該值即為最終所需要的最短路徑,即截面子分區(qū)輪廓打印運(yùn)動軌跡最優(yōu)解。
3D打印人造肉原料相比于普通3D打印材料擠出直徑更大,因此對比眾多3D打印掃描填充方法,zigzag掃描法因其實(shí)現(xiàn)簡單并且與硬件適配度高,故采用zigzag法對截面分區(qū)輪廓內(nèi)部進(jìn)行打印填充最為合適。該人造肉脂肪組織原料在噴頭內(nèi)為非牛頓流體形態(tài),故擠出時(shí)需要在平臺上對其進(jìn)行快速冷卻才能夠穩(wěn)定成型,但由于熱傳遞時(shí)間問題,物料在平臺上仍會有極短暫時(shí)間處于流體狀態(tài),此時(shí)若仍采用傳統(tǒng)zigzag掃描法,打印時(shí)在軌跡拐角處噴頭會進(jìn)行短時(shí)間內(nèi)的加減速動作,將會產(chǎn)生物料堆積與坍塌現(xiàn)象,進(jìn)而影響模型質(zhì)量。
研究以zigzag掃描算法為基礎(chǔ)進(jìn)行適配性優(yōu)化,核心思想為減少運(yùn)動軌跡中的尖點(diǎn),即減少噴頭在拐角處的加減速與間斷動作,優(yōu)化方法如圖5所示。當(dāng)噴頭完成直線掃描運(yùn)動至拐角處時(shí),將拐角處的尖角點(diǎn)改進(jìn)為圓弧狀以此作為兩條直線路徑的過渡區(qū),噴頭按照此圓弧軌跡就能夠平滑運(yùn)動進(jìn)入下一條掃描線。當(dāng)遇到極其相近的兩條路徑時(shí),通過平臺物料的短暫流動性即可自動對微小間隙進(jìn)行填充。
圖5 zigzag掃描優(yōu)化方法
建立具有復(fù)雜截面紋理的模型模擬人造肉脂肪組織部分,并對其進(jìn)行3D打印軌跡規(guī)劃及打印成型以此驗(yàn)證上述所提出的優(yōu)化方法的可行性。
首先采用貝葉斯算法開源庫對提取的截面進(jìn)行分區(qū),其紋理分區(qū)如圖3所示,共有29個(gè)簡單多邊形輪廓,并在此基礎(chǔ)上采用提出的經(jīng)改進(jìn)的近鄰法確定各分區(qū)輪廓最優(yōu)運(yùn)動起始點(diǎn),如圖6所示。進(jìn)一步,采用提出的軌跡規(guī)劃算法對各分區(qū)起始點(diǎn)集進(jìn)行迭代處理,確定并優(yōu)化分區(qū)輪廓打印運(yùn)動路徑以得到最優(yōu)運(yùn)動軌跡。通過計(jì)算機(jī)對上述模型進(jìn)行輪廓軌跡仿真,優(yōu)化前后運(yùn)動軌跡如圖7所示,優(yōu)化后輪廓打印運(yùn)動路徑長度由約112.340 mm降低至約91.996 mm,縮短約18%,此時(shí)最優(yōu)運(yùn)動順序?yàn)镾1-S2-S3-…-S24-S25。最后采用經(jīng)改進(jìn)的zigzag掃描法對分區(qū)輪廓內(nèi)部進(jìn)行填充,局部填充效果如圖8所示。
圖6 輪廓最優(yōu)運(yùn)動起始點(diǎn)集
圖7 輪廓軌跡優(yōu)化對比
圖8 內(nèi)部填充優(yōu)化局部效果
使用研究建立的軌跡規(guī)劃方法對比現(xiàn)有Cura與Prusa切片軟件,對該模型單層截面進(jìn)行軌跡規(guī)劃與打印,其中噴頭噴嘴直徑為0.8 mm,設(shè)置打印基準(zhǔn)速度為60 mm/s,其他參數(shù)均保持一致。如表1所示,在人造肉3D打印上研究所用軌跡規(guī)劃方法噴頭運(yùn)動距離與打印時(shí)間相比于Prusa和Cura均顯優(yōu)勢。
表1 模型單層截面打印數(shù)據(jù)對比表
基于植物原料的人造肉脂肪組織3D打印提出一種運(yùn)動軌跡優(yōu)化算法,針對性地解決原料擠出直徑較大與短暫流動性所造成的成品成型質(zhì)量問題。采用貝葉斯算法對切片后的模型截面進(jìn)行分割得到合理的若干簡單多邊形子分區(qū),可有效減少打印時(shí)的空行程并為路徑規(guī)劃奠定基礎(chǔ);然后采用經(jīng)改進(jìn)的近鄰法確定各截面子分區(qū)運(yùn)動起始點(diǎn);進(jìn)一步將蟻群算法和遺傳算法有效結(jié)合,用遺傳算法良好的并行與搜索能力彌補(bǔ)蟻群算法計(jì)算耗時(shí)長與盲目性大的缺點(diǎn),以此更好地對確定好起始點(diǎn)的子分區(qū)進(jìn)行輪廓打印運(yùn)動路徑規(guī)劃,提高打印效率;最后使用改進(jìn)后的zigzag掃描法對子分區(qū)內(nèi)部進(jìn)行掃描填充,減少路徑尖角與拐角,提高模型打印質(zhì)量。
研究所提出的軌跡規(guī)劃算法比較于傳統(tǒng)切片軟件Cura和Prusa中的算法,打印的模型單層截面運(yùn)動路徑長度分別縮減8.9%與11.3%,打印時(shí)間分別縮減15.4%與16.7%。