宋辛辛, 陳永當, 顧金芋, 曹坤煜, 鄭星
(1.西安工程大學, 機電工程學院, 陜西, 西安 710600; 2.西安交通大學, 航天學院, 陜西, 西安 710048)
液壓傳動作為機械專業中重要的課程之一,液壓元件拆裝實驗有利于學生理解其內部復雜結構。傳統液壓實驗課程存在著實驗器材的種類和數量有限,操作不當易損壞,易受時間和空間限制等問題[1]。因此,設計開發出一款沉浸感強、交互性高的液壓虛擬實驗系統具有一定的意義。
目前,虛擬現實技術在機械、教育領域的應用已取得一定成果。李夢如等人采用Inventor構建虛擬實驗場景,Unity3D為開發平臺設計液壓虛擬實驗系統[2]。陳敏捷等人利用UG與3dsMax軟件建立液壓實驗模型,導入Unity3D搭建了液壓虛擬仿真實驗系統[3]。吳飛等人使用Unity3D軟件設計開發了一套顎式破碎機虛擬拆裝實驗教學系統,可準確展示其零件結構和工作原理[4]。以上研究在一定程度上實現了實驗的虛擬化,但其交互方式通常以鼠標鍵盤為主,仍存在沉浸感不強,交互性差等問題。
因此,本文以液壓元件拆裝實驗為研究對象,利用層次化割集法、混合包圍盒碰撞檢測算法和HTC Vive頭戴式顯示器及虛擬現實手柄進行開發研究。
斜軸式軸向柱塞泵是典型的液壓動力元件,具有結構復雜、零件數量多等特點。因此,本文以斜軸式軸向柱塞泵為例,主要從用戶管理、實驗內容、關鍵技術、界面設計與系統發布等方面對系統進行開發研究,系統整體架構如圖1所示。

圖1 系統整體架構
目前,常用的虛擬現實開發引擎有Virtools、Unreal、Converse3D、Unity3D等,其中,Unity3D是一款集場景管理、系統開發、交互實現等功能于一體的跨平臺引擎,支持Windows、Linux、Mac OS、IOS、和Andriod等主流平臺,且具有良好移植性、用戶界面友好、編輯操作方便等優點[5-6]。因此,本系統以Unity3D為虛擬現實開發平臺,C#為編程語言,3dsMax和SolidWorks為建模工具,Visual Studio2017為輔助工具對液壓元件虛擬拆裝系統進行開發。此外,為了提高虛擬實驗真實性和沉浸感采用HTC Vive頭顯設備和手柄作為交互工具[7]。
液壓元件虛擬拆裝實驗系統開發流程如圖2所示。首先,根據液壓元件實際尺寸利用SolidWorks軟件完成液壓元件建模,3DsMax軟件對實驗場景進行建模;然后,在3DsMax軟件中對模型進行模型優化處理;最后,導入Unity3D中進行系統界面開發,并結合拆裝序列規劃算法和碰撞檢測算法實現液壓元件裝配與拆卸,并可根據不同需求選擇教學模式或練習模式。
SolidWorks模型存在面數較多的問題,導入Unity3D后會嚴重影響系統運行速度,因此需要在導入Unity3D軟件前對模型進行面數優化和減面處理。在3DsMax中將斜軸式軸向柱塞泵模型轉化為可編輯多邊形,并在修改器中對每個零件分別進行面數優化,優化前后對比見圖3。優化前的面數為4 655 284、頂點數為2 327 731,優化后的面數為1 640 642、頂點數為820 410,優化后模型面數減少了64.75%,頂點數減少了64.76%。

圖2 系統開發流程

(a) 減面前模型

