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