一種非均勻有理b樣條實時插補過程中的快速求值求導方法
【專利摘要】一種非均勻有理B樣條實時插補過程中的快速求值求導方法,它有兩大步驟:一、離線建立NURBS快速求值求導結構FEDS;二、實時插補過程根據(jù)快速求值求導結構體進行快速求值求導。本發(fā)明解決了NURBS實時插補過程中求值求導計算復雜耗時的問題,利用離線計算NURBS節(jié)點矢量處的分子與分母各階導數(shù),在實時過程中利用Taylor展開法可以快速計算NURBS上任意點處的值以及各階導數(shù)值,無需再進行復雜耗時的基函數(shù)及其導數(shù)計算。同時,經過求取快速求值求導結構體(FEDS)數(shù)組后,只需將FEDS數(shù)組傳輸給數(shù)控系統(tǒng),不需要傳輸NURBS的幾何表達參數(shù)(節(jié)點矢量,控制頂點矢量,權值矢量等),避免了數(shù)據(jù)的分類傳輸。
【專利說明】一種非均勻有理B樣條實時插補過程中的快速求值求導方法
【技術領域】
[0001]本發(fā)明涉及一種非均勻有理B樣條實時插補過程中的快速求值求導方法,屬于數(shù)控加工【技術領域】。
【背景技術】
[0002]傳統(tǒng)的復雜曲面加工是通過CAD/CAM系統(tǒng)將刀軌在一定的逼近誤差約束下離散成連續(xù)的微小直線段或圓弧段形成數(shù)控加工NC代碼,然后將NC代碼輸入數(shù)控系統(tǒng),數(shù)控系統(tǒng)使用直線插補或圓弧插補來完成曲面的加工。在這個過程中,NC代碼的數(shù)量一般非常大,一條刀軌可能會生成數(shù)千或上萬行的NC代碼,一個曲面完整的NC代碼文件可能達數(shù)十兆,這對僅有數(shù)兆內存的數(shù)控系統(tǒng)來說必須將NC代碼文件進行分段加工。即使現(xiàn)有的數(shù)控系統(tǒng)已支持外部存儲讀取,但是龐大的NC代碼傳輸有可能造成數(shù)據(jù)的傳輸錯誤而導致零件報廢。另一方面,雖然現(xiàn)在有的前瞻技術避免了進給速度在微段內的頻繁加減速導致的加工效率低,但是使用直線插補或圓弧插補造成的二次逼近誤差降低了加工精度。
[0003]非均勻有理B樣條(NURBS)為解析的與自由的曲線曲面提供一種統(tǒng)一的數(shù)學表達形式,并已作為STEP-NC中CAD/CAM系統(tǒng)與CNC系統(tǒng)之間的產品數(shù)據(jù)交換標準。隨著數(shù)控技術的發(fā)展,由于NURBS直接插補技擁有著比傳統(tǒng)的直線與圓弧插補技術不可比擬的優(yōu)勢,如代碼數(shù)據(jù)量少、加工效率高等,NURBS直接插補技術已成為一個熱門的研究領域。然而,NURBS的遞推定義導致在求值求導計算時需耗費大量的時間去計算基函數(shù)及其導數(shù),因此在傳統(tǒng)的直線與圓弧插補技術中應用的許多優(yōu)秀的算法在NURBS直接插補中不再適用。同時,NURBS實時插補過程中插補點的計算需對NURBS進行頻繁的求值求導計算限制了插補周期的降低,因此加工效率也難以大幅提高。為了解決這些問題,最有效的途徑就是尋求一種高效的NURBS快速求值求導方法。
[0004]研究NURBS的快速求值求導技術的方法中最多的就是基于NURBS矩陣表示的計算方法,這類方法將NURBS轉化為系數(shù)矩陣描述,對特定次數(shù)的NURBS建立特定的求值求導算法,或者利用矩陣描述建立NURBS的矩陣遞推描述算法。雖然這些算法在一定程度上提高了 NURBS求值求導計算的效率,但是算法依然復雜,效率還有待提升。
【發(fā)明內容】
[0005]本發(fā)明針對以上問題,提供了一種非均勻有理B樣條實時插補過程中的快速求值求導方法。該方法流程簡單、實時插補過程計算效率高,能大幅提高NURBS插補過程中的插補效率。本發(fā)明通過以下技術方案實現(xiàn),方法流程如圖1所示,其具體步驟如下:
[0006]步驟1,離線建立NURBS快速求值求導結構FEDS,包含以下步驟:
[0007]①獲取NURBS的節(jié)點矢量數(shù)據(jù)U = {u0, U1,…,um}及曲線次數(shù)p ;
[0008]②計算Ui e U (u關Um)處NURBS表達式的分子A (Ui)與分母B (Ui)的O至p階導數(shù)A(°?p) (Ui)與B(°i) (Ui),并保存在如下結構體中形成快速求值求導結構體數(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,實時插補過程根據(jù)快速求值求導結構體進行快速求值求導,包含以下步驟:
[0015]①計算所求NURBS參數(shù)u所在的節(jié)點區(qū)間u e [Ui, ui+1];
[0016]②獲取快速求值求導結構體數(shù)組ARRAY_FEDS中節(jié)點Ui處的分子A(Ui)與分母B(Ui)的 O 至P 階導數(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展開法計算NURBS上參數(shù)u處的分子A(U)與分母B(U)的O至p階導數(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]④計算NURBS上參數(shù)u處C (u)的第k (k彡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有如下表達式:次數(shù)為P,節(jié)點矢量為U = Iuci, U1,…,uj ,控制頂點矢量為 P = (P0 (x0, Y0.z。),P1U1, Y1, Z1),…,Pn(xn, yn, zn)},權值矢量為 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ù),計算如下:
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ù)各階導數(shù)計算如下:
[?NfplI(U) O)、
[0032]nT1MO = '\u J^p-Uj uJ+p+l-uj+l J,ifO<^<p
0, otherwise
[0033]所述NURBS表達式分子A (u)包含x,y,z三個分量,有如下表達式:
η
[0034]/i(?) - X/V.,,(U)VViP7
/=0
[0035]其各階導數(shù)計算為:
γλλλλ?A^k) /, \ L^k J,p\ 7Γ
[0036]A {u) =S J=Q
0, otherwise
[0037]所述NURBS表達式分母B (u)有如下表達式:
η
[0038]B(U) = Y Nj p(U)Wj
J=O
[0039]其各階導數(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],因此無需計算Um處的導數(shù)信息。
[0042]本發(fā)明解決了 NURBS實時插補過程中求值求導計算復雜耗時的問題,利用離線計算NURBS節(jié)點矢量處的分子與分母各階導數(shù),在實時過程中利用Taylor展開法可以快速計算NURBS上任意點處的值以及各階導數(shù)值,無需再進行復雜耗時的基函數(shù)及其導數(shù)計算。同時,經過求取快速求值求導結構體(FEDS)數(shù)組后,只需將FEDS數(shù)組傳輸給數(shù)控系統(tǒng),不需要傳輸NURBS的幾何表達參數(shù)(節(jié)點矢量,控制頂點矢量,權值矢量等),避免了數(shù)據(jù)的分類傳輸。
[0043]本發(fā)明流程步驟簡單,易于使用高級語言實現(xiàn),不僅離線計算量小(只需計算節(jié)點矢量處的各階導數(shù)),實時計算也簡單高效,確保了數(shù)控系統(tǒng)的實時性,可以應用于高效率低插補周期數(shù)控系統(tǒng)。
【專利附圖】
【附圖說明】
[0044]圖1是本發(fā)明方法流程圖;
[0045]圖2是實施例NURBS曲線;
【具體實施方式】
[0046]以下結合附圖對本發(fā)明實施示例作詳細說明,給出了詳細的實施方式以及數(shù)據(jù)表格,流程如圖1所示。本實施示例為圖1中的2次NURBS曲線,如圖2所示,其幾何表達參數(shù)如下:
[0047]節(jié)點矢量:U= {O, O, O, 0.25,0.5,0.5,0.75,I, I, 1}
[0048]權值矢量:ff= {I, 25,25,I, 25,25,1}
[0049]控制頂點矢量:
[0050]P= {(O, O, O),(-120,-120,O),(-120, 120,O),(O, O,O),(120,-120,O),(120,120,0),(0,0,0)}
[0051]詳細步驟如下:
[0052]步驟1,離線建立NURBS快速求值求導結構FEDS:
[0053]①獲取NURBS 的節(jié)點矢量為 U = {O, O, O, 0.25,0.5,0.5,0.75,I, I, 1},次數(shù)為 2 ;
[0054]②計算Ui e U (u關I)處NURBS表達式的分子A(Ui)與分母B(Ui)的O至p階導數(shù)A(°i) (Ui)與B(°i) (Ui),并保存在快速求值求導結構體數(shù)組ARRAY_FEDS中:
[0055]
ARRAY FEDS 節(jié)點值 ^O階導數(shù)I階導數(shù)2階導數(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é)點值I為節(jié)點矢量終值,I屬于區(qū)間[0.75,I],因此只需計算參數(shù)值
0.75處的各階導數(shù),ARRAY_FEDS[7?8]實際為空值。
[0057]步驟2,實時插補過程根據(jù)快速求值求導結構體進行快速求值求導,以參數(shù)值u =
0.3為例說明快速求值求導過程:
[0058]①計算所求NURBS參數(shù)u = 0.3所在的節(jié)點區(qū)間u e [U3 = 0.25,U4 = 0.5];
[0059]②獲取快速求值求導結構體數(shù)組ARRAY_FEDS中節(jié)點U3 = 0.25處的分子A (U3 =0.25)與分母 B (u3 = 0.25)的 O 至 2 階導數(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展開法計算NURBS上參數(shù)u = 0.3處的分子A(U)與分母B(U)的O 至 P 階導數(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]具體計算如下:
[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]④計算NURBS上參數(shù)u = 0.3處C (U)的第k (k彡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為例,具體計算如下:
[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中小圓圈標記的曲線上參數(shù)u = 0.3處的點。
【權利要求】
1.一種非均勻有理B樣條實時插補過程中的快速求值求導方法,其特征在于:該方法具體步驟如下: 步驟I,離線建立NURBS快速求值求導結構FEDS,包含以下步驟: ①獲取NURBS的節(jié)點矢量數(shù)據(jù)U= {u0, U1,...,um}及曲線次數(shù)p ; ②計算Uie U (u古um)處NURBS表達式的分子A (Ui)與分母B (Ui)的O至p階導數(shù)A(°~p) (Ui)與B(°i) (Ui),并保存在如下結構體中形成快速求值求導結構體數(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,實時插補過程根據(jù)快速求值求導結構體進行快速求值求導,包含以下步驟: ①計算所求NURBS參數(shù)u所在的節(jié)點區(qū)間ue [Ui, ui+1]; ②獲取快速求值求導結構體數(shù)組ARRAY_FEDS中節(jié)點ui處的分子A(ui)與分母B(Ui)的O至P階導數(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展開法計算NURBS上參數(shù)u處的分子A(u)與分母B(U)的O至p階導數(shù) A(°~p)(u)與 B(°~p) (u):
④計算NURBS上參數(shù)u處C(u)的第k(k≥O)階導數(shù)為:
其中,若 k>p,取 A(k)(u) = B(k) (u) = O ; 所述NURBS有如下表達式:次數(shù)為P,節(jié)點矢量為U = Iuci, U1,…,um},控制頂點矢量為P = {P0(x0, y0, z0), P1 (x1; Y1, Z1),…,Pn(xn, yn, zn)},權值矢量為 W = {w0, W1,..., wn} ,NURBS 曲線C(u)為: c(w)=氣^-
維)?Λ.,ΜΦ、
i=o 其中,U為曲線參數(shù),m = n+p+1, Nj-p(u)為基函數(shù),計算如下:
--,?Γ 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ù)各階導數(shù)計算如下:
? ?Nf^s(U) O)、 nTp(u) = <\uj+p-Uj u;+/j+1 — uril'()<k< p .0, otherwise 所述NURBS表達式分子A(u)包含x,y, z三個分量,有如下表達式:
A(Li)^YjNi p{u)w ,Pj 其各階導數(shù)計算為: 糊=|實.)
O9 otherwise 所述NURBS表達式分母B (U)有如下表達式:
B(U) = ^Nip(U)Wj
J=O 其各階導數(shù)求取為:
B (u) — { j=Q
O, otherwise 步驟1-2中由于Um為參數(shù)終值,同屬于參數(shù)區(qū)間[IV1, um],因此無需計算Um處的導數(shù)信息。
【文檔編號】G05B19/41GK104133422SQ201410338796
【公開日】2014年11月5日 申請日期:2014年7月16日 優(yōu)先權日:2014年7月16日
【發(fā)明者】劉強, 劉煥, 周勝凱, 李傳軍, 徐陽 申請人:北京航空航天大學