摘 要:將Matlab軟件的虛擬現(xiàn)實(shí)工具箱、M編程語(yǔ)言與VRML技術(shù)相結(jié)合,開(kāi)發(fā)出一種能夠?qū)Ω黝?lèi)常用凸輪機(jī)構(gòu)進(jìn)行虛擬設(shè)計(jì)的系統(tǒng)。該系統(tǒng)通過(guò)簡(jiǎn)潔的圖形用戶(hù)界面,能夠?yàn)橛脩?hù)提供各種常用凸輪的參數(shù)化設(shè)計(jì)、三維造型和虛擬運(yùn)動(dòng)仿真,并具有輔助參數(shù)優(yōu)化、性能分析、圖文數(shù)據(jù)輸出等功能,同時(shí)用戶(hù)還可以對(duì)實(shí)時(shí)生成的凸輪機(jī)構(gòu)虛擬場(chǎng)景進(jìn)行交互操作,控制仿真進(jìn)程。實(shí)踐表明,運(yùn)用該方法開(kāi)發(fā)的虛擬設(shè)計(jì)系統(tǒng),能合理地利用VRML和MATLAB各自的優(yōu)點(diǎn),大大降低開(kāi)發(fā)的難度和強(qiáng)度,縮短開(kāi)發(fā)時(shí)間。
關(guān)鍵詞:VRML MATLAB 面向?qū)ο缶幊?凸輪機(jī)構(gòu) 虛擬設(shè)計(jì)
引言
凸輪機(jī)構(gòu)是重要的傳動(dòng)機(jī)構(gòu),廣泛應(yīng)用于各種機(jī)械產(chǎn)品,其設(shè)計(jì)和制造一直是機(jī)構(gòu)學(xué)的熱點(diǎn)。MAT—LAB自從6.1版本后集成了虛擬現(xiàn)實(shí)工具箱(VirtualRealityToolbox),可對(duì)由VRML技術(shù)生成的虛擬場(chǎng)景進(jìn)行可視化操作和交互控制,為虛擬設(shè)計(jì)的實(shí)現(xiàn)提供了一種新的可能。作者通過(guò)對(duì)MATLAB軟件、虛擬現(xiàn)實(shí)建模語(yǔ)言(VRML)、虛擬設(shè)計(jì)系統(tǒng)和凸輪機(jī)構(gòu)進(jìn)行深入研究后,產(chǎn)生了將MATLAB與VRML相結(jié)合來(lái)開(kāi)發(fā)凸輪機(jī)構(gòu)虛擬設(shè)計(jì)系統(tǒng)的構(gòu)想,建立了凸輪機(jī)構(gòu)的虛擬設(shè)計(jì)系統(tǒng)框架,開(kāi)發(fā)出了一種能夠?qū)Ω黝?lèi)常用凸輪機(jī)構(gòu)進(jìn)行虛擬設(shè)計(jì)的系統(tǒng)。
1 基本技術(shù)介紹
本軟件在wind0ws2o0O/NT平臺(tái)下,采用MATLAB所提供的M語(yǔ)言進(jìn)行編程,以VRML技術(shù)實(shí)現(xiàn)凸輪機(jī)構(gòu)的三維造型,并通過(guò)MATLAB的虛擬現(xiàn)實(shí)工具箱所提供的接口來(lái)實(shí)現(xiàn)對(duì)虛擬場(chǎng)景的交互和仿真。
1.1 虛擬現(xiàn)實(shí)與VRML技術(shù)
虛擬現(xiàn)實(shí)(Virtual Reality)是指綜合利用計(jì)算機(jī)圖形系統(tǒng)和各種顯示、控制等接口設(shè)備生成的給人多種感官刺激和交互性操作的虛擬環(huán)境(Virtual Environ—ment),是一種高級(jí)的人機(jī)交互系統(tǒng)。虛擬現(xiàn)實(shí)具有多感知性(Multi—Sensory)、沉浸感(Immersion)、交互性(Interaction)、自主性(Autonomy)等特點(diǎn),符合人們自然交互的習(xí)慣,是虛擬設(shè)計(jì)的基礎(chǔ)。
VRML(虛擬現(xiàn)實(shí)建模語(yǔ)言,Virtual Reality ModelingLanguage)是SGI公司開(kāi)發(fā)的一種3D造型和渲染的圖形描述性語(yǔ)言,1997年12月被國(guó)際標(biāo)準(zhǔn)化組織ISOJYCI/SC24委員會(huì)認(rèn)定為國(guó)際標(biāo)準(zhǔn)(ISO/IEC 14772一l:1997)。VRML是一種基于文本、描述圖形的三維造型和渲染的語(yǔ)言,在創(chuàng)建虛擬場(chǎng)景方面比任何編程語(yǔ)言都簡(jiǎn)單。它通過(guò)節(jié)點(diǎn)(Node)定義了3D應(yīng)用中大多數(shù)概念,如光源、視點(diǎn)、幾何形體、霧、材質(zhì)屬性和紋理映射等,具有交互功能強(qiáng)、平臺(tái)無(wú)關(guān)性、源代碼開(kāi)放、體積小、通用性強(qiáng)等特點(diǎn)。VRML提供了6+1個(gè)自由度,可以沿著3個(gè)方向移動(dòng)和旋轉(zhuǎn),同時(shí)還可以建立與其它三維空間的超鏈接。
1.2 MA rLAB及其虛擬現(xiàn)實(shí)工具箱
MATLAB是美國(guó)MathWorks公司開(kāi)發(fā)的用于教育、工程與科學(xué)計(jì)算的軟件產(chǎn)品,是國(guó)際控制界公認(rèn)的標(biāo)準(zhǔn)計(jì)算軟件。MATLAB主要由MATLAB 主程序、Simulink動(dòng)態(tài)仿真系統(tǒng)和功能各異的MATLAB工具箱(Toolbox)3大部分組成。其中主程序包括了MATLAB語(yǔ)言(M語(yǔ)言)、開(kāi)發(fā)環(huán)境、圖形句柄、數(shù)學(xué)函數(shù)庫(kù)和應(yīng)用程序接口5個(gè)部分;Simulink是一個(gè)用來(lái)對(duì)動(dòng)態(tài)系統(tǒng)進(jìn)行建模、仿真和分析的軟件包,具有直觀(guān)、方便、靈活等優(yōu)點(diǎn);MATLAB工具箱是MATLAB軟件在使用的過(guò)程中根據(jù)不同專(zhuān)業(yè)領(lǐng)域的特殊需要而用M語(yǔ)言編寫(xiě)的一些M文件的集合,以方便地解決本領(lǐng)域內(nèi)常見(jiàn)的問(wèn)題。目前MATLAB已擁有了50多個(gè)工具箱和功能模塊,能夠解決許多專(zhuān)業(yè)領(lǐng)域的問(wèn)題,同時(shí)這些工具箱在MATLAB環(huán)境中可以相互調(diào)用,從而極大地?cái)U(kuò)展了MATLAB在各領(lǐng)域內(nèi)的能力。
MATLAB在6.1版以后便集成了虛擬現(xiàn)實(shí)工具箱(Virtual Reality Tolbox),將MATLAB和Simulink的能力拓展到了虛擬現(xiàn)實(shí)圖形。使用標(biāo)準(zhǔn)的VRML技術(shù),就可以通過(guò)MATLAB和Simulink環(huán)境生成三維場(chǎng)景:虛擬現(xiàn)實(shí)工具箱提供了靈活的與虛擬現(xiàn)實(shí)世界相連的MATLAB接口,通過(guò)這些接口,可以方便地完成對(duì)虛擬場(chǎng)景中各節(jié)點(diǎn)的控制,從而為MATLAB能在一個(gè)三維虛擬現(xiàn)實(shí)環(huán)境中進(jìn)行可視化操作和與動(dòng)態(tài)系統(tǒng)進(jìn)行交互提供了一種有效的解決方案。
本文所用MATLAB為6.5.1版,相應(yīng)的Simulink版本為5.1版,虛擬現(xiàn)實(shí)工具箱為Virtual Reality rbolbox 3.1:
2 軟件的設(shè)計(jì)思想
本虛擬設(shè)計(jì)系統(tǒng),集成有各類(lèi)常用凸輪的工作曲面數(shù)據(jù)點(diǎn)的生成;三維圖形建模、顯示、觀(guān)察、控制;凸輪機(jī)構(gòu)的運(yùn)動(dòng)模擬;凸輪機(jī)構(gòu)的性能分析;用戶(hù)與虛場(chǎng)景的動(dòng)態(tài)交互操作;壓力角、曲率及優(yōu)化分析;數(shù)據(jù)可視化、設(shè)計(jì)結(jié)果保存及系統(tǒng)幫助等一系列功能。系統(tǒng)開(kāi)發(fā)的最基本的設(shè)計(jì)思想在于利用相對(duì)成熟的MATLAB和VRML各自的功能和特長(zhǎng),來(lái)降低虛擬設(shè)計(jì)系統(tǒng)實(shí)現(xiàn)的難度,簡(jiǎn)化虛擬設(shè)計(jì)系統(tǒng)實(shí)現(xiàn)的過(guò)程,縮短系統(tǒng)開(kāi)發(fā)周期。系統(tǒng)設(shè)計(jì)總體上遵循面向?qū)ο蟮脑O(shè)計(jì)思想,采用模塊化的設(shè)計(jì)方法,并采用MATLAl~所提供的面向?qū)ο缶幊谭绞降母呒?jí)語(yǔ)言——M語(yǔ)言來(lái)編程實(shí)現(xiàn):
在程序?qū)崿F(xiàn)時(shí),利用MATLAB中有關(guān)的計(jì)算、圖形函數(shù),實(shí)現(xiàn)系統(tǒng)在數(shù)值計(jì)算及可視化方面的功能;利用MATLAB的圖形用戶(hù)界面(GU)技術(shù),開(kāi)發(fā)用戶(hù)與系統(tǒng)交互的人機(jī)界面;通過(guò)編程實(shí)時(shí)生成VRML場(chǎng)景文件;利用VRML的三維造型和圖形渲染功能實(shí)現(xiàn)系統(tǒng)的三維圖形及交互控制功能;利用MATLAB中的simli~仿真模型及虛擬現(xiàn)實(shí)工具箱中的有關(guān)接口函數(shù),實(shí)現(xiàn)凸輪機(jī)構(gòu)在虛擬場(chǎng)景中的動(dòng)態(tài)仿真。
3 系統(tǒng)的功能模塊
本系統(tǒng)共含有啟動(dòng)模塊、主界面模塊、參數(shù)錄入模塊、運(yùn)動(dòng)規(guī)律模塊、優(yōu)化分析模塊、參數(shù)校核模塊、虛擬原型生成模塊、仿真模型模塊等8個(gè)功能模塊,每個(gè)功能模塊將通過(guò)所包含的程序完成預(yù)定的功能,各功能模塊說(shuō)明如下:
啟動(dòng)模塊 本模塊由系統(tǒng)啟動(dòng)程序camvdstart.Ill組成。該程序主要以基于命令行的方式來(lái)構(gòu)建一個(gè)系統(tǒng)啟動(dòng)的歡迎界面,并將系統(tǒng)的開(kāi)發(fā)單位及版權(quán)等信息反應(yīng)到該界面上。
主界面模塊 主界面模塊由程序camvirtualde—sign.Ill構(gòu)成,它和參數(shù)錄入模塊中的有關(guān)程序一起運(yùn)行,構(gòu)成用戶(hù)與系統(tǒng)交互的凸輪機(jī)構(gòu)虛擬設(shè)計(jì)的主界面:與啟動(dòng)程序類(lèi)似,camvirtualdesign.Ill也主要是以基于命令行的方式來(lái)構(gòu)建圖形用戶(hù)界面,它提供了用戶(hù)與系統(tǒng)交互界面的基本框架,也是系統(tǒng)調(diào)用和管理其它模塊的基本模塊?;诜奖阌脩?hù)使用、窗口設(shè)置精要的思想,該模塊通過(guò)加強(qiáng)共用、實(shí)時(shí)刷新等方法和技術(shù),將各類(lèi)凸輪機(jī)構(gòu)設(shè)計(jì)的交互界面都集中在一個(gè)主界面上,用戶(hù)只需在主界面上操作即可完成各類(lèi)凸輪機(jī)構(gòu)的設(shè)計(jì)、分析和仿真全過(guò)程,從而大大減少了人機(jī)界面窗口,保證了系統(tǒng)界面的簡(jiǎn)潔,方便了用戶(hù)的使用參數(shù)錄入模塊 該模塊根據(jù)不同的凸輪機(jī)構(gòu)類(lèi)型提供相應(yīng)的參數(shù)錄入界面,以完成凸輪機(jī)構(gòu)的各項(xiàng)參數(shù)輸入。該功能模塊包含有多個(gè)子程序模塊,每個(gè)子程序?qū)a(chǎn)生一個(gè)圖形界面,顯示在主界面模塊提供的“凸輪機(jī)構(gòu)參數(shù)錄入?yún)^(qū)”內(nèi)。各子程序提供的界面之間存在著關(guān)聯(lián)設(shè)置,同一時(shí)間只能調(diào)用某一子程序,即只能顯示一種子程序所提供的界面,之前調(diào)用的子程序所提供的界面將被清除。
運(yùn)動(dòng)規(guī)律模塊 本模塊由運(yùn)動(dòng)規(guī)律子程序movementrule.Ill來(lái)實(shí)現(xiàn)其功能。該程序通過(guò)s~tch⋯case結(jié)構(gòu)語(yǔ)句收錄了常用的l6種運(yùn)動(dòng)規(guī)律的位移、速度、加速度和躍度無(wú)因次表達(dá)式,當(dāng)該程序被調(diào)用時(shí),程序通過(guò)傳遞過(guò)來(lái)的運(yùn)動(dòng)規(guī)律標(biāo)識(shí)符的值,運(yùn)行計(jì)算相應(yīng)的運(yùn)動(dòng)規(guī)律各無(wú)因次表達(dá)式的值并將其返回給調(diào)用函數(shù)或工作空間(Workspace)。
優(yōu)化分析模塊該模塊由一些與各凸輪機(jī)構(gòu)類(lèi)型相對(duì)應(yīng)的優(yōu)化分析子程序組成。這些子程序針對(duì)不同類(lèi)型凸輪機(jī)構(gòu)需要進(jìn)行優(yōu)化分析的內(nèi)容,通過(guò)相應(yīng)的數(shù)學(xué)表達(dá)式計(jì)算分析,而后通過(guò)可視化命令函數(shù)plot在綜合顯示區(qū)以圖形的方式顯示出來(lái)。用戶(hù)通過(guò)配合
使用通用按鈕區(qū)內(nèi)的有關(guān)按鈕,對(duì)綜合顯示區(qū)內(nèi)的圖形進(jìn)行操作、觀(guān)察和分析,以幫助選擇比較理想的有關(guān)參數(shù)。
參數(shù)校核模塊 參數(shù)校核模塊用于對(duì)各類(lèi)凸輪機(jī)構(gòu)的壓力角和曲率半徑進(jìn)行檢查校核,以確保凸輪機(jī)構(gòu)的有關(guān)性能。由于各類(lèi)凸輪機(jī)構(gòu)需校核的參數(shù)不盡相同,各校核的表達(dá)式也不盡相同,所以該模塊也包含有若干個(gè)不同的子程序。
虛擬原型生成模塊 虛擬原型生成模塊是系統(tǒng)的重要功能模塊,它包含有數(shù)種子程序,分別用“等轉(zhuǎn)角法”計(jì)算各類(lèi)凸輪機(jī)構(gòu)的工作曲面的空間坐標(biāo)值,而后根據(jù)一定的約束關(guān)系自動(dòng)生成相應(yīng)的凸輪和從動(dòng)件的虛擬原型VRML文件,并配以一定的背景、燈光、視點(diǎn)和場(chǎng)景信息,構(gòu)成一個(gè)完整的凸輪機(jī)構(gòu)虛擬場(chǎng)景VRML文件。該功能模塊是本系統(tǒng)實(shí)現(xiàn)三維可視化和虛擬動(dòng)態(tài)仿真的基礎(chǔ)。實(shí)現(xiàn)時(shí),軟件用多面體的邊界表示法來(lái)定義和存儲(chǔ)凸輪的形體信息。這樣,通過(guò)各凸輪機(jī)構(gòu)的數(shù)據(jù)模型求出凸輪工作輪廓曲線(xiàn)的空間坐標(biāo)后,再通過(guò)VRML中的有關(guān)節(jié)點(diǎn)實(shí)現(xiàn)凸輪工作曲面的空間造型,進(jìn)而實(shí)現(xiàn)凸輪和凸輪機(jī)構(gòu)的三維造型,其實(shí)現(xiàn)過(guò)程按“規(guī)劃凸輪機(jī)構(gòu)幾何結(jié)構(gòu)一獲取運(yùn)動(dòng)參數(shù)和幾何參數(shù)一取步長(zhǎng),確定等分角一的無(wú)因次化處理一調(diào)用運(yùn)動(dòng)規(guī)律子程序一計(jì)算工作曲面邊界坐標(biāo)一計(jì)算凸輪邊界坐標(biāo)一計(jì)算從動(dòng)件坐標(biāo)一數(shù)據(jù)處理一規(guī)劃虛擬場(chǎng)景結(jié)構(gòu)一VRML文件生成”的流程進(jìn)行。
仿真模型模塊該功能模塊包含有各種不同的凸輪機(jī)構(gòu)simlink仿真模型,在系統(tǒng)進(jìn)行虛擬仿真時(shí)根據(jù)不同的凸輪類(lèi)型調(diào)用相應(yīng)的模型,實(shí)現(xiàn)對(duì)虛擬場(chǎng)景中的凸輪機(jī)構(gòu)的控制和運(yùn)動(dòng)仿真。系統(tǒng)通過(guò)以上八種功能模塊問(wèn)的調(diào)用和數(shù)據(jù)傳遞,形成一個(gè)有機(jī)的整體,從而完成各類(lèi)凸輪機(jī)構(gòu)的虛擬設(shè)計(jì)。系統(tǒng)功能模塊的調(diào)用關(guān)系及工作機(jī)理如圖1
所示。

