劉 宇,朱志松,趙 旭,張子立
(南通大學 機械工程學院,江蘇 南通 226019)
數控海綿切割機床的切割軌跡一般由圓弧、直線或樣條曲線組成。現有的數控系統只提供直線插補與圓弧插補[1]。加工坐標文件設計過程中可借助CAD參數化功能,使用圓弧擬合圖紙中的樣條曲線[2]。實際生產中往往采用已有加工坐標文件,這類坐標文件中樣條曲線以離散點的形式存在,且分布不均,一般采用折線連接,只能滿足G0連續[3],刀具在每一個插補段都需經過加速、勻速、減速和停頓4個階段,加工質量差、機床沖擊大、效率低[4]。
為了能夠直接利用數控機床的圓弧插補功能,使組成樣條曲線的曲線段在連接處滿足G1連續(兩條曲線在交點處法線相同,切線夾角為零),國內研究者一般采用雙圓弧逼近B樣條曲線來重構曲線[5-6],但針對離散點坐標的雙圓弧逼近研究較少。而且B樣條擬合的曲線除首尾兩個控制點,其余各點都不在曲線上。對于海綿切割加工,擬合的曲線必須通過每個離散點,使曲線保持原有的形狀特性。分段三次Hermite插值多項式[7-8](PCHIP)擬合著重于保形和單調,曲線通過每個離散點。
因此,筆者對樣條曲線區間選擇、雙圓弧弦切角計算、基于誤差分析的逼近算法進行研究,并詳細闡述其實現方法。
花型文件經過排版和直線擬合可導出海綿加工坐標文件(HMD)。與DXF文件相比,HMD文件在生成時就確定了加工的起點、終點以及加工路徑,不可更改,其中每段曲線都具有方向性。HMD文件中直線坐標與圓弧坐標的格式是統一的,共有3列數據。HMD文件格式如表1所示。

表1 HMD文件格式
表1中,第1列是橫坐標值,第2列是縱坐標值,第3列是角度(凸度)信息(圓弧圓周角一半的正切值)。第3列的值是判斷圓弧或是直線的依據,若第3列的值為零,此段曲線為直線;否則,此段曲線為圓弧。HMD文件是以短折線表達樣條曲線,每段曲線中包含的點離散且密集。這些點擬合為連續曲線作為后期雙圓弧逼近的基礎。
筆者擬在PCHIP擬合列表離散曲線的基礎上,設計雙圓弧逼近該樣條曲線。首先,對表示HMD文件中曲線信息的折線始終點坐標,使用SciPy[9]中Interpolate模塊下的PchipInterpolator函數實現樣條擬合。
針對全部離散點選擇樣條曲線區間,筆者提取HMD文件中的內容到列表,得到列表長度leng,方向標記位flag_c(每段折線終點與起點x坐標的差值),趨勢標記位flag(當前折線與前一折線方向標記位的積)。兩點間距離小于l、兩段折線間角度小于ρ、折線段數大于k的點為原曲線的直線逼近點,作為擬合的樣本點。橫坐標沿x軸遞增的點納入正向列表Z_xy,否則納入反向列表B_xy。
設i=1,…,leng-1,取相鄰的3個點(xi-1,yi-1)、(xi,yi)、(xi+1,yi+1),凸度分別為zi-1、zi、zi+1。相鄰兩條折線的長度為:
(1)
式中:l1—前一折線的長度;l2—當前折線的長度。
相鄰兩條折線的夾角為:
angle=
(2)
式中:angle—相鄰兩條折線的夾角。
系統方案流程如圖1所示。
由圖1可知:根據zi-1為零,判斷前一折線為直線,相鄰兩點的距離小于給定值l、點積計算相鄰兩段折線的轉角angle小于給定值ρ、趨勢標記位flag大于零(當前折線與前一折線的始終點x坐標增減趨勢一致)符合連續的直線逼近點特征。PCHIP方法只能擬合x方向遞增曲線,由方向標記位決定添加至正向或反向列表,若是反向列表,則反轉,轉換為正向曲線;接著使用雙圓弧逼近PCHIP擬合曲線,輸出雙圓弧參數列表。
在給定曲線的點,確定曲線在給定點處的切線方向,可在這兩相鄰點之間用兩段圓弧表示該處曲線的形狀,且在圓弧相交點處相切(滿足G1連續)。
雙圓弧算法原理如圖2所示。
在圖2中:設曲線的起點與終點分別為Ps(xs,ys),Pt(xt,yt),以此兩點作為雙圓弧的基本點。設φ,ω為起點與終點的弦切角,起點與終點的距離為L。設兩段圓弧的公切點為Pk(xk,yk),過點Ps作切線與過點Pt作切線相交于點F,過Pk點作兩段圓弧的切線,與PsF、PtF相交于點M、點N。雙圓弧的圓心分別為Os(xOs,yOs)、Ot(xOt,yOt),半徑分別為Rs、Rt。各角度以x軸的正向為基準旋轉取得,均為有向角度,以逆時針為正。

