劉 凱,趙新燦,譚同德
(鄭州大學(xué) 信息工程學(xué)院,河南 鄭州450001)
虛擬裝配作為虛擬現(xiàn)實技術(shù)在產(chǎn)品設(shè)計領(lǐng)域中的一個典型應(yīng)用,已引起國內(nèi)外學(xué)者的廣泛研究[1]。大部分建立虛擬裝配系統(tǒng)的方案為:①在CAD中建模,用CAD二次開發(fā)工具轉(zhuǎn)化為某種格式的三角面片模型,然后導(dǎo)入虛擬裝配系統(tǒng)。例如美國華盛頓州立大學(xué)開發(fā)的VADE虛擬裝配環(huán)境[2],浙江大學(xué)開發(fā)的虛擬環(huán)境;北京理工大學(xué)開發(fā)的虛擬裝配環(huán)境等。這種三角面片模型丟失了拓?fù)浜蛶缀蔚裙こ淘O(shè)計信息,即使采用手段彌補(bǔ),也是一種信息單向傳遞的方案,如果虛擬裝配中發(fā)現(xiàn)設(shè)計問題的話,虛擬裝配結(jié)果很難及時反饋到CAD設(shè)計活動中,使虛擬裝配系統(tǒng)成為信息孤島,減少了其實用性。②直接在虛擬裝配系統(tǒng)中建模,再進(jìn)行虛擬裝配,無須與其他CAD系統(tǒng)進(jìn)行數(shù)據(jù)傳輸,例如浙江大學(xué)開發(fā)的VDVAS系統(tǒng),香港城市大學(xué)W.Y.Ma等建立的虛擬現(xiàn)實環(huán)境。這種方案使得CATIA,UG和Pro/E等傳統(tǒng)CAD模型難以應(yīng)用[3]。③采用CAD通用標(biāo)準(zhǔn)STEP,將CAD模型直接導(dǎo)入虛擬裝配系統(tǒng)進(jìn)行裝配。這種方法保留了模型的各種工程設(shè)計信息,不僅使裝配方便靈活,還可以向CAD及時反饋信息,使得CAD與虛擬裝配系統(tǒng)雙向數(shù)據(jù)傳遞。但此方法研究較少,只是做了一些探索性的研究,如山東大學(xué)設(shè)計的虛擬裝配系統(tǒng)[4],最終采用OpenGL仿真實現(xiàn)不太現(xiàn)實,其松散的API使得編程實現(xiàn)非常困難。針對上述問題,本文基于STEP標(biāo)準(zhǔn),結(jié)合OSG開源虛擬現(xiàn)實引擎,在Visual Studio VC++集成開發(fā)環(huán)境下,設(shè)計并實現(xiàn)了一個自主知識產(chǎn)權(quán)、可擴(kuò)展的虛擬裝配系統(tǒng)。
虛擬裝配系統(tǒng)框架可用圖1描述,主要包括裝配三要素智能匹配模塊、輔助裝配信息庫、裝配序列規(guī)劃模塊、OSG仿真模塊。
(1)裝配三要素智能匹配模塊:一個完整的虛擬裝配系統(tǒng)中應(yīng)包括:待裝配零件、工具、虛擬人姿態(tài)動作,稱之為裝配中的三要素。即裝配場景中虛擬人選取某裝配工具,采取某種姿態(tài)動作,裝配待裝零件。由于待裝配零件來自于CAD軟件存儲的STEP文件格式,因此可提取其信息,根據(jù)提取出的零件名稱、拓?fù)?、幾何尺寸等信息,智能匹配工具與姿態(tài)動作,如根據(jù)螺帽形狀、尺寸等信息,匹配扳手型號,人操作扳手的姿態(tài)動作。本模塊需要建立工具庫、虛擬人姿態(tài)動作庫、以及零件STEP的信息提取。
(2)輔助裝配信息庫:為得到裝配序列,僅有零件STEP信息是不夠的,還需要輔助裝配信息的支持,包括:STEP裝配體中裝配關(guān)系的識別、電子手冊、裝配知識庫、遠(yuǎn)程專家指導(dǎo)。其中STEP裝配體中裝配關(guān)系的識別是通過STEP裝配體文件中暗含著零部件的空間幾何關(guān)系,識別出零部件之間的裝配關(guān)系[4];電子手冊中包含零部件信息和裝配步驟信息;裝配知識庫中包括零件的裝配規(guī)則和裝配操作可行性規(guī)則;遠(yuǎn)程專家指導(dǎo)既專家的經(jīng)驗知識。
(3)裝配序列規(guī)劃模塊:將裝配三要素和輔助裝配信息庫作為輸入,采用裝配序列規(guī)劃算法生成裝配序列。
(4)OSG仿真模塊:將裝配三要素讀入OSG虛擬裝配環(huán)境,根據(jù)前面生成的裝配序列生成OSG教學(xué)動畫,操作人員觀看學(xué)習(xí)后進(jìn)行交互裝配練習(xí),達(dá)到學(xué)習(xí)目的。最后系統(tǒng)給出評價和指導(dǎo),如工效評價和可裝配性評價等,根據(jù)這些評價結(jié)果可以優(yōu)化裝配序列,如發(fā)現(xiàn)零件的設(shè)計問題,反饋給CAD系統(tǒng)或直接修改STEP文件,實現(xiàn)VR與CAD雙向通信;另外,由于OSG出色的虛擬現(xiàn)實渲染能力,也可為工業(yè)模型裝配增強(qiáng)虛擬現(xiàn)實效果,如搭建裝配工作場景,為工業(yè)模型添加重力、透明、紋理、爆炸等虛擬現(xiàn)實效果,使裝配系統(tǒng)更加真實、實用。
可見,要實現(xiàn)該系統(tǒng)有諸多工作要做,本文對其中的關(guān)鍵技術(shù)問題進(jìn)行研究,并用OSG仿真出一個原型系統(tǒng)。
本部分主要分析零件STEP文件結(jié)構(gòu)并從中提取出幾何與拓?fù)湫畔ⅰ?/p>
STEP(standard for the exchange of product modal data)全稱是產(chǎn)品模型數(shù)據(jù)交換標(biāo)準(zhǔn),它描述了產(chǎn)品從設(shè)計到生產(chǎn)制造整個產(chǎn)品生命周期內(nèi)包括幾何形狀、拓?fù)浣Y(jié)構(gòu)、裝配/分解順序、材質(zhì)/公差等方面的信息和數(shù)據(jù)交換的定義,主要用于在各CAD/CAM系統(tǒng)之間進(jìn)行產(chǎn)品數(shù)據(jù)的交換和共享[5]。STEP提供了4種方式實現(xiàn)產(chǎn)品數(shù)據(jù)的交換和共享,分別是:文件交換方式、應(yīng)用程序接口方式、數(shù)據(jù)庫交換方式、基于知識庫的交換方式,其中使用最廣泛的是文件交換方式,目前各主流的CAD/CAM系統(tǒng),如SolidWorks、CATIA、UG、Pro/E等都可讀取或保存為STEP格式的中性文件。
STEP標(biāo)準(zhǔn)采用一種可讀寫的中性文件交換數(shù)據(jù),中性文件由頭段和數(shù)據(jù)段組成,頭段信息主要是文件相關(guān)的管理信息,包括文件名、建立日期、作者、版本等信息。數(shù)據(jù)段主要包括產(chǎn)品模型的拓?fù)浣Y(jié)構(gòu)和幾何形狀信息,采用擴(kuò)展邊界表示法(boundary representation,簡稱B-Rep)來組織這些信息。擴(kuò)展邊界表示是使用點(diǎn)、邊、環(huán)、面、殼依次組成實體邊界并定義實體形狀和尺寸的一種幾何造型方法。在STEP中性文件中,拓?fù)浣Y(jié)構(gòu)最上層為邊界表示法(ADVANCED_BREP_SHAPE_REPRESENTATION),它通常是若干個實體(Solid)的并集,實體又是若干個殼(Shell)的并集,殼的邊界又由若干個面(Face)的并集來表示,而每個面又由它的幾何曲面(Surface)和曲面上的邊界(Bound)來表示,一個邊界對應(yīng)一個環(huán)(loop),環(huán)的邊界是若干條邊(Edge)的并集,而邊又由幾何曲線(Curve)和曲線上的頂點(diǎn)(Vertex)來表示,頂點(diǎn)又由笛卡爾坐標(biāo)點(diǎn)(Point)來描述[6]。文件數(shù)據(jù)段部分?jǐn)?shù)據(jù)示例如圖2所示。
由這段數(shù)據(jù)可明顯看出其拓?fù)浣Y(jié)構(gòu),#155(ADVANCED_BREP)包含#31(SOLID),#31包含#27(SHELL),#27由(#32,#28,#9,#57,#51,#59)6個FACE組成,#32(FACE)包含#69(FACE_OUT-ER_BOUND)和#139(PLANE),以此類推,是一個深度遍歷的過程。其中#后的數(shù)字為實例編號,也是在文件中所處的行號,MANIFOLD_SOLID_BREP為實例關(guān)鍵字,()內(nèi)為其組成屬性信息。
根據(jù)每行數(shù)據(jù)結(jié)構(gòu),設(shè)計結(jié)構(gòu)體,提取其信息,保存在結(jié)構(gòu)體數(shù)組中,用于深度遍歷向OSG映射。
設(shè)計結(jié)構(gòu)體如下:
struct EntityNode
{
int ID;//實例編號
CString Name;//實例關(guān)鍵字
std::vector<CString> _attrs;//組成屬性
};
信息提取方法:設(shè)計信息提取類CExtractFileInfo處理每一行中的字符串,其以每行中的 ‘?!?,‘=’,‘(’,‘,’,‘'’,‘)’,‘;’作為分隔符,讀取每分割段內(nèi)的字符串,將 ‘#’,‘=’之間的數(shù)字作為實例ID號,將 ‘=’與之后第一個 ‘(’之間的字符串作為實例關(guān)鍵詞,將 ‘(’與 ‘)’之間的數(shù)據(jù)作為實例的屬性。程序順序讀取直至讀到文件尾結(jié)束,將這些數(shù)據(jù)保存到結(jié)構(gòu)體數(shù)組中。
根據(jù)前面提取到的結(jié)構(gòu)體數(shù)組,深度遍歷,將STEP關(guān)鍵字逐個映射到OSG,并形成OSG場景樹,最終由OSG渲染繪制出STEP零件。
OSG作為一款優(yōu)秀的開源虛擬現(xiàn)實引擎,使用C++語言并采用面向?qū)ο蟮乃枷刖帉?,除封裝了OpenGL幾乎所有的API函數(shù),還具有自身一些獨(dú)特的技術(shù)特性,如空間數(shù)據(jù)組織、場景改動最少化、細(xì)節(jié)層次節(jié)點(diǎn)技術(shù)(LOD)等,使得OSG有著強(qiáng)大的場景圖組織和高速渲染能力。與其他商業(yè)圖形引擎相比,其功能更強(qiáng)、性能更好[7]。OSG采用自頂向下、分層的樹狀結(jié)構(gòu),進(jìn)行存儲、組織和管理需要渲染的場景。一棵場景樹包括一個根節(jié)點(diǎn)(Root)、多級內(nèi)部的枝節(jié)節(jié)點(diǎn)(Group),已經(jīng)多個末端的葉子節(jié)點(diǎn)(Geode)。根節(jié)點(diǎn)和枝節(jié)節(jié)點(diǎn)負(fù)責(zé)構(gòu)建樹的層次,而葉子節(jié)點(diǎn)則保存一個或多個可繪制對象(Drawable),就好像樹枝的末端生長著葉子,葉子里面又包含著果實一樣。
為完成STEP關(guān)鍵字向OSG的映射,并建立OSG場景樹,建立映射規(guī)則如下:
(1)STEP文件中的實體關(guān)鍵字ADVANCED_BREP_SHAPE_REPRESENTATION映射為OSG的矩陣變換節(jié)點(diǎn)osg::MatrixTransform(其繼承于osg::Group),由于該關(guān)鍵字處于拓?fù)浣Y(jié)構(gòu)最上層,代表著整個STEP零件,在后面的裝配過程中需變換零件整體的位置。
(2)STEP文件中表示拓?fù)潢P(guān)系的實體關(guān)鍵字映射為OSG的組節(jié)點(diǎn)osg::Group。
(3)STEP中性文件中表示幾何形狀的實體關(guān)鍵字映射為OSG的幾何圖形繪制類osg::Drawable,作為果實加入葉子節(jié)點(diǎn)osg::Geode。
根據(jù)上述映射規(guī)則,STEP關(guān)鍵字與OSG的映射關(guān)系以及OSG場景樹的組織結(jié)構(gòu)如圖2所示。
圖3中白色節(jié)點(diǎn)代表STEP拓?fù)潢P(guān)鍵字,映射為OSG組節(jié)點(diǎn),黑色節(jié)點(diǎn)代表幾何關(guān)鍵字,映射為Drawable節(jié)點(diǎn),加在葉子節(jié)點(diǎn)Geode下,共同組織在場景根節(jié)點(diǎn)Root下,形成場景樹,最后OSG渲染繪制場景。
STEP文件中的幾何形狀眾多,包括各種規(guī)則的和不規(guī)則的曲線曲面,如平面、圓錐、球、B樣條曲面等等。針對這樣繁多的幾何形狀,必須采用統(tǒng)一的表示方法,否則極難程序?qū)崿F(xiàn)。
本文中采用NUBRS來表示STEP中所有的幾何圖形,NUBRS的全稱是非均勻有理B樣條曲線(曲面),是在曲線曲面描述理論中,發(fā)展得比較優(yōu)秀、實用面最廣的曲面曲線理論,由于NURBS方法優(yōu)秀的特性,成為STEP標(biāo)準(zhǔn)中描述工業(yè)產(chǎn)品幾何形狀的唯一數(shù)學(xué)方法[8]。NURBS曲線、曲面的公式分別如式(1)和式(2)所示。
式(1)中,Pi是曲線的控制頂點(diǎn)序列,ωi是與Pi對應(yīng)的權(quán)因子,Ni,k(t)是k階B樣條基函數(shù);式(2)中,Pij是矩陣域上特征網(wǎng)絡(luò)控制頂點(diǎn)列,ωij是與Pij對應(yīng)的權(quán)因子,Ni,p(u)和Nj,q(v)是p階和q階的B樣條基函數(shù)。
由公式可見,只要給出控制點(diǎn)序列和權(quán)值,就可以表達(dá)出對應(yīng)的NURBS曲線、曲面。
采用NUBRS理論,各種幾何圖形的NURBS表示方法如下:
(1)直線段:線段的兩個端點(diǎn)即為控制點(diǎn),權(quán)值相等均為1。
(2)圓弧:圓弧統(tǒng)一用9個控制點(diǎn)來定義,首尾控制點(diǎn)分別是圓弧的起點(diǎn)和終點(diǎn),剩余的7個點(diǎn)坐標(biāo)(x,y)分別根據(jù)下列公式計算[9]
式中:α——圓弧角度,A——圓弧起始角,n——控制點(diǎn)數(shù)目,R——圓弧半徑。權(quán)因子也分兩種情況:奇數(shù)控制點(diǎn)的權(quán)因子為cos(β),偶數(shù)控制點(diǎn)的權(quán)因子為1。
(3)平面:采用長方形表示法,長方形的4個頂點(diǎn)即為控制點(diǎn),U方向兩個控制點(diǎn),V方向也兩個控制點(diǎn),權(quán)值都為1。
(4)圓柱面的NURBS表示:圓柱面可以看作是一條直線繞中心軸旋轉(zhuǎn)一周得到的表面。因此U方向為一整圓弧,有9個控制點(diǎn),V方向是一條直線,有2個控制點(diǎn)。可參照上面直線與圓弧的表示,用一個二維數(shù)組cp[9][2]存儲控制點(diǎn)。
(5)圓臺面:表示方法與圓柱面類似,圓臺面可以看做是一個上圓與底圓半徑不相等的圓柱,而圓錐面可以看做是其中一個圓的半徑為零。
(6)球面:把球面看作將一個半圓繞其中心軸旋轉(zhuǎn)一周得到得表面,U方向為一整圓,9個控制點(diǎn),V方向為一半圓,5個控制點(diǎn),用二維數(shù)組cp[9][5]存儲。
(7)圓環(huán)面:一個整原繞其中心軸旋轉(zhuǎn)一周得到得表面,U、V方向都為一整圓,用二維數(shù)組cp[9][9]存儲。
(8)不規(guī)則的曲線曲面:直接從step文件中讀出控制點(diǎn)和權(quán)值數(shù)據(jù)存入控制點(diǎn)數(shù)組。
將得到控制點(diǎn)數(shù)組傳入osg::Drawable類,再根據(jù)step文件的OUTER_BOUND(外環(huán))和BOUND(內(nèi)環(huán))信息進(jìn)行裁剪,最終由OSG繪制。
由圖2中OSG場景樹可見,STEP零件拓?fù)浣Y(jié)構(gòu)的最上層 ADVANCED_BREP_SHAPE_REPRESENTATION映射為osg::MatrixTransform(矩陣變換節(jié)點(diǎn)),因此根據(jù)用戶指定的配合關(guān)系,計算出變換矩陣,對零件施加位置變換,即完成裝配。
實現(xiàn)裝配的過程如下:
(1)拾取裝配對象:利用OSG拾取類與幾何面線求交,如果選中,得到其基準(zhǔn)點(diǎn)與法向量數(shù)據(jù),并將其設(shè)為OSG高亮節(jié)點(diǎn)。
(2)指定裝配基準(zhǔn)件和零件:在裝配過程中每一個后續(xù)零件總需要裝配在一個指定的裝配基準(zhǔn)件上[10]。在本系統(tǒng)中,由圖2中OSG樹形結(jié)構(gòu)所示,可由所選面線沿著樹的路徑向上即可找到osg::MatrixTransform節(jié)點(diǎn)即找到所選零件,將其設(shè)置為基準(zhǔn)件或零件,裝配時,基準(zhǔn)件位置不動,零件變動位置。
(3)指定配合關(guān)系并計算變換矩陣:根據(jù)指定的配合關(guān)系(如面-面重合、垂直、同軸心等),由面、線的基準(zhǔn)點(diǎn)和法向量等信息計算出零件的旋轉(zhuǎn)和平移矩陣,變換零件位置,完成裝配。
為展示效果,本系統(tǒng)從CAD軟件設(shè)計的光學(xué)頭盔零件中選取了6個零件,另存為STEP中性文件,讀入本系統(tǒng),經(jīng)過若干次配合之后,裝配成頭盔中的光路部分。效果圖如圖4所示。
圖4 系統(tǒng)仿真實現(xiàn)效果
在圖4中,第一幅圖表示裝配前的效果,第二幅圖為裝配后的效果。裝配后效果圖中部分零件設(shè)置了透明效果,因此可以看到其內(nèi)部的零件,綠色高亮的部分是裝配過程中選取特征面進(jìn)行配合留下的痕跡。
本文將STEP標(biāo)準(zhǔn)與OSG虛擬現(xiàn)實引擎相結(jié)合,設(shè)計了一個虛擬裝配系統(tǒng),對其中的關(guān)鍵技術(shù)問題進(jìn)行研究,并仿真實現(xiàn)了一個原型系統(tǒng)。下一步需要繼續(xù)完善該系統(tǒng),另外,裝配方式也較為繁瑣,需要進(jìn)一步識別裝配特征,簡化裝配操作,裝配后的各項指標(biāo)的評價也有待進(jìn)一步研究,如干涉檢查、可裝配行與工效評價等,完善這些工作會使裝配系統(tǒng)更有實用價值和意義。作者相信由于本文解決了系統(tǒng)的關(guān)鍵技術(shù)問題,其進(jìn)一步完善一定可以順利完成。
[1]ZHANG Jun,ZHAI Zhengjun.Research and application of virtual assembly technology[J].Aeronautical Manufacturing Technology,2009(1):70-73(in Chinese).[張雋,翟正軍.虛擬裝配技術(shù)的研究與應(yīng)用現(xiàn)狀[J].航空制造技術(shù),2009(1):70-73].
[2]WANG Niandong,LIU Yi,Research on an integrated architecture of virtual assembly system[J].Acta Aeronautics et Astronautica Sinica,2009,30(11):2234-2242(in Chinese).[王念東,劉毅.集成化虛擬裝配系統(tǒng)體系結(jié)構(gòu)研究[J].航空學(xué)報,2009,30(11):2234-2242.]
[3] WANG Wei.Research and development on a STEP-based CAD/CAM platform[D].Shenyang:Shenyang Institute of Aeronautical Engineering,2008:21-28(in Chinese).[王偉.一種基于STEP標(biāo)準(zhǔn)的CAD/CAM平臺的研究與開發(fā)[D].沈陽:沈陽航空工業(yè)學(xué)院,2008:21-28.]
[4]LIU Hongtao.The research on assembly sequence planning and its simulation based on STEP[D].Jinan:Shandong University,2006:27-36(in Chinese).[劉洪濤.基于STEP的裝配序列規(guī)劃及其仿真研究[D].濟(jì)南:山東大學(xué),2006:27-36].
[5]LI Peilin.Research of CAD/CAE integration based on STEP standard[D].Harbin:Harbin Engineering University,2009:30-54(in Chinese).[李佩霖.基于STEP的 CAD/CAE系統(tǒng)集成技術(shù)的研究[D].哈爾濱:哈爾濱工程大學(xué),2009:30-54.]
[6]DAI Bai-sheng.Research on STEP-based manufacturing feature recognition and 3Dreconstruction technology[D].Harbin:Northeast Agricultual University,2010:17-27(in Chinese).[戴百生.基于STEP的制造特征識別與三維重建技術(shù)研究[D].哈爾濱:東北農(nóng)業(yè)大學(xué),2010:17-27.]
[7]ZHANG Yanli,TAN Tongde,ZHAO Xincan,et al.Construction and design of virtual chemistry experiment platform based on OSG[J].Computer Engineering and Design,2010,31(12),2909-2913(in Chinese).[張艷麗,譚同德,趙新燦,等.基于OSG的虛擬化學(xué)實驗平臺的構(gòu)建設(shè)計[J].計算機(jī)工程與設(shè)計,2010,31(12):2909-2913.]
[8]REN Lei.The extraction and reconstruction of STEP-based geometrical information[D].Changchun:Jilin University,2008:12-40(in Chinese).[任蕾.基于STEP標(biāo)準(zhǔn)的幾何信息的提取和模型重建[D].長春:吉林大學(xué),2008:12-40.]
[9]REN Mingxuan.Study of STEP-based system of the file character recognition[D].Tianjin:Tianjin University,2009:39-44(in Chinese).[任明軒.基于STEP文件特征識別系統(tǒng)的研究[D].天津:天津大學(xué),2009:39-44.]
[10]ZHANG Yin.Research on the key technologies of intelligent virtual assembly sequence planning system[D].Nanjing:Nanjing University of Aeronautics and Astronautics,2006:115-119(in Chinese).[張銀.基于知識的虛擬裝配序列規(guī)劃系統(tǒng)及其關(guān)鍵技術(shù)研究[D].南京:南京航空航天大學(xué),2006:115-119.]