(b) 減面后模型圖3 模型面數優化前后對比
一方面,由于裝配過程的不可逆性,必須按照一定的裝配順序將零件裝配成一個整體;另一方面,由于液壓元件的拆裝實驗需要確定可行的裝配序列,使學生可以清晰了解液壓元件的裝配過程,以達到輔助教學的目的。因此,本文利用層次化割集法規劃裝配序列[8],其求解流程見圖4。由于斜軸式軸向柱塞泵結構復雜,零件數量較多,是典型的液壓動力元件,因此本文以斜軸式軸向柱塞泵為例建立如圖5所示的裝配信息模型,對其裝配序列進行規劃,零件名稱見表1。

圖4 層次化割集法算法流程圖

圖5 斜軸式軸向柱塞泵裝配信息模型

表1 斜軸式軸向柱塞泵零件名稱
利用層次化割集法,并從操作的并行性、重定向次數、聚合性準則和操作的復雜性4個方面進行評價,求解最優裝配序列[9]。將斜軸式軸向柱塞泵根據裝配體和聚族的定義分為5層,其中,聚族1包含零件7、8和10,聚族2包含零件1和2,聚族3包含零件3和5,聚族4包含零件9、24和25,子子裝配體1包含零件18、22、23和聚族4,子子裝配體2包含零件16、17、19、20和21,子裝配體包含零件26、12、11、13、14、15、子子裝配體1和子子裝配體2。因此,斜軸式軸向柱塞泵可以看成由零件4、6、聚族2、聚族3和子裝配體組成。按照層次化割集法求解得到每一層的裝配序列見表2,并得到斜軸式軸向柱塞泵的最優裝配序列為:9-25-24-23-22-18-26-12-15-13-11-16-17-19-20-21-14-7-8-10-6-4-5-3-2-1。

表2 斜軸式軸向柱塞泵裝配序列
在虛擬拆裝過程中,需要對每個零件添加包圍盒碰撞器,以判斷手柄與零件之間的接觸狀態。Unity3D中的Box Collider包圍盒碰撞器構造簡單、檢測效率高,適用于類長方體形狀對象,Mesh Collider包圍盒密封性很高,適用于形狀復雜對象。因此,為類長方體零件添加Box Collider包圍盒碰撞器,其余零件添加Mesh Collider包圍盒碰撞器。
由于網格包圍盒主要由三角形面片組成,在虛擬場景中主要涉及AABB包圍盒和網格包圍盒相交測試。因此,碰撞檢測可轉化為兩AABB包圍盒之間、空間三角形面片和AABB包圍盒、兩三角形面片之間的圖元相交測試,對應的相交測試原理示意如圖6中①、②、③所示。