(3)
式中:φs—由x軸正向轉到Vs的夾角;γ—由Vs轉到Vk的夾角;ωt—由x軸正向轉到Vt的夾角。
圓弧半徑、計算公式為:
(4)
式中:L—起點與終點的距離;φ—起點的弦切角;ω—終點的弦切角;γ—由Vs轉到Vk的夾角。
根據圓弧半徑、公式(3)與起點坐標得到的圓心坐標Os、Ot與公切點坐標Pk的計算公式為:
(5)
式中:Rs—第一段圓弧的半徑;φs—由x軸正向轉到Vs的夾角;γ—由Vs轉到Vk的夾角;Rt—第二段圓弧的半徑。
φs,ωt的計算公式為:
(6)
式中:f′(xs)—起點的導數值;f′(xt)—終點的導數值。
導數計算公式為:
(7)
式中:f′(x)—導數值;Δx—自變量增量(設為0.000 01)。
弦切角的取值為:
(8)
式中:φs—由x軸正向轉到Vs的夾角;ωt—由x軸正向轉到Vt的夾角;θ—起終點連線與x軸正向的夾角。
θ的表達式為:
θ=arctan((yt-ys)/(xt-xs))
(9)
式中:θ—起終點連線與x軸正向的夾角。
調整弦切角的值解決計算溢出問題:

(10)
式中:φ—起點的弦切角。
同理處理ω的計算溢出。
調整起點弦切角以得到劣?。?/p>

(11)
式中:φ—起點的弦切角。
角γ的取值與φ,ω乘積的符號相關,若乘積大于零,則擬合為C型雙圓?。蝗羰浅朔e小于零,則擬合S型雙圓弧[10]。表達式為:

(12)
式中:φ—起點的弦切角;ω—終點的弦切角。
根據雙圓弧算法計算出圓弧的圓心Os(xOs,yOs)、Ot(xOt,yOt)以及圓弧半徑Rs與Rt,在每段雙圓弧對應的PCHIP擬合曲線上取t-1個點,坐標Pj(xj,yj)為:
Pj(xj,yj)=(xs+j×σ,f(xs+j×σ)),
j=1,2,…,t-1
(13)
式中:σ—分段步長。
σ=(xt-xs)/t
(14)
式中:t—分段數。
誤差原理如圖3所示。

圖3 誤差原理
根據圖3可知:由α角范圍得到的雙圓弧誤差計算公式[11]為:
δ=
(15)
式中:δ—雙圓弧誤差值;α—Pj與圓心連線和x軸正向的夾角;αs—Ps與Os連線和x軸正向的夾角;αk—Pk與Os連線和x軸正向的夾角。
根據雙圓弧算法原理與誤差原理設計逼近方法,由式(16)計算步長,設當前段曲線的起始點為Ps(x_start,f(x_start)),終止點為Pt(x_start+step,f(x_start+step))。實驗中采用兩種圓弧逼近方法,分別為余量等分法、整體遞增分割法,在一些論文中也有折中分段法[12]。
余量等分法:設f(x)為PCHIP擬合曲線,余量等分法逼近流程如圖4所示。