4 系統(tǒng)的實(shí)現(xiàn)
選擇系統(tǒng)啟動(dòng)程序cmnvdstart.m運(yùn)行,系統(tǒng)在顯示啟動(dòng)界面幾秒后將自動(dòng)進(jìn)入凸輪機(jī)構(gòu)虛擬設(shè)計(jì)主界面。用戶(hù)在主界面上通過(guò)單選框和下拉式菜單選擇完待設(shè)計(jì)的凸輪機(jī)構(gòu)類(lèi)型后,主界面的參數(shù)錄入?yún)^(qū)將刷新顯示所選凸輪機(jī)構(gòu)的設(shè)計(jì)參數(shù)錄入界面。通過(guò)該界面,用戶(hù)可設(shè)計(jì)一些常用的凸輪機(jī)構(gòu),圖2為設(shè)計(jì)滾子直動(dòng)從動(dòng)件圓柱凸輪時(shí)截取的人機(jī)界面。其中右側(cè)部分為設(shè)計(jì)主界面,左側(cè)部分是在設(shè)計(jì)需要三維顯示和動(dòng)態(tài)仿真時(shí)才自動(dòng)打開(kāi)的裝有blaxxun CC3D插件的IE瀏覽器,用戶(hù)可對(duì)瀏覽器進(jìn)行隨意拖放和大小調(diào)整,還可對(duì)其中的虛擬場(chǎng)景進(jìn)行交互操作。
設(shè)計(jì)過(guò)程中系統(tǒng)將通過(guò)綜合顯示區(qū)為用戶(hù)提供一些有關(guān)參數(shù)優(yōu)化、性能分析的等方面的信息,如圖2中的綜合顯示區(qū)內(nèi)顯示的是所選從動(dòng)件運(yùn)動(dòng)規(guī)律的無(wú)因次化運(yùn)動(dòng)特性圖,通過(guò)右側(cè)的“縮放開(kāi)關(guān)”與“柵格顯示”按扭可對(duì)該圖進(jìn)行放大、縮小和背景柵格顯示、關(guān)閉等處理。圖3是設(shè)計(jì)盤(pán)形凸輪機(jī)構(gòu)時(shí)綜合顯示區(qū)內(nèi)的有關(guān)輔助優(yōu)化的分析圖例,圖3b是對(duì)圖3a進(jìn)行局部放大并打開(kāi)柵格顯示時(shí)的情況。對(duì)壓力角或曲率半徑的校核,系統(tǒng)將以彈出信息框的方式給出校核結(jié)果和改進(jìn)提示。另外,若用戶(hù)在設(shè)計(jì)時(shí)出現(xiàn)了漏設(shè)、錯(cuò)設(shè)的設(shè)計(jì)參數(shù)或錯(cuò)誤操作,系統(tǒng)也將以彈出信息框的方式給出錯(cuò)誤提示。
當(dāng)初步設(shè)計(jì)出凸輪機(jī)構(gòu)后,就可通過(guò)鼠標(biāo)操作,對(duì)所設(shè)計(jì)的凸輪機(jī)構(gòu)在虛擬場(chǎng)景中進(jìn)行全方位的交互操作和觀(guān)察,并通過(guò)“三維仿真”和“停止仿真”按鈕進(jìn)行虛擬動(dòng)態(tài)仿真、控制仿真進(jìn)程。這時(shí)還可通過(guò)“性能分析”按鈕,在綜合顯示區(qū)內(nèi)觀(guān)察凸輪運(yùn)動(dòng)時(shí)的一些運(yùn)動(dòng)參數(shù)特性:圖4、圖5等是利用本系統(tǒng)設(shè)計(jì)的尖底直動(dòng)從動(dòng)件盤(pán)形凸輪機(jī)構(gòu)和弧面分度凸輪機(jī)構(gòu),對(duì)設(shè)計(jì)滿(mǎn)意的凸輪機(jī)構(gòu)的參數(shù)、圖形等數(shù)據(jù)可通過(guò)“保存數(shù)
據(jù)”按鈕保存到用戶(hù)指定的文件夾。

