一種非均勻有理b樣條實(shí)時(shí)插補(bǔ)過程中的快速求值求導(dǎo)方法
【專利摘要】一種非均勻有理B樣條實(shí)時(shí)插補(bǔ)過程中的快速求值求導(dǎo)方法,它有兩大步驟:一、離線建立NURBS快速求值求導(dǎo)結(jié)構(gòu)FEDS;二、實(shí)時(shí)插補(bǔ)過程根據(jù)快速求值求導(dǎo)結(jié)構(gòu)體進(jìn)行快速求值求導(dǎo)。本發(fā)明解決了NURBS實(shí)時(shí)插補(bǔ)過程中求值求導(dǎo)計(jì)算復(fù)雜耗時(shí)的問題,利用離線計(jì)算NURBS節(jié)點(diǎn)矢量處的分子與分母各階導(dǎo)數(shù),在實(shí)時(shí)過程中利用Taylor展開法可以快速計(jì)算NURBS上任意點(diǎn)處的值以及各階導(dǎo)數(shù)值,無需再進(jìn)行復(fù)雜耗時(shí)的基函數(shù)及其導(dǎo)數(shù)計(jì)算。同時(shí),經(jīng)過求取快速求值求導(dǎo)結(jié)構(gòu)體(FEDS)數(shù)組后,只需將FEDS數(shù)組傳輸給數(shù)控系統(tǒng),不需要傳輸NURBS的幾何表達(dá)參數(shù)(節(jié)點(diǎn)矢量,控制頂點(diǎn)矢量,權(quán)值矢量等),避免了數(shù)據(jù)的分類傳輸。
【專利說明】一種非均勻有理B樣條實(shí)時(shí)插補(bǔ)過程中的快速求值求導(dǎo)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種非均勻有理B樣條實(shí)時(shí)插補(bǔ)過程中的快速求值求導(dǎo)方法,屬于數(shù)控加工【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002]傳統(tǒng)的復(fù)雜曲面加工是通過CAD/CAM系統(tǒng)將刀軌在一定的逼近誤差約束下離散成連續(xù)的微小直線段或圓弧段形成數(shù)控加工NC代碼,然后將NC代碼輸入數(shù)控系統(tǒng),數(shù)控系統(tǒng)使用直線插補(bǔ)或圓弧插補(bǔ)來完成曲面的加工。在這個(gè)過程中,NC代碼的數(shù)量一般非常大,一條刀軌可能會(huì)生成數(shù)千或上萬行的NC代碼,一個(gè)曲面完整的NC代碼文件可能達(dá)數(shù)十兆,這對(duì)僅有數(shù)兆內(nèi)存的數(shù)控系統(tǒng)來說必須將NC代碼文件進(jìn)行分段加工。即使現(xiàn)有的數(shù)控系統(tǒng)已支持外部存儲(chǔ)讀取,但是龐大的NC代碼傳輸有可能造成數(shù)據(jù)的傳輸錯(cuò)誤而導(dǎo)致零件報(bào)廢。另一方面,雖然現(xiàn)在有的前瞻技術(shù)避免了進(jìn)給速度在微段內(nèi)的頻繁加減速導(dǎo)致的加工效率低,但是使用直線插補(bǔ)或圓弧插補(bǔ)造成的二次逼近誤差降低了加工精度。
[0003]非均勻有理B樣條(NURBS)為解析的與自由的曲線曲面提供一種統(tǒng)一的數(shù)學(xué)表達(dá)形式,并已作為STEP-NC中CAD/CAM系統(tǒng)與CNC系統(tǒng)之間的產(chǎn)品數(shù)據(jù)交換標(biāo)準(zhǔn)。隨著數(shù)控技術(shù)的發(fā)展,由于NURBS直接插補(bǔ)技擁有著比傳統(tǒng)的直線與圓弧插補(bǔ)技術(shù)不可比擬的優(yōu)勢(shì),如代碼數(shù)據(jù)量少、加工效率高等,NURBS直接插補(bǔ)技術(shù)已成為一個(gè)熱門的研究領(lǐng)域。然而,NURBS的遞推定義導(dǎo)致在求值求導(dǎo)計(jì)算時(shí)需耗費(fèi)大量的時(shí)間去計(jì)算基函數(shù)及其導(dǎo)數(shù),因此在傳統(tǒng)的直線與圓弧插補(bǔ)技術(shù)中應(yīng)用的許多優(yōu)秀的算法在NURBS直接插補(bǔ)中不再適用。同時(shí),NURBS實(shí)時(shí)插補(bǔ)過程中插補(bǔ)點(diǎn)的計(jì)算需對(duì)NURBS進(jìn)行頻繁的求值求導(dǎo)計(jì)算限制了插補(bǔ)周期的降低,因此加工效率也難以大幅提高。為了解決這些問題,最有效的途徑就是尋求一種高效的NURBS快速求值求導(dǎo)方法。
[0004]研究NURBS的快速求值求導(dǎo)技術(shù)的方法中最多的就是基于NURBS矩陣表示的計(jì)算方法,這類方法將NURBS轉(zhuǎn)化為系數(shù)矩陣描述,對(duì)特定次數(shù)的NURBS建立特定的求值求導(dǎo)算法,或者利用矩陣描述建立NURBS的矩陣遞推描述算法。雖然這些算法在一定程度上提高了 NURBS求值求導(dǎo)計(jì)算的效率,但是算法依然復(fù)雜,效率還有待提升。
【發(fā)明內(nèi)容】
[0005]本發(fā)明針對(duì)以上問題,提供了一種非均勻有理B樣條實(shí)時(shí)插補(bǔ)過程中的快速求值求導(dǎo)方法。該方法流程簡(jiǎn)單、實(shí)時(shí)插補(bǔ)過程計(jì)算效率高,能大幅提高NURBS插補(bǔ)過程中的插補(bǔ)效率。本發(fā)明通過以下技術(shù)方案實(shí)現(xiàn),方法流程如圖1所示,其具體步驟如下:
[0006]步驟1,離線建立NURBS快速求值求導(dǎo)結(jié)構(gòu)FEDS,包含以下步驟:
[0007]①獲取NURBS的節(jié)點(diǎn)矢量數(shù)據(jù)U = {u0, U1,…,um}及曲線次數(shù)p ;
[0008]②計(jì)算Ui e U (u關(guān)Um)處NURBS表達(dá)式的分子A (Ui)與分母B (Ui)的O至p階導(dǎo)數(shù)A(°?p) (Ui)與B(°i) (Ui),并保存在如下結(jié)構(gòu)體中形成快速求值求導(dǎo)結(jié)構(gòu)體數(shù)組ARRAY_FEDS:
[0009]
sircuci NURBS—FEDS
{
double u\
double A{p +1][3];
double Z?[/> +1];
I ARRAY_FEDS[m]:
[0010]其中:
[0011]ARRAY_FEDS[i].u = UpO 彡 i < m
[0012]ARRAY_FEDS[i], A[j] [0..2] = A(J) (Ui),0 彡 j 彡 p
[0013]ARRAY_FEDS[i], B[j] = B(J) (Ui)
[0014]步驟2,實(shí)時(shí)插補(bǔ)過程根據(jù)快速求值求導(dǎo)結(jié)構(gòu)體進(jìn)行快速求值求導(dǎo),包含以下步驟:
[0015]①計(jì)算所求NURBS參數(shù)u所在的節(jié)點(diǎn)區(qū)間u e [Ui, ui+1];
[0016]②獲取快速求值求導(dǎo)結(jié)構(gòu)體數(shù)組ARRAY_FEDS中節(jié)點(diǎn)Ui處的分子A(Ui)與分母B(Ui)的 O 至P 階導(dǎo)數(shù)A(0?p)(Ui)與 B(0?p)(Ui):
[0017]Ui = ARRAY—FEDS [i].u
[0018]A(J) (Ui) = ARRAY_FEDS[i], A[j] [0..2], 0 ^ j ^ p
[0019]B00(Ui) = ARRAY_FEDS[i], B[j]
[0020]③使用Taylor展開法計(jì)算NURBS上參數(shù)u處的分子A(U)與分母B(U)的O至p階導(dǎo)數(shù) A(°i) (U)與 B(°i) (U):
[0021]Au' lOi) = Y(u-u
6 (./--)!
[0022]Bik)(u) = Y^B1
j=k (j-k)l
[0023]④計(jì)算NURBS上參數(shù)u處C (u)的第k (k彡O)階導(dǎo)數(shù)為:
Am (u)-y(k]c(lc-J} (u)BU} (u)
0024...廠
B(U)
[0025]其中,若k> P,取 A(k)(u) =B(k)(u) =0。
[0026]所述NURBS有如下表達(dá)式:次數(shù)為P,節(jié)點(diǎn)矢量為U = Iuci, U1,…,uj ,控制頂點(diǎn)矢量為 P = (P0 (x0, Y0.z。),P1U1, Y1, Z1),…,Pn(xn, yn, zn)},權(quán)值矢量為 W = {w0, W1,…,wn},NURBS 曲線 C(u)為:
H
V N1 (Li)WlPi
Λ / 、JJJ
[0027]C{u) = —= -
7=0
[0028]其中,u為曲線參數(shù),m = n+p+1, Nlp(U)為基函數(shù),計(jì)算如下:
iUii'w, <u<u:tl
[0029]⑷= ,.[O, olhcrwisc
u — U.W:....? — U
[0030]Κ'ρ (u)=——L Nhp_x (u) + ^ Nj^l (u)
uj+P~ujuj+p+1-uj+i
[0031]基函數(shù)各階導(dǎo)數(shù)計(jì)算如下:
[?NfplI(U) O)、
[0032]nT1MO = '\u J^p-Uj uJ+p+l-uj+l J,ifO<^<p
0, otherwise
[0033]所述NURBS表達(dá)式分子A (u)包含x,y,z三個(gè)分量,有如下表達(dá)式:
η
[0034]/i(?) - X/V.,,(U)VViP7
/=0
[0035]其各階導(dǎo)數(shù)計(jì)算為:
γλλλλ?A^k) /, \ L^k J,p\ 7Γ
[0036]A {u) =S J=Q
0, otherwise
[0037]所述NURBS表達(dá)式分母B (u)有如下表達(dá)式:
η
[0038]B(U) = Y Nj p(U)Wj
J=O
[0039]其各階導(dǎo)數(shù)求取為:
V N、:、I(U)Wi,if 0< ^ < P
O(幻/.\ L.^ Jyfy ,J,r
[0040]B !(u) = <J=0
O, otherwise
[0041]所述步驟1-2中由于Um為參數(shù)終值,同屬于參數(shù)區(qū)間[Unri, Uffl],因此無需計(jì)算Um處的導(dǎo)數(shù)信息。
[0042]本發(fā)明解決了 NURBS實(shí)時(shí)插補(bǔ)過程中求值求導(dǎo)計(jì)算復(fù)雜耗時(shí)的問題,利用離線計(jì)算NURBS節(jié)點(diǎn)矢量處的分子與分母各階導(dǎo)數(shù),在實(shí)時(shí)過程中利用Taylor展開法可以快速計(jì)算NURBS上任意點(diǎn)處的值以及各階導(dǎo)數(shù)值,無需再進(jìn)行復(fù)雜耗時(shí)的基函數(shù)及其導(dǎo)數(shù)計(jì)算。同時(shí),經(jīng)過求取快速求值求導(dǎo)結(jié)構(gòu)體(FEDS)數(shù)組后,只需將FEDS數(shù)組傳輸給數(shù)控系統(tǒng),不需要傳輸NURBS的幾何表達(dá)參數(shù)(節(jié)點(diǎn)矢量,控制頂點(diǎn)矢量,權(quán)值矢量等),避免了數(shù)據(jù)的分類傳輸。
[0043]本發(fā)明流程步驟簡(jiǎn)單,易于使用高級(jí)語言實(shí)現(xiàn),不僅離線計(jì)算量小(只需計(jì)算節(jié)點(diǎn)矢量處的各階導(dǎo)數(shù)),實(shí)時(shí)計(jì)算也簡(jiǎn)單高效,確保了數(shù)控系統(tǒng)的實(shí)時(shí)性,可以應(yīng)用于高效率低插補(bǔ)周期數(shù)控系統(tǒng)。
【專利附圖】
【附圖說明】
[0044]圖1是本發(fā)明方法流程圖;
[0045]圖2是實(shí)施例NURBS曲線;
【具體實(shí)施方式】
[0046]以下結(jié)合附圖對(duì)本發(fā)明實(shí)施示例作詳細(xì)說明,給出了詳細(xì)的實(shí)施方式以及數(shù)據(jù)表格,流程如圖1所示。本實(shí)施示例為圖1中的2次NURBS曲線,如圖2所示,其幾何表達(dá)參數(shù)如下:
[0047]節(jié)點(diǎn)矢量:U= {O, O, O, 0.25,0.5,0.5,0.75,I, I, 1}
[0048]權(quán)值矢量:ff= {I, 25,25,I, 25,25,1}
[0049]控制頂點(diǎn)矢量:
[0050]P= {(O, O, O),(-120,-120,O),(-120, 120,O),(O, O,O),(120,-120,O),(120,120,0),(0,0,0)}
[0051]詳細(xì)步驟如下:
[0052]步驟1,離線建立NURBS快速求值求導(dǎo)結(jié)構(gòu)FEDS:
[0053]①獲取NURBS 的節(jié)點(diǎn)矢量為 U = {O, O, O, 0.25,0.5,0.5,0.75,I, I, 1},次數(shù)為 2 ;
[0054]②計(jì)算Ui e U (u關(guān)I)處NURBS表達(dá)式的分子A(Ui)與分母B(Ui)的O至p階導(dǎo)數(shù)A(°i) (Ui)與B(°i) (Ui),并保存在快速求值求導(dǎo)結(jié)構(gòu)體數(shù)組ARRAY_FEDS中:
[0055]
ARRAY FEDS 節(jié)點(diǎn)值 ^O階導(dǎo)數(shù)I階導(dǎo)數(shù)2階導(dǎo)數(shù)
_^___^____
八 ?,(-24000,-24000,0 ,λ
~分子(0,O, O)λ(96000,192000,0)
0 2O)
__分母I192-768
a,,、,、 (96000,-192000,0
分子 (-3000,0,0)(0,24000,0)χ
30.25)
__分母 _25__O__-768
八 7,,、 (-96000, 192000,0
廣分子(0,0,0)(24000, -24000,0)、
4 5Oj)
分母1-768
八 ?,Λ,、 (-96000, -192000,
分子(3000,0,O)(0,24000,O).60.75 ______^__I_^__O)_
分母氣O-768
__分母^~^^7
[0056]說明:由于節(jié)點(diǎn)值I為節(jié)點(diǎn)矢量終值,I屬于區(qū)間[0.75,I],因此只需計(jì)算參數(shù)值
0.75處的各階導(dǎo)數(shù),ARRAY_FEDS[7?8]實(shí)際為空值。
[0057]步驟2,實(shí)時(shí)插補(bǔ)過程根據(jù)快速求值求導(dǎo)結(jié)構(gòu)體進(jìn)行快速求值求導(dǎo),以參數(shù)值u =
0.3為例說明快速求值求導(dǎo)過程:
[0058]①計(jì)算所求NURBS參數(shù)u = 0.3所在的節(jié)點(diǎn)區(qū)間u e [U3 = 0.25,U4 = 0.5];
[0059]②獲取快速求值求導(dǎo)結(jié)構(gòu)體數(shù)組ARRAY_FEDS中節(jié)點(diǎn)U3 = 0.25處的分子A (U3 =0.25)與分母 B (u3 = 0.25)的 O 至 2 階導(dǎo)數(shù) A(° ?2) (0.25)與 B(0 ?2) (0.25):
[0060] U3 = ARRAY_FEDS[3], u = 0.25
[0061 ] A (U3) = ARRAY_FEDS [3].A [O] [0..2] = (-3000,O, O)
[0062]A' (u3 = 0.25) = ARRAY_FEDS[3], A[l] [0..2] = (0,24000,0)
[0063]A" (u3 = 0.25) = ARRAY_FEDS[3], A[2] [0..2] = (96000,-192000,0)
[0064]B (u3 = 0.25) = ARRAY_FEDS [3].B [0] = 25
[0065]B (u3 = 0.25) = ARRAY_FEDS[3].B[I] = 0
[0066]B (u3 = 0.25) = ARRAY_FEDS [3].B [2] = -768
[0067]③使用Taylor展開法計(jì)算NURBS上參數(shù)u = 0.3處的分子A(U)與分母B(U)的O 至 P 階導(dǎo)數(shù) A(0 ?2) (0.3)與 B(0 ?2) (0.3):
[0068]^k) (U) = Υ^Α.(,、:("-
j=k (./—允)!
[0069]Bik 1 (II)=兔 B (w -1ii)7 k
[0070]具體計(jì)算如下:
[0071]^(0.3) - J A ' (0'25) (0.3 - 0.25)7 =(-2880,960,0)
J=Oβ.
[0072]/--θ.3) - Y ~^^?Ο.3-0.25)7 ' =i4800.14400.0)
H (./-1)!
[0073]/iw(0.3) - Y Α'" (υ'25) (0.3 - 0.25)7:= (96000-192000,0)
7=2 (7-2)!
[0074]5(0.3) - Yj 3 ' ^'25) (0.3 - 0.25)7 = 24.04
7=0J-
[0075]Β'(03)^Β ' (0.24(0.3-0.25)7 ' --38.4
(./-1)!
[0076]6〃(0.3) = ?^^(0.3-0.25)' 2 = -7(8./=2 (J-2)!
[0077]④計(jì)算NURBS上參數(shù)u = 0.3處C (U)的第k (k彡O)階導(dǎo)數(shù)為:
A{k\u)-y(k}c{k-J) (U)Bu) (u)
剛 ο=~~_-
B(u)
[0079]其中,若k> P,取A(k)(u) =B(k)(u) = O。以k = 0,1,2為例,具體計(jì)算如下:
[0080]CY0.3) = = (-119.8003,39.9334,0)[0081 ] C'(0_3) = ^(03) ~^3^(03) = (8.3057,662.7889,0)
[0082]Cff(0.3) = A (Q,3)~2<: (0'3)^°3^~<:(0'3)^ (0_3) = (192.6463,-4593.5495,0)
[0083]C(0.3)即圖2中小圓圈標(biāo)記的曲線上參數(shù)u = 0.3處的點(diǎn)。
【權(quán)利要求】
1.一種非均勻有理B樣條實(shí)時(shí)插補(bǔ)過程中的快速求值求導(dǎo)方法,其特征在于:該方法具體步驟如下: 步驟I,離線建立NURBS快速求值求導(dǎo)結(jié)構(gòu)FEDS,包含以下步驟: ①獲取NURBS的節(jié)點(diǎn)矢量數(shù)據(jù)U= {u0, U1,...,um}及曲線次數(shù)p ; ②計(jì)算Uie U (u古um)處NURBS表達(dá)式的分子A (Ui)與分母B (Ui)的O至p階導(dǎo)數(shù)A(°~p) (Ui)與B(°i) (Ui),并保存在如下結(jié)構(gòu)體中形成快速求值求導(dǎo)結(jié)構(gòu)體數(shù)組ARRAY_FEDS:
其中:
ARRAY_FEDS[i], u =屮,0 ≤i < m
ARRAY_FEDS[i], A[j] [0..2] = A(J) (Ui),0 ≤ j ≤ p
ARRAY_FEDS[i], B[j] = B(J) (Ui) 步驟2,實(shí)時(shí)插補(bǔ)過程根據(jù)快速求值求導(dǎo)結(jié)構(gòu)體進(jìn)行快速求值求導(dǎo),包含以下步驟: ①計(jì)算所求NURBS參數(shù)u所在的節(jié)點(diǎn)區(qū)間ue [Ui, ui+1]; ②獲取快速求值求導(dǎo)結(jié)構(gòu)體數(shù)組ARRAY_FEDS中節(jié)點(diǎn)ui處的分子A(ui)與分母B(Ui)的O至P階導(dǎo)數(shù)A(°~p) (Ui)與B(°~p) (Ui):
Ui = ARRAY_FEDS[i], u
A(J) (Ui) = ARRAY_FEDS[i], A[j] [0..2], 0≤ j ≤ p
B(J) (Ui) = ARRAY_FEDS[i], B[j] ③使用Taylor展開法計(jì)算NURBS上參數(shù)u處的分子A(u)與分母B(U)的O至p階導(dǎo)數(shù) A(°~p)(u)與 B(°~p) (u):
④計(jì)算NURBS上參數(shù)u處C(u)的第k(k≥O)階導(dǎo)數(shù)為:
其中,若 k>p,取 A(k)(u) = B(k) (u) = O ; 所述NURBS有如下表達(dá)式:次數(shù)為P,節(jié)點(diǎn)矢量為U = Iuci, U1,…,um},控制頂點(diǎn)矢量為P = {P0(x0, y0, z0), P1 (x1; Y1, Z1),…,Pn(xn, yn, zn)},權(quán)值矢量為 W = {w0, W1,..., wn} ,NURBS 曲線C(u)為: c(w)=氣^-
維)?Λ.,ΜΦ、
i=o 其中,U為曲線參數(shù),m = n+p+1, Nj-p(u)為基函數(shù),計(jì)算如下:
--,?Γ Uj <ιι <?,丨丨
Nj0(U) = I
I O, otherwise
u—u;U:.n.., -1l Nj', (U)=——J— Nj^ (U) +^ NJ+U11—Y (U)
?P—Uj?/+Ρ+11.+1 基函數(shù)各階導(dǎo)數(shù)計(jì)算如下:
? ?Nf^s(U) O)、 nTp(u) = <\uj+p-Uj u;+/j+1 — uril'()<k< p .0, otherwise 所述NURBS表達(dá)式分子A(u)包含x,y, z三個(gè)分量,有如下表達(dá)式:
A(Li)^YjNi p{u)w ,Pj 其各階導(dǎo)數(shù)計(jì)算為: 糊=|實(shí).)
O9 otherwise 所述NURBS表達(dá)式分母B (U)有如下表達(dá)式:
B(U) = ^Nip(U)Wj
J=O 其各階導(dǎo)數(shù)求取為:
B (u) — { j=Q
O, otherwise 步驟1-2中由于Um為參數(shù)終值,同屬于參數(shù)區(qū)間[IV1, um],因此無需計(jì)算Um處的導(dǎo)數(shù)信息。
【文檔編號(hào)】G05B19/41GK104133422SQ201410338796
【公開日】2014年11月5日 申請(qǐng)日期:2014年7月16日 優(yōu)先權(quán)日:2014年7月16日
【發(fā)明者】劉強(qiáng), 劉煥, 周勝凱, 李傳軍, 徐陽 申請(qǐng)人:北京航空航天大學(xué)