李傳軍 張世輝 謝久明 韓曉方 程嘉強(qiáng)
(①天津中德應(yīng)用技術(shù)大學(xué)機(jī)械工程學(xué)院,天津 300350;②天津華大科技有限公司,天津 300350)
在復(fù)雜曲面數(shù)控加工中,通常使用CAD/CAM軟件將復(fù)雜曲面離散為微小的直線段或圓弧段,然后使用直線插補(bǔ)或圓弧插補(bǔ)完成復(fù)雜的加工,這種加工方式使得刀具軌跡不平滑,在微段連接處切向不連續(xù),極大地降低了加工效率和表面質(zhì)量。為了解決這個(gè)問(wèn)題,樣條曲線直接插補(bǔ)技術(shù)應(yīng)運(yùn)而生。
3次B樣條是應(yīng)用最廣泛的樣條曲線[2-5], 目前已有多種不同的3次B樣條曲線插補(bǔ)方法,如最早的泰勒一階和二階展開(kāi)方法、反饋插補(bǔ)法、“預(yù)估——校正”插補(bǔ)法和函數(shù)擬合插補(bǔ)法[6-22]等,在這些插補(bǔ)方法中涉及多次曲線求值和求導(dǎo)計(jì)算,甚至需要進(jìn)行反復(fù)迭代計(jì)算。而由于B樣條基函數(shù)采用遞歸定義,其求值和求導(dǎo)過(guò)程十分復(fù)雜耗時(shí),因此上述方法需要占用大量的計(jì)算資源,甚至影響系統(tǒng)的實(shí)時(shí)性。
針對(duì)刀具軌跡曲線的B樣條曲線模型,本文提出從直接插補(bǔ)算法原理以及B樣條曲線的數(shù)學(xué)模型出發(fā),為了提高插補(bǔ)過(guò)程中的計(jì)算效率和計(jì)算精度,利用一種B樣條的節(jié)點(diǎn)插入技術(shù)與微分遞推求值進(jìn)行3次B樣條曲線的快速求值求導(dǎo)算法,整個(gè)插補(bǔ)實(shí)現(xiàn)過(guò)程不涉及任何B樣條基函數(shù)的求值求導(dǎo)計(jì)算。解決了目前傳統(tǒng)插補(bǔ)器無(wú)法有效插補(bǔ)該類型軌跡的問(wèn)題,給出了插補(bǔ)點(diǎn)的計(jì)算過(guò)程和實(shí)現(xiàn)方法流程,利用仿真和開(kāi)放式數(shù)控系統(tǒng)加工驗(yàn)證了此方法的效率和實(shí)時(shí)性。
B樣條基函數(shù)是構(gòu)造B樣條曲線的基礎(chǔ),根據(jù)de Boor-Cox的遞推定義,B樣條基函數(shù)的遞推公式為[1]:
(1)
式中:u為曲線參數(shù);p為B樣條基函數(shù)的次數(shù);U=[u0,u1, … ,um]為非遞減節(jié)點(diǎn)序列;Ni,p(u)表示序號(hào)為i的p次B樣條基函數(shù)在參數(shù)u處的值,且規(guī)定0/0=0。
在B樣條基函數(shù)的基礎(chǔ)上,B樣條曲線被提出。p次B樣條曲線Q(u)的定義為[1]:
(2)
式中:Ni,p(u) (i=0,1,…,n)是定義在節(jié)點(diǎn)序列U=[u0,u1, … ,um]上的p次B樣條基函數(shù);Pi(i=0,1,…,n)為B樣條曲線的控制頂點(diǎn)序列,順序連接形成B樣條曲線的控制多邊形;B樣條曲線次數(shù)p、控制頂點(diǎn)數(shù)量(n+1)和節(jié)點(diǎn)數(shù)量(m+1)之間滿足:
m=n+p+1
(3)
利用3次B樣條曲線的所有節(jié)點(diǎn)矢量和所有控制頂點(diǎn),分別構(gòu)成節(jié)點(diǎn)矢量集合U和控制頂點(diǎn)集合P,若節(jié)點(diǎn)矢量U中的某個(gè)節(jié)點(diǎn)ui滿足ui=ui+1=ui+r-1,即連續(xù)r個(gè)節(jié)點(diǎn)值相等,則稱ui中的重復(fù)度為r。采用樣條節(jié)點(diǎn)插入技術(shù),對(duì)U中的每次節(jié)點(diǎn)進(jìn)行重復(fù)插入操作,直到每個(gè)節(jié)點(diǎn)的重復(fù)度均為3,此時(shí)3次B樣條曲線轉(zhuǎn)換為連續(xù)3次貝奇爾曲線,即每?jī)蓚€(gè)重復(fù)度為3的節(jié)點(diǎn)之間為一條3次貝奇爾曲線。通過(guò)B樣條節(jié)點(diǎn)插入技術(shù)可以獲得3次貝奇爾曲線的控制頂點(diǎn)。
從新獲取的任一段3次貝奇爾曲線,得到4個(gè)控制項(xiàng)點(diǎn)Q0、Q1、Q2、Q3,取1個(gè)偏移矢量V,將4個(gè)控制頂點(diǎn)Q0、Q1、Q2和Q3沿矢量V偏移后得到新的4個(gè)控制頂點(diǎn)P0、P1、P2和P3,使得P0、P1、P2和P3的坐標(biāo)分量均不為0,令新的4個(gè)控制頂點(diǎn)分別為:P0=(x0,y0,z0)T,P1=(x1,y1,z1)T,P2=(x2,y2,z2)T,P3=(x3,y3,z3)T,則新的爾曲線可表示為:
(4)
式中:t為曲線參數(shù);Bi,3(t)為3次伯恩斯坦基函數(shù),計(jì)算為:
其中:符號(hào)“!”表示階乘運(yùn)算。
將式(4)變形為:
(5)
對(duì)式(5)兩邊計(jì)算關(guān)于參數(shù)t的一階導(dǎo)矢可得:
(6)
其中:
ΔPi=Pi+1-Pi,i=0,1,2。
聯(lián)立式(5)和式(6)可得:
C′(t)=MC(t)
式中:M為系數(shù)矩陣,表示為:
令C0=(x0,y0,z0, 1)T和t0=0,則第(i+1)個(gè)周期的插補(bǔ)點(diǎn)Ci+1計(jì)算為:
式中:Δti、k1、k2、k3、k4為插補(bǔ)點(diǎn)遞推參數(shù),計(jì)算為:
整個(gè)插補(bǔ)過(guò)程按照連續(xù)的每段3次貝奇爾曲線進(jìn)行,當(dāng)ti≥ 1時(shí),所有貝奇爾曲線完成插補(bǔ)至終點(diǎn)。
根據(jù)第基于3次B樣條曲線快速直接插補(bǔ)算法其實(shí)現(xiàn)流程如圖1所示。以圖2所示的五角形的3次B樣條曲線為例進(jìn)行說(shuō)明。
首先是獲取3次B樣條曲線的參數(shù)。獲取3次B樣條曲線的節(jié)點(diǎn)矢量U和控制頂點(diǎn)P,其中U={0, 0, 0, 0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1, 1, 1, 1},P={(60,90,0),(37.5,60,0),(0,60,0),(30,30,0),(22.5,0,0),(60,22.5,0),(97.5,0,0),(90,30,0),(120,60,0),(82.5,60,0),(60,90,0)}。
其次是將3次B樣條曲線轉(zhuǎn)換為連續(xù)3次貝奇爾曲線。通過(guò)B樣條節(jié)點(diǎn)插入技術(shù)可以獲得每段3次貝奇爾曲線的控制頂點(diǎn)。根據(jù)以上過(guò)程,獲得8個(gè)貝奇爾曲線段,Q0、Q1、Q2、Q3每段3次貝奇爾曲線的控制頂點(diǎn),各個(gè)貝奇爾曲線段的控制頂點(diǎn)如表1所示。
表1 貝奇爾曲線段的控制頂點(diǎn)坐標(biāo)
最后是完成快速曲線直接插補(bǔ)過(guò)程。由于所有貝奇爾曲線控制頂點(diǎn)的Z值均為0,因此選取偏移矢量V=(0,0,1),得到所有的M為如表2所示。根據(jù)遞推過(guò)程和貝奇爾曲線的終點(diǎn)判斷,完成插補(bǔ)軌跡如圖3所示。
圖4表示的是插補(bǔ)過(guò)程的速度波動(dòng),最大值小于0.015%。由于3次B樣條曲線快速直接插補(bǔ)算法過(guò)程不涉及任何B樣條基函數(shù)的求值求導(dǎo)計(jì)算,僅涉及矩陣乘法(可化為少量的四則運(yùn)算)和四則運(yùn)算,因此插補(bǔ)過(guò)程計(jì)算高效,且插補(bǔ)過(guò)程速度波動(dòng)較低,同樣具有較高的插補(bǔ)精度。
表2 3次B樣條曲線快速直接插補(bǔ)系數(shù)矩陣
文獻(xiàn)[1]給出了使用直接計(jì)算B樣條基函數(shù)的方法來(lái)計(jì)算B樣條曲線的各階導(dǎo)矢的算法,并廣泛應(yīng)用于眾多文獻(xiàn)和軟件應(yīng)用。為了驗(yàn)證3次B樣條曲線快速直接插補(bǔ)算法的計(jì)算效率,以文獻(xiàn)[1]中的B樣條基函數(shù)算法為對(duì)比,選取某B樣條曲線為對(duì)象,分別用3次B樣條曲線快速直接插補(bǔ)算法與文獻(xiàn)[1]中的算法對(duì)相同曲線參數(shù)處的各階導(dǎo)矢進(jìn)行2000次運(yùn)算,并獲得CPU消耗的計(jì)時(shí)器周期數(shù)。仿真程序采用C#編寫(xiě),仿真平臺(tái)的CPU為Intel(R) Core(TM)i7-8550U CPU @ 1.99GHz,仿真結(jié)果如表3所示。
表3 兩種算法計(jì)算時(shí)間對(duì)比
在插補(bǔ)過(guò)程中一般需計(jì)算曲線的前三階導(dǎo)矢,因此表3列出了對(duì)3次B樣條曲線求0至3階導(dǎo)矢時(shí)兩種插補(bǔ)算法使用的計(jì)時(shí)器周期數(shù)。從表中可以看出,本文提出的3次B樣條曲線快速插補(bǔ)算法在求取0~3階導(dǎo)矢時(shí)所用的時(shí)間大約為文獻(xiàn)[1]中算法所用時(shí)間的50%。因此本文提出的快速插補(bǔ)算法能節(jié)省大約50%的計(jì)算時(shí)間,這在工程應(yīng)用中對(duì)于提高B樣條曲線實(shí)時(shí)插補(bǔ)計(jì)算效率具有重要意義。
為了驗(yàn)證本文提出的3次B樣條曲線快速直接插補(bǔ)的可行性,筆者所在項(xiàng)目組以TwinCAT技術(shù)為平臺(tái)開(kāi)發(fā)了國(guó)產(chǎn)三軸數(shù)控加工中心XK7132A為基礎(chǔ)的開(kāi)放式數(shù)控機(jī)床。分別以平面螺線和飛鏢的B樣條曲線為加工對(duì)象[23-27],實(shí)際加工的機(jī)床以及結(jié)果如圖5所示。
圖5的加工過(guò)程表明,本文提出的插補(bǔ)方法成功應(yīng)用于課題組開(kāi)發(fā)的數(shù)控機(jī)床,并完成了平面螺線和飛鏢的加工,因此3次B樣條曲線快速直接插補(bǔ)算法是有效可行的。
(1)提出了基于3次B樣條曲線的快速直接插補(bǔ)算法,采用B樣條節(jié)點(diǎn)插入技術(shù)將原始3次B樣條曲線轉(zhuǎn)換為連續(xù)多段的3次貝奇爾曲線,利用構(gòu)造的快速插補(bǔ)模型,遍歷每一段3次貝奇爾曲線,直到所有的3次貝奇爾曲線均快速插補(bǔ)完畢。
(2)提出了并進(jìn)行了插補(bǔ)仿真分析對(duì)比驗(yàn)證,其插補(bǔ)計(jì)算高效,應(yīng)用于數(shù)控系統(tǒng)其實(shí)時(shí)性得到提高。
(3)基于自主開(kāi)發(fā)的數(shù)控平臺(tái)上完成了平面螺線和飛鏢的B樣條曲線直接插補(bǔ)加工。