• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

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

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

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

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

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

      如圖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)中測量點坐標(biāo)值通過網(wǎng)絡(luò)發(fā)送至上位PC機完成一次測量過程。

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

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

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

      2 仿真關(guān)鍵技術(shù)

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

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

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

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

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

      4)光柵化,及把景物模型的數(shù)學(xué)描述及色彩信息轉(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)境的設(shè)置。

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

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

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

      圖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è)標(biāo)準(zhǔn)之一。目前,幾乎所有的三維幾何造型系統(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模型文件瀏覽器,需首先建立基礎(chǔ)數(shù)學(xué)模型類以及三角面片對象類,具體步驟如下:

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

      typedef struct tagPoint3D{

      double x; //定義點的x坐標(biāo)

      double y; //定義點的y坐標(biāo)

      double z; //定義點的z坐標(biāo)

      }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個頂點的坐標(biāo)

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

      class CProbeModel{

      void DrawProbe(); //繪制測頭

      void SetPosition(); //設(shè)定測頭坐標(biāo)

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

      CPoint3D m_Position; //定義測頭坐標(biāo)

      };

      測頭測量過程實時顯示函數(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()方法改變測頭坐標(biāo)的結(jié)果。在文檔類中建立的對象在程序運行期間持久存在,得到文檔類指針后即可獲取m_Probe對象及其參數(shù);

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

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

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

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

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

      2.4 顯示理論點位置

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

      為了便于存儲和讀取,測量指導(dǎo)文件使用XML語言進行描述,包含了被測零件所有測量點的理論坐標(biāo)和測量的法矢。測量指導(dǎo)文件的格式如下所示,其中x、y、z用于描述被測點的理論坐標(biāo)值,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è)按鍵來控制視圖縮放和視角切換;第二,打開測量指導(dǎo)文件,于視圖中顯示被測點的理論位置,如圖中的藍色點所示;第三,和數(shù)控系統(tǒng)進行通訊,每測量完成一個點,圖中測頭模型就會根據(jù)測量數(shù)據(jù)對測量過程進行仿真。

      4 結(jié)束語

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

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

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

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

      猜你喜歡
      面片調(diào)用視圖
      核電項目物項調(diào)用管理的應(yīng)用研究
      初次來壓期間不同頂板對工作面片幫影響研究
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      5.3 視圖與投影
      視圖
      Y—20重型運輸機多視圖
      SA2型76毫米車載高炮多視圖
      基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
      甜面片里的人生
      幸福家庭(2016年3期)2016-04-05 03:47:08
      青海尕面片
      洛川县| 宝应县| 石景山区| 枣阳市| 读书| 黎川县| 南阳市| 麦盖提县| 陇川县| 陵川县| 岱山县| 余江县| 项城市| 荥经县| 灵台县| 乌鲁木齐县| 枞阳县| 泗水县| 赤水市| 霍城县| 福鼎市| 慈溪市| 东丰县| 新疆| 新丰县| 布拖县| 章丘市| 突泉县| 靖州| 岑溪市| 金堂县| 大悟县| 平顶山市| 钟祥市| 万源市| 宁安市| 伊通| 新郑市| 额济纳旗| 天峻县| 萍乡市|