5 結(jié)語(yǔ)
VRML是一種標(biāo)準(zhǔn)的、應(yīng)用廣泛的虛擬現(xiàn)實(shí)技術(shù),具有功能較強(qiáng)、源代碼開(kāi)放、較易實(shí)現(xiàn)等優(yōu)點(diǎn);MAT—LAB軟件功能強(qiáng)大,其語(yǔ)言語(yǔ)句簡(jiǎn)單,內(nèi)涵豐富,形式開(kāi)放,可擴(kuò)展性好,所集成的虛擬現(xiàn)實(shí)工具箱將MAT—LAB/Simlink的卓越功能拓展到了VRML所創(chuàng)造的虛擬世界之中。將MATLAB與VRML相結(jié)合來(lái)開(kāi)發(fā)凸輪機(jī)構(gòu)虛擬設(shè)計(jì)系統(tǒng),能合理利用MATLAB軟件和VRML技術(shù)已有的優(yōu)點(diǎn),吸取各自的長(zhǎng)處,從而有效降
低軟件開(kāi)發(fā)的難度和強(qiáng)度,對(duì)縮短軟件開(kāi)發(fā)周期,提高軟件性能具有重要意義。該系統(tǒng)的實(shí)現(xiàn),使得用戶(hù)能夠快速地對(duì)各種常用的凸輪機(jī)構(gòu)進(jìn)行設(shè)計(jì)和虛擬仿真,同時(shí)也為以MATLABT和VRML為基礎(chǔ)開(kāi)發(fā)其它虛擬設(shè)計(jì)系統(tǒng)奠定了一定的實(shí)踐基礎(chǔ)。