張 青,趙洪利,郭 慶,徐宇杰
(中國民航大學,天津 300300)
虛擬裝配技術作為一門新興學科正在蓬勃發展,近年來在航空航天、軍事、建筑等領域得到越來越廣泛的應用。民航發動機傳統維護培訓投入大、耗費人力和物力,而在民航發動機的維護作業中,零部件的拆卸與重新裝配是重要的組成部分,拆卸與裝配所需時間在整個維修活動所需時間中占有相當的比例。因此,開展發動機虛擬裝配技術研究越來越迫切,采用虛擬樣機裝配替代發動機實物可節省大量培訓經費,縮短培訓周期,提高發動機裝配的質量,保證裝配人員工作的安全,使裝配工作真正在高效、高質量、短時間、低成本的環境下完成[1]。本文探索性地設計了民航發動機虛擬裝配實驗系統,設計流程如圖1所示。并對人機交互設備數據接口進行開發,將3DVIA Studio虛擬仿真平臺、四通道POWR WALL沉浸式環境投影系統和體感交互設備kinect集成在一起,改變傳統的鍵盤鼠標控制模式,使操作者像在真實環境中一樣對發動機的零部件進行實時交互、感知以及各類裝配操作,對發動機零部件的可裝配性作出直接的評價。

圖1 民航發動機虛擬裝配實驗系統設計流程圖
3DVIA Studio是達索公司推出的一款用于集成和開發虛擬現實系統專業軟件,支持沉浸式虛擬現實顯示,可以生成跨平臺渲染、播放和操作的虛擬現實場景,支持450個圖形化行為模塊(Building Block)開發,并提供VSL(Virtools Script Language)腳本語言和基于C++語言的SDK(Software Development Kit)開發,開發人員可以在3DVIA Studio里面直接進行代碼語言開發,可與幾乎所有主流虛擬現實硬件進行無縫匹配[2]。設計人員可以在Assemble面板中對場景進行組裝和配置,在3D View窗口中對物體進行變換操作、相機視圖操作、以及實時修改屬性動態調整物體參數。開發人員可以在Behavior面板中進行行為及功能的開發,并在3D窗口實時調試和運行。3DVIA Studio的粒子系統可以模擬如水、煙、火、雨、雪等自然現象。動態物理模擬系統可以幫助用戶完成諸如重力、摩擦力、彈力、干涉、碰撞、運動副、鉸鏈、彈簧、外力等物理模擬[3]。
利用三維建模工具CATIA對發動機建模,提高建模速度和模型精確度。根據發動機維護手冊要求對各個零件、子裝配體、總裝配體進行編號。發動機數據:風扇直徑(mm)1613,長度(mm)3200。通過分析和計算,確定1:12比例(3200÷266≈12.03,1613÷135≈11.95),計算出風扇葉片長度為:46mm×12=552mm,寬度大約為240mm,以及風扇機匣、高壓壓氣機、燃燒室、高壓渦輪、低壓渦輪、尾噴等結構的軸向尺寸,使用這些尺寸進行發動機主體零件的3D造型,如圖2所示。3DVIA Studio能直接打開由CATIA導出的3DXML工程模型,其中的數據信息、模型、材質、動畫(機構仿真)等,都能進入到3DVIA Studio中。
運用3DS MAX建模軟件建立發動機大修車間系統場景和虛擬維修人員模型,包括發動機整機裝配模型(如修理車間、修理工具如螺絲刀、扳手、刀具類、錘類、鉗類、軌道、支架、吊鉤等)以及其他實體模型(如廠房、地面等),添加材質、貼圖后,導出為DAE格式導入3DVIA Studio中,如圖3、圖4所示。3DVIA Studio中默認使用的單位為米,而一般機械CAD默認采用毫米為單位。為確保各類模型單位統一,在模型導入前,調整3DVIA Studio的首選項,Reader 3DXML/Unit Scale調整為0.001[4]。

圖2 發動機虛擬樣機

圖3 虛擬維護人員模型

圖4 翻修廠虛擬場景
人機交互是指用戶對現實平臺中的物體執行操作并從虛擬環境中得到相應的反饋,它是構成虛擬裝配的關鍵技術[5]。本系統中,在虛擬環境下人與裝配零部件之間的交互行為是通過系統中圖形化行為模塊(Building Block),如vkIOdevicemanger這一系列數據接口,接受外接設備的數據輸入,引發系統里面設置好的邏輯事件從而達到人機交互的目的,邏輯編程如圖5所示。通過使用vkiodevicemanger::keyboard系統接受鍵盤的輸入從而并觸發iskey pressed判斷從而引起設置好的鍵盤觸發事件,通過enqueue animation命令人物開始執行相應的動作。

