馬虎亮,李 贊,王燕青,呂 明
(太原理工大學機械與運載工程學院,太原 030024)
非圓曲線的加工屬于機械加工的重點和難點之一。通常的處理辦法是在保證誤差的前提下使用圓弧或者直線段進行擬合,然后再對擬合后的圓弧或者直線段進行插補運算。這種方法不僅增加了擬合階段計算量,擬合后的數據量也較大,對應插補結果的檢驗難度也較大。
圓錐曲線屬于非圓曲線中應用較多的曲線類型,針對圓錐曲線的插補方法較少,而且大部分只適用于標準曲線[1]。目前也有使用NURBS等樣條曲線擬合圓錐曲線再對樣條曲線進行插補的方法,但增加了擬合過程,需要一定的數學基礎。李文斌等[2]針對圓錐曲線的提出了角度逼近的插補算法,王政皓等[3]設計了針對圓錐曲線的插補系統,趙萬生[4]、王濤[5]等則是提出了通用的插補方法。這些方法計算過程相對復雜,而且沒有考慮圓錐曲線的刀具補償計算。
王良[6]、李傳軍[7]、丁靜[8]等在現有的數控系統上進行刀具半徑補償的研究和試驗,但缺少對圓錐曲線刀具補償問題的探索。王永祥[9]和盧軍霞[10]對刀具補償算法進行了研究,但沒有把計算擴展到圓錐曲線上。Piegl L A[11]和Kai Hormann[12]對于擬合曲線的刀具補償算法進行了研究,可以得到偏移后的曲線表達式,但對于多段曲線之間過渡缺少論述。
當前研究總體上對于圓錐曲線及其刀具插補的研究相對較少,限制了圓錐曲線在機械設計和加工中的應用。本文在對圓錐曲線參數方程進行研究的基礎上,提出了適用于非圓曲線的插補算法——參數跟蹤法。闡述了參數跟蹤法的基本原理,并將其擴展到圓錐曲線的刀具插補計算。本文還提出了偏移曲線交點的計算方法,擴展了C刀補的應用,最后以插補實例證明了方法的有效性。
硬件插補算法通常是在曲線代數表達式的基礎上推導出判別式,每次進給然后計算出判別式的值來判斷下一步進給。這些方法適合硬件但效率不高,對于圓錐曲線更難適用。本文基于參數方程提出了一種曲線插補方法——參數跟蹤法,通過計算每步的跨步步長來進行進給運算。該方法需要用到圓錐曲線的參數方程和一階導數方程。
參數跟蹤法要求對曲線方程進行歸一化處理,即將參數方程的變量u的取值范圍限制在[0,1],便于插補運算過程的統一。假設u的取值范圍是a→b歸一化處理見式(1):
u=a+(b-a)t
(1)
1.1.1 橢圓標準參數方程及其導數
橢圓標準參數方程,經過歸一化處理后,見式(2):

(2)
式中,x、y為橢圓上點的坐標;A、B為橢圓上的長短軸半徑值;ρ為橢圓上點到中心的距離,其表達式如下:
u為橢圓上點相對于中心的角度,u:a→b;歸一化見公式(1),t∈[0,1]。
橢圓參數方程的一階導數見式(3):

(3)
式中,
1.1.2 拋物線標準參數方程及其導數
拋物線的標準參數方程,經過歸一化處理后,見式(4):

(4)
式中,x、y為拋物線上點的坐標;u為拋物線上的參數值,u:a→b;歸一化見公式(1),t∈[0,1]。p為拋物線焦點到準線的距離。
拋物線方程的一階導數,見式(5):

(5)
1.1.3 雙曲線標準參數方程及其導數
拋物線的標準參數方程,經過歸一化處理后,見式(6):

(6)
式中,x、y為雙曲線上點的坐標;A、B為橢圓上的長短軸半徑值;u為雙曲線上點相對于中心的角度,u:a→b;歸一化見公式(1),t∈[0,1]。
雙曲線參數方程的一階導數計算,見式(7):

