李彥文,董秀成,李長龍
(西華大學(xué)電氣信息學(xué)院,四川 成都 610039)
齒輪減速器是原動機(jī)和工作機(jī)之間獨(dú)立的閉式機(jī)械傳動裝置,能夠降低轉(zhuǎn)速和增大轉(zhuǎn)矩,是一種被廣泛應(yīng)用的機(jī)械部件[1]。裝配過程是保證產(chǎn)品質(zhì)量的重要階段,二級圓柱齒輪減速器裝配關(guān)系復(fù)雜、所涉及的組成環(huán)節(jié)數(shù)目多。傳統(tǒng)的裝配培訓(xùn)受場地、時(shí)間、實(shí)物等多方面的限制。一些CAD和三維渲染軟件雖然可以制作裝配動畫對裝配過程進(jìn)行演示,但是主要以三維造型設(shè)計(jì)為主,缺乏真實(shí)的互動不能讓培訓(xùn)者對裝配過程形成深刻準(zhǔn)確的理解[2]。本文利用CAD軟件對二級圓柱齒輪減速器進(jìn)行準(zhǔn)確建模,充分利用虛擬現(xiàn)實(shí)軟件的交互性、沉浸性、構(gòu)想性特點(diǎn),建立虛擬裝配系統(tǒng),在分析基于碰撞檢測的虛擬裝配和基于約束的虛擬裝配的不足的基礎(chǔ)上,提出利用DOF對裝配體定位的方法,并對其中的一些關(guān)鍵技術(shù)進(jìn)行研究。圖1是本系統(tǒng)的主要結(jié)構(gòu)框架。
建立準(zhǔn)確的零部件模型是進(jìn)行虛擬裝配的基礎(chǔ)。SolidWorks具有基于特征的實(shí)體建模功能,可以通過拉伸、旋轉(zhuǎn)、薄壁特征、高級抽殼、特征陣列以及打孔等操作來實(shí)現(xiàn)對造型復(fù)雜零部件的快速建模?;谀P途_度和零部件特征的要求,本文采用SolidWorks來建立零部件的三維模型。
圖1 虛擬裝配系統(tǒng)的結(jié)構(gòu)框架
在CAD系統(tǒng)中,零部件模型可以用精確的數(shù)學(xué)方法表達(dá),但是在虛擬現(xiàn)實(shí)環(huán)境中,基于實(shí)時(shí)性和計(jì)算量的要求,零部件采用由三角面片構(gòu)成的模型來表達(dá)[3]。Multigen Creator軟件是基于描述數(shù)據(jù)格式的工業(yè)標(biāo)準(zhǔn)OpenFlight,通過分層結(jié)構(gòu)的數(shù)據(jù)庫,能夠確保實(shí)時(shí)三維性能和交互邏輯關(guān)系。此外,其特殊的功能節(jié)點(diǎn)如自由度(DOF)節(jié)點(diǎn)、細(xì)節(jié)層次(levels of detail,LOD)節(jié)點(diǎn)、開關(guān)(Switch)節(jié)點(diǎn)等,可以方便實(shí)現(xiàn)模型細(xì)節(jié)展示、運(yùn)動、特殊部位消隱等功能。
Multigen Creator在模型組織上有優(yōu)勢,但是無法完成一些復(fù)雜建模;因此,把在SolidWorks中建立的精確模型,通過導(dǎo)出“STL”格式文件,加載到Multigen Creator中進(jìn)行處理,刪除內(nèi)部多余的面,以簡化模型,并根據(jù)需要重新組織模型的層次結(jié)構(gòu)。如圖2所示,把模型按照子裝配體的方式進(jìn)行分塊分層表達(dá),并對零部件進(jìn)行相應(yīng)的命名,重新組織模型的層次結(jié)構(gòu),這樣可以直觀地表達(dá)模型的裝配層,也方便下一步裝配序列的制定。
虛擬組裝環(huán)境采用Vega Prime軟件結(jié)合MFC開發(fā)。Vega Prime是一種用于實(shí)時(shí)仿真及虛擬應(yīng)用的高性能軟件環(huán)境和工具。其底層是基于開放式圖形庫OpenGL技術(shù),緊接著的一層是Multigen-Paradigm公司自己的跨平臺場景渲染引擎VSG,VSG上面是完整的基于C++的函數(shù)調(diào)用庫和完整的用戶使用文檔[4]。利用Vega Prime可以方便地對虛擬組裝環(huán)境中的對象進(jìn)行靈活的操作。
圖2 模型的層次結(jié)構(gòu)
通過鼠標(biāo)點(diǎn)選來實(shí)現(xiàn)以下功能。 1)拾取裝配對象。定義一個(gè)LOS (line-of-sight),從視點(diǎn)出發(fā)并垂直于視切面,利用LOS從最近到最遠(yuǎn)視切面尋找對象,選中對象高亮顯示。2)指定裝配基準(zhǔn)件和零件。在裝配過程中每個(gè)后續(xù)零件總需要裝配在一個(gè)指定的裝配基準(zhǔn)件上,因此,對鼠標(biāo)的單擊事件編寫響應(yīng)函數(shù)。如果當(dāng)前選中的對象DetectedObject與上次選中的對象SelectedObject不相同,那么就要對這2個(gè)不同對象進(jìn)行組裝,將先選中的對象設(shè)置為基準(zhǔn)件,后選中的對象設(shè)置為零件,裝配時(shí)基準(zhǔn)件位置不動,零件變動位置,其流程圖如圖3所示。
零部件之間的裝配特征關(guān)系信息在虛擬組裝中非常重要[5]。它可以用來提示用戶相關(guān)零部件的組裝特性,并引導(dǎo)用戶把相應(yīng)零部件裝到正確位置。特征在系統(tǒng)中實(shí)時(shí)繪制,會增加系統(tǒng)開支。本文充分利用Multigen Creator的分層結(jié)構(gòu)數(shù)據(jù)庫和開關(guān)(Switch)節(jié)點(diǎn)的特性,把裝配特征設(shè)置成開關(guān)節(jié)點(diǎn)的子節(jié)點(diǎn),如圖4(a)所示,在用鼠標(biāo)選中對象后,顯示該對象的裝配特征子節(jié)點(diǎn),如圖4(b)所示,解除選中時(shí),隱藏該子節(jié)點(diǎn),顯示模型主體,如圖4(c)所示。
裝配實(shí)質(zhì)就是把對象放到合適的空間位置?;谂鲎矙z測的虛擬裝配[3],把組裝分為接觸和組裝2個(gè)過程,通過碰撞檢測來判斷2個(gè)物體的距離和角度是否滿足組裝條件,如滿足,把零件直接放到已知位置上。該算法要求待裝配零件在裝配體中的最終位置是已知的;但是在模型建立時(shí),零部件是在各自坐標(biāo)系下建立的,想要從CAD軟件直接獲得零部件在裝配體中的絕對位置比較困難。
圖3 鼠標(biāo)點(diǎn)選流程圖
基于約束的虛擬裝配[6-7]是根據(jù)每個(gè)零件的自由度來確定其約束類型,利用約束類型來約束2個(gè)幾何元素的裝配關(guān)系。從CAD軟件獲得的約束元素信息,用點(diǎn)、直線、平面來表示,比如2個(gè)面貼合約束,通過平面A上的點(diǎn)到平面S的距離D和2個(gè)平面的夾角H大小來確定。這種方法需要定義每個(gè)零件的約束特征,而且一個(gè)裝配關(guān)系可能需要多個(gè)約束才能表達(dá)清楚,例如要把從動齒輪裝到從動軸上,如圖5(a)所示,需要定義軸對齊和面貼合2個(gè)約束,如圖5(b)(c)所示。隨著零部件數(shù)量和復(fù)雜度的增加,約束的數(shù)量會呈指數(shù)級增長[7]。
(a)
(b)
(c)
(a)
(b)
(c)
基于此,本文采用Multigen Creator中自由度節(jié)點(diǎn)對零部件進(jìn)行定位。如圖6所示,把每個(gè)零部件都單獨(dú)作為一個(gè)DOF的子節(jié)點(diǎn),添加到場景這個(gè)根節(jié)點(diǎn)中。場景采用世界坐標(biāo)系Oxyz,DOF節(jié)點(diǎn)都有自己的本地坐標(biāo)系O′x′y′z′。
圖6 場景根節(jié)點(diǎn)與DOF子節(jié)點(diǎn)
1個(gè)DOF節(jié)點(diǎn)實(shí)際上封裝了2個(gè)仿射變換矩陣:仿射變換矩陣T1給出DOF本地坐標(biāo)系相對于世界坐標(biāo)系的位置、平移、縮放、旋轉(zhuǎn)等變換;仿射變換矩陣T2用來描述零部件相對于本地坐標(biāo)系的位置、平移、縮放、旋轉(zhuǎn)等變換。T1、T2包含的信息都可以用1個(gè)4×4的矩陣表示,即
由于在定義DOF節(jié)點(diǎn)時(shí),取本地坐標(biāo)與世界坐標(biāo)方向相同,即平移、縮放、旋轉(zhuǎn)均為零,因此,T1中只有P1×3有意義,其值為DOF的絕對坐標(biāo)。
對于T2,零部件在裝配過程中的各種位置狀態(tài)可以通過調(diào)整R3×3中的值來進(jìn)行控制,使零部件可以在本地坐標(biāo)系中:1)沿著x、y和z軸平移;2)沿著x、y和z軸轉(zhuǎn)動;3)沿著x、y和z軸縮放。
2個(gè)零部件的DOF重合,其實(shí)就是2個(gè)局部坐標(biāo)系原點(diǎn)的重合。利用這種方法,只需知道有裝配關(guān)系的零部件之間的相對位置,并用相應(yīng)的DOF來表達(dá),無須定義零部件的約束便可完成后續(xù)的裝配。對于一些形狀不規(guī)則物體,此方法也可以方便定位。由于DOF節(jié)點(diǎn)成對出現(xiàn),因此沒有裝配關(guān)系的零部件不能進(jìn)行組裝,以確保裝配過程按照正確的序列進(jìn)行。
裝配序列即裝配順序,傳統(tǒng)的裝配序列規(guī)劃通常需要考慮工藝約束和幾何約束,并設(shè)立目標(biāo)函數(shù),以得到裝配成本最低的序列[8]。如圖2所示,本文用OpenFlight格式對模型重新組織,采用子裝配體概念,使用按照層級對零部件的DOF進(jìn)行命名的統(tǒng)一命名規(guī)則,裝配函數(shù)通過遍歷零部件名稱來確定當(dāng)前2個(gè)零件是否具有裝配關(guān)系。不同部位、不同層級之間,不具有裝配關(guān)系的零部件不能進(jìn)行裝配,確保裝配過程按照正確的序列進(jìn)行。作為一個(gè)培訓(xùn)系統(tǒng),通過這樣的方法,可以保證使用者嘗試各種裝配序列,并實(shí)踐得出可行的裝配序列。
Vega Prime提供了幾種基本的碰撞檢測類,其中 VpIsectorBump類采用6條線段分別沿x、y、z的正負(fù)方向進(jìn)行碰撞檢測。對虛擬環(huán)境中的每個(gè)零部件都定義碰撞檢測,當(dāng)碰撞發(fā)生時(shí),系統(tǒng)會檢測到碰撞發(fā)生的位置,提示用戶向相應(yīng)方向調(diào)整零部件位置以規(guī)避碰撞,用戶可以通過鍵盤來調(diào)整P1×3和R3×3的值,進(jìn)而控制零部件在虛擬環(huán)境中的位置,選擇合理的裝配路徑。
本文基于MFC對話框應(yīng)用程序,搭建虛擬組裝環(huán)境,通過MFC調(diào)用Vega Prime的API和編寫的功能函數(shù)來實(shí)現(xiàn)具體裝配。MFC提供多線程應(yīng)用程序編程,包括用戶界面線程UI和工作者線程。在對話框程序里啟動一個(gè)工作者線程,在線程的主函數(shù)體里初始化Vega Prime并執(zhí)行主循環(huán)。通過把父窗口句柄傳遞給setParent( )來設(shè)置Vega Prime場景在哪里顯示。為便于管理以及理清思路,定義一個(gè)類PublicMember,封裝與Vega Prime有關(guān)的代碼,而鼠標(biāo)、鍵盤操作,以及對話框上的參數(shù)設(shè)置都通過類的成員函數(shù)來實(shí)現(xiàn),其程序框圖如圖7所示。
圖7 程序框圖
本文設(shè)計(jì)了一個(gè)虛擬裝配系統(tǒng),并以二級圓柱齒輪減速器為對象,介紹了系統(tǒng)中的一些關(guān)鍵技術(shù),針對基于碰撞檢測和基于約束的虛擬裝配存在的不足,提出了基于DOF節(jié)點(diǎn)的裝配方法。實(shí)驗(yàn)結(jié)果表明,該方法占用系統(tǒng)資源少,定位精確,系統(tǒng)結(jié)構(gòu)簡單,操作簡便,實(shí)用性強(qiáng)。
[1] 張慧鵬.基于MATLAB的二級圓柱齒輪減速器優(yōu)化設(shè)計(jì)[J].機(jī)械設(shè)計(jì)與制造,2010 (4):79-80.
[2] Christiand, Yoon Jungwon. Assembly Simulations in Virtual Environments with Optimized Haptic Path and Sequence [J]. Robotics and Computer-integrated Manufacturing, 2011,27(2):306-317.
[3] Xia PingJun, Lopes Antonio M,Restivo Maria Teresa,et al. A New type Haptics-based Virtual Environment System for Assembly Training of Complex Product [J]. International Journal of Advanced Manufacturing Technology,2012,58(1/4):379-398.
[4] 王云翔,趙經(jīng)成,付戰(zhàn)平,等. 基于Vega Prime的視景仿真驅(qū)動技術(shù)研究[J]. 微計(jì)算機(jī)信息,2008,24(24):214-216.
[5] 高欽和,鄧剛鋒.基于矩陣運(yùn)算的虛擬裝配體拆卸過程建模方法[J].計(jì)算機(jī)應(yīng)用,2012,32(11):3232-3234.
[6] 楊潤黨,武殿梁,范秀敏,等.基于約束的虛擬裝配技術(shù)研究[J].計(jì)算機(jī)集成制造系統(tǒng),2006,12(3):413-419.
[7] Xu Lida, Wang Chengen, Bi Zhuming, et al. AutoAssem: An Automated Assembly Planning System for Complex Product [J]. IEEE Transactions on Industrial Informatics,2012,8(3):669-678.
[8] 李敬花,余峰,樊付見,等.基于遺傳模擬退火融合算法的船舶分段裝配序列優(yōu)化[J].計(jì)算機(jī)集成制造系統(tǒng),2013,19(1):39-45.