杜寶江,余冬平,程建建
(上海理工大學(xué) 虛擬制造技術(shù)研究院,上海200093)
目前針對(duì)大型機(jī)械設(shè)備虛擬裝配系統(tǒng)構(gòu)建環(huán)節(jié)主要存在以下3個(gè)缺陷[1]:①產(chǎn)品的虛擬裝配系統(tǒng)的開(kāi)發(fā)周期長(zhǎng);②每個(gè)階段的構(gòu)建環(huán)節(jié)對(duì)操作人員的技術(shù)水平要求高;③裝配系統(tǒng)是針對(duì)指定產(chǎn)品進(jìn)行設(shè)計(jì)的,其它產(chǎn)品因與之培訓(xùn)內(nèi)容不同,程序則需重新編寫(xiě),這樣裝配系統(tǒng)不具有擴(kuò)展性和重用性。針對(duì)上述在虛擬裝配系統(tǒng)構(gòu)建環(huán)節(jié)中存在的缺陷,本文設(shè)計(jì)了虛擬裝配程序可視化平臺(tái)VRMLPlat-Form,該平臺(tái)實(shí)現(xiàn)了虛擬裝配動(dòng)作可視化及對(duì)應(yīng)虛擬裝配程序的快速自動(dòng)生成。
在機(jī)械設(shè)備裝配體模型構(gòu)建完成的基礎(chǔ)上,從三維CAD 軟件中將待裝配的零部件數(shù)字模型導(dǎo)入到VRML 中,運(yùn)用VRML語(yǔ)言,手工編寫(xiě)動(dòng)畫(huà)腳本。簡(jiǎn)單的VRML 模型裝配運(yùn)動(dòng)利用基于事件的交互原理[3],主要依靠方位插補(bǔ)器 節(jié) 點(diǎn) (OrientationInterpolator)、時(shí) 間 傳 感 器 節(jié) 點(diǎn)(TimeSensor)、位置插補(bǔ)器節(jié)點(diǎn) (PositionInterpolator)等和ROUTE語(yǔ)句來(lái)實(shí)現(xiàn)關(guān)鍵幀動(dòng)畫(huà)。
這種方法是對(duì)三維CAD 軟件進(jìn)行二次開(kāi)發(fā),設(shè)計(jì)一個(gè)動(dòng)畫(huà)導(dǎo)出插件。在待裝配零部件模型構(gòu)建完成基礎(chǔ)上,直接在三維CAD 軟件中制作裝配動(dòng)畫(huà),最后通過(guò)動(dòng)畫(huà)導(dǎo)出插件將裝配動(dòng)畫(huà)導(dǎo)出為VRML程序代碼檔。
其中,手工編寫(xiě)VRML動(dòng)畫(huà)腳本的方法,需要制作人員要有很深的VRML編程基礎(chǔ),而且代碼的編寫(xiě)有很多重復(fù)性的工作,再者代碼編寫(xiě)同動(dòng)畫(huà)演示并不同步,不能立即判定編寫(xiě)的動(dòng)畫(huà)代碼是否正確。對(duì)于三維CAD 動(dòng)畫(huà)導(dǎo)出插件,就避免了代碼編寫(xiě)的重復(fù)性工作,對(duì)應(yīng)用人員的技術(shù)要求也不是很高。但是在三維CAD 軟件中,因?yàn)槟P蜆?gòu)建時(shí)會(huì)有約束關(guān)系,機(jī)構(gòu)的運(yùn)行動(dòng)畫(huà)比較好做,而裝配動(dòng)畫(huà)有時(shí)很難實(shí)現(xiàn)?;谏鲜鰡?wèn)題,我們提出了可快速生成可視化虛擬裝配程序平臺(tái)-VRMLPlatform 的設(shè)計(jì)與實(shí)現(xiàn)。
本文設(shè)計(jì)的虛擬裝配程序可視化生成平臺(tái)也是建立在模型構(gòu)建完成基礎(chǔ)上,通過(guò)C#.NET 編寫(xiě)窗體應(yīng)用程序,在此窗體中要求能夠?qū)崟r(shí)顯示裝配體的狀態(tài)關(guān)系并可實(shí)現(xiàn)零件選擇。當(dāng)選中某個(gè)零件時(shí),通過(guò)窗體中的參數(shù)設(shè)置模塊,如零件的起始位置,作用時(shí)間等,就可以在后臺(tái)VRML 程序代碼檔中添加對(duì)應(yīng)的裝配動(dòng)作語(yǔ)句。這樣便實(shí)現(xiàn)了虛擬裝配動(dòng)作的可視化以及對(duì)應(yīng)程序的快速自動(dòng)生成。見(jiàn)表1可看出本文提出的虛擬裝配程序可視化平臺(tái)對(duì)操作人員的技術(shù)要求不高、便于裝配仿真動(dòng)畫(huà)的制作,并能夠?qū)崿F(xiàn)可視化編輯。
VRMLPlatform 的工作流程如圖1所示。
圖1 VRMLPlatform 的工作流程
本文目的是實(shí)現(xiàn)虛擬裝配動(dòng)作VRML 程序檔的快速生成,而VRML檔是一種代碼檔,在實(shí)現(xiàn)快速生成的過(guò)程中主要用到代碼自動(dòng)生成技術(shù)[4]。
VRMLPlatform 平臺(tái)操作流程同要實(shí)現(xiàn)的主要后臺(tái)功能的對(duì)應(yīng)關(guān)系見(jiàn)表2。
表2 工作流程與后臺(tái)功能對(duì)應(yīng)
對(duì)于節(jié)點(diǎn)分組的后臺(tái)運(yùn)算是要操作VRML 代碼,添加Transform 節(jié)點(diǎn),將模型代碼放入Children中,實(shí)現(xiàn)模型的按組分配。在VRMLPlatform 平臺(tái)中,其它如節(jié)點(diǎn)重命名、刪除和新建,其后臺(tái)實(shí)現(xiàn)同節(jié)點(diǎn)分組是一致的,也是對(duì)VRML檔中的Transform 節(jié)點(diǎn)進(jìn)行操作。
VRMLPlatform 中對(duì)模型拾取的方式應(yīng)該有兩種:點(diǎn)擊模型樹(shù)節(jié)點(diǎn)和直接點(diǎn)擊場(chǎng)景中的模型,在拾取完成后,模型顯示區(qū)的對(duì)應(yīng)模型會(huì)成高亮顯示。
點(diǎn)擊模型樹(shù)節(jié)點(diǎn)來(lái)拾取模型的方式,其后臺(tái)實(shí)現(xiàn)方式是:讀取目錄樹(shù)被選擇的節(jié)點(diǎn)名稱,并找到VRML 代碼中該模型材質(zhì)節(jié)點(diǎn)的引用,同時(shí)修改其顏色屬性為紅色,即高亮顯示;在場(chǎng)景中拾取模型[6]的方式,其后臺(tái)運(yùn)行方式是:通過(guò)函數(shù)computeRayHit(here,there)從點(diǎn)擊點(diǎn)發(fā)送射線,讀取射線相交的模型節(jié)點(diǎn)引用,從而找到其材質(zhì)引用,修改其顏色屬性。圖2為齒輪被拾取時(shí)的狀態(tài)。
圖2 齒輪被拾取狀態(tài)
由VRMLPlatform 快速生成的裝配動(dòng)畫(huà)從宏觀意義上可以分為兩類:運(yùn)動(dòng)動(dòng)畫(huà)和狀態(tài)動(dòng)畫(huà)。運(yùn)動(dòng)動(dòng)畫(huà)又包括直線運(yùn)動(dòng)和旋轉(zhuǎn)運(yùn)動(dòng),狀態(tài)動(dòng)畫(huà)包括閃爍、透明度變化和顏色變化動(dòng)畫(huà)。
在完成裝配動(dòng)畫(huà)的參數(shù)設(shè)置后,需要將每步虛擬裝配動(dòng)作的定義參數(shù)和上述選擇的模型儲(chǔ)存在某個(gè)信息載體中??梢躁P(guān)系型數(shù)據(jù)庫(kù)SQL Server作為記錄裝配動(dòng)作參數(shù)的存儲(chǔ)工具,設(shè)計(jì)參數(shù)表dbo.AnimationTable,存儲(chǔ)每一步裝配動(dòng)作的所有參數(shù)數(shù)據(jù)[7]。
虛擬裝配最重要的是對(duì)裝配路徑進(jìn)行設(shè)置[9],在本文路徑設(shè)置采用 “用戶引導(dǎo)”的拆卸方式,即通過(guò)識(shí)別模型零部件之間的裝配關(guān)系,引導(dǎo)模型進(jìn)行對(duì)應(yīng)的坐標(biāo)變換,從整個(gè)裝配體拆卸開(kāi)來(lái),并記錄拆卸的關(guān)鍵位置信息,其逆過(guò)程就是裝配過(guò)程。以下重點(diǎn)介紹平移和旋轉(zhuǎn)運(yùn)動(dòng)路徑的參數(shù)設(shè)置方法:
(1)直接輸入法:對(duì)于平移運(yùn)動(dòng),只需手動(dòng)輸入平移方向和起始位置就定義好其運(yùn)動(dòng)路徑,對(duì)于旋轉(zhuǎn)運(yùn)動(dòng)手動(dòng)輸入旋轉(zhuǎn)中心Center和方向Normal就可定義好旋轉(zhuǎn)運(yùn)動(dòng)的旋轉(zhuǎn)軸。
(2)場(chǎng)景中獲取法:通過(guò)場(chǎng)景中獲取的方法來(lái)設(shè)置平移動(dòng)作的運(yùn)動(dòng)路徑,采取兩點(diǎn)式和法矢量式。兩點(diǎn)式是通過(guò)從場(chǎng)景中拾取兩點(diǎn)來(lái)確定運(yùn)動(dòng)路徑,法矢量式是通過(guò)拾取場(chǎng)景中的一個(gè)零件表面,此表面的法矢量即為運(yùn)動(dòng)路徑。
通過(guò)場(chǎng)景中獲取的方法來(lái)設(shè)置旋轉(zhuǎn)動(dòng)作的旋轉(zhuǎn)軸。通過(guò)在場(chǎng)景中拾取3個(gè)點(diǎn),那么旋轉(zhuǎn)運(yùn)動(dòng)的模型將沿過(guò)這三點(diǎn)的外接圓的圓心切垂直于過(guò)這三點(diǎn)的平面的軸進(jìn)行旋轉(zhuǎn)。
虛擬裝配仿真動(dòng)作檔是一段VRML 程序代碼,所以記錄裝配的VRML 程序的生成是VRMLPlatform 的最終目標(biāo)。VRML代碼的生成即將對(duì)應(yīng)數(shù)據(jù)庫(kù)中記錄虛擬裝配參數(shù)轉(zhuǎn)換為相應(yīng)的VRML代碼,實(shí)現(xiàn)步驟如下。
3.4.1 分析VRML代碼的結(jié)構(gòu)
要生成的VRML代碼包括4部分:模型節(jié)點(diǎn)代碼、動(dòng)畫(huà)原型節(jié)點(diǎn)PROTO、動(dòng)畫(huà)代碼和動(dòng)畫(huà)連續(xù)播放腳本代碼。模型節(jié)點(diǎn)代碼中包含了分組信息,動(dòng)畫(huà)原型節(jié)點(diǎn)是一個(gè)自定義的節(jié)點(diǎn)AnimationFrame,此自定義節(jié)點(diǎn)相當(dāng)于面向編程中的函數(shù)定義,AnimationFrame中定義了動(dòng)畫(huà)的參數(shù)和內(nèi)部的邏輯運(yùn)算關(guān)系。
3.4.2 生成動(dòng)畫(huà)代碼
生成動(dòng)畫(huà)代碼即是根據(jù)數(shù)據(jù)庫(kù)SQL Server中各行數(shù)據(jù)生成實(shí)例化的PROTO 節(jié)點(diǎn)代碼。每一步動(dòng)作都對(duì)應(yīng)一個(gè)AnimationFrame節(jié)點(diǎn)的實(shí)例化即該步裝配動(dòng)作的VRML程序代碼。
3.4.3 生成虛擬裝配動(dòng)作連貫展示程序代碼
通過(guò)VRMLPlatform 制作虛擬裝配仿真動(dòng)畫(huà)時(shí),動(dòng)畫(huà)是按照裝配步驟來(lái)制作的,每一步的裝配動(dòng)作對(duì)應(yīng)著一步動(dòng)畫(huà),在每步動(dòng)作之間需要實(shí)現(xiàn)連貫展示,這就需要生成動(dòng)作連貫展示程序,動(dòng)作連貫展示程序代碼是根據(jù)每一步裝配動(dòng)作引用的節(jié)點(diǎn)以及每步裝配動(dòng)作的持續(xù)時(shí)間來(lái)生成的,實(shí)現(xiàn)方法是基于模板驅(qū)動(dòng)的代碼自動(dòng)生成技術(shù),其具體腳本程序代碼模板如下所示。
上述程序代碼中time1、Time1和Node9_STEP 為可變參數(shù),其它的程序段都是固定的。在每?jī)刹絼?dòng)畫(huà)之間添加此段程序代碼,就可以實(shí)現(xiàn)這兩步虛擬裝配動(dòng)作的連貫展示。
3.4.4 VRML程序代碼整合
將模型節(jié)點(diǎn)代碼、動(dòng)畫(huà)原型節(jié)點(diǎn)PROTO、動(dòng)畫(huà)代碼、動(dòng)畫(huà)連續(xù)播放腳本代碼整合到一個(gè)VRML 檔中。具體的整合方法是:通過(guò)函數(shù)creatVRML ()新建一個(gè)VRML文檔,然后通過(guò)參數(shù)賦值的方式將模型節(jié)點(diǎn)代碼、動(dòng)畫(huà)原型節(jié)點(diǎn)PROTO、動(dòng)畫(huà)代碼、動(dòng)畫(huà)連續(xù)播放腳本代碼分別賦給4個(gè)文本參數(shù),將這4個(gè)文本參數(shù)內(nèi)容寫(xiě)入新建的VRML文檔。
根據(jù)圖1 本平臺(tái)界面規(guī)劃流程圖。首先需對(duì)VRMLPlatform 平臺(tái)要實(shí)現(xiàn)的功能進(jìn)行枚舉,找出每個(gè)功能的界面觸發(fā)方式,根據(jù)功能和界面觸發(fā)方式相似的原則,確定同一功能模塊區(qū),依據(jù)上述原則,見(jiàn)表3。
表3 VRMLPlatForm 功能統(tǒng)計(jì)分類
根據(jù)表3中對(duì)VRMLPlatform 界面規(guī)劃的研究,本文設(shè)計(jì)了如圖3所示的用戶界面。
圖3 VRMLPlatform 用戶界面
圖4 模型導(dǎo)入VRMLPlatForm
本文列舉兩個(gè)矩形聯(lián)結(jié)器的移動(dòng)裝配動(dòng)作仿真制作,演示虛擬裝配程序可視化平臺(tái)-VRMLPlatform 的操作方法。選擇 “文 件”下 的 “新 建VRML 動(dòng) 畫(huà)”,然 后 “導(dǎo) 入VRML文件”,然后點(diǎn)擊屏幕左下方的按鈕 “將場(chǎng)景樹(shù)更新至瀏覽器”,則在系統(tǒng)中場(chǎng)景樹(shù)和模型展示區(qū)都已有模型信息,如圖4所示。
在場(chǎng)景樹(shù)中選擇做虛擬裝配動(dòng)作的模型,右鍵 “新建動(dòng)畫(huà)”,則可在參數(shù)設(shè)置模塊設(shè)置相關(guān)參數(shù),本例要求模型沿Y 軸做直線運(yùn)動(dòng)。其參數(shù)設(shè)置界面如圖5所示。
圖5 參數(shù)設(shè)置界面
在模型動(dòng)畫(huà)參數(shù)設(shè)置時(shí),包括平移、旋轉(zhuǎn)、閃爍、透明度和顏色等動(dòng)畫(huà)的參數(shù)設(shè)置,每設(shè)置完一次的參數(shù),需要保存該步的動(dòng)畫(huà)設(shè)置,如圖6所示。
圖6 動(dòng)畫(huà)設(shè)置保存界面
點(diǎn)擊VRMLPlatform 界面左下方 “生成代碼”,則在后臺(tái)對(duì)應(yīng)的VRML 文件中生成了該步裝配動(dòng)作代碼。用BS Contact打開(kāi)此VRML 文件,則可瀏覽裝配動(dòng)畫(huà)。圖7 為平移裝配的最終生成。
圖7 平移裝配的最終生成
以上便演示實(shí)現(xiàn)了VRMLPlatForm 虛擬裝配程序可視化的過(guò)程。若手動(dòng)編寫(xiě)該平移裝配動(dòng)作程序,過(guò)程較繁瑣。該平臺(tái)應(yīng)用于柴油機(jī)泵組虛擬裝配培訓(xùn)系統(tǒng)開(kāi)發(fā)中 (圖8),運(yùn)行穩(wěn)定,交互培訓(xùn)能力強(qiáng),數(shù)據(jù)處理速度快,大大縮短了開(kāi)發(fā)周期、避免了技術(shù)人力的浪費(fèi),驗(yàn)證了本文所設(shè)計(jì)平臺(tái)的正確性和必要性。
圖8 柴油機(jī)泵組虛擬裝配培訓(xùn)系統(tǒng)開(kāi)發(fā)界面
在虛擬制造領(lǐng)域,VRMLPlatform 實(shí)現(xiàn)了虛擬裝配可視化及程序的自動(dòng)快速生成,提高了虛擬裝配制作效率,尤其對(duì)復(fù)雜的裝配過(guò)程更凸顯其高效性和便捷性。很大程度上解決了虛擬裝配培訓(xùn)系統(tǒng)開(kāi)發(fā)周期長(zhǎng)的問(wèn)題。實(shí)現(xiàn)了裝配動(dòng)作可視化編輯,操作簡(jiǎn)單,對(duì)操作人員的技術(shù)水平要求低,設(shè)置參數(shù)的同時(shí),觀看裝配動(dòng)作演示效果,避免了手工匯編程序的繁瑣。由于VRMLPlatform 是基于模板的代碼自動(dòng)生成技術(shù),可將裝配動(dòng)作設(shè)計(jì)為包含所有運(yùn)動(dòng)改變和狀態(tài)改變的模板,而且其擴(kuò)展性強(qiáng),只需要更改后臺(tái)數(shù)據(jù)庫(kù)中定義的裝配參數(shù)和所選擇模型引用,就可制作其它機(jī)械產(chǎn)品的虛擬裝配動(dòng)作仿真并快速生成其程序代碼。因此,VRMLPlatform 平臺(tái)在開(kāi)發(fā)虛擬裝配培訓(xùn)領(lǐng)域具有普遍適用性。
[1]DU Baojiang.The virtual manufacturing technology [M].Shanghai:Science and Technology Press,2007:22-26 (in Chinese).[杜寶江.虛擬制造技術(shù) [M].上海:科學(xué)技術(shù)出版社,2007:22-26.]
[2]YU Weiling,WAN Jun.Development and applied research of virtual manufacturing technology(VMT)[J].Manufacturing Automation,2008,30 (2):1-4 (in Chinese).[于衛(wèi)靈,萬(wàn)軍.虛擬制造技術(shù) (VMT)的發(fā)展與應(yīng)用研究 [J].制造業(yè)自動(dòng)化,2008,30 (2):1-4.]
[3]HE Xinhua,WANG Xiaoning.The research of mechanical product virtual assembly technology based on VRML [J].Journal of Mechanical Engineering & Automation,2011,40(5):31-33 (in Chinese).[何新華,王孝寧.基于VRML的機(jī)械產(chǎn)品虛擬裝配技術(shù)研究 [J].機(jī)械工程與自動(dòng)化,2011,40 (5):31-33.]
[4]GUAN Taiyang.Reaseach of automatic code generation technology based on the template [D].Chengdu:Institute of Computer,University of Electronic Science and Technology of China,2007 (in Chinese).[管太陽(yáng).基于模板的自動(dòng)代碼生成技術(shù)的研究 [D].成都:電子科技大學(xué)計(jì)算機(jī)學(xué)院,2007.]
[5]TAN Fei.Design and implementation of automatic testing tools based on code generation technology [D].Wuhan:Institute of Computer,Huazhong University of Science and Technology,2010 (in Chinese).[談飛.基于代碼生成技術(shù)的自動(dòng)化測(cè)試工具的設(shè)計(jì)與實(shí)現(xiàn) [D].武漢:華中科技大學(xué)計(jì)算機(jī)學(xué)院,2010.]
[6]GUO Yanxia,HOU Tongpu,DU Yuanyuan.Picking up the entities in the three-dimensional scene based on DirectX technology [J].Journal of Liaoning University of Petroleum Chemical Industry,2009,29 (3):77-81 (in Chinese). [郭艷霞,候彤璞,杜園園.基于DirectX 的三維場(chǎng)景實(shí)體的拾?。跩].遼寧石油化工大學(xué)學(xué)報(bào),2009,29 (3):77-81.]
[7]BAI Yang.Exploration about the stored procedure of SQL SERVER [J].Knowledge and Technology of Computer,2011 (12):8769-8776 (in Chinese). [白 楊.探 究SQL SERVER 存 儲(chǔ) 過(guò) 程 [J].電 腦 知 識(shí) 與 技 術(shù)2011 (12):8769-8776.]
[8]CHEN Yanchun,LIANG Li.The method and realization of importing large data into database[J].Skills and Maintenance for Computer Programming,2012,11 (1):20-23 (in Chinese). [陳嚴(yán)純,梁立.大數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)的方法與實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2012,11 (1):20-23.]
[9]LI Mimi.The visualized technological research of product assembly sequence based on WEB [D].Xi’an:Institute of Aviation,Northwestern Polytechnical University,2007 (in Chinese).[李咪咪.基于WEB的產(chǎn)品裝配序列可視化技術(shù)研究 [D].西安:西北工業(yè)大學(xué)航空學(xué)院,2007.]
[10]HU Qili.The automatic generating technological research of virtual training system for machinery equipment[D].Shanghai:College of Mechanical, University of Shanghai for Science and Technology,2012 (in Chinese).[胡其立.機(jī)械裝備虛擬培訓(xùn)系統(tǒng)自動(dòng)生成技術(shù)研究 [D].上海:上海理工大學(xué)機(jī)械學(xué)院,2012.]
[11]HUANG Qiguang,HAN Xie.The research and development of the VRML visual editor [J].Computer Engineering and Design,2008,29 (5):1296-1298 (in Chinese). [黃柒光,韓燮.VRML可視化編輯器的研究與開(kāi)發(fā) [J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29 (5):1296-1298.]
[12]SHAO Xiaoliang,NIE Li.The implementating method of the assembly simulation based on Division Mockup software [J].Mechanical Design and Manufacturing,2007 (3):54-56 (in Chinese). [邵曉東,聶力.基于Division Mockup裝配仿真的實(shí)現(xiàn)方法 [J].機(jī)械設(shè)計(jì)與制造,2007 (3):54-56.]
[13]PENG Gaoliang,CHEN Guangfeng,LIU Xinhua.modular fixture assembly model for virtual assembly design [J].Journal of Donghua University(English Edition),2009,26 (1):10-15.
[14]CHEN Jingping.Design and application of visualization of assembly process [C]//Proceedings of IEEE 9th International Conference on Computer-Aided Industrial Design &Conceptual Design,2008.