(7)
1.1.4 圓錐曲線一般參數方程
上述公式都是曲線的標準方程,在實際使用時,會遇到在平面內旋轉任意角度的曲線。對應平面內的一般圓錐曲線,可以使用坐標變換公式來得到。坐標變換公式見式(8):

(8)
式中,xo、y0為曲線平移坐標;xu、yu為曲線標準方程坐標;γ為曲線繞坐標軸逆時針旋轉角度。
1.2.1 參數跟蹤法基本原理
將圓錐曲線的方程進行歸一化處理后,參數的取值范圍[0,1],曲線的起點是t=0時的計算值,終點是t=1時的計算值,曲線的插補計算就是計算每一步的參數差值Δt,然后計算新的坐標。這里將Δt稱為跨步步長。歸一化處理之后不需要考慮曲線點所在的象限和旋轉方向,因此簡化了計算過程,易于插補過程程序化。
1.2.2 跨步步長的物理含義
按照加工過程,可以把曲線看做一個點按時間移動的軌跡,曲線在當前點的導矢可以看做當前移動點的速度,參數可以看做當前點移動的時間。以當前點的移動速度來判斷進給一步所需的時間,即跨步步長的大小。
由于每個軸的速度即導矢的各軸分量不一樣,因此在計算出各軸導矢分量的基礎上,需要判斷使用哪個分量來計算。由于插補的目標是單步,因此選取速度最快的分量,這樣就可以得到最接近單步的跨步步長。
1.2.3 跨步步長的公式推導
根據泰勒公式,曲線任意點的坐標可以由參考點及其各階導數之和來求解。通常使用的二階展開式見式(9):
(9)
式中,Δt=t-t0。計算目標是單步坐標增量Δl,即Δl=f(t)-f(t0)。Δl取值非常小,一般為機床單步精度,即0.001~0.000 1 mm,Δt的取值在一般加工范圍內遠小于1,對結果影響不大,因此可以略去高階項,得到跨步步長的計算如式(10)所示:
(10)

1.2.4 參數跟蹤法的一般流程
參數跟蹤法的計算步驟如下:
(1)根據參數方程計算起始點并設參數t=0;
(2)以當前點的參數值計算曲線導矢的各軸分量并取最大值,根據式(10)計算跨步步長Δt;由t=t0+Δt計算當前點坐標,根據坐標增量得到當前插補結果。插補結果通常為單步或者雙步。
(3)判斷參數t是否到達1,到達則停止計算,未到達則重復第二步。
刀具補償計算不僅包含曲線本身的刀補軌跡計算,還有多刀補軌跡之間過渡形式的計算。多刀補軌跡中以交點問題為其中的難點。本節就曲線刀補軌跡計算和刀補軌跡交點計算進行說明。
根據1.2.4節的內容可以得到圓錐曲線的插補結果,在不需要進行刀具補償的加工場合是適用的,但在內外輪廓的加工中就必須考慮刀具尺寸的影響。刀具針對不同的加工要求有很多不同的尺寸,需要對加工軌跡進行偏移,而難點是圓錐曲線的偏移結果不再是圓錐曲線。處理辦法可以采用數學算法先計算出偏移軌跡再擬合成樣條曲線等形式,計算過程復雜。因此一般通過求解計算曲線上點沿法線方向偏移出刀具補償值的點坐標來完成刀補軌跡的計算。
單段曲線的刀具補償計算分為左補償和右補償。左補償的法線方向沿曲線導矢方向逆時針旋轉90°,右補償的法線方向沿導矢方向順時針旋轉90°。同樣的,曲線導矢的各軸分量也按照補償來旋轉方向,再把導矢長度變換為補償長度。由于導矢各軸分量在插補過程中已經求出,因此計算量不大。
刀補軌跡的計算方程見式(11):