圖5 人機交互控制邏輯編程圖
本系統以最自然的方式即以自己的肢體語言實現對整個系統的控制,采用微軟kinect通過紅外線測點原理,得到人體的深度圖像,從中獲得人體每個的骨骼數據,如圖6所示,可以看到通過深度流算法可以將人體從背景中提取出來,并得到每個骨骼節點的三維坐標并在虛擬人的數據和kinect傳輸的數據建立連接,從而實現控制。編程代碼如下:

圖6 人機交互控制邏輯編程圖

圖7 BB:Interpolator

圖8 BB:Set Local Position
獲取骨骼數據:
//獲得離Kinect距離最近被骨骼跟蹤的用戶
Skeleton s = GetClosetSkeleton(e);
if (s == null)
{
return;
}
if (s.TrackingState == SkeletonTrackingState.Tracked)
{
var joints = s.Joints;
Joint rightHand = joints[JointType.HandRight];
Joint leftHand = joints[JointType.HandLeft];
Joint head = joints[JointType.Head];
將骨骼數據賦予虛擬人的骨骼
Joint scaledCursorJoint = new Joint
{
TrackingState = JointTrackingState.Tracked,
Position = new SkeletonPoint
{
X = posX,
Y = posY,
Z = hand.Position.Z
}
};
int x = Convert.ToInt32(scaledCursorJoint.Position.X);
int y = Convert.ToInt32(scaledCursorJoint.Position.Y);
3DVIA Studio中模型的運動是通過編輯程序腳本來實現,其運動不能根據參照面,軸線等準備定位目標位置。以裝配體的形式導入3DVIA Studio的發動機及維修廠房模型模型,首先將各零部件移動到相應的工位上去,再根據兩零部件初始的相對位置關系即可確定部件的正確裝配位置[6]。
根據3DVIA Studio提供的一部分封裝好的圖形化模塊 (Building Block,BB),可以實現一些基本的邏輯控制和模型操作,如BB:Interpolator,在兩個位置間進行線性插值,如圖7所示。在BB Interpolator圖形化模塊選擇Edit Variable Settings,設置Interpolator的變量類型,空間坐標選擇vkvec3,value1是空間坐標中物體運動后最終所處位置的坐標。BB:Set Local Position,可以將物體放置到設定的坐標位置。Get Local Position取得目標對象的當前空間坐標。運行時物體的空間坐標不斷的向最終坐標靠近,從而達到物體平滑移動的效果。零部件平滑拆裝模塊邏輯圖如圖9所示。

圖9 零部件平滑移動模塊邏輯圖
通過不同BB的組合可實現線性轉動功能,如BB:RotateAround,實現物體繞指定物體的指定軸線轉動指定的角度,但其轉動瞬間完成的,通過結合其他BB來實現線性的轉動。如圖10所示實現線性轉動功能的圖形化腳本:首先將輸入的轉動角度通過數學運算轉化為弧度,然后在BB:LinearProgression指定的進程時間內循環調用BB:RotateAround完成轉動。

圖10 BB組合實現線性轉動功能
通過這些BB的組合可以實現大多數情況的運動控制。發動機整個裝配過程的運動通過以下模塊循環應用實現控制:1)視角速度線性變換模塊通過BB:Counter、Get World Transform、Set World Transform、Interpolator組合實現;2)顯示或隱藏標簽描述模塊通過BB:2D NLS Text、Compare、vkClickableEnterEvent、Triggers組合實現;3)閃爍模塊通過BB:Set Material Override、Delayer、Counter組合實現;4)平滑移動模塊通過BB:Get Local Position、Set Local Position、Interpolator組合實現;5)線性轉動模塊通過BB:Divide、Linear Progression、Multiply Rotate Around、Add組合實現;6)物體漸隱消失模塊通過BB:Get Opacity、Set Opacity、Interpolator、Counter組合實現。
發動機零部件碰撞檢測在進行虛擬拆裝時,為了避免各個部件產生接觸碰撞,需要進行碰撞檢測[7]。解決碰撞問題的辦法是通過給模型添加物理屬性,從而使兩個物體之間產生物理碰撞,具體的實現方法是添加vkObject Slider Constraint以防止模型間的干涉。
3DVIA studio中提供了區域檢測技術,即當物體進入這個區域后就會觸發相應設計好的動作,如圖11、圖12所示,這在很大的程度上解決了kinect光學體感技術在虛擬航空發動機拆裝動畫中精度不足問題,只要部件達到一定區域后,就可自動實現精確的拆裝。

