李學(xué)斌
(內(nèi)江職業(yè)技術(shù)學(xué)院,四川 內(nèi)江 641100)
在模具、航空等制造領(lǐng)域,經(jīng)常會(huì)遇到復(fù)雜曲線曲面的數(shù)控加工。傳統(tǒng)的數(shù)控系統(tǒng)往往只具有直線和圓弧插補(bǔ),對(duì)于非直線或圓弧的曲線插補(bǔ)則往往采用微小段直線或圓弧分段逼近的方法,這種方法在處理復(fù)雜曲線時(shí)會(huì)導(dǎo)致諸如數(shù)據(jù)量大、進(jìn)給速度不均、精度和通用性較差、編程復(fù)雜等問(wèn)題。目前只有極少數(shù)FANUC、SIEMENS、三菱等高檔計(jì)算機(jī)數(shù)控CNC(Compute Numerical Control)系統(tǒng)裝備有非均勻有理B 樣條NURBS(Non Uniform Rational B-Spline)曲線插補(bǔ)功能[1]。隨著曲面造型的復(fù)雜化,傳統(tǒng)的曲面加工方法(如環(huán)切法、螺旋線法[2]等)已無(wú)法滿足提高加工效率的要求?;谝陨显颍恍W(xué)者提出了曲面的直接插補(bǔ)SDI(Surface Direct Interpolation)算法,這種插補(bǔ)方法極大地提高了插補(bǔ)精度和插補(bǔ)速度。本文介紹一種基于等參數(shù)線法離散NURBS 曲面的插補(bǔ)算法,該算法通過(guò)離散NURBS 曲面獲得一族NURBS 曲線,最后按NURBS 曲線直接插補(bǔ)算法來(lái)進(jìn)行插補(bǔ)。
根據(jù)德布爾(deBoor)和考克斯(Cox)導(dǎo)出的B樣條遞推定義,B 樣條曲線定義為:
式中:Ci(i=0,1,…n)為控制頂點(diǎn),又稱德布爾點(diǎn),Ni,p(u)稱為p 次規(guī)范B 樣條基函數(shù),雙腳下標(biāo)中的i 表示序號(hào)、p 表示次數(shù)。由德布爾—考克斯的遞推公式定義:
式中:ui稱為節(jié)點(diǎn),當(dāng)ui+1-ui=常數(shù)時(shí),則表示均勻B樣條函數(shù),反之稱為非均勻B樣條函數(shù),即NURBS曲線。
NURBS 曲線定義:
式中:Wi是與控制頂點(diǎn)Ci相對(duì)應(yīng)的權(quán)因子。
空間曲面的參數(shù)方程可表示為:
B 樣條曲面則定義為:
其中:其中Ci,j(i=0,1,……n;j=0,1,……m)為控制頂點(diǎn),Ni,p(u)和Nj,q(v)分別是沿u 向節(jié)點(diǎn)矢量和υ 向節(jié)點(diǎn)矢量定義的p 次和q 次B 樣條基函數(shù),u和υ 是曲面的兩個(gè)參數(shù)。
NURBS 曲面定義[3]為:
式中:Wi,j是與控制頂點(diǎn)Ci,j相對(duì)應(yīng)的權(quán)因子。
在實(shí)際應(yīng)用中,常將節(jié)點(diǎn)矢量U 和V 中兩端節(jié)點(diǎn)重復(fù)度取為p+1 和q+1 個(gè),并且兩端節(jié)點(diǎn)值分別為0 和1,即表示為:
根據(jù)上述定義可知,NURBS 曲面就由基函數(shù)的冪次、控制頂點(diǎn)、節(jié)點(diǎn)矢量和權(quán)因子所確定。
對(duì)于NURBS 曲面的插補(bǔ),可采取先將NURBS曲面離散成NURBS 曲線的方法。將曲面離散成曲線的方法通常有兩種:一是平面切割法,就是用一族平行平面切割曲面,獲得一系列的NURBS 曲線,然后按NURBS 曲線進(jìn)行插補(bǔ);二是等參數(shù)線法,就是先將曲面的兩個(gè)參數(shù)u 和υ 中的任意一個(gè)進(jìn)行離散,可獲得一系列的參數(shù)值,將這些參數(shù)值代入曲面公式,獲得一系列的NURBS 曲線,最后按NURBS 曲線進(jìn)行插補(bǔ)。
插補(bǔ)的實(shí)質(zhì)就是點(diǎn)的密化,密化的常用方法有等距法、等步長(zhǎng)法和自適應(yīng)法等。等參數(shù)線法就是先將曲面上兩個(gè)參數(shù)中的一個(gè)參數(shù)進(jìn)行點(diǎn)的密化,獲得該參數(shù)上一系列點(diǎn)的參數(shù)值,再按曲面規(guī)律得到另一參數(shù)上一系列對(duì)應(yīng)點(diǎn)的參數(shù)值。這種方法的好處是可以將一部分計(jì)算放在插補(bǔ)前集中進(jìn)行計(jì)算,當(dāng)計(jì)算出兩個(gè)參數(shù)值之后,就可以求出曲線上相應(yīng)的型值點(diǎn)了,同時(shí)求出該點(diǎn)的一階、二階導(dǎo)矢量,既加快了計(jì)算速度,又提高了插補(bǔ)的實(shí)時(shí)性。
為討論方便,假設(shè)先u 向、后υ 向進(jìn)行。
(1)取參數(shù)υ 為某一定值,可得到一條等參數(shù)曲線。如令υ=υe,NURBS 曲面就被離散成等參數(shù)值為υe的一條NURBS 曲線,記為S(u,υe),如圖1所示。
圖1 等參數(shù)線法離散NURBS 曲面示意圖
(2)確定加工行距(即υ 向的進(jìn)給距離,也是υ向的增量Δυ)時(shí)要保證殘留高度在規(guī)定誤差范圍之內(nèi)。
(3)取邊界曲線S(u,0)和S(u,1)分別作為NURBS 曲線插補(bǔ)的起始邊界和終止邊界。
在插補(bǔ)前的預(yù)處理中,主要要完成NURBS 曲線在某一點(diǎn)處一階、二階導(dǎo)矢的計(jì)算任務(wù),即對(duì)上述(3)式求一階、二階導(dǎo)數(shù),其目的是為獲得該點(diǎn)處的一階、二階導(dǎo)矢量,為實(shí)時(shí)插補(bǔ)作好數(shù)據(jù)準(zhǔn)備。
對(duì)(3)式進(jìn)行一階求導(dǎo)得:
由此得到X、Y、Z 方向的一階導(dǎo)矢計(jì)算式:
式中:xi=Px(ui),yi=Py(ui),zi=Pz(ui)。
由(9)式就可求出NURBS 曲線上ui點(diǎn)處的一階導(dǎo)矢量[x′(ui),y′(ui),z′(ui)]。
同理對(duì)(8)式再次求導(dǎo)可獲得NURBS曲線上ui點(diǎn)處的二階導(dǎo)矢量[x″(ui),y″(ui),z″(ui)]。
為了保證加工精度,必須將弓高誤差控制在允許的范圍內(nèi),因此進(jìn)給速度應(yīng)根據(jù)曲線曲率半徑的變化自動(dòng)地進(jìn)行調(diào)整,可以采用圓弧逼近的近似處理方法來(lái)確定,如圖2所示。
圖2 圓弧逼近法近似計(jì)算進(jìn)給速度
圖2表示的是用一段圓弧在區(qū)間u∈[ui,ui+1]內(nèi)近似地代替NURBS 曲線。C(ui),C(ui+1)分別為近似圓弧上ui點(diǎn)和ui+1點(diǎn)的插補(bǔ)點(diǎn),P(ui)、P(ui+1)分別為NURBS 曲線上ui點(diǎn)和ui+1點(diǎn)的插補(bǔ)點(diǎn)。
弓高誤差ERi、曲率半徑ρi、NURBS 曲線上ui點(diǎn)處切線方向的進(jìn)給速度V(ui)和插補(bǔ)周期T 的關(guān)系式如下:
式中:ρi是曲率ki的倒數(shù),ki可按式(11)計(jì)算。
假設(shè)編程進(jìn)給速度為F,允許的最大弓高誤差為ER,由于在實(shí)際加工中,插補(bǔ)周期T 非常小,進(jìn)給步長(zhǎng)ΔLi也非常小,可認(rèn)為與該段弧長(zhǎng)相等,因此V(ui)可近似認(rèn)為與編程進(jìn)給速度F 相等。為使弓高誤差ERi≤ER,需自動(dòng)調(diào)節(jié)進(jìn)給速度V(ui)的大小,調(diào)整規(guī)律[4]如下:
插補(bǔ)過(guò)程就是插補(bǔ)點(diǎn)的密化過(guò)程,也就是在一個(gè)插補(bǔ)周期內(nèi),根據(jù)上述求出的一階、二階導(dǎo)矢量和確定的進(jìn)給速度V(ui),利用當(dāng)前的參數(shù)值ui實(shí)時(shí)地計(jì)算出下個(gè)周期的參數(shù)值ui+1,再求出曲線上插補(bǔ)點(diǎn)Pi+1坐標(biāo)值的過(guò)程。
曲線參數(shù)u 是時(shí)間t 的函數(shù),記為u(ti)=ui,u(ti+1)=ui+1,將參數(shù)u 對(duì)時(shí)間t 進(jìn)行泰勒展開(kāi)可獲得相應(yīng)的近似計(jì)算。
式中:ti+1-ti=T,T 稱為插補(bǔ)周期,ΔG 為高階微量。
一階泰勒展開(kāi)的近似表達(dá)式為:
二階泰勒展開(kāi)的近似表達(dá)式為:
將(16)式代入(14)式可得到求ui+1的一階近似表達(dá)式:
如果想得到更高的加工精度,減小進(jìn)給速度的波動(dòng),可根據(jù)(15)式求ui+1的二階近似表達(dá)式:
將(17)式或(18)式求出的參數(shù)值ui+1代入NURBS曲線方程就可獲得下一個(gè)插補(bǔ)點(diǎn)Pi+1或該插補(bǔ)點(diǎn)的坐標(biāo)值,即:
以上就是根據(jù)泰勒展開(kāi)法求解NURBS 曲線的一階或二階的插補(bǔ)算法過(guò)程。
在實(shí)時(shí)插補(bǔ)過(guò)程中,因?yàn)槊壳蟪鲆粋€(gè)ui+1后都是代入NURBS 曲線方程求出該插補(bǔ)點(diǎn)的x、y、z坐標(biāo)值,因此插補(bǔ)點(diǎn)必然是在NURBS 曲線上,不存在插補(bǔ)點(diǎn)偏離曲線的誤差。誤差主要來(lái)源存在于進(jìn)給速度V(步長(zhǎng)ΔLi的大?。┖凸哒`差ERi上。由于在插補(bǔ)前的預(yù)處理中已作了根據(jù)弓高誤差自動(dòng)調(diào)整進(jìn)給速度的計(jì)算,已把誤差控制在允許的范圍內(nèi),所以這種插補(bǔ)方法足以滿足精度要求。
本文詳細(xì)討論了將NURBS 曲面采用等參數(shù)線法離散成一族NURBS 曲線,然后按NURBS 曲線的直接插補(bǔ)算法進(jìn)行的NURBS 曲面插補(bǔ)。在NURBS 曲線的插補(bǔ)算法過(guò)程中,根據(jù)加工精度要求的高低,采用了泰勒一階或二階展開(kāi)的遞推方式求出下一參數(shù)值ui+1,從而獲得插補(bǔ)點(diǎn)Pi+1的x、y、z 坐標(biāo)值,整個(gè)算法以控制弓高誤差在允許范圍內(nèi)并適時(shí)調(diào)整進(jìn)給速度為前提,保證了曲面的加工精度。
[1]徐 宏,胡自化,張 平,楊冬香,楊端光.基于冗余誤差控制的非均勻有理B 樣條曲線插補(bǔ)算法研究[J].計(jì)算機(jī)集成制造系統(tǒng),2007,(5).
[2]孟書云,趙東標(biāo).復(fù)雜曲面筆式加工的直接插補(bǔ)算法[J].東南大學(xué)學(xué)報(bào),2006,22(1):73-77.
[3]李 霞,梁宏斌,邱長(zhǎng)華.基于STEP-NC 的NURBS 曲面插補(bǔ)技術(shù)的研究[J].計(jì)算機(jī)集成制造系統(tǒng),2008,(6).
[4]梁宏斌,王永章,李 霞.自動(dòng)調(diào)節(jié)進(jìn)給速度的NURBS插補(bǔ)算法的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)集成制造系統(tǒng),2006,(3).
[5]魏勝利,常國(guó)權(quán).NURBS 曲線曲面插補(bǔ)算法基于S12 的測(cè)試[J].電腦知識(shí)與技術(shù),2010,(9).
[6]孫玉娥,林 滸,蓋榮麗.基于速度平滑控制的高效非均勻有理B 樣條曲線插補(bǔ)算法[J].計(jì)算機(jī)集成制造系統(tǒng),2008,(11).
[7]范克東,肖世德,龔邦明.實(shí)現(xiàn)高速高精度加工的智能NURBS 插補(bǔ)算法研究[J].制造業(yè)自動(dòng)化,2006,(4).
[8]徐夏民,邵澤強(qiáng).數(shù)控原理與數(shù)控系統(tǒng)[M].北京:北京理工大學(xué)出版社,2009.