(11)
式中,f(t)、g(t)為各軸的參數計算函數;f′(t)、g′(t)為曲線上點的導矢各軸分量;r為刀具半徑補償值;L為曲線當前點的法線長度,其代表式如下:
式(11)中關于“?、±”,左刀補取上符號,右刀補取下符號。根據式(11)和各圓錐曲線各自的計算公式,就可以計算出單段圓錐曲線的刀具補償軌跡。
2.2.1 交點問題分析
加工中一般出現的是多段曲線,對于多段曲線的補償通常采用C刀補。C刀補根據加工對象交點處轉角的不同的分為縮短型、伸長型和插入型。其中縮短型和伸長型中都會有刀補軌跡交點的計算問題。如果采用算術方程解決交點問題會比較復雜,而且通常會遇到多個交點需要判斷,因此提出了改進二元梯度法來解決刀補軌跡的交點計算問題。
刀補曲線是圓錐曲線偏移刀補值的結果,刀補軌跡的交點求解可以轉換成兩條刀補曲線上點的距離最小值的求解。梯度下降法是沿梯度方向求取極值的方法,基本過程可參考有關文獻。當自變量超過一個時稱為多元梯度法。多元梯度法在處理線性回歸問題上比較成熟,但是兩條曲線上點的距離求解屬于非線性回歸問題,求解相對復雜,沒有直接案例作為依據。因此本文依據偏移曲線的特性對過程進行了改進,使其計算過程具有一定的穩定性和可靠性。
計算過程中巖土體的物理力學參數主要根據室內試驗、中國地大參數,并綜合考慮現場調查結果、參考類似工程等等選取。計算過程中涉及到的巖土體物理力學參數如表1所示。
2.2.2 改進二元梯度法的要點



圖1 改進二元梯度法求刀補軌跡交點
兩條圓錐曲線和刀補軌跡上的點坐標可由參數方程求得,其對應的參數分別是t1和t2。由于交點S既是曲線Q1的終點也是曲線Q2的起點,并且與刀補軌跡交點S′靠近交點,因此計算以S對應的刀補軌跡點為起點。
梯度方向應取刀補軌跡的導數方程,但因為偏移值r通常較小,為求解方便,略去刀具補償部分,即以圓錐曲線的導數方程為梯度方向。梯度值為梯度方向的大小,其值等于式(11)中的法線長度L。
梯度步長除初始步長外采用兩分法,以參數t1和t2對應的偏移曲線上的點的距離除以2求得。為減少計算,初始步長直接取偏移距離r,盡可能靠近交點。
2.2.3 改進二元梯度法的計算步驟
(1)求解原曲線Q1和Q2的交點S,即參數值t1=1,t2=0時的梯度值L1和L2,以偏移距離r為初始步長即s1=s2=r,計算對應的參數差值Δt1和Δt2。計算公式:Δt=s/L。計算t1=t1-Δt1和t2=t2+Δt2,求解當前t1和t2對應的偏移曲線上點的坐標點S1和S2并求取S1和S2的距離d。
(2)根據二分法求的步長s1=s2=d/2,分別求解當前點的梯度值L1和L2,根據公式計算出參數差值Δt1和Δt2。由于無法判斷此時的距離方向是增加還是減少,因此將計算差值的兩種情況:
(3)對距離d進行判斷,距離小于要求值則終止,不滿足則循環第二步。
改進二元梯度法流程框圖見圖2所示,其中程序迭代停止的判斷條件為距離小于0.001 mm。

圖2 改進二元梯度法的流程圖
C刀補的理論之前只適用于直線和圓弧的刀補,并且在刀補建立和撤銷階段只能對直線進行操作。在2.2節解決了圓錐曲線刀補軌跡的交點求解問題之后,可以將C刀補的計算擴展到圓錐曲線。


圖3 C刀補計算中所需計算的點


