郭媛媛,李濟順,,隋新,薛玉君,,馬偉
(1.河南科技大學(xué) 機電工程學(xué)院,河南 洛陽 471003;2.河南省機械設(shè)計及傳動系統(tǒng)重點實驗室,河南 洛陽 471003)
高檔數(shù)控機床對軸承均有高速、高精度的要求,軸承的精度檢測是技術(shù)難點之一。對于軸承內(nèi)、外圈等零件,尤其在超精密的場合,圓柱形貌誤差是重要的指標。特別是基于誤差分離的圓度、圓柱度形狀誤差,其研究及應(yīng)用備受國內(nèi)外重視。圓柱度形狀誤差測量和分離的最終目的是對被測零件的圓柱度做出正確評判,同時得出被測零件的真實輪廓形貌,便于在線補償加工的實施[1]?;诖耍斜匾獙A柱度形狀誤差的諸要素進行適當?shù)闹貥?gòu),從而得出零件的具體形貌,然后利用相關(guān)計算機圖形軟件實現(xiàn)圓柱形貌的三維顯示。
在圓柱形貌重構(gòu)和三維顯示的技術(shù)領(lǐng)域,文獻[2]建立了重構(gòu)基準模型,并簡單介紹了基于OpenGL的圓柱度形狀誤差三維顯示的相關(guān)參數(shù)以及繪制過程[3],完成了圓柱度形狀誤差的網(wǎng)格狀構(gòu)建,但其只取得了一定的顯示效果,并不是非常直觀。與此同時,在科技研究中,數(shù)據(jù)場的可視化問題也越來越受到重視,選擇好的漸變顏色表達和區(qū)分不同的、可見或不可見的數(shù)據(jù)場,對人視覺系統(tǒng)的分辨和識別極其有利[4]。因此,重點研究了精密圓柱形貌重構(gòu)模型和三維顯示模型,利用圖形顯示軟件OpenGL圖形庫的強大功能,用顏色渲染的相應(yīng)算法清楚地再現(xiàn)了帶有顏色漸變的圓柱體的表面形貌,取得了良好的顯示效果,使描述和評價圓柱度誤差更加準確、直觀。
圓柱度誤差測量一般要求2個測量運動才能完成對圓柱體表面的計量,屬于二維誤差分離技術(shù)。圓柱度誤差測量和分離的方法目前有3種:三點法、四點法和五點法。三點法模型得到了廣泛認可,四點法、五點法模型仍需進一步探討才能付諸使用,因此選擇三點法圓柱度誤差測量和分離模型進行研究。
由于圓柱度誤差測量和分離的困難性、復(fù)雜性,在模型中將圓柱度形狀誤差分解成3個要素:(1)截面圓度形狀誤差,反映截面輪廓的圓度誤差;(2)截面的尺寸偏差或者最小二乘圓半徑差,反映零件被測截面基本尺寸變動量;(3)截面最小二乘圓圓心的位置,反映零件被測面在坐標系內(nèi)的位置,也反映被測零件各個截面之間的相互位置關(guān)系。
測量時,同時使用3個傳感器。參照三點法圓度誤差分離技術(shù),對圓柱上第j個截面的圓度誤差進行時域計算,得到圓柱上該點的圓度誤差值為
式中:M為被測截面?zhèn)€數(shù)。
若以測量的初始截面為考察標準,則各個被測截面的最小二乘圓半徑差Δr(j)可表示為
式中:c0,c1,c2為誤差分離權(quán)函數(shù)[1]。
由三點法圓柱度誤差分離技術(shù)可知,截面最小二乘圓圓心與測量坐標系的原點重合,則可得到圓柱度形狀誤差測量的3個要素。
由上述測量和分離原理得到的圓柱度形狀誤差的3個要素是各自獨立的,若要正確評價和描述圓柱度誤差,就要對圓柱度形狀誤差的諸要素進行符合實際的、恰如其分的重構(gòu),從而獲得能夠表征被測零件逼真的表面形狀的誤差輪廓,即圓柱體的具體形貌[1]。
由于被測截面的圓度誤差是以截面最小二乘圓圓心為基準進行描述,因此將截面的最小二乘圓圓心在絕對坐標系內(nèi)的初始位置(aj,bj,wj)作為被測圓柱體形貌重構(gòu)的基準。
各截面的圓度誤差只是反應(yīng)圓輪廓的變化量,故在重構(gòu)時,各個截面的圓度誤差需要加上常量C,使重構(gòu)的圓柱體形貌更加逼真,而該常量只是改變圓柱體的半徑,不影響對圓柱度的評定。由坐標平移定理可知,被測截面上點的坐標在絕對坐標系內(nèi)的坐標為
式中:u(i,j),v(i,j),w(i,j)分別為重構(gòu)點在絕對坐標系Oxyz下的坐標;(ai,bj)為第j號截面的最小二乘圓圓心坐標;H為圓柱的高。
綜上,圓柱表面形狀誤差的重構(gòu)已經(jīng)完成,(5)式中重構(gòu)的被測圓柱體形貌的所有點的坐標值,幾乎可認為是圓柱體上各測點的真值,根據(jù)這些點的坐標值,就能容易地描述被測精密圓柱體的形貌。
OpenGL是一個性能卓越的三維圖形標準,提供了大量的預(yù)封裝函數(shù),其豐富的圖形功能為三維圖形的生成與顯示提供了便利。在C++Builder環(huán)境下實現(xiàn)圓柱表面形貌的三維顯示,程序流程如圖1所示。該程序的關(guān)鍵是彩色面的渲染以及用彩色區(qū)分圓柱表面的特征。
圖1 圓柱表面形貌誤差重構(gòu)流程圖
在繪制圓柱形貌之前,需要構(gòu)造仿真數(shù)據(jù)。三點法圓柱度誤差測量試驗?zāi)軌虻贸龅臏y量數(shù)據(jù)是3個傳感器對每個面的采樣輸出值,然后分離計算出每個截面的圓度誤差值,最小二乘圓圓心坐標和半徑差,并根據(jù)(5)式重構(gòu)圓柱表面點的坐標。由于直接給出3個傳感器輸出的信號值相對復(fù)雜,直接給出重構(gòu)所需的截面圓度誤差值、截面之間半徑差值、測量截面數(shù)及每個截面的采樣點數(shù),最小二乘圓圓心可根據(jù)(2)式求得,具體給定值及公式見表1。
表1 相關(guān)測量參數(shù)的給定值
為了清楚地描述圓柱面的渲染并與渲染后的圓柱面作對比,首先生成近似圓柱形貌的空間網(wǎng)格。具體方法如下:
根據(jù)重構(gòu)點的坐標公式,實現(xiàn)點在空間直角坐標系下的坐標,然后以這些點的坐標為基礎(chǔ)進行空間網(wǎng)格的繪制。繪制過程為:
(1)連接M個由N個點組成的空間圓線。選擇OpenGL中的GL_LINE_LOOP繪制語句,該語句表明繪制閉合的直線段[6]。
(2)繪制N條由M個采樣圓面對應(yīng)點構(gòu)成的線段。由于線段不需要閉合,所以連接直線段的函數(shù)使用OpenGL中的GL_LINE_STRIP繪制函數(shù)[6]。
在分別連接了M個圓面和上下相互對應(yīng)的N條圓柱素線之后,就完成了圓柱面的空間網(wǎng)格的繪制。其顯示結(jié)果如圖2所示。
圖2 圓柱形貌的空間網(wǎng)格
為了清楚地描述對圓柱形貌的網(wǎng)格狀表面的渲染過程,截取圓柱形貌上的3個面,如圖3所示。
圖3 圓柱形貌的空間網(wǎng)格片段
在將空間網(wǎng)格轉(zhuǎn)化成面的渲染過程中,其具體實現(xiàn)步驟為:
(1)分別連接4個點使之成為由點1,2,3和點1,3,4組成的2個三角形面。在OpenGL函數(shù)庫中的GL_TRIANGLE_STRIP語句下,用glVertex3f()函數(shù)分別給出點1~4在直角坐標系下的坐標即可實現(xiàn)。
(2)嵌套C語言中的2個for循環(huán)語句就可以實現(xiàn)整個圓柱面上M×N個點的連接。
在連接了圓柱上所有點后,圓柱空間網(wǎng)格就轉(zhuǎn)化成了空間圓柱面。但是,上述繪制過程實現(xiàn)的圓柱面是沒有漸變顏色的。為了實現(xiàn)圓柱面的顏色漸變,需要了解OpenGL的顏色系統(tǒng)。在OpenGL中顏色系統(tǒng)采用RGB模式,該模式中每種顏色分量都是0~255,為了檢索和存儲方便,把這些整數(shù)換算成0.0~1.0之間的浮點數(shù)。使用的顏色函數(shù)為glColor3f()。
要實現(xiàn)的圓柱表面顏色依據(jù)到圓柱中心線的距離遠近依次漸變?yōu)椋杭t色-黃色-綠色-青色-藍色-紫色,距離最遠呈紅色,距離最近呈紫色。具體實現(xiàn)過程為:
(1)計算M×N個采樣點到圓柱中心軸線的距離Distance[M][N],并且記下這些點到圓柱中心軸線的距離中最近和最遠距離,用max和min表示。
(2)將max-min的值均分成5個區(qū)間段,即:[0,(max-min)/5],[(max-min)/5,2(maxmin)/5],[2(max-min)/5,3(max-min)/5],[3(max-min)/5,4(max-min)/5]及[4(maxmin)/5,max-min]。
(3)判斷Distance-min的值分別屬于哪一段區(qū)間,從小到大每段對應(yīng)的顏色漸變分別是紫到藍漸變、藍到青漸變、青到綠漸變、綠到黃漸變和黃到紅漸變。然后根據(jù)顏色漸變的線性插值法,給每個點賦予相應(yīng)顏色。
其中,判斷點具體應(yīng)該進行何種漸變的流程如圖4所示。距離差指的是Distance-min,區(qū)間1~4分別是[0,(max-min)/5],[(max-min)/5,2(max-min)/5],[2(max-min)/5,3(maxmin)/5]和[3(max-min)/5,4(max-min)/5]。
圖4 圓柱表面上的點實現(xiàn)彩色漸變的流程
以紫到藍漸變?yōu)槔?,判定若Distance的值在區(qū)間[0,(max-min)/5]中,則進行紫到藍漸變。對應(yīng)顏色漸變的線性插值法,Distance-min的最大高程值是(max-min)/5,對應(yīng)的顏色是藍色gl-Color3f(0.0,0.0,1.0),Distance-min的最小高程值是0,對應(yīng)的顏色是紫色glColor3f(1.0,0.0,1.0),則區(qū)間內(nèi)其他點的顏色就是glColor3f(1-(Distance-min)/((max-min)/5),0.0,1.0)。同理,可以根據(jù)線性插值法對屬于每個區(qū)間段的點進行相應(yīng)的顏色漸變。由此,圓柱上每一個點的顏色由于到中心軸線的距離不同,所顯示的顏色也不一樣的。
在繪制圓柱表面時,將給每個點賦予顏色的程序段放在OpenGL函數(shù)庫中繪制三角面片的語句GL_TRIANGLE_STRIP后面的每個glVertex3f()語句前,即可實現(xiàn)帶有顏色漸變的圓柱面渲染。
為了更加清晰直觀地表征圓柱表面形貌,在渲染的圓柱表面繪制圖中,同時繪制出彩虹色帶。彩虹色帶是用OpenGL函數(shù)直接繪制的帶有漸變色的帶狀圖形,圓柱表面上各個測量點的顏色與彩虹色帶中的顏色源于同一個色彩空間,并且一一對應(yīng)。帶有彩虹帶和顏色渲染的圓柱表面的顯示效果如圖5所示。
圖5 帶有漸變色和彩虹色帶的圓柱形貌渲染圖
完成面渲染后的圓柱表面形貌三維動態(tài)顯示效果不僅更加逼真,而且使觀測和評價圓柱度誤差更加容易。
利用三點法圓柱度誤差測量和分離方法,得到重構(gòu)圓柱度誤差的3個基本要素,完成了圓柱表面形狀誤差的重構(gòu),得到了要重構(gòu)的被測圓柱體形貌上所有點的坐標值。
實現(xiàn)了基于OpenGL的圓柱度形狀誤差的三維動態(tài)顯示,顯示的圓柱表面形貌隨圓柱度誤差大小而顏色漸變,不僅顯示效果更加準確、逼真,而且使評價圓柱度形狀誤差更加客觀、全面,同時對不同形貌產(chǎn)品的重構(gòu)及其三維動態(tài)顯示也具有借鑒意義。