圖4 余量等分法逼近流程
由圖4可知:根據逼近步長、當前逼近曲線段的起始點與終止點坐標、兩點的弦切角,由公式(4)計算圓弧半徑,再根據公式(5)得到圓心與公切點坐標,可得到當前逼近曲線段的雙圓弧。由公式(15)計算曲線中間的若干個點的法向誤差。給定誤差為T,最大的法向誤差max(δ)>T,則num=num+1,重新計算步長,并將重新取點之后的第2個點作為逼近這一段曲線的終點,直到誤差值小于給定誤差;若最大法向誤差max(δ)≤T,將完成逼近段的曲線終點坐標與切線角度作為逼近下一段曲線的起點坐標與切線角度(每段雙圓弧在連接處滿足G1連續),輸出逼近的圓弧參數,在逼近完成之后,重置num=1,開始逼近余下曲線。
步長計算公式為:
step=(x_max-x_start)/num
(16)
式中:x_max—擬合之后x值列表的最大值;x_start—逼近每段曲線的起始點橫坐標;num—曲線分段數(初始值為1)。
整體遞增分割法與余量等分法相似,區別在于步長與分段數的取值,不重置num的值,步長計算利用曲線的整體長度,步長累加超過整體曲線終點x坐標時,取整體曲線終點為待計算曲線終點。
其步長計算公式為:
step=(x_max-x_min)/num
(17)
式中:x_max—擬合后x值列表的最大值;x_min—擬合后x值列表的最小值;num—曲線分段數(初始值為1)。
折中分段法在逼近過程中,取曲線的中點分割曲線,若是不滿足誤差要求,則將分割出的前一段曲線再次取中點分割,這將會增加分割密度,得到更多的圓弧,故實驗不采用該方法。
設加工的曲線方程為y=sinx+1,x∈[0,2π],轉換為HMD格式,由60段折線組成,并在定義域內取n個點,以擬合曲線與原曲線縱坐標的差的絕對值為擬合誤差μ。PCHIP擬合如圖5所示。

圖5 PCHIP擬合
PCHIP擬合誤差如圖6所示。

圖6 PCHIP擬合誤差
由圖6可知:擬合列表點的誤差較小,大多分布在0~0.000 1 mm之間,而且平均誤差較小,海綿切割尺寸誤差一般要求低于0.5 mm,因此可滿足加工精度要求。
PCHIP擬合誤差值如表2所示。

表2 PCHIP擬合誤差值
兩種方法在不同給定誤差的圓弧段數如表3所示。

表3 兩種方法在不同給定誤差的圓弧段數
由表3可知:在T≤0.000 1 mm時,整體遞增分割法得到的圓弧段數急劇增加,多于余量等分法得到的圓弧段數。
不同給定誤差對應雙圓弧逼近曲線如圖7所示。
不同給定誤差對應逼近誤差如圖8所示。

圖8 不同給定誤差對應逼近誤差
由圖8可知:(1)兩種方案的誤差都在給定誤差范圍以內,達到重構曲線的精度要求;(2)第二種方案比第一種方案的誤差分布相對集中,但是隨著允許誤差范圍的縮小,第二種方案圓弧段數急劇增加,效率降低;(3)整體遞增分割法的誤差值小于余量等分法,獲得的圓弧精度更高,但在給定精度下,余量等分法可獲得更少的段數,需在實際生產中合理選擇。
余量等分法誤差值如表4所示。

表4 余量等分法誤差值
整體遞增分割法誤差值如表5所示。

表5 整體遞增分割法誤差值
筆者提出了基于離散加工點的樣條曲線重構方法,PCHIP擬合保證了在擬合連接點處導數的連續性,貼合原始形狀,采用基于誤差最小原則的雙圓弧逼近方法,可根據給定重構精度,合理分配圓弧分段;利用Python編寫了相關程序,驗證了該算法的可行性。
實驗結果表明:余量等分法與整體遞增分割法都可有效地減少曲線的分段數;實驗曲線由60段折線組成,在海綿切割尺寸誤差內,相對于原曲線,經過這兩種逼近方法得到的圓弧段數可減少50%以上的分段數,且在圓弧連接處的切線相同,滿足了G1連續,最大限度還原了設計曲線的光滑度。