趙玉剛 于光偉 張 健 劉 肖
(山東理工大學機械工程學院,山東淄博 255049)
目前,多數機床的數控系統(tǒng)只具備直線插補和圓弧插補功能,而實際生產加工中常常會遇到零件輪廓為非圓曲線。此時就需要在給定的精度范圍內,用一系列直線或圓弧來逼近它們。直線擬合法因其簡單直觀而應用較多。直線擬合曲線的方法有:等間距法,等弦長法,等誤差法等。等間距法和等弦長法計算較簡單但在曲線曲率變化較大的場合不易控制插補精度和節(jié)點數。而等誤差法能盡可能地減少節(jié)點數,適用于曲率變化較大的曲線輪廓[1]。曲線等誤差直線擬合節(jié)點計算的一般方法是:在已知節(jié)點處建立允差圓,聯(lián)立允差圓與曲線的斜率關系解高次方程組求得切線斜率,后據此斜率建立擬合直線的方程,聯(lián)立曲線方程求得擬合直線與曲線的交點做為下一個擬合節(jié)點。但此算法的弊端有二,一是對高次曲線(如橢圓弧)而言,應用該方法時往往陷入高次方程組的求解中,而確定高次方程組的唯一解往往很復雜;二是該算法沒有充分考慮到實際數控加工中,曲線的拐點(如正弦曲線)應該作為擬合節(jié)點。據此本文提出了一種基于羅爾定理與二分法的曲線等誤差直線擬合新算法,該算法通過將擬合區(qū)間適當劃分成為多個凹凸性一致的單值區(qū)間(若擬合區(qū)間已經是凹凸性一致的單值區(qū)間則不必劃分),在各個單值區(qū)間內運用羅爾定理與二分法迭代求解擬合直線與曲線上對應的弧之間的誤差來逐步逼近程序所要求的允許誤差。該算法避免了高次方程組的求解,容易控制插補精度,易于實現(xiàn)程序編制和數控加工應用。
如圖1所示,設零件輪廓曲線的數學方程為y=f(x)。節(jié)點坐標計算步驟如下[2]:
(1)以起點 A(xa,ya)為圓心,以允差 δ為半徑作圓。其圓方程為
(2)作允差圓與曲線y=f(x)的公切線MN,則可求公切線MN的斜率k
為求 yn、ym、xn、xm,需要解下面的方程組
式中y=F(x)為允差圓方程。
(3)過A點作斜率為k的直線,則得到直線插補段AB,其方程為
(4)求直線插補節(jié)點B點的坐標,解方程組
求得交點B(xb,yb)的坐標值,便是第一個直線插補節(jié)點。
(5)按以上步驟順次求得C,D等各節(jié)點坐標。
此算法先求得允差圓與曲線的公切線斜率k,后聯(lián)立方程組(5)求解得到下一插補點。當要擬合高次曲線時,方程組(3)為四元高次方程組,其求解過程非常復雜且確定唯一解也需要更多的判斷條件。另外在實際數控加工中,若曲線有拐點,則拐點應視為擬合節(jié)點。
如圖2所示,設在曲線y=f(x)的一個凹凸性一致的單值閉合區(qū)間AB上,用直線段連接曲線的兩個端點A、B,則它與曲線形成一個弓形,我們稱這條直線為曲線的弦。只要該曲線上的點到弦AB的最大距離hmax小于程序設定的允許誤差res,我們就可以用直線段AB來擬合曲線段 AB[3]。而當 hmax大于允許誤差res時,就需要運用二分法將區(qū)間AB進行劃分以找到下一個擬合點F。再連接直線段FB,在曲線段FB上再次進行同樣流程操作,最終可得到所有擬合點。
本小節(jié)先推導曲線上的點到它對應的弦之間的最大距離公式,后詳述二分法迭代求解擬合點的應用過程。
設直線AB的斜率為k,因曲線的AB段為凹凸性一致的單值區(qū)間,則由羅爾定理知,在曲線AB上有且僅有一點D,使得曲線AB在該點的斜率kd,有:
而D 點的坐標(xd,yd)可通過方程(7)求得:
弦AB所在直線方程為:
則點 D(xd,yd)到弦 AB 的距離為
由導數的性質及意義可知,曲線AB上的點中,D弦AB的距離最大,且D到弦AB的距離h就是弦AB逼近曲線AB時的擬合誤差。
在單值閉合區(qū)間AB上,弦AB擬合曲線AB的擬合誤差hAB往往大于程序設定的允許誤差res,這時就需要在區(qū)間AB上運用二分法迭代多次求解弦的擬合誤差來逼近允許誤差res。二分法應用過程如下:
(1)初始化A點坐標為擬合區(qū)間起點坐標(xa,ya),B點坐標為擬合區(qū)間終點坐標(xb,yb)。A點為當前已知擬合點,動點。
(2)將A點賦值給S1點,B點賦值給S2點。S1、S2點為區(qū)間二分迭代時用到的點,動點。
(3)計算弦AB擬合曲線AB的擬合誤差hAB,賦值h=hAB。
(4)比較擬合誤差h與允差res的大?。喝绻鹔>res,轉(5)步;如果 h≤res,則區(qū)間終點 B作為最終擬合節(jié)點,等誤差直線擬合過程結束。
(5)取直線段S1S2的中點C橫坐標之值xm=(xs1+xs2)/2,計算ym=f(xm),得到直線段S1S2中點C在橢圓弧上對應的二分點M(xm,ym)。
(6)計算弦AB擬合曲線AM的擬合誤差hAM,賦值h=hAM。
(7)比較擬合誤差h與允差res的大?。喝绻鹔>res,M 點賦值給 S2;如果 h≤res,M 點賦值給 S1。
(8)計算|fres-h|之值,如果小于或等于指定的誤差值,尋找插補點結束,得到新擬合節(jié)點F,轉(9);如果大于指定的誤差值,返回步驟(5)繼續(xù)查找。
(9)F賦值給A點,轉步驟(2)。
設曲線方程為y=f(x),擬合區(qū)間為x∈[a,b],允許誤差為res。為高質量地擬合曲線,滿足數控加工的實際需要,應先判斷曲線是否存在拐點,若存在,則拐點應直接作為曲線的擬合點。
若在開區(qū)間x∈(a,b)求得y=f(x)的一系列拐點橫坐標為 a1<a2<… <an,則整個閉區(qū)間 x∈[a,b]可劃分為 n+1 個小區(qū)間[a,a1],[a1,a2],…[an-1,an],[an,b],在這n+1個小區(qū)間內可按上一小節(jié)的算法求得所有擬合節(jié)點。
如正弦曲線y=asin(wx+t)+y0,易知其拐點坐標(xd,yd)滿足方程
對有些高次隱式非線性方程f(x,y)=0,在其要求的擬合區(qū)間內往往為非單值函數,此時也需要通過適當方法將整個擬合區(qū)間劃分為多個凹凸性一致的單值區(qū)間。以橢圓為例,分析此類函數曲線的單值區(qū)間劃分方法,如圖3所示,設橢圓方程為x2/a2+y2/b2=1,擬合方向為逆時針。不妨設當前已知節(jié)點為A(xa,ya),位于第一象限。當下一節(jié)點B出現(xiàn)在弧S1S2上時,則AB直線段擬合誤差范圍是(0,b-ya),誤差上限是在AB平行于X軸時取得的;當下一節(jié)點B出現(xiàn)在弧S2S3上時,則AB直線段擬合誤差范圍是(b-ya,),誤差上限是在 AB關于橢圓圓心對稱時取得的,此時直線AB斜率為k=ya/xa。再結合程序設定的允許誤差res,可進行如下判別:
表1 橢圓逆圓弧等誤差直線擬合區(qū)間劃分
(2)如果0<res<b-ya,則下一擬合點一定出現(xiàn)在弧S1S2上,此區(qū)間y相對于x的單值函數,可在此區(qū)間二分迭代多次求得擬合點;
(3)如果b-ya≤res<,則下一擬合點一定出現(xiàn)在弧S2S3上,此區(qū)間x相對于y的單值函數,可在此區(qū)間二分迭代多次求得擬合點。
若當前已知節(jié)點位于其它象限,討論過程同上。橢圓逆圓弧等誤差直線擬合區(qū)間劃分及擬合誤差表達式見表(1)。
基于羅爾定理與二分法的曲線等誤差直線擬合算法框圖見圖4。該算法先判斷曲線是否存在拐點,若存在,則應以拐點為邊界進行擬合區(qū)間的第一次劃分;后判斷曲線的擬合區(qū)間是否是單值區(qū)間,若不是,則可通過適當方法進行區(qū)間的再一次劃分,是整個擬合區(qū)間被劃分成為多個凹凸性一致的單值區(qū)間。在每個單值區(qū)間內就可以運用二分法迭代求解擬合誤差以逼近允許誤差,以此求得擬合點。若函數的整個區(qū)間較長且已經是單值區(qū)間,則為了加快擬合節(jié)點的計算速度,可適當增加附加條件來劃分區(qū)間以減少迭代次數(如限定擬合直線的長度)。
基于本文算法,以C++Builder 6.0為開發(fā)工具,編程實現(xiàn)了幾種常見曲線的等誤差直線擬合,如橢圓弧、正弦曲線、拋物線、雙曲線等。
當橢圓圓心坐標為(100,0),半軸長 a=300,b=200,起始角度 startangle=30,終止角度 endangle=300,插補方向為逆弧,允差res=8時,其仿真效果如圖5,節(jié)點計算結果見圖6。
仿真結果表明,由于該算法避免了高次方程組的求解,代之以迭代多次線性求解擬合誤差以逼近允許誤差,使得節(jié)點計算簡單可靠,處理速度較快,在線切割,輪廓銑削加工上有較大應用價值。
曲線等誤差直線擬合的一般解法是設定允差圓的方程后解高次方程組,而確定其唯一解往往很復雜。本文提出了一種基于羅爾定理與二分法的擬合方法,其思想是先將整個擬合區(qū)間適當劃分成為多個凹凸性一致的單值區(qū)間,后在這多個單值區(qū)間內二分迭代多次求解弦與對應的曲線弧之間的擬合誤差來逼近允許誤差,體現(xiàn)了正難則反的逆向思維。該算法避免了高次方程組的求解,容易控制擬合精度,易于實現(xiàn)程序編制,在數控加工中有較大應用價值。
[1]于洋,魏娟.等誤差直線逼近非圓曲線節(jié)點計算新方法[J].組合機床與自動化加工技術,2005(5):32-33.
[2]趙玉剛,宋現(xiàn)春主編.數控技術[M].北京:機械工業(yè)出版社,2003.
[3]周曉銘,陶俊才,等.基于二分法的曲線等誤差圓弧擬合算法及其應用[J].南昌大學學報,2008(1):100-102.
[4]王麗萍,孫國防,等.非圓曲線數控編程的等誤差逼近及其實現(xiàn)[J].現(xiàn)代制造工程,2006(10):30-32.