王春香,王巖輝,張文敬
(內(nèi)蒙古科技大學(xué) 機(jī)械工程學(xué)院,內(nèi)蒙古 包頭 014010)
3D打印技術(shù)在現(xiàn)代工業(yè)制造領(lǐng)域是一項正在快速發(fā)展的新技術(shù),其主要思想是增材制造[1]。增材制造技術(shù)是以產(chǎn)品模型的數(shù)據(jù)為基礎(chǔ),將材料自動地累加起來成為實(shí)體的制造方法[2]。與減材制造相比,增材制造的核心思想是逐層累加進(jìn)行的[3]。在3D打印中,三維零件快速成型的工藝主要分為:3DP(三維立體印刷)、LOM(疊層實(shí)體制造)、SLA(光固化快速成型)、FDM(熔融沉積成型)、SLS(選擇性激光燒結(jié))等[4]。在3D打印中,分層技術(shù)是其重要環(huán)節(jié),其好壞直接影響到模型的表面精度及其成型效率?,F(xiàn)階段主要存在的問題有:(1)如何協(xié)調(diào)模型精度和成型效率之間的關(guān)系;(2)如何減小分層時產(chǎn)生的階梯效應(yīng)。
本文將通過對現(xiàn)有分層算法進(jìn)行分析,結(jié)合自適應(yīng)分層算法的優(yōu)勢,以較好地解決增材制造過程中成型效率和誤差之間的矛盾關(guān)系。
目前,主流分層方法有3種:(1)基于STL模型的分層;(2)基于CAD模型的直接分層;(3)基于點(diǎn)云數(shù)據(jù)的分層。
近幾年,在眾多的分層方法中,由于建模軟件與成型設(shè)備接口兼容性,基于STL模型分層方法仍然是當(dāng)今研究的主流?;赟TL分層算法又分為3類:(1)基于拓?fù)湫畔⒌目焖俜謱铀惴ǎ?2)基于三角面片位置的高效分層算法;(3)基于幾何連續(xù)性的分層算法。
但是,基于STL模型分層方法仍然存在諸多缺陷,比如STL模型是用三角面片來表示,在對模型表面建立三角面片化時,由于數(shù)據(jù)量比較大,容易產(chǎn)生不必要的誤差,從而使后續(xù)的分層也會產(chǎn)生相應(yīng)的誤差等[5]。
基于CAD模型的直接分層就是對三維實(shí)體模型進(jìn)行分層,不用對模型進(jìn)行三角面片化,使得輪廓精度有了很大的提高。但是其也存在一些缺陷:如對CAD模型直接分層,則需要對其模型在分層方向上添加支撐;同時,再對分層方法進(jìn)行優(yōu)化時,也會產(chǎn)生相應(yīng)的困難[6]。
采用對點(diǎn)云數(shù)據(jù)的直接分層就是對三維掃描得到的點(diǎn)云數(shù)據(jù)直接進(jìn)行分層,避免了對其進(jìn)行三角網(wǎng)格劃分等中間過程,使得分層更加的簡潔;同時,分層效率和精度都有了很大的提高。但是由于掃描得到的點(diǎn)云數(shù)據(jù)非常多,會產(chǎn)生許多亢余點(diǎn),要對得到的點(diǎn)云數(shù)據(jù)進(jìn)行精簡預(yù)處理[7-8]。
綜上所述,本研究通過分析各種分層方法優(yōu)、缺點(diǎn)可得:當(dāng)采用基于點(diǎn)云模型的分層方法時,雖要對點(diǎn)云數(shù)據(jù)進(jìn)行精簡,但也避免了點(diǎn)云轉(zhuǎn)化為中間格式帶來的損失,能夠滿足模型分層效率和精度的要求,結(jié)合自適應(yīng)分層算法可以較好地將問題解決。
點(diǎn)云模型自適應(yīng)分層算法中,分層厚度的確定是其核心。文獻(xiàn)[9]采用基于線性相關(guān)的精簡方法,對平面點(diǎn)云數(shù)據(jù)進(jìn)行了精簡和分類,得到點(diǎn)云數(shù)據(jù)的關(guān)鍵特征點(diǎn),利用多個小直線段連接關(guān)鍵特征點(diǎn)構(gòu)造截面輪廓線,計算層內(nèi)所有點(diǎn)到輪廓線的距離,然后根據(jù)點(diǎn)到輪廓線的最大距離是否在給定的形狀誤差范圍內(nèi),確定下一層切片的位置。其中,尋找平面輪廓線的算法非常復(fù)雜,需要進(jìn)行反復(fù)的循環(huán)比較,計算量較大。文獻(xiàn)[10]提出了一種基于距離變換的自適應(yīng)切片算法,其基本原理是利用圖像處理技術(shù)中的距離變換,來計算投影點(diǎn)云的徑向?qū)挾萊,以R的最大值Rmax作為控制參數(shù),比較準(zhǔn)確地反映出兩層輪廓之間的最大差距,通過線性同倫的方法插補(bǔ)中間切片數(shù)據(jù),從而有效地控制形狀誤差。其中,形狀誤差定義為兩層切片間截面輪廓的最大差值。
上面所提到的是采用一種計算相鄰層距離的變化率作為判別因子,來實(shí)現(xiàn)自適應(yīng)分層。
本文采用投影法來提取切片數(shù)據(jù),通過將得到的點(diǎn)云切片數(shù)據(jù)投影到一個平面上,進(jìn)行算法的實(shí)現(xiàn),主要步驟包括點(diǎn)云密度估算等4個步驟。
點(diǎn)云模型的初始切片厚度確定需要尋找一個合適的參數(shù)來衡量,如果設(shè)定的參數(shù)值較大,那么點(diǎn)云的數(shù)據(jù)就會過多,降低擬合效率,同時還會使輪廓線的誤差較大;如果取值太小,提取的二維輪廓線數(shù)據(jù)會較少,影響模型的精度。
為了選擇合適的參數(shù),本文對點(diǎn)云的密度進(jìn)行估算。首先在點(diǎn)云G中隨機(jī)抽取n個點(diǎn),然后采用K近鄰(k-Nearest Neighbor,KNN)搜索算法,找出每個點(diǎn)gi(i=0,1,…,n)在點(diǎn)云G內(nèi)其距離最小的點(diǎn)(總數(shù)記為m個),并計算出這些點(diǎn)到gi的距離Di,然后對得到的所有距離Di求平均值,從而得到點(diǎn)云的密度ρ,即:
(1)
其中,將得到的點(diǎn)云密度ρ作為模型的初始分層厚度,實(shí)際的切片厚度為:
h=kρ
(2)
式中:k—系數(shù)。
由式(2)可以看出,k的取值直接影響到了點(diǎn)云的分層厚度,影響到最后輪廓線的擬合效果,所以k的取值較為關(guān)鍵。當(dāng)k取值太小時,所提取的點(diǎn)云數(shù)據(jù)過小,不能很好地反映輪廓線,使得輪廓擬合精度降低;當(dāng)k取值太大時,所提取的數(shù)據(jù)量增大,降低了分層的效率。
所以,要取一個合適的k值,使得提取的截面數(shù)據(jù)適中,還能清晰地反映輪廓線邊界,從而保證輪廓線的精度同時提高分層效率。經(jīng)過大量實(shí)驗(yàn)數(shù)據(jù)統(tǒng)計可知,k的取值在1~3之間時,能夠得到比較好的效果。
掃描得到的點(diǎn)云數(shù)據(jù)初始數(shù)據(jù)量比較大,里面包含了模型表面的屬性信息,同時也存在許多冗余點(diǎn),這給后續(xù)的操作帶來很多不便,增加了計算時間,而且也會影響模型表面的光滑性[11],因此必須對點(diǎn)云數(shù)據(jù)進(jìn)行精簡。本文采用建立平面均勻方格的方法進(jìn)行數(shù)據(jù)精簡,無需對數(shù)據(jù)進(jìn)行排序。
該方法的具體步驟如下:
(1)計算平面點(diǎn)集的點(diǎn)云密度,將其作為方格的最小邊長;
(2)計算二維最小包圍盒的長度(X方向)xmax-xmin,寬度(Y方向)ymax-ymin;
(3)進(jìn)行平面均勻方格劃分,判定落入每個方格內(nèi)的點(diǎn),對方格內(nèi)的點(diǎn)求均值,并將其作為該位置的新數(shù)據(jù)點(diǎn);
(4)將所有的點(diǎn)處理完成后程序結(jié)束。
精簡前后點(diǎn)云數(shù)據(jù)對比圖如圖1所示。
圖1 精簡前后點(diǎn)云數(shù)據(jù)對比
由圖1可以看出,經(jīng)過精簡后的數(shù)據(jù)量雖然減少了,但是輪廓線邊界還是保持得很完整,也提高了輪廓線擬合的效率。
本研究首先用Delaunay三角剖分法對點(diǎn)云數(shù)據(jù)進(jìn)行提取,然后對提取的點(diǎn)云數(shù)據(jù),采用alpha-shapes算法[12]提取邊界輪廓線。其過程就是計算每一個三角形邊長為d,得出結(jié)果之后在與設(shè)定值α進(jìn)行比較,提取d<2α的索引值,找到滿足索引值的點(diǎn),然后再對得到的點(diǎn)用Alpha-Shapes算法,提取輪廓線邊界。
Alpha-Shape可以用來從一堆無序的點(diǎn)集中提取邊緣。設(shè)有一點(diǎn)集q的Alpha-Shape是一個無規(guī)則的多邊形,其是由點(diǎn)集q和半徑參數(shù)α決定的且唯一。
Alpha-Shape算法原理圖如圖2所示。
圖2 Alpha-Shape算法原理圖
由圖2可以看出:Alpha-Shape算法提取輪廓線的過程可以理解為一個半徑為α的圓在點(diǎn)集q外滾動,其滾動的痕跡就是這個點(diǎn)集s的邊界線。因此,當(dāng)α值很小,則每個點(diǎn)都是有可能是構(gòu)成邊界的點(diǎn);如果α無窮大時,則求出的邊界線為點(diǎn)集q的凸多邊形。
因此,該算法可以用來提取點(diǎn)集表示的多邊形的內(nèi)外邊界線,其參數(shù)α可以控制多邊形生成的精確程度與平滑程度[13]。
計算切片中各線段(輪廓線是由多個直線段組成)與最近點(diǎn)的距離,找出其最大值。計算距離方法有3種:經(jīng)典算法、面積算法、矢量算法。因?yàn)榍衅恳粚拥臄?shù)據(jù)比較多,計算量比較大,本研究采用矢量算法來計算其距離。
最近點(diǎn)與直線的位置存在3種可能,點(diǎn)與直線的位置關(guān)系如圖3所示。
圖3 點(diǎn)與直線的位置關(guān)系
(3)
因?yàn)椋?/p>
(4)
又因?yàn)椋?/p>
(5)
根據(jù)式(5),由向量的方向性可知:當(dāng)點(diǎn)p的位置如圖3(a)所示,那么0 特殊情況下,如點(diǎn)在線段上、點(diǎn)在端點(diǎn)、點(diǎn)在線段延長線上等等的情況全部適用于該公式。 根據(jù)r值的不同,最短距離為: (6) 由式(6)可以得到第一層所有線段到最近點(diǎn)的距離,然后找出其中最大值記為d(1);再以相同的層厚進(jìn)行分層,找出下一層距離的最大值d(2)。 由式(7)得相鄰兩層的距離變化率,將v與設(shè)定的參數(shù)值m進(jìn)行比較,若v大于m,則需要增加層厚;若小于m的負(fù)值,則減小層厚;否則層厚不變。 其中,距離變化率公式為: (7) 本研究對上述自適應(yīng)分層算法進(jìn)行實(shí)驗(yàn)驗(yàn)證。點(diǎn)云模型通過3D FAMILY LSH800掃描儀獲??;分層算法在Windows 7系統(tǒng)中安裝的Matlab R2016a編程語言環(huán)境下運(yùn)行。 斗齒齒尖的尺寸為97.64 mm×222.00 mm×89.69 mm,共有65 216個數(shù)據(jù)點(diǎn),點(diǎn)云密度為0.89。由于點(diǎn)云密度較小,本研究采用較大層厚來進(jìn)行分層。 斗齒齒尖的點(diǎn)云模型圖如圖4所示。 圖4 斗齒齒尖點(diǎn)云模型 筆者用本文的自適應(yīng)算法,對該模型沿Y軸方向進(jìn)行自適應(yīng)分層。其中,初始厚度為2 mm,精度設(shè)為0.05,增量設(shè)為0.5 mm,得到的分層數(shù)為79層,用時265.8 s。 得到的結(jié)果如圖5所示。 圖5 斗齒齒尖y軸自適應(yīng)分層效果圖 根據(jù)文獻(xiàn)[9]對斗齒模型齒尖沿Y軸方向的自適應(yīng)分層,其初始層厚為2 mm,得到的層數(shù)為111層,時間為438.5 s。 得到的結(jié)果如圖6所示。 圖6 文獻(xiàn)[9]斗齒齒尖y軸分層效果圖 對比兩種方法可以看出: (1)本文提出的自適應(yīng)分層方法在模型表面變化較大和裝配要求較高時,其分層效果要比文獻(xiàn)[9]分層效果明顯; (2)文獻(xiàn)[9]所提出的方法在相同的初始層厚下,分層的層數(shù)與時間都要比本文方法多(主要是因?yàn)槲墨I(xiàn)[9]在輪廓線提取時要計算所有的點(diǎn),從而導(dǎo)致計算復(fù)雜); (3)同時也驗(yàn)證了該算法可以通過相鄰兩層之間的最大歐拉距離的變化率來調(diào)整層厚,達(dá)到了自適應(yīng)分層的要求,證明了結(jié)果與分析相符合。 (1)本文分析了各個模型分層方法的優(yōu)劣勢,提出了基于點(diǎn)云模型的分層方法,該方法避免了三維模型轉(zhuǎn)化為中間格式帶來的損失,提高了成型精度; (2)本文與現(xiàn)有的自適應(yīng)分層方法進(jìn)行了比較,在輪廓線提取方面進(jìn)行了優(yōu)化,減少了計算,從而提高了分層效率; (3)本文提出了基于點(diǎn)云模型的自適應(yīng)分層算法,其實(shí)現(xiàn)自適應(yīng)的判別因子是相鄰兩層之間的歐拉距離變化率。 通過實(shí)驗(yàn)結(jié)果可知,該算法滿足自適應(yīng)分層算法的要求,同時該算法適用范圍在滿足等厚分層的基礎(chǔ)上,又適用于高精度、表面復(fù)雜的模型。3 實(shí)驗(yàn)及結(jié)果分析
4 結(jié)束語