




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第五章基于OpenGL技術(shù)的軟件系統(tǒng)設(shè)計(jì)機(jī)器人三維運(yùn)動(dòng)仿真是機(jī)器人各項(xiàng)仿真中一個(gè)很重要的組成部分。它對(duì)于驗(yàn)證機(jī)器人工作原理、工作空間及進(jìn)行碰撞檢測(cè)等都具有非常重要的指導(dǎo)意義40本章通將如何在Windows環(huán)境下使用VC+、OpenGL實(shí)現(xiàn)物體的三維實(shí)時(shí)運(yùn)動(dòng)仿真,并利用“模糊神經(jīng)網(wǎng)絡(luò)算法”來解決機(jī)械手臂到達(dá)指定環(huán)境中的某點(diǎn)位置運(yùn)動(dòng)的問題,為機(jī)械運(yùn)動(dòng)控制系統(tǒng)的三維運(yùn)動(dòng)仿真及操作控制提供了一種新的方法52。OpenGL技術(shù)的實(shí)現(xiàn)OpenGL的概述OpenGL(全稱:OpenGraphicsLibrary)是定義了一個(gè)跨編程語言、跨平臺(tái)的編程接口的規(guī)格,它用于三維圖象(二維的亦可)。OpenGL是個(gè)專
2、業(yè)的圖形程序接口,是一個(gè)功能強(qiáng)大,調(diào)用方便的底層圖形庫。OpenGL的前身是SGI公司為其圖形工作站開發(fā)的IRISGL0IRISGL是一個(gè)工業(yè)標(biāo)準(zhǔn)的3D圖形軟件接口,功能雖然強(qiáng)大但是移植性不好,于是SGI公司便在IRISGL的基礎(chǔ)上開發(fā)了OpenGLoOpenGL的英文全稱是“OpenGraphicsLibrary”,顧名思義,OpenGL便是“開放的圖形程序接口”。雖然DirectX在家用市場(chǎng)全面領(lǐng)先,但在專業(yè)高端繪圖領(lǐng)域,OpenGL是不能被取代的主角。OpenGL是與硬件無關(guān)的軟件接口,可以在不同的平臺(tái)如Windows95、WindowsNT、Unix、Linux、MacOS、OS/2之
3、間進(jìn)行移植。因此,支持OpenGL的軟件具有很好的移植性,可以獲得非常廣泛的應(yīng)用。由于OpenGL是圖形的底層圖形庫,沒有提供幾何實(shí)體圖元,不能直接用以描述場(chǎng)景。但是通過一些轉(zhuǎn)換程序,可以很方便地將AutoCAD、3DS/3DSMAX等3D圖形設(shè)計(jì)軟件制作的DXF和3DS模型文件轉(zhuǎn)換成OpenGL的頂點(diǎn)數(shù)組。在OpenGL的基礎(chǔ)上還有OpenInventor、Cosmo3D、Optimizer等多種高級(jí)圖形庫,適應(yīng)不同應(yīng)用,其中,OpenInventor應(yīng)用最為廣泛。該軟件是基于OpenGL面向?qū)ο蟮墓ぞ甙峁﹦?chuàng)建交互式3D圖形應(yīng)用程序的對(duì)象和方法,提供了預(yù)定義的對(duì)象和用于交互的事件處理模塊
4、,創(chuàng)建和編輯3D場(chǎng)景的高級(jí)應(yīng)用程序單元,有打印對(duì)象和用其它圖形格式交換數(shù)據(jù)的能力。OpenGL的發(fā)展一直處于一種較為遲緩的態(tài)勢(shì),每次版本的提高新增的技術(shù)很少,大多只是對(duì)其中部分做出修改和完善。1992年7月,SGI公司發(fā)布了OpenGL的1.0版本,隨后又與微軟公司共同開發(fā)了WindowsNT版本的OpenGL,從而使一些原來必須在高檔圖形工作站上運(yùn)行的大型3D圖形處理軟件也可以在微機(jī)上運(yùn)用。1995年OpenGL的1.1版本面市,該版本比1.0的性能有許多提高,并加入了一些新的功能。其中包括改進(jìn)打印機(jī)支持,在增強(qiáng)元文件中包含OpenGL的調(diào)用,頂點(diǎn)數(shù)組的新特性,提高頂點(diǎn)位置、法線、顏色、色彩
5、指數(shù)、紋理坐標(biāo)、多邊形邊緣標(biāo)識(shí)的傳輸速度,引入了新的紋理特性等等。OpenGL1.5又新增了“OpenGLShadingLanguage,該語言是“OpenGL2.0”的底核,用于著色對(duì)象、頂點(diǎn)著色以及片斷著色技術(shù)的擴(kuò)展功能。OpenGL2.0標(biāo)準(zhǔn)的主要制訂者并非原來的SGI,而是逐漸在ARB中占據(jù)主動(dòng)地位的3DLabSo2.0版本首先要做的是與舊版本之間的完整兼容性,同時(shí)在頂點(diǎn)與像素及內(nèi)存管理上與DirectX共同合作以維持均勢(shì)。OpenGL2.0將由OpenGL1.3的現(xiàn)有功能加上與之完全兼容的新功能所組成,如圖5-1。借此可以對(duì)在ARB停滯不前時(shí)代各家推出的各種糾纏不清的擴(kuò)展指令集做一次
6、徹底的精簡。止匕外,硬件可編程能力的實(shí)現(xiàn)也提供了一個(gè)更好的方法以整合現(xiàn)有的擴(kuò)展指令51。OpenGL三維成形過程OpenGL具有超強(qiáng)的圖形繪制能力,包括繪制物體、啟動(dòng)光照、管理位圖、紋理映射、動(dòng)畫、圖形增強(qiáng)及交互技術(shù)等功能。綜合以上功能,作為圖形硬件的軟件接口,OpenGL主要是將三維的物體投影到一個(gè)二維平面上,之后處理得到像素,進(jìn)行顯示。OpenGL首先將物體轉(zhuǎn)化為可以描述物體幾何性質(zhì)的頂點(diǎn)(Vertex)與描述圖像的像素(Pixel),在執(zhí)行一系列操作后,最終將這些數(shù)據(jù)轉(zhuǎn)化成像素?cái)?shù)據(jù)。也就是說,OpenGL是基于點(diǎn)的。在OpenGL中,無論何種情況,指令總是被順序處理。有一組頂點(diǎn)定義的圖元
7、(Pirmitive)執(zhí)行完繪制操作后,后繼圖元才能作用53。簡單的圖形生成過程如圖1.1所示。(1)對(duì)圖元的定義:圖元由一組頂點(diǎn)定義,這一組頂點(diǎn)可以是一個(gè)或是多個(gè)頂點(diǎn)。每個(gè)頂點(diǎn)信息可以是二維的也可以是三維的,可以使用24個(gè)坐標(biāo)。頂點(diǎn)信息可以由位置坐標(biāo)、顏色值、法向量、紋理坐標(biāo)組成。法線、紋理、顏色值會(huì)在處理每個(gè)頂點(diǎn)的過程中被使用和改變。紋理坐標(biāo)決定圖元上紋理圖像的映射方式;法線是用于光照計(jì)算的;顏色與顏色的變化取決于是否有光照。OpenGL將點(diǎn)、線段、多邊形等通過在函數(shù)glBegin()和glEnd()之間一系列頂點(diǎn)的數(shù)據(jù)繪制出圖形。(2)對(duì)圖元的操作:OpenGL用交換矩陣、光照、反走樣、
8、像素操作等方法控制圖元的繪制。圖元的操作處理過程結(jié)束后,只留下圖元可見部分,準(zhǔn)備進(jìn)行光柵化(投影)處理54。像素處理比較特殊:對(duì)像素、位圖、影像直接進(jìn)行像素操作,然后進(jìn)行光柵化,后者是有些數(shù)據(jù)被存儲(chǔ)在紋理中供頂點(diǎn)使用。(3)光柵化(RasterizationM程:將圖元轉(zhuǎn)化為二維圖像,完成每個(gè)圖像點(diǎn)的顏色與深度的計(jì)算,生成結(jié)果為基片(Fragment),即各圖元的二維結(jié)果。(4)基片操作:處理過程包括基片是否遮擋、測(cè)試、融合等,最后得到像素,存入顯示幀緩沖中,完成整個(gè)繪制過程。頂點(diǎn)法向顏色紋理像素頂點(diǎn)像素圖元、像素操作光柵化基本操作幀緩沖頂點(diǎn)零件加工圖5-1OpenGL圖形繪制過程基于VC+中
9、的OpenGL技術(shù)的實(shí)現(xiàn)基于OpenGL的開放性接口,利用目前流行功能強(qiáng)大的VisualC+開發(fā)環(huán)境編程,VisualC+以其與OpenGL接口的高兼容性,是的開發(fā)過程簡單易用。VC+編程平臺(tái)幾乎所有世界級(jí)的軟件,從Web瀏覽器到面向任務(wù)的企業(yè)級(jí)應(yīng)用,都是使用MicrosoftVisualC+開發(fā)系統(tǒng)來開發(fā)的。要用C+來開發(fā)Windows的高性能應(yīng)用程序,VisualC+是效率較高的首選工具之一。VisualC+作為一種程序設(shè)計(jì)語言,它同時(shí)也是一個(gè)集成開發(fā)工具,提供了軟件代碼自動(dòng)生成和可視化的資源編輯功能。本次設(shè)計(jì)采用VisualC+6.0作為開發(fā)軟件。OpenGL3D建模工具OpenGL能夠
10、建立兩種三維幾何模型。一種是線框模型.一種是表面模型。在進(jìn)行建模時(shí)任意復(fù)雜的三維實(shí)體用一個(gè)個(gè)小的多邊形面來近似表示。OpenGL的輔助庫實(shí)際上也采用了這種方式來繪制圖形。建模的關(guān)健就是設(shè)法把復(fù)雜的三維實(shí)體分解為小多邊形。OpenGL通過以下格式來定義多邊形:glBegin(GL_POl,YGoN);glVertex3f(0.0,0.0,0.0);glVertex3f(0.0,3.0,0.0);giVertex3f(3.0,3.0,0.0);glVertex3f(4.0,1.5,0.0);glVertex3f(3.0,0.0,0.0);glEnd();OpenGL的建模實(shí)質(zhì)上就是根據(jù)所給定的頂點(diǎn)
11、數(shù)據(jù)和面信息建立起各個(gè)多邊形面元,并將其存儲(chǔ)到顯示列表中,在需要時(shí)予以調(diào)用。目前較為常用的有3幾種建模方案。(1)利用OpenGL的輔助庫函數(shù)。如前所述,輔助庫也提供了一些繪制簡單實(shí)體的函數(shù),如果所要繪制的幾何形狀比較簡單可直接采用,若對(duì)于復(fù)雜的幾何形體則顯得有些力不從心。輔助庫中繪制實(shí)體的函數(shù).命令格式也限制得很死。例如,繪制圓柱體的函數(shù)。只能為沿z向伸展,且以原點(diǎn)為圓心。繪蒯這些形體雖然可只執(zhí)行一條指令??墒潜仨毥?jīng)過平移和旋轉(zhuǎn)變換后才能滿足最終要求,使建模過程變得非常繁瑣,同時(shí)也影響了系統(tǒng)的效率。(2)利用現(xiàn)有的CAD系統(tǒng)來完成建模。商品化的CAD軟件(如AutoCAD、lAGlI、Sol
12、idworks等),具有很強(qiáng)的三維建模能力。能夠用交互的方式十分方便地建立起復(fù)雜的幾何模型,用它們來輔助完成建模工作是十分合適的。關(guān)鍵是如何從幾何造型文件中提取出幾何形體數(shù)據(jù),用于OpenGL繪圖。這就需要對(duì)圖形文件的格式有深入的了解。三維建模應(yīng)用中的考慮綜合以上三種方法,對(duì)于簡單標(biāo)準(zhǔn)的實(shí)體,直接采用輔助庫函數(shù)建模;對(duì)簡單的實(shí)體如多邊形的拉伸、回轉(zhuǎn)體等則采用自定義手工建模的方法。而對(duì)于比較復(fù)雜的曲面等,則利用AutoCAD等CAD軟件繪制所需圖形在OpenGL中讀取顯示的方法。在VC+6.0開發(fā)環(huán)境下開發(fā)OpenGL應(yīng)用程序需解決OpenGL與VC+6.0窗口系統(tǒng)的接口問題,主要是為OpenG
13、L創(chuàng)建適當(dāng)?shù)膱D形操作描述表并設(shè)置正確的像素格式。此外就是要將OpenGL編程與VC+中的事件編程相結(jié)合。在VC+6.0事件處理程序中,利用OpenGL進(jìn)行圖形繪制,從而真正地將OpenGL融入到程序中,使之于程序的其他部分有機(jī)地結(jié)合成為一個(gè)整體。OpenGL的繪圖方式與Windows的一般的繪圖方式是不同的,其區(qū)別主要表現(xiàn)在以下3個(gè)方面:Windows用GDI繪圖。GDI是Windows中二維圖形的繪圖接口,GDI繪圖內(nèi)容包括點(diǎn)、線、面以及一系列繪圖筆刷等。這些繪制內(nèi)容可以輸出到屏幕內(nèi)存或打印機(jī)等設(shè)備。這種方式是在Windows的設(shè)備描述表(DevieeConiexts簡稱為DC)52中進(jìn)行的
14、。所有的Windows圖形程序中都需要申請(qǐng)一個(gè)DC并在DC中完成各種繪圖操作。OpenGL采用的是渲染描述表(RenderContext簡稱RC)繪圖。實(shí)際上,在OpenGL應(yīng)用程序中RC與DC的工作方式是相同的。對(duì)于GDI,DC存儲(chǔ)了各種圖形繪圖操作的狀態(tài)變量;而Rc中存儲(chǔ)了OpenGL所需的渲染信息如象素格式等。(3)象素格式。象素格式?jīng)Q定了子象素顏色的設(shè)置與DC和RC相關(guān)聯(lián)的輔助緩沖區(qū)象素格式的設(shè)置,其內(nèi)容是OpenGL調(diào)用與Windows繪制操作之間的中間轉(zhuǎn)換設(shè)置。因此要在Windows環(huán)境下實(shí)現(xiàn)OpenGL函數(shù)功能,就必須先設(shè)置象素格式。OpenGL為windows提供了一系列處理象
15、素格式的函數(shù),這些函數(shù)是:ehoosePixelFormat用來比較傳過來的象素格式描述和OpenGL支持的象素格式,返回一個(gè)最佳匹配的象素格式索引:setPixelFormat,用格式索引來設(shè)置DC的象素格式,另外OpenGL窗口風(fēng)格必須包含wsCLIPCHILDREN和wsCLIPSIBLINGS類型,否則設(shè)置失敗。在VC+6.0可以編寫只有一個(gè)窗口需要繪制的單文檔程序和多個(gè)窗口需要繪制的多文檔程序。在本文中只需要一個(gè)窗口來繪制機(jī)械手模型,所以采用單文檔模式?;趩挝臋n的OpenGL圖形程序框架的基本步驟如下:(1)設(shè)置編程環(huán)境為了能夠使用即OpenGL命令,首先需要在預(yù)編譯頭文件STDA
16、FX.H中添加:#includegl/gl.h、#includegl/glu.h、#includegl/glaux.h,這樣預(yù)編譯頭文件才能提供對(duì)OpenGL庫和用戶庫的支持34。還應(yīng)當(dāng)通過Project菜單下的“Settings”選項(xiàng)在Link選項(xiàng)卡中鏈接以下庫:OPENGL32.LIB、GLU32.LIB以及GLAUX.LIB。(2)建立程序框架新建一個(gè)基于單文檔的工程,利用MFCClasswizard添力口消息WMCREATE、WMDESTROY、WMSIZE和WMTIMER的響應(yīng)函數(shù)。按OpenGL的要求設(shè)置好窗口的屬性和風(fēng)格,并設(shè)置好顯示的象素格式。在PreCreateV石ndow函
17、數(shù)中設(shè)置視窗口為具有WSCLIPCHILDREN和wsCUPSIBLINGS風(fēng)格的窗口,以保證成功地設(shè)置像素格式。在setupPixelFormat函數(shù)中設(shè)置象素格式:PIXELFORMATDESCRIPTORPfd=sizeof(PixELFoRMATDEseRToR)/pfd結(jié)構(gòu)的大小1,PFD_DRAW_TO_WINDOW,PFD_SUPPORT_OPENGL,PFD_DOUBLEBUFFER,PFD_TYPE_RGBA,24,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,PFD_MAIN_PLANE,0,0,0,0/支持在窗口中繪圖/支持OpenGL/雙緩存模式/R
18、GBA顏色模式/24位顏色深度/忽略顏色位/沒有非透明度緩存/忽略移位位/無累加緩存/忽略累加位/32位深度緩存/無模板緩存/無輔助緩存/主層/保留/忽略層,可見性和損毀掩模/版本號(hào);一般說來上述象素結(jié)構(gòu),需要用戶改動(dòng)的地方較少,最有可能改動(dòng)的就是PFD_DOUBLEBUFFER,這個(gè)參數(shù)的意義是支持雙緩存機(jī)制,若要用OpenGL實(shí)現(xiàn)動(dòng)畫,則必須選擇此參數(shù)。在結(jié)構(gòu)pfd(PixelFormatDescriptor)定義完之后,調(diào)用ChoosepixelFormat確定pfd結(jié)構(gòu)是否存在。若返回值為TRUE,則調(diào)用函數(shù)setPixelFormat為DC設(shè)置象素格式。(3)獲得Windows設(shè)備描
19、述表,然后為其設(shè)置象素格式,并與的渲染描述表聯(lián)系起來。在InitializeOPenoL中關(guān)聯(lián)DC和RC。M_pDC=pDC:獲取Windows設(shè)備描述表;SetUppixelFormat():為DC設(shè)置象素格式;M_hRC二wglCreateContext(m_pDC->GetsafeHde(),用設(shè)置好象素格式的DC來創(chuàng)建OpenGL的M_hRC:wglMakeCurrent(M_pDC->GetsafeHdc(),M_hRC),該函數(shù)把RC和DC相連接起來,并且通過該函數(shù),應(yīng)用程序可以隨時(shí)連接到一個(gè)不同的RC。另外,釋放RC也可通過該函數(shù)來完成。(4)調(diào)用OpenGL命令進(jìn)行
20、圖形繪制。在RendersceneS數(shù)中進(jìn)行圖形繪制和控制。SwapBuffers(m_pDC->GetSafeHdc():該函數(shù)是Win32API提供的一個(gè)用于OpenGL的函數(shù)。當(dāng)OpenGL使用雙緩存技術(shù)以支持動(dòng)畫顯示時(shí),需要使用該函數(shù)將在BackBuffer上繪制的場(chǎng)景交換到FrontBuffer中顯示,SwapBuffers()需要與圖形操作描述表相聯(lián)的設(shè)備描述表句柄作為參數(shù)。在該函數(shù)之后可以編寫控制過程的函數(shù)。(5)退出程序,在onDestroy函數(shù)中釋放DC和RC。wglMakeCurrent(hDC,NULL):釋放繪制描述表;wglDeleteContext(hRC):
21、刪除繪制描述表;ReleaseDC(hwin,hDC):釋放設(shè)備描述表53。完成上述操作后,基于OpenGL的開發(fā)平臺(tái)就創(chuàng)建好了?;赪INDriver的USB驅(qū)動(dòng)開發(fā)在當(dāng)前較為流行的驅(qū)動(dòng)開發(fā)工具有:Windrver、WINDDK、DRIVERSTDIO等,其中Windriver具有簡潔高效、不涉及操作系統(tǒng)底層編程并且具有很好的兼容性的特點(diǎn)56。只要掌握一種編程語言、熟悉相應(yīng)設(shè)備的工作機(jī)制,任何人都能在短時(shí)間內(nèi)利用Windriver開發(fā)出令人滿意的設(shè)備驅(qū)動(dòng)。這是因?yàn)閃indrver把所有繁雜的底層操作都封裝在一個(gè)內(nèi)核模塊中,而提供給用戶標(biāo)準(zhǔn)的WindriverAPI函數(shù)來實(shí)現(xiàn)硬件訪問。如此則將
22、驅(qū)動(dòng)開發(fā)的繁雜工作變成了僅僅是調(diào)用硬件操作的標(biāo)準(zhǔn)API函數(shù),大大的簡化了驅(qū)動(dòng)開發(fā)者的工作、加快了開發(fā)周期。而且它支持包括Windows系列、WindowsCE、Linux和Solars等多種操作系統(tǒng)。同時(shí)可以利用多種集成開發(fā)環(huán)境和編程語言來實(shí)現(xiàn),支持的集成開發(fā)環(huán)境包括VB、VC、Delphi和C+Builder等,編程語言包括C、Pascal和Basic等57。在同類工具中,Windriver在這方面具有明顯的優(yōu)勢(shì)。Windriver開發(fā)設(shè)備驅(qū)動(dòng)的一般方法是:在配置并安裝好設(shè)備之后,用戶可以打開Windriver的驅(qū)動(dòng)向?qū)riverWizard,首先在向?qū)е信渲迷O(shè)備資源,包括I/O地址范圍,
23、如有必要還可以設(shè)置內(nèi)存、寄存器地址范圍以及用到的中斷口;然后用戶可以對(duì)設(shè)備進(jìn)行一些測(cè)試操作,檢驗(yàn)硬件的有效性;設(shè)置完成之后,用戶可以選擇一種特定的開發(fā)環(huán)境或編程語言,讓W(xué)indriver根據(jù)用戶的先前設(shè)置生成一個(gè)相應(yīng)開發(fā)環(huán)境下的設(shè)備驅(qū)動(dòng)樣本。用戶可以直接利用驅(qū)動(dòng)樣本中的標(biāo)準(zhǔn)WindriverAPI函數(shù)來實(shí)現(xiàn)對(duì)硬件的操作和訪問58。而API函數(shù)實(shí)際上要通過Windrivrer的內(nèi)核模塊才能實(shí)現(xiàn)硬件訪問,其結(jié)構(gòu)框架如圖一所示。這屬于用戶模式的驅(qū)動(dòng)程序,一般情況下此種模式便已夠用。如果用戶模式驅(qū)動(dòng)的性能不能滿足實(shí)際需要,效率不夠高,用戶可以在此基礎(chǔ)上開發(fā)內(nèi)核模式的驅(qū)動(dòng)(KernelPlugIn)。內(nèi)
24、核模式59的驅(qū)動(dòng)性能一般要優(yōu)于用戶模式的驅(qū)動(dòng),只是其開發(fā)過程稍微復(fù)雜一點(diǎn)。具體如何利用Windriver開發(fā)USB驅(qū)動(dòng)包括以下步驟60:(1)配置并安裝設(shè)備到PC機(jī);(2)運(yùn)行DriverWizard,配置設(shè)備資源,并完成設(shè)備測(cè)試;(3)選擇驅(qū)動(dòng)開發(fā)環(huán)境,利用DriverWizard產(chǎn)生相應(yīng)的設(shè)備驅(qū)動(dòng)樣本;(4)在相應(yīng)的開發(fā)環(huán)境中,移植驅(qū)動(dòng)樣本中的API函數(shù)代碼,并編寫具體的功能代碼,建立用戶模式的驅(qū)動(dòng)程序;(1)動(dòng)態(tài)加載Windriver的內(nèi)內(nèi)核模塊;(2)打包發(fā)布驅(qū)動(dòng)程序。用戶所寫代碼Windriver代碼用戶級(jí)驅(qū)罰”(EXEorDLL)i用戶模式WinDriverAPI函數(shù)(Windrv
25、r.h)內(nèi)核級(jí)驅(qū)動(dòng)(SYSorVXD)用戶內(nèi)核函數(shù)WinDriver(SYSorVXD)內(nèi)核嵌入用戶驅(qū)動(dòng)代碼圖5-2Windriver結(jié)構(gòu)框本系統(tǒng)使用Windriver配合VC+6.0開發(fā)USBD12的驅(qū)動(dòng),編譯發(fā)布后包含“My_USBDriver.inf”和“My_USBDriver.sys”兩個(gè)文件,其具體操作不再敘述。軟件系統(tǒng)的設(shè)計(jì)通過上述關(guān)鍵設(shè)計(jì)技術(shù),使用VC+設(shè)計(jì)了本控制系統(tǒng)軟件。軟件設(shè)計(jì)的主題思想是模塊化設(shè)計(jì),將各需要的模塊打包設(shè)計(jì),使用dll動(dòng)態(tài)程序鏈接庫的模式調(diào)用,具軟件結(jié)構(gòu)圖如圖5-3所示。從圖中可以看出,本軟件一共使用了4條線程,分別為USB通訊線程、OPEGL三維模型線程
26、、用于操作界面線程、推理線程,各個(gè)線程采用Windows消息隊(duì)列的形式實(shí)現(xiàn)數(shù)據(jù)的交互,USB線程負(fù)責(zé)采集數(shù)據(jù)后交與交與推理線程計(jì)算控制電壓角度,同時(shí)采集的位置信息交與OpenGL線程繪制三維圖形,在用戶更改參數(shù)后,用戶界面操作線程將數(shù)據(jù)交與推理機(jī)制或者USB通訊線程。使用Windows線程技術(shù),有效的防止了消息沖突和誤處理,提高了數(shù)據(jù)交互速度底層物理硬件通訊事件機(jī)制物理硬件機(jī)器手臂物理模型參數(shù)模糊神經(jīng)網(wǎng)絡(luò)模型m推理線程Wess:POWER_INIT_USB():USBPOINT1Read():USBPOINT1Read():USBPOINT2Read():USBPOINT3Read()USB通
27、訊線程用戶界面線程用戶編程文本ndowsepip*excut_Pos()arm1_Pos()arm2_Pos()arm3_Pos()arm4_Pos()arm5_Pos()基于OPENGL機(jī)器人模型線程物理硬件圖5-3軟件設(shè)計(jì)結(jié)構(gòu)框圖通過上述設(shè)計(jì)出系統(tǒng)軟件界面如圖5-4所示。).070圖5-4系統(tǒng)軟件界面圖圖5-5關(guān)鍵操作對(duì)話框該軟件的使用方式如下:(1)連接六自由度機(jī)器手臂電氣線纜;(2)檢查各個(gè)連接部件是否完好,通電;(3)插入U(xiǎn)SB六自由度控制系統(tǒng);(4)打開軟件,此時(shí)軟件將自動(dòng)檢測(cè)是否有設(shè)備連接,如果設(shè)備連接良好,則在會(huì)在連接狀態(tài)上顯示“設(shè)備已連接”,如果設(shè)備斷線,則顯示“設(shè)備離線”,
28、此時(shí)需要檢查線路后重新連接USB電纜,然后點(diǎn)擊“刷新設(shè)備連接”;(5)點(diǎn)擊“操作控制區(qū)”中的“設(shè)備歸零位”,此時(shí)手臂的各個(gè)關(guān)節(jié)將運(yùn)動(dòng)起來,自動(dòng)找到設(shè)備0點(diǎn);(6)編寫控制程序a)在“程序控制”界面中,選擇“新建”控制文件。此時(shí)將有文本框?qū)@示“000START'、“空行”、“001END”;b)在基本運(yùn)動(dòng)中選取基本控制,如選取“S軸旋轉(zhuǎn)”,將出現(xiàn)圖5-5對(duì)話框,旋轉(zhuǎn)“左旋”、“0-60”度、中速后確定,文本控制將顯示“000START”、“001L1B-L-ZS60”、“空行”、“002END”;c)如此選取其他軸的運(yùn)動(dòng),和運(yùn)動(dòng)之間穿插上述完成后執(zhí)行下面程序指令、延時(shí)執(zhí)行以下指令等,具
29、體指令表見表5-1所示;(8)點(diǎn)擊“運(yùn)行”、或“演示”按鈕。(9)同時(shí)觀察三維窗口中或機(jī)械手臂的運(yùn)行狀態(tài)。表5-1六自由度機(jī)器手臂偽碼指令表指令名稱偽碼1號(hào)關(guān)節(jié)旋轉(zhuǎn)L1B12號(hào)關(guān)節(jié)旋轉(zhuǎn)L2B3號(hào)關(guān)節(jié)旋轉(zhuǎn)L3B4號(hào)關(guān)節(jié)旋轉(zhuǎn)L4B5號(hào)關(guān)節(jié)旋轉(zhuǎn)L5B6號(hào)關(guān)節(jié)抓取L6B左旋或+旋L左旋或-旋R下筆旋轉(zhuǎn)LB當(dāng)前轉(zhuǎn)動(dòng)范圍NS原點(diǎn)轉(zhuǎn)動(dòng)范圍ZS爪抓取力度GN爪松開RN開始START結(jié)束END延時(shí)T(n)2等待執(zhí)行W跳轉(zhuǎn)2JP(n)21、左右指令編寫為在英文狀態(tài)下使用,半角;2、T(n)中n表示延時(shí)時(shí)間長短,單位為ms;JP(n)中n表示跳轉(zhuǎn)指令編號(hào);3、表格中所有指令為專用語言,不具備其他任何語言的意義;機(jī)器
30、手臂性能測(cè)試與分析性能測(cè)試通過對(duì)末端執(zhí)行器手爪握力、手臂伸展運(yùn)動(dòng)過程中帶負(fù)載、不帶負(fù)載的重復(fù)定位進(jìn)行了測(cè)試。在測(cè)試過程中,將都以水平面作為運(yùn)動(dòng)區(qū)域平面伸展范圍分析,測(cè)試如下進(jìn)行。(1)末端執(zhí)行器-手爪握力測(cè)試通過對(duì)末端執(zhí)行器手爪受力標(biāo)定后,在手爪上安裝一個(gè)經(jīng)過標(biāo)定的認(rèn)證的20Kg測(cè)力傳感器,經(jīng)由軟件控制手爪的握力,每次握住十分鐘后張開爪,繼而增加握力,如此反復(fù)。握力每次增加1Kg,手臂姿態(tài)為垂直水平面。經(jīng)過測(cè)試后,其實(shí)驗(yàn)數(shù)據(jù)見表5-2。表5-2手爪握力測(cè)試末端執(zhí)行器狀態(tài)間隔時(shí)間(分鐘)測(cè)量值握緊1Kg101Kg松開100Kg握緊2Kg102Kg松開100Kg握緊3Kg103Kg松開100Kg握緊4Kg104Kg松開140Kg握緊5Kg105Kg松開200Kg握緊6Kg106Kg松開OO0.05Kg握緊7Kg
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 內(nèi)窺鏡柜市場(chǎng)分析:預(yù)計(jì)2031年全球市場(chǎng)銷售額將達(dá)到2.04億美元
- ESG與央國企月度報(bào)告:5月ESG央國企策略超額收益為1.23%
- 初中思想品德教師工作總結(jié)
- 《電力信息系統(tǒng)網(wǎng)絡(luò)安全等級(jí)保護(hù)測(cè)評(píng)報(bào)告評(píng)審指南》(征求意見稿)
- 工業(yè)互聯(lián)網(wǎng)NFV虛擬化網(wǎng)絡(luò)在智能工廠中的實(shí)踐案例分析
- 藝術(shù)培訓(xùn)平臺(tái)用戶體驗(yàn)優(yōu)化與市場(chǎng)競爭力提升報(bào)告
- 四季變換食品飲料行業(yè):飲料市場(chǎng)發(fā)展趨勢(shì)與競爭格局分析
- 物聯(lián)網(wǎng)技術(shù)概論 習(xí)題與答案
- 智能垃圾分類在2025年商業(yè)綜合體運(yùn)營中的應(yīng)用研究報(bào)告
- 交通流量預(yù)測(cè)在智慧交通系統(tǒng)中的多尺度建模與仿真報(bào)告2025
- 煙草公司設(shè)施安裝施工方案
- 解毒藥及機(jī)理(動(dòng)物藥理學(xué)課件)
- 新修訂《土地管理法》考試題庫及答案
- 小老虎過生日
- 2023-2024學(xué)年廣西壯族自治區(qū)南寧市小學(xué)語文六年級(jí)期末深度自測(cè)試卷詳細(xì)參考答案解析
- 注塑混料記錄表
- 國開《學(xué)前兒童語言教育活動(dòng)指導(dǎo)》形考1-4試題及答案
- 2023年住院醫(yī)師規(guī)范化培訓(xùn)-住院醫(yī)師規(guī)范化培訓(xùn)(口腔內(nèi)科)考試上岸提分歷年高頻考題答案
- ???023綜合安防工程師認(rèn)證試題答案HCA
- 2023年中山市軌道交通有限公司招聘筆試題庫及答案解析
- 濁度儀使用說明書
評(píng)論
0/150
提交評(píng)論