表1 C刀補擴展過渡形式
根據2.2節的改進二元梯度法可以計算出刀補進行時兩條曲線的交點,但是在刀補建立和刀補撤銷階段,刀具補償的數值是變化的,需要根據位置逐步增加或者減少刀補值。這也是C刀補中規定在刀補建立和撤銷階段必須為直線的原因。3.1節對C刀補擴展之后,在保證不過切刀補進行階段的軌跡時,圓錐曲線也可以作為刀補的建立和撤銷階段。由于刀補建立和撤銷階段刀補值是變化的,故可稱之為變刀補階段。
變刀補階段刀補值采樣線性變換,即刀補初始值和刀補終止值之間與參數成線性關系,可以根據參數值來確定刀補值。在進行計算時,對每條曲線設置兩個刀補值:初始刀補值rs和結束刀補值re。完整刀補軌跡的任意參數值t對應的刀補值如式(12):
r=rs+(re-rs)t,t∈[0,1]
(12)
在計算刀補建立和刀補撤銷階段的兩條曲線的交點時,采用第一條曲線的結束刀補值和第二條曲線的初始刀補值來進行偏移點的計算。在計算完成后,刀補軌跡的參數值范圍可能不再是[0,1] ,可記為t∈[ts,te]。為了保證刀補軌跡在參數終點值時補償值達到終點補償值re,對式(12)進行修改。
r=rs+(re-rs)(t-ts)/(te-ts)
(13)
式中,t∈[ts,te]。
根據3.1節中的C刀補擴展的處理方法,可以對圓錐曲線刀具中心軌跡進行計算。首先,每條曲線包含自身的幾何信息、刀具補償量和補償階段;然后,讀取當前段和下一段曲線的相關信息,進行刀補類型判定和相應計算,遇到伸長型和插入型還需要添加線段。最后,完成計算后對曲線進行插補,得到插補結果。
本節以實例說明圓錐曲線使用參數跟蹤法進行插補的過程,并對結果進行分析。
加工對象如圖4所示,軌跡從曲線1到曲線5,刀補要求左刀補,刀補值為1 mm。要求刀補在曲線1建立,在曲線5撤銷。插補精度為0.001 mm。表2中圓錐曲線的變量字母含義見圓錐曲線的參數方程。

圖4 圓錐曲線加工實例

表2 加工對象幾何信息
按照C刀補擴展要求,先讀取曲線1和曲線2的信息,根據角度情況進行判斷為縮短型,求取曲線1和曲線2的交點,并得到曲線1對應的終止參數值和曲線2對應的起始參數值。然后對曲線1進行插補運算。完成后依次對后面曲線進行計算。在插補時,曲線1的起始刀補值為0,結束刀補值為1,曲線5的起始刀補值為1,結束刀補值為0。
經過插補計算,5段曲線過渡均為縮短型,需要計算4個交點,交點值和迭代次數見表3所示。插補結果曲線參數值起始值和結束值、刀補起始值和結束值、插補步數等信息見表4所示。

表3 曲線交點坐標和迭代次數

表4 曲線參數和插補信息
從表3中可以看出改進二元梯度法求解曲線交點方法是有效的,結果也得到檢驗,并且迭代次數較少。表4中可以看出通過調節刀補值和參數范圍來進行圓錐曲線的插補是可行的,不僅保留了圓錐曲線的信息,還集成了刀補信息。其中縮短型過渡得到的曲線參數范圍在0~1之內。曲線及插補結果如圖5所示。

圖5 圓錐曲線及插補結果
圖5中外側輪廓是圓錐曲線組,內側輪廓是刀具補償軌跡。沿著工件軌跡方向,完成了刀補建立、刀補進行、交點計算和刀補撤銷的過程。每段圓錐曲線的插補如表4所示,總插補步數55 982步。
本文使用的參數跟蹤法屬于曲線插補的通用方法,可以滿足圓錐曲線的插補運算。為了解決圓錐曲線增加刀補后較難解決的交點計算問題,提出了改進二元梯度法,實例證明其有效性,可以進一步推廣到一般曲線。最后將C刀補理論擴展到圓錐曲線的應用,解決了曲線無法進行刀補建立和撤銷的問題。本文中曲線交點計算方法和刀具補償方法的運算過程可以作為其他非圓曲線刀具補償計算方法的參考。