亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于OpenGL的數(shù)控加工在線測量仿真技術研究

        2012-07-07 03:37:24唐文杰吳志軍馮平法
        圖學學報 2012年2期
        關鍵詞:面片調(diào)用視圖

        唐文杰, 吳志軍, 馮平法, 鮑 晟

        (清華大學精密儀器與機械學系,北京 100084)

        在數(shù)控加工過程中,零件每一道工序后主要檢測的手段有在線檢測和離線檢測,目前的在線檢測手段主要依靠手工檢測。手工檢測面對精度要求較高以及大型結(jié)構(gòu)件時很難滿足需求,因此離線并采用三坐標測量機進行檢測成為大多數(shù)數(shù)控加工企業(yè)的首選。但是,對于大型結(jié)構(gòu)件來說,零件一道加工工序后進行檢測到下一道加工工序的過程中,有大量工作需要完成,造成了極大的工時和設備的浪費,因此基于測頭的在線檢測技術應運而生。相對于離線測量,在線檢測具有如下優(yōu)點[1]:第一,避免二次裝夾誤差,提高加工精度;第二,節(jié)省工件重新裝卡時間,縮短生產(chǎn)周期;第三,減少昂貴的離線測量設備(如三坐標測量機)費用,節(jié)省生產(chǎn)成本。因此,大型結(jié)構(gòu)件的在線檢測技術越來越為各種加工企業(yè)所重視。

        為了使數(shù)控加工人員更加全面及時的了解在線測量的進程和檢測結(jié)果,需要對被測零件、測量點及測量結(jié)果進行實時仿真。在線測量的仿真技術是在線測量技術的重要組成部分,可以保證測量過程的穩(wěn)定性和可靠性。OpenGL是一種廣泛采用的圖形系統(tǒng)與硬件的接口,主要用來對二維和三維實體對象的繪制。它包括100多個基本的圖形操作函數(shù),封裝了大部分涉及幾何建模、消隱、光照計算等圖形處理函數(shù)。OpenGL作為一個性能優(yōu)越的圖形應用程序設計界面而廣泛適用于各種檔次的計算機環(huán)境,OpenGL已成為目前事實上的三維圖形開發(fā)標準廣泛應用于科學計算可視化、實體造型、CAD/CAM、虛擬現(xiàn)實、圖像處理等領域[2]。本文重點論述了使用OpenGL相關技術來實現(xiàn)在線測量的實時仿真技術。

        1 系統(tǒng)設計方案

        如圖1所示,在線測量硬件系統(tǒng)由3大部分構(gòu)成:測頭系統(tǒng)、數(shù)控機床以及上位PC機。測量時,機床主軸帶動測頭觸碰到工件后完成一個數(shù)據(jù)點的測量,然后通過測頭上的無線發(fā)射模塊將測量數(shù)據(jù)傳輸至與數(shù)控系統(tǒng)(NCS)相連接的無線接收天線上,并將數(shù)據(jù)鎖存于數(shù)控系統(tǒng)的存儲變量中,最后將數(shù)控系統(tǒng)中測量點坐標值通過網(wǎng)絡發(fā)送至上位PC機完成一次測量過程。

        針對以上測量過程,在線測量仿真的主要內(nèi)容為:被測零件模型顯示;測量點理論值和理論位置顯示;測量值和測頭當前位置顯示。在線測量軟件仿真系統(tǒng)實現(xiàn)架構(gòu)如圖2所示。首先,通過調(diào)用MFC和OpenGL的類庫來描述點、矢量、矩陣以及建立OpenGL環(huán)境;然后,在上述基礎上建立描述三維集合對象的類用于顯示三維模型;最后建立模型實時更新機制,軟件在接收到測頭數(shù)據(jù)后實時顯示測頭位置。圖2中,理論數(shù)據(jù)由質(zhì)量控制人員在測量前通過XML指導文件提供,作為在線測量評價的基準;測量數(shù)據(jù)由數(shù)控系統(tǒng)發(fā)送至上位機的數(shù)據(jù),圖1所示,其包含有測量點的 X、Y、Z坐標值信息;零件的 STL模型文件由CAD軟件生成,以三角面片的形式描述模型的輪廓。

        圖1 在線檢測系統(tǒng)組成圖

        圖2 在線測量仿真系統(tǒng)軟件框架

        2 仿真關鍵技術

        2.1 建立OpenGL仿真環(huán)境

        采用OpenGL技術對圖像進行顯示和操作的步驟如圖3所示,具體步驟為[3]:

        1)構(gòu)造點、線、多邊形、三維模型、圖像等幾何要素,并創(chuàng)建對象的數(shù)學描述;

        2)確定模型的色彩,同時確定光照條件、紋理映射方式等參數(shù);

        3)把景物模型放在三維空間中的合適位置,并且設置視點以觀察所需的場景;

        4)光柵化,及把景物模型的數(shù)學描述及色彩信息轉(zhuǎn)換成計算機屏幕上的像素。

        圖3 使用OpenGL進行圖形操作基本步驟

        根據(jù)此流程,建立如圖4所示的OpenGL顯示環(huán)境。其中:

        (1)CView類為 MFC的視圖基類,在MFC"文檔/視圖"架構(gòu)中,CView類是所有視圖類的基類,它提供了用戶自定義視圖類的公共接口。

        (2)COpenGLView類繼承于CView類,是管理OpenGL仿真環(huán)境的類,主要用于處理用戶和視圖之間的交互信息,在COpenGLView類中定義了COpenGLDC對象來實現(xiàn)對OpenGL渲染環(huán)境的設置。

        (3)COpenGLDC類是OpenGL的繪圖類,封裝了MFC下設置OpenGL環(huán)境和調(diào)用OpenGL函數(shù)繪制圖形的功能,在COpenGLDC類中定義了CCamera對象來實現(xiàn)對視點的操作。

        (4)CCamera類是OpenGL的取景設置類,主要通過視點變換來實現(xiàn)三維模型的取景。

        (5)COMVView類繼承于類 COpenGLView,是應用程序的視圖類,主要用于建立與視圖操作相關的方法映射。

        圖4 建立OpenGL顯示環(huán)境

        2.2 STL模型文件瀏覽

        在仿真系統(tǒng)中,被測零件的三維模型由CAD系統(tǒng)以STL(Sterolithography)文件格式提供。STL文件由3D Systems公司開發(fā),它使用三角形面片來表示三維實體模型,現(xiàn)已成為CAD/CAM系統(tǒng)接口文件格式的工業(yè)標準之一。目前,幾乎所有的三維幾何造型系統(tǒng)如 Pro-E、UG、Solidworks等都提供輸出STL文件的功能。

        如下列STL文件所示,在一個STL文件中,每一個三角面片由7行數(shù)據(jù)組成,第1行是三角面片指向?qū)嶓w外部的法向矢量數(shù)據(jù),第3、4、5行數(shù)據(jù)分別為三角面片的3個頂點信息,沿指向?qū)嶓w外部的法向矢量方向逆時針排列,如圖5所示。

        圖5 STL模型三角面片示意圖

        為了建立STL模型文件瀏覽器,需首先建立基礎數(shù)學模型類以及三角面片對象類,具體步驟如下:

        1)分別建立基于點、矢量、矩陣的基礎類CPoint3D、CVector3D、CMatrix3D 用于實現(xiàn)對點、矢量、矩陣數(shù)據(jù)結(jié)構(gòu)的描述和基本函數(shù)的建立。而實時仿真的其他功能的實現(xiàn)均建立在此基于點、矢量、矩陣類的基礎上。其中,描述點的數(shù)據(jù)結(jié)構(gòu)定義為:

        typedef struct tagPoint3D{

        double x; //定義點的x坐標

        double y; //定義點的y坐標

        double z; //定義點的z坐標

        }POINT3D, *PPOINT3D;

        描述空間矢量的數(shù)據(jù)結(jié)構(gòu)定義為:

        typedef struct tagVector3D{

        double x; //定義法矢的x分量

        double y; //定義法矢的y分量

        double z; //定義法矢的z分量

        }VECTOR3D, *PVECTOR 3D;

        描述三維齊次空間變換矩陣的數(shù)據(jù)結(jié)構(gòu)定義為:

        typedef struct tagMatrix3D{

        double A[4][4]; //定義描述矩陣的數(shù)組

        }MATRIX3D, *PMATRIX 3D;

        2)建立三角面片對象類CTriChip用于描述一個三角面片對象。此類描述了三角面片3個頂點以及法向矢量的數(shù)據(jù)結(jié)構(gòu),以及調(diào)用三角面片繪制函數(shù)的接口。描述三角面片頂點及法向矢量的數(shù)據(jù)結(jié)構(gòu)定義為:

        typedef struct tagTriChip3D{

        CPoint3D p; //定義描述三角面片3個頂點的坐標

        CVector3D v; //定義描述三角面片法矢

        }TRICHIP3D, *PTRICHIP 3D;

        調(diào)用三角面片繪制函數(shù)的接口方法為:

        void CTriChip::Draw(COpenGLDC* pDC)

        {

        pDC->DrawTriChip(v.dx,v.dy,v.dz,p[0].x,p[0].y,p[0].z,

        p[1].x,p[1].y,p[1].z,p[2].x,p[2].y,p[2].z);

        }

        3)建立STL模型類CSTLModel用于讀入STL格式文件,獲取三角面片信息,通過建立三角面片對象鏈表來組成單一的STL幾何模型,最后顯示三角面片對象鏈表以實現(xiàn)模型的三維顯示。定義TriList變量描述三角面片對象鏈表的方法為:

        CTypedPtrArray TriList;

        CTypedPtrArray為MFC中的一個模板類,可以用它來定義一個管理對象指針的數(shù)組,該模板類所定義的對象包含了所有三角面片的信息,可通過讀取該對象來顯示描述零件模型的所有三角面片。讀取STL模型文件并顯示三維模型的算法流程如圖6所示。

        圖6 讀取并顯示STL模型流程圖

        2.3 測量過程實時顯示

        在上述的基于OpenGL的STL模型瀏覽器的基礎上建立測頭實時仿真模塊,需建立一個用以描述測頭的類CProbeModel,此類包括描述測頭尺寸和位置的數(shù)據(jù)結(jié)構(gòu),以及負責操作測頭位置和繪制測頭的方法。CProbeModel類定義如下所示:

        class CProbeModel{

        void DrawProbe(); //繪制測頭

        void SetPosition(); //設定測頭坐標

        CProbeModel(); //構(gòu)造函數(shù)

        CPoint3D m_Position; //定義測頭坐標

        };

        測頭測量過程實時顯示函數(shù)調(diào)用流程如圖7所示。

        圖7 測頭仿真函數(shù)調(diào)用流程圖

        1)在視圖類COMVView的DataIn方法中將測頭數(shù)據(jù)采集上來后,使用GetDocument得到文檔類COMVDoc的指針,并調(diào)用其MoveProbe()方法;

        2)在文檔類 COMVDoc中建立 CProbe-Model類的對象 m_Probe。調(diào)用 m_Probe的SetPosition()方法改變測頭坐標的結(jié)果。在文檔類中建立的對象在程序運行期間持久存在,得到文檔類指針后即可獲取m_Probe對象及其參數(shù);

        3)運行 CProbeModel的 SetPosition()方法,將m_Position的數(shù)值更替為測頭當前坐標;

        4)程序重新進入到 COMVView 的 DataIn方法,調(diào)用Invalidate()方法以重繪窗口;

        5)重繪窗口后會調(diào)用視圖類中的 OnDraw()方法,如果應用程序視圖類COMVView沒有重寫OnDraw()方法,則會調(diào)用其父類CGLView的OnDraw()方法。調(diào)用 RenderScene()方法繪制OpenGL場景;

        6)在 COMVView 中重寫了 RenderScene()方法,程序通過 GetDocument得到文檔類COMVDoc的指針后,調(diào)用 m_Probe的 Draw()方法繪制測頭;

        7)CProbeModel的Draw()方法以上述第3步得到的測頭坐標值為位置參數(shù),通過調(diào)用繪制圓柱體和球體的函數(shù) DrawCylinder()和DrawCylinder()完成測頭的繪制。

        2.4 顯示理論點位置

        在測量開始前,需讀取包含被測點理論值的測量指導文件,用于和測量值比較評價測量結(jié)果。在讀取測量指導文件后,在線測量仿真系統(tǒng)即以三維點的形式將被測點顯示于零件模型周圍。

        為了便于存儲和讀取,測量指導文件使用XML語言進行描述,包含了被測零件所有測量點的理論坐標和測量的法矢。測量指導文件的格式如下所示,其中x、y、z用于描述被測點的理論坐標值,i、j、k用于描述被測點測量法矢的分量。

        <檢測點列表>

        <檢測點>

        <檢測點>

        .........

        顯示理論點位置的函數(shù)調(diào)用流程與2.3所述的描述測量過程實時顯示的函數(shù)調(diào)用流程相類似。其實現(xiàn)流程如圖8所示。

        圖8 理論點位置顯示實現(xiàn)流程圖

        3 仿真實例

        圖9所示為數(shù)控加工在線測量仿真系統(tǒng)軟件界面,界面頂部為功能按鈕,左側(cè)為三維顯示控制按鈕,中部為圖形顯示區(qū)域,用于顯示被測零件、測量點和測頭位置,右側(cè)為測量結(jié)果列表。

        圖9 軟件測量實例界面

        數(shù)控加工在線測量仿真系統(tǒng)的運行流程為:第一,打開STL零件模型文件,顯示模型的三維圖形,可通過點擊左側(cè)按鍵來控制視圖縮放和視角切換;第二,打開測量指導文件,于視圖中顯示被測點的理論位置,如圖中的藍色點所示;第三,和數(shù)控系統(tǒng)進行通訊,每測量完成一個點,圖中測頭模型就會根據(jù)測量數(shù)據(jù)對測量過程進行仿真。

        4 結(jié)束語

        本文探討了在 Visual C++6.0環(huán)境下使用OpenGL實現(xiàn)數(shù)控加工在線測量軟件仿真的方案。重點分析了在線測量實時仿真過程中OpenGL環(huán)境的設定,STL模型文件的讀取以及測頭的實時顯示。通過現(xiàn)場實際運行表明該仿真系統(tǒng)可以實時仿真數(shù)控加工在線檢測過程,正確顯示測量結(jié)果,該系統(tǒng)有在數(shù)控加工企業(yè)中尤其是在大型結(jié)構(gòu)件數(shù)控加工中推廣應用的價值。

        [1]何超杰, 高 健, 陳 新. 基于接觸式測頭的在線檢測關鍵技術的研究[J]. 機床與液壓, 2008, 36(2):170-173.

        [2]吳 斌, 畢麗蘊. OpenGL編程實例與技巧[M]. 北京:人民郵電出版社, 1999: 10-12.

        [3]王清輝, 王 彪. Visual C ++ CAD應用程序開發(fā)技術[M].北京: 機械工業(yè)出版社, 2003: 25-28.

        猜你喜歡
        面片調(diào)用視圖
        核電項目物項調(diào)用管理的應用研究
        初次來壓期間不同頂板對工作面片幫影響研究
        LabWindows/CVI下基于ActiveX技術的Excel調(diào)用
        測控技術(2018年5期)2018-12-09 09:04:46
        5.3 視圖與投影
        視圖
        Y—20重型運輸機多視圖
        SA2型76毫米車載高炮多視圖
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術研究
        甜面片里的人生
        幸福家庭(2016年3期)2016-04-05 03:47:08
        青海尕面片
        飲食科學(2014年10期)2014-10-29 16:58:38
        亚洲人妻精品一区二区三区| 岛国AV一区二区三区在线观看| 九九久久国产精品大片| 玩弄丝袜美腿超短裙校花| 国产亚洲精品97在线视频一| 激烈的性高湖波多野结衣| 亚洲精品中文字幕视频色| 国产免费艾彩sm调教视频| 国产特级毛片aaaaaaa高清| 久久青草免费视频| 日韩人妖一区二区三区| 久草中文在线这里只有精品| 欧洲熟妇色| 日日摸夜夜添狠狠添欧美| 国产精品18久久久久网站| 亚洲av综合色区久久精品| 男人国产av天堂www麻豆| 中文人妻无码一区二区三区在线| 日韩欧美国产亚洲中文| 国产亚洲av一线观看| 内射夜晚在线观看| 亚洲中久无码永久在线观看同| 中文字幕亚洲综合久久| 亚洲国产av一区二区四季| 人妻丰满熟妇av无码区不卡| 麻豆五月婷婷| 亚洲精品国产熟女久久久| 日韩欧美aⅴ综合网站发布| 亚洲碰碰人人av熟女天堂| 亚洲色图视频在线播放| 一本久道竹内纱里奈中文字幕 | 欧美成人午夜精品久久久| 香蕉视频免费在线| 日产国产亚洲精品系列| 又粗又大又硬毛片免费看| 国产黄色片在线观看| 自拍偷拍一区二区三区四区| 综合偷自拍亚洲乱中文字幕| 18无码粉嫩小泬无套在线观看| 一区二区三区国产97| 亚洲最近中文字幕在线|