摘 要: 針對復(fù)雜輪廓的曲線,在數(shù)據(jù)采樣插補(bǔ)原理的基礎(chǔ)上,采用了一種基于三次樣條函數(shù)的插補(bǔ)算法。該方法能精確地?cái)M合出復(fù)雜曲線的輪廓,且使得該曲線具有很好的連續(xù)性。在基于ARM數(shù)控裝置上,對此算法進(jìn)行了實(shí)驗(yàn)驗(yàn)證,驗(yàn)證了該方法的可行性。
關(guān)鍵詞: 三次樣條函數(shù);曲線擬合;插補(bǔ)算法;ARM
隨著微電子技術(shù)、計(jì)算機(jī)技術(shù)、自動(dòng)控制技術(shù)和通信技術(shù)的不斷進(jìn)步,現(xiàn)代數(shù)控系統(tǒng)的發(fā)展趨向高性能化。其中性能的完善主要體現(xiàn)在高速度、高精度、高可靠性、多功能化、網(wǎng)絡(luò)化、小型化、多樣化、智能化和開放性等方面。插補(bǔ)技術(shù)是數(shù)控系統(tǒng)的核心,為使高檔數(shù)控系統(tǒng)能發(fā)揮其功能,高精度、高速度、高效率的插補(bǔ)算法成為目前研究需要突破的難點(diǎn)[1]。
在數(shù)控插補(bǔ)裝置上,針對船身外放樣時(shí)的樣條曲線,汽車、飛機(jī)及各種產(chǎn)品的外形曲線等無法用標(biāo)準(zhǔn)代數(shù)方程描述的復(fù)雜曲線,一般都采用直線逼近或圓弧逼近的方法來實(shí)現(xiàn)其插補(bǔ),然而這種方法所編寫的算法較為復(fù)雜,且在計(jì)算過程中還會(huì)產(chǎn)生計(jì)算誤差及誤差的累積,降低了插補(bǔ)的精度。而三次樣條函數(shù)基于可使曲線各分段處保持一定程度的光滑性,其具有很好的保凸性和光順性,且能保持曲線的連續(xù)性。同時(shí)三次樣條函數(shù)的應(yīng)用范圍廣泛,特別是在給定型值點(diǎn)的曲線擬合方面,如在插補(bǔ)裝置中實(shí)現(xiàn)凸輪、汽車外輪廓等曲線。因此對于某些復(fù)雜零件,采用三次樣條函數(shù)的插補(bǔ)方法描述其輪廓是一種極為有效的手段。基于三次樣條函數(shù)的上述特性,本文描述了三次樣條曲線形成曲線輪廓并在數(shù)控插補(bǔ)裝置上實(shí)現(xiàn)插補(bǔ)的過程。該方法既能提高插補(bǔ)精度,又使計(jì)算不太復(fù)雜[2,3]。
2 三次樣條曲線輪廓的擬合原理
利用三次樣條函數(shù)解決復(fù)雜曲線插補(bǔ)問題的思路是:在被插補(bǔ)的復(fù)雜曲線上找到一定數(shù)量的型值點(diǎn),采用三次樣條求出插補(bǔ)中間點(diǎn),然后利用相鄰兩端曲線交點(diǎn)處的一階導(dǎo)數(shù)、二階導(dǎo)數(shù)相等這一條件,實(shí)現(xiàn)整段曲線連續(xù)且在曲線連接處平滑過渡的效果。
以[xj,xj+1]為例,該算法的插補(bǔ)過程如下:此為三次樣條曲線中第j段的插補(bǔ),x軸以xj為起點(diǎn)坐標(biāo), x每次累加△x,再根據(jù)函數(shù)表達(dá)式計(jì)算出Sj(x)的值,照此循環(huán)計(jì)算,就可算出每一段函數(shù)每一點(diǎn)x所對應(yīng)的函數(shù)值,最終得到插補(bǔ)點(diǎn)X、Y軸的坐標(biāo)值,并輸出每一點(diǎn)的坐標(biāo)值,直到x=xj+1,整段的插補(bǔ)即完成了。其中△x為正整數(shù),且其所取值必須使得(xj+1-xj)/△x為整數(shù),并確保Y坐標(biāo)值的變化量大于1。其他段按上述原理繼續(xù)進(jìn)行相應(yīng)的插補(bǔ)計(jì)算。
4 在數(shù)控裝置上的實(shí)現(xiàn)
4.1 數(shù)控裝置的介紹
本文使用以S3C2410為主芯片的ARM開發(fā)板作為數(shù)控裝置。ARM采用RISC結(jié)構(gòu),能在一個(gè)機(jī)器周期內(nèi)執(zhí)行一條指令。此開發(fā)板屬于ARM9處理器系列,具有ICache和DCache,提高了存儲(chǔ)器訪問的效率,具有64 MB NAND Flash和64 MB SDRAM的儲(chǔ)存容量。其晶振頻率為12 MHz,而時(shí)鐘控制邏輯能夠產(chǎn)生4倍晶振頻率的PCLK時(shí)鐘信號,即為48 MHz。用該P(yáng)CLK值計(jì)算所得的定時(shí)器輸入頻率高,從而使得定時(shí)時(shí)間能設(shè)定得很短。以上特性使此插補(bǔ)算法能在該裝置上得以運(yùn)行,且具有較高的插補(bǔ)速度,以實(shí)現(xiàn)三次樣條曲線的插補(bǔ)。
在ARM開發(fā)板上外接兩個(gè)步進(jìn)電機(jī),分別用于實(shí)現(xiàn)X軸和Y軸方向的插補(bǔ)。通過改變定時(shí)計(jì)數(shù)器的初值,使得脈沖輸出速度不同,從而實(shí)現(xiàn)步進(jìn)電機(jī)以不同速度沿X軸和Y軸運(yùn)行。
三次樣條曲線的插補(bǔ)算法流程如圖1所示。
4.2 實(shí)驗(yàn)結(jié)果及分析
為了驗(yàn)證三次樣條函數(shù)插補(bǔ)方法的可行性,取一組滿足三次樣條函數(shù)的型值點(diǎn),根據(jù)三次樣條函數(shù)的擬合原理編程,擬合出如圖2所示的三次樣條曲線。
圖2是整個(gè)三次樣條曲線的輪廓,為了把這種方法應(yīng)用在數(shù)控插補(bǔ)上,還必須在此基礎(chǔ)上取適當(dāng)?shù)牟逖a(bǔ)點(diǎn),在ADS1.2集成環(huán)境下,用ARM開發(fā)板進(jìn)行調(diào)試,在此裝置上運(yùn)行之后,使得步進(jìn)電機(jī)依插補(bǔ)結(jié)果運(yùn)轉(zhuǎn),運(yùn)行結(jié)果如圖3所示。
按照以上兩圖的實(shí)現(xiàn)結(jié)果進(jìn)行如下分析:圖2是按照擬合原理擬合出來的完整三次樣條曲線的輪廓,該曲線相鄰兩端交點(diǎn)處一階導(dǎo)數(shù)、二階導(dǎo)數(shù)相等,具有很好的光順性,且保持良好的連續(xù)性。圖3是在三次樣條曲線基礎(chǔ)上取適當(dāng)?shù)牟逖a(bǔ)點(diǎn)進(jìn)行插補(bǔ)的結(jié)果,取的插補(bǔ)點(diǎn)越密集,插補(bǔ)結(jié)果就越接近真實(shí)曲線,精度也就越高。由插補(bǔ)算法可知Y坐標(biāo)值是根據(jù)X坐標(biāo)值計(jì)算所得,最終求得y的變化量,因此x所對應(yīng)的I/O每輸出一個(gè)脈沖,y對應(yīng)的I/O輸出的脈沖數(shù)根據(jù)計(jì)算結(jié)果而變化。由于插補(bǔ)的每個(gè)點(diǎn)都確保在此三次樣條曲線上,比起用直線或圓弧逼近曲線的方法,插補(bǔ)效果在準(zhǔn)確度和精確度上明顯提高。
在數(shù)控裝置上,利用三次樣條函數(shù)不僅能夠進(jìn)行簡單曲線的插補(bǔ)計(jì)算,對于無法通過直線、圓弧以及其他二次曲線來描述其輪廓的復(fù)雜零件,同樣能實(shí)現(xiàn)其插補(bǔ),同時(shí)具有很好的保凸性和光順性,且保證了插值函數(shù)的連續(xù)性及插補(bǔ)的精度,增加了數(shù)控裝置的曲線應(yīng)用范圍。本文以ARM開發(fā)板作為數(shù)控裝置,對此插補(bǔ)算法進(jìn)行了驗(yàn)證,該方法算法簡單,易實(shí)現(xiàn),精度較高,插補(bǔ)效果好。
參考文獻(xiàn)
[1] 盧勝利,王睿鵬,祝玲.現(xiàn)代數(shù)控系統(tǒng)—原理、構(gòu)成與實(shí)例[M].北京:機(jī)械工業(yè)出版社,2007.
[2] 包園園.三次樣條函數(shù)在自由曲線測量中的應(yīng)用研究[J].機(jī)械制造與自動(dòng)化,2009,38(2):88-89.
[3] 王茹傳,黃海平,林巧民.計(jì)算機(jī)圖形學(xué)(第2版)[M].北京:人民郵電出版社,2009.
[4] 聶玉峰.Lagrange插值和Hermite插值的內(nèi)在統(tǒng)一理論[J]. 高等數(shù)學(xué)研究,2010,13(1):13-14.
[5] 鄒淑芳.三次樣條函數(shù)的基樣條法和三彎矩法之異同比較[J].云南電大學(xué)報(bào),2009,11(2):93-96.
[6] Sun Ningping,AYABE T,NISHIZAKI T.Efficient spline interpolation curve modeling[C].Intelligent Information Hiding and Multimedia Signal Processing,2007:59-62.
[7] 許小勇,鐘太勇.三次樣條插值函數(shù)的構(gòu)造與Matlab實(shí)現(xiàn)[J].自動(dòng)測量與控制,2006,25(11):76-78.
[8] 孫令德.計(jì)算機(jī)圖形學(xué)實(shí)踐教程(Visual C++版)[M].北京:清華大學(xué)出版社,2008.
(收稿日期:2011-01-21)