圖11 觸發域

圖12 進入觸發域之后所觸發的邏輯圖
以3DVIA Studio虛擬仿真平臺、數據頭盔、四通道POWR WALL式沉浸環境投影系統為基礎,搭建沉浸式虛擬仿真環境,以多通道視景同步技術和數字圖像邊緣融合技術為支撐,根據人眼3D呈象原理,即人眼左右眼在看同一個物體時,有視距差約為5cm左右,所以人眼的左右眼所看到畫面是不相同的,通過左右眼視差中包含的物體的深度信息,而在大腦圖層重新疊加成三維圖像,形成立體視覺。本系統利用此原理,通過設置左右兩個攝像機代替人的左右眼,通過腳本編程,讓左右攝像機之間差一個人眼的視距,從而獲得類似于人眼的左右兩個不同的畫面,再通過偏振鏡等形式使左眼只能看到左畫面右眼只能看見右畫面從而在大腦皮層重新疊加成3D效果[8]。
把3D攝像機iv Steroscopic Camera Post Process Rendering拖入3D View窗口后,可看到里面包含左右兩個攝像機,使用左右眼3D成像原理,選擇side by side模式,對VSL腳本語言編程,代碼如圖13所示。設置兩個攝像機cameratomatch和match2代替原來的left和right,采用兩個自由的攝像機代替了原來的組件,再通過腳本編程進行控制,如圖14所示。以主攝像機為核心里面的Get world transform,左右攝像機和主攝像機之間控制間距通過multiply還有add給主攝像機的x坐標偏移一個半個視距,然后賦給左攝像機,同理向另外一個攝像機向相反方向偏移一個值,給右攝像機,如此就形成了3D顯示效果,如圖15所示。

圖13 3D成像腳本編程

圖14 左右眼攝像機腳本編程
民航發動機傳統維護培訓投入大、耗費人力和物力,采用虛擬樣機裝配替代發動機實物可節省大量培訓經費,縮短培訓周期,提高發動機裝配的質量,保證裝配人員工作的安全。本文提供一套民航發動機虛擬裝配實驗系統的設計框架,實驗系統如圖16所示。對人機交互設備數據接口進行開發,通過人機交互設備kinect與3DVIA Studio虛擬現實軟件相結合,改變傳統的鍵盤鼠標控制模式,使用肢體語言操控發動機虛擬裝配,加強發動機裝配仿真的逼真度,為虛擬裝配提供科學、高效、自然的人機交互解決方案,提高在虛擬環境中進行裝配工作分析評價的可信度。以3DVIA Studio虛擬仿真平臺,數據頭盔、四通道POWR WALL沉浸式環境投影系統為基礎,搭建沉浸式虛擬仿真環境,使參與者獲得一種身臨其境的虛擬仿真視覺感受。

圖15 沉浸式左右眼3D顯示

圖16 民航發動機虛擬裝配實驗系統
[1]劉國柱.Virtools嵌入式服務器與虛擬現實協同設計平臺[J].科技通報,2012,28(4).
[2]高穎,鐘嘯,許志國,鄭濤.基于VR技術的航空發動機虛擬教學實驗系統設計[J].系統仿真學報,2008,20(11):2925-2930.
[3]劉江省,姚英學,李建廣,等.虛擬裝配中基于數據手套的虛擬操作研究[J].系統仿真學報, 2004,16(8):1744-1747.
[4]鄭軼,寧汝新,劉檢華,杜龍.虛擬裝配關鍵技術及其發展[J].系統仿真學報,2006,18(3):649-654.
[5]胡小強.虛擬現實技術[M].北京:北京郵電大學出版社.2005:107.
[6]付曉靚.基于Virtools與Flash的實時交互虛擬NMR實驗室的構建[D].大連:大連理工大學,2011.
[7]Kaufman Stephen G, Wilson Randall H, et al.The Archimedes 2 Mechanical Assembly Planning System[C].Proc.of IEEE International Conf.on Robotics and Automation,1996.USA: IEEE,1996: 3361-3368.
[8]Michael Weyrich,Paul Drews.An Interactive Environment for Virtual Manufacturing: the Virtual Workbench [J].The Computers in Industry,1999,38(1):5-15.