馬虎亮,王燕青,楊勝強,呂明
(太原理工大學 機械與運載工程學院, 太原 030024)
NURBS(非均勻有理B樣條)曲線目前作為自由曲線的通用表達方式,由于其靈活性、易操作性等優(yōu)點被廣泛應用在機械設計領域[1]。NURBS曲線相對于一般直線、圓弧等常用曲線和Bezier、B樣條等控制曲線相對復雜,計算效率不高。因此,NURBS曲線的插補計算也成為機械加工領域的重點和難點之一。
NURBS曲線的插補計算主要有3種方法:使用遞推公式的直接計算法、矩陣法和De-Boor算法。學者們從不同的角度進行了研究:文獻[2-4]分別引入Newton-Rapson、Runge-Kutta和牛頓迭代法來計算下一步的插補點;孔祥宏等[5]利用遞推公式的顯示方程改進計算過程;馮高杰等[6]用分段插補來調(diào)節(jié)加減速的自適應插補算法;王國勛等[7]提出了基于矩陣法的插補點快速求導方法。上述方法中NURBS曲線求解插補點的過程相對于一般曲線來說還是過于復雜,求取參數(shù)較多,計算量較大,并且對于樣條曲線的刀補軌跡計算沒有深入分析。
當前對于NURBS曲線的加工主要采用周期采樣法,通過上位機粗插補和下位機精插補的結(jié)合提高加工精度,上位機根據(jù)采用周期采集曲線上的點。文獻[8-11]研究了NURBS曲線插補中上位機實現(xiàn)加減速控制的方法。這些方法使用曲線上的點的數(shù)量較少,總的計算量不大,具有很高的速度控制功能,但精度較低,不適用與對精度要求高的場合。文獻[12-15]是學者們采用插補或者補償?shù)确椒▽τ诓煌瑧脠龊蠝p小誤差所做的探索。
本文提出的參數(shù)跟蹤法是一種通用曲線插補方法,應用在NURBS曲線的插補計算中,可以在保證精度的前提下減少計算量。首先介紹了參數(shù)跟蹤法的基本原理,然后將其應用到NURBS曲線的插補計算中,隨后將其擴展到曲線的刀具補償和處理過程,最后研究了NURBS曲線的坐標補償方法。
參數(shù)跟蹤法以曲線的參數(shù)方程為研究對象,首先確定各個軸的參數(shù)表達式并進行歸一化處理,使參數(shù)u的取值范圍限制在[0,1],然后以曲線的導矢為依據(jù),對下一步的插補點進行計算,得到下一步插補點的坐標和當前步的插補結(jié)果,最后循環(huán)計算至終點。參數(shù)跟蹤法得到的結(jié)果屬于脈沖增量式,即單步插補結(jié)果是各個軸單步運動,插補精度高。
參數(shù)跟蹤法首先用到曲線的參數(shù)方程,表達式為
式中u為曲線的參數(shù),u∈[0,1]。
對于參數(shù)范圍不在[0,1]的參數(shù)曲線,需要對其參數(shù)值進行歸一化,并且對參數(shù)方程進行調(diào)整。
在計算下一個插補點時,需要使用曲線的參數(shù)微分方程,即
所有針對NURBS曲線的插補計算都是參數(shù)u從0到1的過程,每步插補計算參數(shù)的增加值稱為跨步步長 Δu。不同的插補方法計算得到的跨步步長不同。根據(jù)二階泰勒公式曲線任意點的坐標計算公式為
式中u0為對應參考點的參數(shù)值。在脈沖增量式的插補運算中,各軸的單個脈沖增量為 Δl,因此取Δl=f(u)?f(u0); Δl的取值通常可以達到 0.1 ~ 1 μm,這樣導致 Δu=u?u0,因此略去高階導數(shù),只使用一次項,得到
把各軸的微分方程代入式(4)計算可以得到各個軸的跨步步長,但由于各個軸的導數(shù)不同,因此各軸對應的 Δu也不同,這里取多個 Δu的最小值為跨步步長。再根據(jù)u=u0+Δu得到下一個插補點的參數(shù)值并可以計算各軸坐標值。
參數(shù)跟蹤法的運算流程如圖1所示。
圖1 參數(shù)跟蹤法的運算流程
參數(shù)跟蹤法的運算流程具體步驟如下:
步驟1 參數(shù)跟蹤法在獲取到曲線幾何信息后,設置初始參數(shù)u=0,初始點坐標Q(xs,ys)。
步驟2 根據(jù)曲線參數(shù)微分方程式(4)求出各軸關于參數(shù)的導數(shù),按照式(4)計算出各軸參數(shù)差值取最小值為跨步步長 Δu,更新參數(shù)值u=(u0+Δu)。計算新點的坐標Q(xm,ym),然后根據(jù)新舊坐標的差值ΔQ(Δx,Δy)得到插補結(jié)果。插補結(jié)果多為單步和雙步。
步驟3 循環(huán)步驟2 ,直到u=1,曲線到達終點。
由于每次獲取插補結(jié)果都是以參數(shù)值對應點的坐標為目標,故名其為參數(shù)跟蹤法。參數(shù)跟蹤法每次插補目標都為曲線上的值,完成插補后的坐標誤差都在單步之內(nèi)。計算過程簡單,只需要使用參數(shù)方程及其一階導數(shù)。
NURBS曲線的表達式符合參數(shù)跟蹤法的計算要求,并且參數(shù)范圍是[0,1],不需要進行歸一化處理。參數(shù)跟蹤法可以用于NURBS曲線的插補計算。
參數(shù)跟蹤法的插補過程需要計算曲線上的點和導矢。NURBS曲線上點的表達式為
式中:wi為權因子;Pi為曲線的控制點;Ni,k(u)為與u相關的基函數(shù)。從式(5)來看,分子A(u)可以等同加權控制點wiPi的B樣條曲線表達式,分母W(u)可以等同為權因子wi的B樣條表達式。因此,NURBS曲線的計算可以轉(zhuǎn)換為加權控制點的計算結(jié)果除以權因子的B樣條函數(shù)計算結(jié)果。使用De-Boor算法可以快速計算B樣條曲線上的點。
NURBS曲線上各點的導矢計算式為
式中:A′(u) 為A(u)的的導數(shù),即加權控制點wiPi的B樣條函數(shù)導數(shù);W′(u) 為W(u)的導數(shù),即權因子wi的B樣條函數(shù)導數(shù)。
式(6)是由式(5)對參數(shù)u進行求導所得,C(u)和W(u)在式(5)中已算出。
根據(jù)B樣條曲線的性質(zhì),p次B樣條曲線的導矢等于p?1次B樣條曲線,其控制點表達式為
式中ui為對應的節(jié)點向量。將加權控制點wiPi和權因子wi代入可求得p?1次B樣條曲線的控制點,再對節(jié)點向量進行對應處理即可計算得到A′(u)和W′(u),最后根據(jù)式(6)得到 NURBS 曲線的任意點的導矢值。
以NURBS曲線實例來說明NURBS的參數(shù)跟蹤插補方法的計算過程。三次NURBS曲線的控制點和權因子如表1 所示。節(jié)點向量V=[0, 0, 0, 0,0.143, 0.286, 0.429, 0.571, 0.714, 0.857, 1, 1, 1, 1],單個脈沖增量為 1 μm。
表1 NURBS 曲線控制點和權因子
NURBS曲線的插補計算過程:
步驟1 設定P1(0.5,1.0)為初始點,且u=0;
步驟2 根據(jù)式(7)計算當前點的導矢,得到dx/du和 dy/du的值,令 dx=dy=0.001 mm,計算X軸和Y軸對應的du,取較小值為跨步步長 Δu。然后更新參數(shù)u的值,根據(jù)式(6)計算當前點坐標,最后根據(jù)當前點坐標得到當前步的插補結(jié)果。
步驟3 判斷u是否等于1,等于1結(jié)束,小于1循環(huán)步驟2。
插補結(jié)果共6402步,插補結(jié)果如圖2a)中所示,圖2b)為插補結(jié)果的局部放大圖。從圖中可以看出,插補結(jié)果精度高,沒有累積誤差。
圖2 NURBS 曲線插補結(jié)果
數(shù)控加工中NURBS曲線的獲得方式有兩種方式,一種是在機械設計中直接使用NURBS曲線進行的設計,另外一種是通過測量曲面,然后使用NURBS曲線進行擬合得到的結(jié)果。兩種方式得到的數(shù)據(jù)信息都包含了控制點、節(jié)點矢量和權因子,但都是屬于加工前的軌跡信息,在實際加工中需要轉(zhuǎn)換為加工軌跡。通常在加工中使用固定刀具加工NURBS曲線,因此加工軌跡與結(jié)果曲線相差一個刀具半徑。
曲線具有凹凸性,其刀具補償為曲線各點沿法線方向偏移后的軌跡。根據(jù)補償方向可分為左刀補和右刀補。NURBS曲線為參數(shù)表達式,因此曲線導矢方向與法線方向垂直,由于參數(shù)跟蹤插補方法中包含了對導矢的求值,因此利用導矢求解左右刀補后的位置。如圖3所示,根據(jù)參數(shù)微分方程可以求解曲線上點M的導矢(x′,y′)。左刀補為導矢方向逆時針旋轉(zhuǎn)90°,右刀補為導矢方向順時針旋轉(zhuǎn)90°。計算時相應的XY軸分量進行旋轉(zhuǎn)即可。
圖3 導矢與刀補關系圖
曲線上對應點的刀具中心位置計算公式為
式中:r為刀具補償值;x′、y′ 為曲線當前點的導矢分量;l為導矢長度值,為符號,左刀補時取上方符號,右刀補時取下方符號。
刀具軌跡是曲線偏移后的結(jié)果,由于曲線的凹凸性,使其偏移曲線的長度有所增減。偏向凸的一側(cè)曲線長度增加,數(shù)據(jù)點增多;偏向凹的一側(cè)曲線長度減少,數(shù)據(jù)點減少。這是偏移曲線的特點之一。
直線、圓弧和圓錐曲線等幾何元素在偏移時只考慮單個凹凸性。NURBS曲線由于其靈活性,可將多種曲線的特征包含在一條曲線中,因此其偏移后的軌跡可能既包含凹曲線也包含凸曲線的偏移結(jié)果。NURBS曲線偏移量較小時點不會重合,但偏移量如果過大時,偏移線會出現(xiàn)重合和交叉,這就是曲線偏移的自相交現(xiàn)象,應用在加工中導致發(fā)生過切。曲線自相交現(xiàn)象如圖4a)和圖4b)所示。
圖4 偏移曲線的“打結(jié)”現(xiàn)象
處理NURBS曲線偏移的數(shù)學方法比較復雜,需要重新取型值點再反算控制點,計算過程復雜,而且在打結(jié)處,通常處理方式是打斷曲線從而生成多個曲線。
本文提供了一種處理偏移曲線出現(xiàn)自相交現(xiàn)象的面向插補結(jié)果的處理辦法——坐標消結(jié)法。坐標消結(jié)法是利用了插補結(jié)果具有確定精度坐標的特性:凡是打結(jié)必然會有重合點。坐標消結(jié)法利用包含了坐標值的插補結(jié)果,首先遍歷插補點得到相同坐標的序號集合,然后對序號集合進行合并處理,最后在插補結(jié)果中去除打結(jié)段。
圖4a)為最常見的交點情況,曲線只有一個交點的情況處理比較簡單,記錄A點和B點的序號去掉中間段即可。圖4b)中重復點為一段曲線,點的序號從前到后一次為A→B→C→D,A和C共點、B和D共點,去除時需要保留AB段。圖4c)和圖4d)是去除自相交部分的曲線。
圖5中補償曲線是原有NURBS曲線使用3.1節(jié)的方法偏移0.3 mm后的插補結(jié)果,顯示其中有兩處自相交。在遍歷插補點后得到的相同坐標的序號集合數(shù)量為16組,如表2中所示,需要對其進行合并處理。使用坐標消除法對插補結(jié)果處理后,需要消除的兩段為 3 90→565和 3 634→4185共728步。插補結(jié)果步數(shù)從7218步減少到6490步。處理后結(jié)果如圖5中處理曲線所示,去除掉偏移曲線的兩個結(jié),加工中不會產(chǎn)生過切現(xiàn)象。圖5中所示處理曲線為便于觀察縱坐標上移1 mm,可以看到坐標消結(jié)法去除了偏移曲線的交叉部分。
表2 插補結(jié)果中相同坐標點集合
圖5 NURBS 刀具補償插補結(jié)果后處理
恒定刀具補償一般應用在銑削等加工刀具磨損量很小的場合。在電火花加工中電極隨著加工時間是有損耗的,而且加工某些材料損時電極損耗量是非??捎^的,此時就需要對電極進行補償。由于電極損耗量在相同加工條件下是固定的,因此可以將補償隨加工時間進行線性變換。線性補償?shù)挠嬎愎綖?/p>
式中:r0為固定刀具補償值,mm;k為電極補償系數(shù),mm/步;n為加工步數(shù);r為刀具補償值,mm。
由于插補過程是按照周期內(nèi)步數(shù)來進行衡量的,因此電極的補償系數(shù)需要轉(zhuǎn)換成與步數(shù)相關。將式(8)中的補償半徑用式(9)計算,即可得到變補償?shù)那€插補結(jié)果。取k=?0.000 04 mm/步,通過計算得到的插補結(jié)果如圖6所示。曲線插補從左側(cè)開始補償值為0.3 mm,到右側(cè)結(jié)束時根據(jù)式(9)計算變?yōu)?.04 mm,工具電極損耗得到補償。
圖6 NURBS 曲線線性補償圖
在加工過程中,由于機床和刀具由于移動和受力等原因會在加工中產(chǎn)生振動,導致加工NURBS曲線時出現(xiàn)周期性或非周期性的坐標漂移現(xiàn)象,這是由于加工運動產(chǎn)生的坐標誤差。坐標誤差最終會反應加工后的曲線上,這種誤差可以通過三坐標測量儀等輪廓測量裝置測量。
坐標誤差可以通過坐標補償技術進行消減。具體辦法是通過試加工得到曲線,再通過測量輪廓和目標曲線進行比較得到坐標誤差表。再對坐標誤差表進行多項式擬合,將擬合后的坐標公式與NURBS曲線的插補點坐標相加來消除坐標誤差。
如圖7所示,實際曲線表示加工后的曲線,與目標曲線有坐標誤差,誤差值擬合曲線為式(10),是一條4次多項式曲線。在計算出NURBS曲線x坐標后,可以通過式(10)計算出坐標誤差的y坐標值,與曲線的y坐標值相加,最后再進行刀具補償。機補曲線是實際曲線經(jīng)過坐標補償?shù)玫降那€,與目標曲線重合。刀補曲線是機補曲線的刀具補償插補結(jié)果。
圖7 坐標補償與刀補軌跡
參數(shù)跟蹤法可以簡潔有效地對NURBS及其偏移曲線進行插補。NURBS曲線在加工中出現(xiàn)的誤差也可以利用多種補償方法進行消除,從而提高NURBS曲線的加工精度。參數(shù)跟蹤法對于NURBS曲線的計算方法可以擴展到其他類型的參數(shù)曲線,具有簡化插補計算和提高插補效率的作用。