圖6 碰撞檢測原理示意圖
(1) AABB包圍盒之間相交測試
根據分離軸定律可知,若兩凸多面體不相交,則必存在一條分離軸使得兩凸多面體在該軸的投影區域分離,且該分離軸平行于兩凸面體兩條邊的叉乘積或垂直于其中一個凸多面體的一個面[5]。因此,AABB包圍盒之間的碰撞檢測可轉化為檢測它們在三維坐標軸投影區域是否重合。設AABB1和AABB2的最小頂點分別為P1(L10,L11,L12),P2(L20,L21,L22),最大頂點分別為Q1(H10,H11,H12),Q2(H20,H21,H22),若滿足式(1)中任一條件,則兩AABB包圍盒不相交。
L10>H20
L20>H10
L11>H21
L21>H11
L12>H22
L22>H12
(1)
(2) 空間三角面片和AABB包圍盒之間相交測試
根據分離軸定律可知,可轉化為檢測AABB包圍盒3條面法線、三角形1條面法線和邊—邊組合9條叉積軸的投影情況,若存在分離軸,則不相交,遍歷該網格包圍盒下一個三角形,若存在任一三角形和AABB包圍盒相交,則AABB包圍盒和網格包圍盒相交。設AABB包圍盒局部坐標軸為
u0=(1,0,0)
u1=(0,1,0)
u2=(0,0,1)
(2)
其中,u0、u1、u2的取值范圍為e0、e1、e2。
測試三角形定義為
V0=(V0x,V0y,V0z)
V1=(V1x,V1y,V1z)
V2=(V2x,V2y,V2z)
(3)
為簡化計算,將AABB包圍盒中心移至原點,則三角形三條邊可定義為
f0=V1-V0=(f0x,f0y,f0z)
f1=V2-V1=(f1x,f1y,f1z)
f2=V0-V2=(f2x,f2y,f2z)
(4)
9條叉積軸定義為
ai=ui×fj
(5)
其中,i,j=0,1,2。
故,軸n上盒體投影半徑為
r=e0u0·n+e1u1·n+e2u2·n
(6)
設p0,p1,p2為原點到三角形頂點在n上的投影點之間的距離,則上述三角形的投影區間為:[min(p0,p1,p2),max(p0,p1,p2)]。若區間滿足[-r,r]與三角形投影區間的交集為空集,則三角形與AABB包圍盒不相交,并遍歷該網格包圍盒的下一個三角形面片進行測試。
(3) 兩三角形面片之間的相交測試
采用分離軸定律對11條分離軸進行測試(2條平行于三角形面法線的軸,9種邊邊組合的叉積軸),針對每個軸,計算三角形在該軸上用于相交測試的投影區間,若任一軸上不存在投影區間的交集,則被測三角形面片間分離,若投影區間在11個軸上均相交,則兩個三角形相交。
1) 液壓零件的認知與拾取功能
為每個零件和手柄添加包圍盒碰撞器,設置碰撞標簽,又由于兩個網格碰撞器之間不會發生碰撞,因此需要將網格標記為凸起,以實現零件與零件、零件與手柄、零件與其他物體在虛擬場景中產生碰撞時可及時被檢測,避免虛擬場景中物體之間出現干涉或穿透等情況。如圖7所示,添加碰撞器后,主要實現功能如下。
(1) 零件認知功能:手柄接觸到零件時產生震動,隨即顯示零件名稱。
(2) 零件拾取功能:當手柄接觸零件且同時按下手柄兩側的按鈕時,可實現對元件的抓取移動,用于零件安裝時和觀察零件結構特征。
2) 液壓零件的裝配與拆卸功能
為實現斜軸式軸向柱塞泵元件的準確、快速裝配,本系統為每個零件設置有待裝配的虛位置。在裝配時,根據表1中的規劃序列從第5層至第1層用手柄逐一拾取零件進行裝配,當零件被移動至對應安裝位置時,手柄產生震動提醒,松開按鍵后零件即被安裝至對應位置。裝配的第一個零件首先被賦予Rigidbody重力和包圍盒碰撞器屬性,在裝配完成一個零件后,下一個零件才被賦予以上屬性,直至最后一個零件安裝完成,即實現整個斜軸式軸向柱塞泵元件的裝配,如圖8所示。

(a) 零件認知功能

(b) 零件拾取功能圖7 零件認知和拾取功能

圖8 裝配功能實現
在進行斜軸式軸向柱塞泵拆卸時,按照表1中規劃的序列從第1層至第5層的相反裝配序列進行拆卸,拆卸完成后可將零件放置實驗臺,以完成整個元件的虛擬拆卸實驗。
液壓元件虛擬拆裝系統界面與場景主要包括登錄界面、實驗場景、實驗原理展示和虛擬拆裝試驗臺4個模塊,見圖9。完成液壓拆裝實驗系統關鍵技術難點和功能開發后,發布至Windows平臺,實驗過程中通過手柄發射射線觸發場景3DUI界面進行交互。
本文主要從液壓元件虛擬拆裝系統總體設計、液壓元件模型優化處理與裝配序列規劃、交互功能實現和系統界面設計與發布4個模塊進行研究,采用混合包圍盒碰撞檢測算法解決零件之間干涉問題,以Unity3D為開發平臺,HTC Vive為交互設備,開發了一個沉浸感強、交互性高的液壓元件虛擬拆裝實驗系統。




圖9 液壓元件拆裝系統模塊