封雨鑫,鐘 菲,余 強
(深圳市大族智能控制科技有限公司,廣東 深圳 518101)
隨著智能制造行業(yè)的迅猛發(fā)展,現(xiàn)代數(shù)控系統(tǒng)正向著高速度、高精度、高可靠性等方面發(fā)展。如何在保證加工精度的同時最大可能的提高加工效率,是當(dāng)前數(shù)據(jù)控系統(tǒng)研究的熱點。傳統(tǒng)的數(shù)控系統(tǒng)在加工曲線曲面軌跡時,為了滿足精度需求,通常將它們離散成一系列首尾相連的微小線段來逼近原始加工軌跡,不可避免地產(chǎn)生了大量加工代碼。這樣不僅增加了數(shù)據(jù)存儲、傳輸以及處理的負擔(dān),還會因為加工這些小線段速度和加速度的頻繁變化,降低了零件表面加工質(zhì)量和效果。現(xiàn)代數(shù)控加工中,通常會使用連續(xù)性更好的參數(shù)曲線,對小線段表示的路徑擬合[1],使得擬合后的曲線路徑變長,同時保證了曲線除首末端點外均為二階連續(xù),即加速度連續(xù),這樣不僅可以提高機床加工速度,還可以減少機床加工過程中的振動,提高整體加工質(zhì)量。
B樣條曲線因其表達式的通用性和應(yīng)用的廣泛性,使得B 樣條擬合技術(shù)成為了國內(nèi)外許多專家和學(xué)者們研究的熱點[2-4]。這些研究大多將輸入數(shù)據(jù)作為參數(shù)曲線的控制點,未考慮擬合誤差和曲線光順的問題,難以直接應(yīng)用于數(shù)控系統(tǒng)中大量小線段的加工。為了提高數(shù)控系統(tǒng)中直線段的加工效率,改善線段銜接處的連續(xù)性,研究人員常采用局部過渡(如:倒圓角[5],PH曲線[6],羊角曲線[7]等)方法或全局擬合方法對連續(xù)直線段進行平滑。而對于連續(xù)小線段路徑而言,局部平滑過渡會顯著降低加工效率。對此,一些研究學(xué)者根據(jù)B樣條特性對連續(xù)小線段的擬合進行了研究[8-10]。Deng[8]等將迭代逼近和最小二乘法相結(jié)合,提出了一種漸進迭代逼近最小二乘法的B樣條擬合方法,該算法通過建立型值點與B樣條曲線對應(yīng)點距離的平方和為目標(biāo)函數(shù),利用給定步長最速下降法來求解目標(biāo)函數(shù)。但該方法未考慮弓高誤差的約束,同時存在數(shù)值計算不穩(wěn)定的問題,難以應(yīng)用于實際加工中。為了提高樣條擬合精度和數(shù)值計算的穩(wěn)定性,Qing[9]等提出了一種帶弓高誤差約束迭代逼近B 樣條擬合方法。該方法在樣條擬合過程中通過漸進迭代逼近和局部細化的方法,使擬合曲線滿足弓高誤差約束,同時保證了樣條曲線的凸包性。Du[10]等提出了一種基于優(yōu)勢點的誤差有界b 樣條曲線逼近方法。該方法根據(jù)連續(xù)小線段的幾何特征和加工工藝,采用雙邊弓高誤差選擇合適的擬合點,然后根據(jù)最小二乘法迭代來迭代逼近原始路徑。本文在前人的基礎(chǔ)之上,提出了一種新的三次B 樣條高精度擬合連續(xù)微小線段的方法。為了減少迭代和誤差調(diào)整對加工小線段的效率,該方法首先采用連續(xù)小線段的轉(zhuǎn)角限制和雙邊弓高誤差限制,選擇滿足連續(xù)小線段可被擬合的型值點集;接著,采用凹凸性準則對可擬合點集分段后擬合成參數(shù)曲線;最后,利用插值擬合和誤差分析模塊,保證擬合的參數(shù)曲線在誤差允許的范圍以內(nèi),并通過實驗驗證了本文算法的有效性。
B樣條曲線是一種描述曲線曲面造型技術(shù),在計算機輔助設(shè)計中應(yīng)用廣泛。一條k次B樣條曲線表達式[2]:
其中,Pi(i=0,1,…,n)是曲線的控制頂點,控制頂點順序連成的折線段稱為B樣條曲線的控制多邊形。Ni,k(u)稱為k次B樣條曲線的基函數(shù),由德布爾遞推公式計算如下:
對于任意連續(xù)小線段而言,不能保證用一條符合誤差約束的B 樣條擬合,因此,需要找出擬合中容易產(chǎn)生超過擬合誤差的轉(zhuǎn)折部分,并將其設(shè)置為不可擬合的斷點,其余部分擬合成平滑的樣條曲線。為了提高小線段的擬合率,本文采用相鄰線段間的轉(zhuǎn)角,雙邊弓高誤差[11]以及凹凸性準則,用于擬合時篩選能夠被擬合的型值點集。
在擬合連續(xù)小線段時,為了獲得較好的精度,通常對相鄰線段采用圓弧近似法來計算擬合的弓高誤差。如圖1所示,任意相鄰兩段線段Qi-1Qi和QiQi+1,線段長度分別為li和li+1,所形成的轉(zhuǎn)角為θi,通過判斷雙邊弓高誤差εmax=max(δi,δi+1)是否超過給定值以及θi方向變化,來選擇適合擬合的連續(xù)小線段。
圖1 相鄰小線段的圓弧近似示意圖
2.2.1 轉(zhuǎn)角斷點判據(jù)
當(dāng)相鄰路徑段轉(zhuǎn)角偏轉(zhuǎn)較大時,路徑段局部容易形成尖角,導(dǎo)致擬合后的曲線誤差較大。為了合理控制擬合精度,相鄰路徑的夾角應(yīng)滿足:
上式中,θcircle為夾角臨界值。當(dāng)θi≤θcircle時,容易導(dǎo)致輪廓超過限定誤差εmax。此時,應(yīng)將∠Qi-1QiQi+1作為尖角來處理,并對尖角對應(yīng)的點Qi作為不可擬合的斷點。
2.2.2 雙邊弓高誤差判據(jù)
為了保證樣條高精度擬合效果,需要檢測擬合點Qi前后的弓高誤差是否超過了最大弓高誤差εmax。如果超過εmax,需要將Qi點設(shè)置為不可擬合的斷點,否則將點Qi放入可擬合的型值點集中。雙邊誤差判據(jù)公式如下[12]:
2.2.3 凹凸性準則判據(jù)
為了保證樣條擬合的凸包性,避免曲線擬合出現(xiàn)拐角或振蕩現(xiàn)象,在上述兩個準則的基礎(chǔ)上,本文增加了對連續(xù)小線段凹凸性檢測。采用的方法是記錄轉(zhuǎn)角θi偏轉(zhuǎn)方向,即:
通過對連續(xù)小線段轉(zhuǎn)角θi符號變化的判斷,將符號變化的點Qi作為擬合分斷點,即可獲得具有凹凸特性的擬合點集,從而保證各段擬合曲線的凸包性。
由式(1)可知,B 樣條曲線擬合需要確定節(jié)點矢量U={u0,u1,…,un+k+1}和Pi(i=0,1,…,n)控制頂點。而節(jié)點矢量和控制頂點求解與2.2 篩選出的每一段型值點集Qi(i=0,1,…,m)有關(guān)[2]。
2.3.1 節(jié)點矢量計算
為了使一條k次B 樣條曲線通過一組型值點Qi(i=0,1,…,m),其反算過程一般要求曲線的首末端點分別與首末型值點一致,內(nèi)型值點依次與k次B樣條曲線定義域內(nèi)的節(jié)點一一對應(yīng),即Qi對應(yīng)節(jié)點值ui+k。因此,B 樣條將有m段,所求的k次B 樣條插值曲線將有n+1 個控制頂點Pi(i=0,1,…,n),其中,n=m+k-1。節(jié)點矢量U在首末端點處具有k+1階重復(fù)度,相應(yīng)的節(jié)點矢量為:
對于開曲線包括非周期閉曲線,通常兩端點取重復(fù)度k+1,即u[uk,un+1]=[0,1]。于是u0=u1=…=uk=0,un+1=un+2=…=un+k+1=1,只需計算uk+1,uk+2,…,un內(nèi)節(jié)點矢量。
為了確定與型值點Qi(i=0,1,…,m)相對應(yīng)的參數(shù)值ui+k(i=0,1,…,n),需要對型值點進行參數(shù)化處理。通常對型值點參數(shù)化處理有均勻參數(shù)化法,向心參數(shù)化法和累積弦長參數(shù)化法。對于均勻參數(shù)化法,當(dāng)數(shù)據(jù)分布不均勻時,擬合會產(chǎn)生嚴重變形。向心參數(shù)化法主要適用于數(shù)據(jù)點急轉(zhuǎn)彎變化的場合。累計弦長參數(shù)化法是一種常用的節(jié)點矢量計算方法,該方法使得每個節(jié)點區(qū)間長度與對應(yīng)曲線上兩點之間的弦長相對應(yīng),保證了擬合曲線良好的光順性。因此,本文采用累計弦長參數(shù)化方法。
當(dāng)k=3 時,B 樣條曲線而言可達到C2連續(xù),而更高次數(shù)的B樣條將帶來更加復(fù)雜計算。因此,本文所述B樣條均指三次B樣條曲線。采用累計弦長法計算相應(yīng)節(jié)點矢量為:
根據(jù)B樣條曲線的定義可知,其定義區(qū)間不包括節(jié)點矢量構(gòu)成的前三個和后三個參數(shù)區(qū)間。因此,在端點處存在四重節(jié)點U=[u0=u1=u2=u3=u0,un+3=uk(k=1,2,…,(n-1),un+3=un+4=un+5=un+6=un=1]。從而保證了選取的節(jié)點矢量與弦長有良好的對應(yīng)關(guān)系,同時也使得對每個型值點所產(chǎn)生影響的控制點不會完全相同。
2.3.2 控制點的反算
給定型值點Qi(i=0,1,…,m),節(jié)點矢量U=[0,0,0,0,uk+1,uk+2,un,1,1,1,1],采用切點矢量的邊界條件,反算Pi(i=0,1,…,n)為所求控制頂點,屬于式(1)的逆過程。
根據(jù)三次B樣條插值條件:
三次樣條的首末節(jié)點重復(fù)度為4,所以B 樣條曲線的首末控制頂點與首末型值點相同,即Q0=P0,Qm=Pn。將上述線性方法改寫為矩陣形式:
通過高斯消元法即可求出全部未知控制點。
誤差控制是連續(xù)小線段擬合后實現(xiàn)高精度加工的關(guān)鍵步驟。定義連續(xù)小線段允許最大擬合擬合誤差εallowmax和平均誤差εavg,C(u)表示連續(xù)小線段擬合的參數(shù)曲線。如果直接求解連續(xù)小線段到C(u)的最大距離εmax和平均誤差εavg,一般沒有解析解,只能通過迭代算法求解,難以滿足數(shù)控系統(tǒng)對實時性的要求;另一種簡化方法是先計算曲線C(u)與擬合型值點間組成的每一個線段之間的最大弦差εi,max和平均誤差εi,avg,后計算所有線段之間最大誤差值εmax=max(εi,max)和平均值εavg=(1/n)εi,avg分別為擬合曲線C(u)最大近似誤差參考值和平均誤差參考值。其中,每一個線段之間的最大弦差εi,max和平均誤差εi,avg的計算過程如圖2所示。在曲線段C(ui+k)和C(ui+k+1)之間將u[ui+k,ui+k+1]等分成若干等分,得到一系列C(u)的上的點集,計算這些點到對應(yīng)直線段Qi-1Qi的距離εi,將其最大距離作為εi,max和平均距離作為εi,avg,以此來控制擬合曲線精度。
圖2 誤差分析示意圖
依據(jù)以上方法,針對連續(xù)小線段建立完成的擬合流程圖如圖3所示。
圖3 連續(xù)小線段擬合流程圖
該算法首先提取連續(xù)小線段端點作為待擬合型值點集,并采用轉(zhuǎn)角,雙邊弓高誤差以及凸包特性判別擬合分段點,見圖4(b);接著,統(tǒng)計分段點間的型值點數(shù)目m,判斷擬合點數(shù)是否滿足三次B樣條擬合的最小數(shù)目3。對滿足擬合條件的型值點,設(shè)定最大擬合點數(shù)M來控制擬合曲線計算規(guī)模,避免計算超時的情況;然后,采用一條三次B 樣條擬合這些型值點。而對于不能擬合的型值點,采用直線直接連接。最后,采用誤差控制模塊,對擬合曲線的誤差進行分析。若擬合曲線與原連續(xù)小線段的誤差沒有超過精度限制,則輸出擬合誤差結(jié)果和擬合曲線參數(shù)。否則,將超過誤差最大的點設(shè)置為斷點,針對新的斷點重新擬合和誤差分析,至到所有型值點擬合的樣條曲線在誤差允許的范圍內(nèi)。
以“蝴蝶”圖形為例,對本文所提算法的擬合效果進行驗證,其驗證結(jié)果如圖4所示。圖4(a)為數(shù)控編程NCG01繪制的“蝴蝶”原始輪廓圖,實驗設(shè)定最大擬合誤差εallowmax=20um,擬合轉(zhuǎn)角θcircle=40°時,采用本文算法擬合后的“蝴蝶”圖形如圖4(b)所示,其中,(b)圖中的“o”表示分段點。對比圖4(a)和圖4(b),可以發(fā)現(xiàn)擬合后的“蝴蝶”非常光順平滑,說明本文算法的有效性。
圖4 “蝴蝶”輪廓圖及其分段點和擬合曲線
為了進一步驗證本文算法的有效性,實驗對比了“蝴蝶”擬合前后的數(shù)據(jù),見表1。擬合前,“蝴蝶”輪廓由1000 段長短不一的小線段首尾連接而成的,采用本文算法擬合后,“蝴蝶”輪廓僅需38條三次B樣條即可表示,小線段數(shù)量減少了96.20%,并且擬合后的曲線長度分別較擬合前小線段的最大路徑長度整體提升96.17%,最短長度提升98.89%,平均路徑長度提升96.19%。說明本文算法對減少小線段數(shù)量,使得擬合的路徑變長的效果顯著。并且,整體擬合時間只花費了0.2919秒,實時性好,可以實現(xiàn)小線段的在線擬合。
表1 “蝴蝶”輪廓擬合數(shù)據(jù)
lmax,lmin,l平均分別為最大,最短線段長度和平均線段長度。
按照2.4的誤差控制模塊,將圖4(b)“蝴蝶”擬合每一段B 樣條曲線,按△u=0.001 下進行等分密化掃描,計算“蝴蝶”擬合圖形的最大誤差和平均誤差,其結(jié)果如圖5 所示。圖中“*”表示每一段B 樣條擬合的誤差值。由圖5(a)可知,坐標(biāo)(1,16.7561)表示最大誤差在第一段擬合曲線上,其值為εmax=16.7561um<εallowmax=20um,小于擬合允許誤差。由圖5(b)可知,坐標(biāo)(38,0.55336)表示最大平均誤差在最后一段,其值為εavg=0.55336um,其值遠遠小于擬合允許誤差,說明擬合的曲線非常貼合原始路徑。
圖5 “蝴蝶”擬合最大誤差和平均擬合誤差
為了進一步驗證本文算法的實用性,試驗在HAN’S801激光切割機床上進行,試驗臺與工控機相連,進給軸最大速度30m/min,最大加速度為1.5g,對“蝴蝶”輪廓分別采用小線段加工方法和本文所提三次B 樣條擬合加工方法進行切割。為了更加清晰地描述實際切割的細節(jié)部分,我們使用“黑色”矩形標(biāo)簽框任意挑選切割工件邊緣一個區(qū)域,并放大顯示在對應(yīng)圖像的右側(cè)。圖6(a)為小線段直接加工的“蝴蝶”圖形,6(b)為6(a)“蝴蝶”加工細節(jié)部分。圖6(c)為采用本文方法擬合后加工的“蝴蝶”圖形,6(d)為6(c)“蝴蝶”加工細節(jié)部分。通過對比,不難發(fā)現(xiàn),圖6(b)切割邊緣毛刺較明顯,邊緣切割質(zhì)量差,圖6(d)切割邊緣較平滑,表面切割質(zhì)量明顯優(yōu)于圖6(a)的方法。
圖6 不同算法下的“蝴蝶”加工效果圖
表2給出了不同方法擬合“蝴蝶”輪廓后,加工時間和速度。直接采用小線段加工“蝴蝶”輪廓,實際加工時間約為9s,而采用本文所提方法擬合后,由于平均加工速度的提高,實際加工時間減少到了2s,加工效率提高了78%,從實際加工速度與指令加工速度的均方差可以看出,小線段加工過程的速度波動較大,而采用B樣條曲線加工的速度波動則小的多,而且小線段加工過程中的最大加速度也比B樣條曲線加工過程中的要大。在實際加工過程中,樣條曲線擬合的目的是在控制加工輪廓在允許范圍內(nèi),盡量拉伸單段加工軌跡的長度,提高單段軌跡加工速度,從而提高整個輪廓的加工效率。
表2 不同算法加工“蝴蝶”時間和速度
本文提出的連續(xù)小線段的高精度B樣條擬合方法,通過將連續(xù)小線段擬合成參數(shù)曲線來實現(xiàn)數(shù)控加工路徑變長,同時保證參數(shù)擬合曲線精度可控。采用誤差對加工路徑進行轉(zhuǎn)角和雙邊弓高檢驗,快速確定擬合型值點集。運用凹凸性檢測準則,保證擬合樣條的凸包性。運用誤差控制模塊,保證擬合的參數(shù)曲線控制在精度允許范圍以內(nèi)。實驗結(jié)果表明,所提出的算法可以將路徑數(shù)量減少96.20%,同時,在誤差控制模塊下,保證每一段參數(shù)曲線的擬合誤差不超過精度限制,而且整個求解過程無迭代,實時性好。通過在數(shù)控機床上的切割試驗,也進一步驗證了本文方法的實用性。