劉 宇,朱志松,趙 旭,張子立
(南通大學(xué) 機(jī)械工程學(xué)院,江蘇 南通 226019)
數(shù)控海綿切割機(jī)床的切割軌跡一般由圓弧、直線或樣條曲線組成。現(xiàn)有的數(shù)控系統(tǒng)只提供直線插補(bǔ)與圓弧插補(bǔ)[1]。加工坐標(biāo)文件設(shè)計(jì)過(guò)程中可借助CAD參數(shù)化功能,使用圓弧擬合圖紙中的樣條曲線[2]。實(shí)際生產(chǎn)中往往采用已有加工坐標(biāo)文件,這類坐標(biāo)文件中樣條曲線以離散點(diǎn)的形式存在,且分布不均,一般采用折線連接,只能滿足G0連續(xù)[3],刀具在每一個(gè)插補(bǔ)段都需經(jīng)過(guò)加速、勻速、減速和停頓4個(gè)階段,加工質(zhì)量差、機(jī)床沖擊大、效率低[4]。
為了能夠直接利用數(shù)控機(jī)床的圓弧插補(bǔ)功能,使組成樣條曲線的曲線段在連接處滿足G1連續(xù)(兩條曲線在交點(diǎn)處法線相同,切線夾角為零),國(guó)內(nèi)研究者一般采用雙圓弧逼近B樣條曲線來(lái)重構(gòu)曲線[5-6],但針對(duì)離散點(diǎn)坐標(biāo)的雙圓弧逼近研究較少。而且B樣條擬合的曲線除首尾兩個(gè)控制點(diǎn),其余各點(diǎn)都不在曲線上。對(duì)于海綿切割加工,擬合的曲線必須通過(guò)每個(gè)離散點(diǎn),使曲線保持原有的形狀特性。分段三次Hermite插值多項(xiàng)式[7-8](PCHIP)擬合著重于保形和單調(diào),曲線通過(guò)每個(gè)離散點(diǎn)。
因此,筆者對(duì)樣條曲線區(qū)間選擇、雙圓弧弦切角計(jì)算、基于誤差分析的逼近算法進(jìn)行研究,并詳細(xì)闡述其實(shí)現(xiàn)方法。
花型文件經(jīng)過(guò)排版和直線擬合可導(dǎo)出海綿加工坐標(biāo)文件(HMD)。與DXF文件相比,HMD文件在生成時(shí)就確定了加工的起點(diǎn)、終點(diǎn)以及加工路徑,不可更改,其中每段曲線都具有方向性。HMD文件中直線坐標(biāo)與圓弧坐標(biāo)的格式是統(tǒng)一的,共有3列數(shù)據(jù)。HMD文件格式如表1所示。
表1 HMD文件格式
表1中,第1列是橫坐標(biāo)值,第2列是縱坐標(biāo)值,第3列是角度(凸度)信息(圓弧圓周角一半的正切值)。第3列的值是判斷圓弧或是直線的依據(jù),若第3列的值為零,此段曲線為直線;否則,此段曲線為圓弧。HMD文件是以短折線表達(dá)樣條曲線,每段曲線中包含的點(diǎn)離散且密集。這些點(diǎn)擬合為連續(xù)曲線作為后期雙圓弧逼近的基礎(chǔ)。
筆者擬在PCHIP擬合列表離散曲線的基礎(chǔ)上,設(shè)計(jì)雙圓弧逼近該樣條曲線。首先,對(duì)表示HMD文件中曲線信息的折線始終點(diǎn)坐標(biāo),使用SciPy[9]中Interpolate模塊下的PchipInterpolator函數(shù)實(shí)現(xiàn)樣條擬合。
針對(duì)全部離散點(diǎn)選擇樣條曲線區(qū)間,筆者提取HMD文件中的內(nèi)容到列表,得到列表長(zhǎng)度leng,方向標(biāo)記位flag_c(每段折線終點(diǎn)與起點(diǎn)x坐標(biāo)的差值),趨勢(shì)標(biāo)記位flag(當(dāng)前折線與前一折線方向標(biāo)記位的積)。兩點(diǎn)間距離小于l、兩段折線間角度小于ρ、折線段數(shù)大于k的點(diǎn)為原曲線的直線逼近點(diǎn),作為擬合的樣本點(diǎn)。橫坐標(biāo)沿x軸遞增的點(diǎn)納入正向列表Z_xy,否則納入反向列表B_xy。
設(shè)i=1,…,leng-1,取相鄰的3個(gè)點(diǎn)(xi-1,yi-1)、(xi,yi)、(xi+1,yi+1),凸度分別為zi-1、zi、zi+1。相鄰兩條折線的長(zhǎng)度為:
(1)
式中:l1—前一折線的長(zhǎng)度;l2—當(dāng)前折線的長(zhǎng)度。
相鄰兩條折線的夾角為:
angle=
(2)
式中:angle—相鄰兩條折線的夾角。
系統(tǒng)方案流程如圖1所示。
由圖1可知:根據(jù)zi-1為零,判斷前一折線為直線,相鄰兩點(diǎn)的距離小于給定值l、點(diǎn)積計(jì)算相鄰兩段折線的轉(zhuǎn)角angle小于給定值ρ、趨勢(shì)標(biāo)記位flag大于零(當(dāng)前折線與前一折線的始終點(diǎn)x坐標(biāo)增減趨勢(shì)一致)符合連續(xù)的直線逼近點(diǎn)特征。PCHIP方法只能擬合x方向遞增曲線,由方向標(biāo)記位決定添加至正向或反向列表,若是反向列表,則反轉(zhuǎn),轉(zhuǎn)換為正向曲線;接著使用雙圓弧逼近PCHIP擬合曲線,輸出雙圓弧參數(shù)列表。
在給定曲線的點(diǎn),確定曲線在給定點(diǎn)處的切線方向,可在這兩相鄰點(diǎn)之間用兩段圓弧表示該處曲線的形狀,且在圓弧相交點(diǎn)處相切(滿足G1連續(xù))。
雙圓弧算法原理如圖2所示。
在圖2中:設(shè)曲線的起點(diǎn)與終點(diǎn)分別為Ps(xs,ys),Pt(xt,yt),以此兩點(diǎn)作為雙圓弧的基本點(diǎn)。設(shè)φ,ω為起點(diǎn)與終點(diǎn)的弦切角,起點(diǎn)與終點(diǎn)的距離為L(zhǎng)。設(shè)兩段圓弧的公切點(diǎn)為Pk(xk,yk),過(guò)點(diǎn)Ps作切線與過(guò)點(diǎn)Pt作切線相交于點(diǎn)F,過(guò)Pk點(diǎn)作兩段圓弧的切線,與PsF、PtF相交于點(diǎn)M、點(diǎn)N。雙圓弧的圓心分別為Os(xOs,yOs)、Ot(xOt,yOt),半徑分別為Rs、Rt。各角度以x軸的正向?yàn)榛鶞?zhǔn)旋轉(zhuǎn)取得,均為有向角度,以逆時(shí)針為正。
(3)
式中:φs—由x軸正向轉(zhuǎn)到Vs的夾角;γ—由Vs轉(zhuǎn)到Vk的夾角;ωt—由x軸正向轉(zhuǎn)到Vt的夾角。
圓弧半徑、計(jì)算公式為:
(4)
式中:L—起點(diǎn)與終點(diǎn)的距離;φ—起點(diǎn)的弦切角;ω—終點(diǎn)的弦切角;γ—由Vs轉(zhuǎn)到Vk的夾角。
根據(jù)圓弧半徑、公式(3)與起點(diǎn)坐標(biāo)得到的圓心坐標(biāo)Os、Ot與公切點(diǎn)坐標(biāo)Pk的計(jì)算公式為:
(5)
式中:Rs—第一段圓弧的半徑;φs—由x軸正向轉(zhuǎn)到Vs的夾角;γ—由Vs轉(zhuǎn)到Vk的夾角;Rt—第二段圓弧的半徑。
φs,ωt的計(jì)算公式為:
(6)
式中:f′(xs)—起點(diǎn)的導(dǎo)數(shù)值;f′(xt)—終點(diǎn)的導(dǎo)數(shù)值。
導(dǎo)數(shù)計(jì)算公式為:
(7)
式中:f′(x)—導(dǎo)數(shù)值;Δx—自變量增量(設(shè)為0.000 01)。
弦切角的取值為:
(8)
式中:φs—由x軸正向轉(zhuǎn)到Vs的夾角;ωt—由x軸正向轉(zhuǎn)到Vt的夾角;θ—起終點(diǎn)連線與x軸正向的夾角。
θ的表達(dá)式為:
θ=arctan((yt-ys)/(xt-xs))
(9)
式中:θ—起終點(diǎn)連線與x軸正向的夾角。
調(diào)整弦切角的值解決計(jì)算溢出問(wèn)題:
(10)
式中:φ—起點(diǎn)的弦切角。
同理處理ω的計(jì)算溢出。
調(diào)整起點(diǎn)弦切角以得到劣弧:
(11)
式中:φ—起點(diǎn)的弦切角。
角γ的取值與φ,ω乘積的符號(hào)相關(guān),若乘積大于零,則擬合為C型雙圓?。蝗羰浅朔e小于零,則擬合S型雙圓弧[10]。表達(dá)式為:
(12)
式中:φ—起點(diǎn)的弦切角;ω—終點(diǎn)的弦切角。
根據(jù)雙圓弧算法計(jì)算出圓弧的圓心Os(xOs,yOs)、Ot(xOt,yOt)以及圓弧半徑Rs與Rt,在每段雙圓弧對(duì)應(yīng)的PCHIP擬合曲線上取t-1個(gè)點(diǎn),坐標(biāo)Pj(xj,yj)為:
Pj(xj,yj)=(xs+j×σ,f(xs+j×σ)),
j=1,2,…,t-1
(13)
式中:σ—分段步長(zhǎng)。
σ=(xt-xs)/t
(14)
式中:t—分段數(shù)。
誤差原理如圖3所示。
圖3 誤差原理
根據(jù)圖3可知:由α角范圍得到的雙圓弧誤差計(jì)算公式[11]為:
δ=
(15)
式中:δ—雙圓弧誤差值;α—Pj與圓心連線和x軸正向的夾角;αs—Ps與Os連線和x軸正向的夾角;αk—Pk與Os連線和x軸正向的夾角。
根據(jù)雙圓弧算法原理與誤差原理設(shè)計(jì)逼近方法,由式(16)計(jì)算步長(zhǎng),設(shè)當(dāng)前段曲線的起始點(diǎn)為Ps(x_start,f(x_start)),終止點(diǎn)為Pt(x_start+step,f(x_start+step))。實(shí)驗(yàn)中采用兩種圓弧逼近方法,分別為余量等分法、整體遞增分割法,在一些論文中也有折中分段法[12]。
余量等分法:設(shè)f(x)為PCHIP擬合曲線,余量等分法逼近流程如圖4所示。
圖4 余量等分法逼近流程
由圖4可知:根據(jù)逼近步長(zhǎng)、當(dāng)前逼近曲線段的起始點(diǎn)與終止點(diǎn)坐標(biāo)、兩點(diǎn)的弦切角,由公式(4)計(jì)算圓弧半徑,再根據(jù)公式(5)得到圓心與公切點(diǎn)坐標(biāo),可得到當(dāng)前逼近曲線段的雙圓弧。由公式(15)計(jì)算曲線中間的若干個(gè)點(diǎn)的法向誤差。給定誤差為T,最大的法向誤差max(δ)>T,則num=num+1,重新計(jì)算步長(zhǎng),并將重新取點(diǎn)之后的第2個(gè)點(diǎn)作為逼近這一段曲線的終點(diǎn),直到誤差值小于給定誤差;若最大法向誤差max(δ)≤T,將完成逼近段的曲線終點(diǎn)坐標(biāo)與切線角度作為逼近下一段曲線的起點(diǎn)坐標(biāo)與切線角度(每段雙圓弧在連接處滿足G1連續(xù)),輸出逼近的圓弧參數(shù),在逼近完成之后,重置num=1,開始逼近余下曲線。
步長(zhǎng)計(jì)算公式為:
step=(x_max-x_start)/num
(16)
式中:x_max—擬合之后x值列表的最大值;x_start—逼近每段曲線的起始點(diǎn)橫坐標(biāo);num—曲線分段數(shù)(初始值為1)。
整體遞增分割法與余量等分法相似,區(qū)別在于步長(zhǎng)與分段數(shù)的取值,不重置num的值,步長(zhǎng)計(jì)算利用曲線的整體長(zhǎng)度,步長(zhǎng)累加超過(guò)整體曲線終點(diǎn)x坐標(biāo)時(shí),取整體曲線終點(diǎn)為待計(jì)算曲線終點(diǎn)。
其步長(zhǎng)計(jì)算公式為:
step=(x_max-x_min)/num
(17)
式中:x_max—擬合后x值列表的最大值;x_min—擬合后x值列表的最小值;num—曲線分段數(shù)(初始值為1)。
折中分段法在逼近過(guò)程中,取曲線的中點(diǎn)分割曲線,若是不滿足誤差要求,則將分割出的前一段曲線再次取中點(diǎn)分割,這將會(huì)增加分割密度,得到更多的圓弧,故實(shí)驗(yàn)不采用該方法。
設(shè)加工的曲線方程為y=sinx+1,x∈[0,2π],轉(zhuǎn)換為HMD格式,由60段折線組成,并在定義域內(nèi)取n個(gè)點(diǎn),以擬合曲線與原曲線縱坐標(biāo)的差的絕對(duì)值為擬合誤差μ。PCHIP擬合如圖5所示。
圖5 PCHIP擬合
PCHIP擬合誤差如圖6所示。
圖6 PCHIP擬合誤差
由圖6可知:擬合列表點(diǎn)的誤差較小,大多分布在0~0.000 1 mm之間,而且平均誤差較小,海綿切割尺寸誤差一般要求低于0.5 mm,因此可滿足加工精度要求。
PCHIP擬合誤差值如表2所示。
表2 PCHIP擬合誤差值
兩種方法在不同給定誤差的圓弧段數(shù)如表3所示。
表3 兩種方法在不同給定誤差的圓弧段數(shù)
由表3可知:在T≤0.000 1 mm時(shí),整體遞增分割法得到的圓弧段數(shù)急劇增加,多于余量等分法得到的圓弧段數(shù)。
不同給定誤差對(duì)應(yīng)雙圓弧逼近曲線如圖7所示。
不同給定誤差對(duì)應(yīng)逼近誤差如圖8所示。
圖8 不同給定誤差對(duì)應(yīng)逼近誤差
由圖8可知:(1)兩種方案的誤差都在給定誤差范圍以內(nèi),達(dá)到重構(gòu)曲線的精度要求;(2)第二種方案比第一種方案的誤差分布相對(duì)集中,但是隨著允許誤差范圍的縮小,第二種方案圓弧段數(shù)急劇增加,效率降低;(3)整體遞增分割法的誤差值小于余量等分法,獲得的圓弧精度更高,但在給定精度下,余量等分法可獲得更少的段數(shù),需在實(shí)際生產(chǎn)中合理選擇。
余量等分法誤差值如表4所示。
表4 余量等分法誤差值
整體遞增分割法誤差值如表5所示。
表5 整體遞增分割法誤差值
筆者提出了基于離散加工點(diǎn)的樣條曲線重構(gòu)方法,PCHIP擬合保證了在擬合連接點(diǎn)處導(dǎo)數(shù)的連續(xù)性,貼合原始形狀,采用基于誤差最小原則的雙圓弧逼近方法,可根據(jù)給定重構(gòu)精度,合理分配圓弧分段;利用Python編寫了相關(guān)程序,驗(yàn)證了該算法的可行性。
實(shí)驗(yàn)結(jié)果表明:余量等分法與整體遞增分割法都可有效地減少曲線的分段數(shù);實(shí)驗(yàn)曲線由60段折線組成,在海綿切割尺寸誤差內(nèi),相對(duì)于原曲線,經(jīng)過(guò)這兩種逼近方法得到的圓弧段數(shù)可減少50%以上的分段數(shù),且在圓弧連接處的切線相同,滿足了G1連續(xù),最大限度還原了設(shè)計(jì)曲線的光滑度。