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