張 青,趙洪利,郭 慶,徐宇杰
(中國(guó)民航大學(xué),天津 300300)
虛擬裝配技術(shù)作為一門(mén)新興學(xué)科正在蓬勃發(fā)展,近年來(lái)在航空航天、軍事、建筑等領(lǐng)域得到越來(lái)越廣泛的應(yīng)用。民航發(fā)動(dòng)機(jī)傳統(tǒng)維護(hù)培訓(xùn)投入大、耗費(fèi)人力和物力,而在民航發(fā)動(dòng)機(jī)的維護(hù)作業(yè)中,零部件的拆卸與重新裝配是重要的組成部分,拆卸與裝配所需時(shí)間在整個(gè)維修活動(dòng)所需時(shí)間中占有相當(dāng)?shù)谋壤?。因此,開(kāi)展發(fā)動(dòng)機(jī)虛擬裝配技術(shù)研究越來(lái)越迫切,采用虛擬樣機(jī)裝配替代發(fā)動(dòng)機(jī)實(shí)物可節(jié)省大量培訓(xùn)經(jīng)費(fèi),縮短培訓(xùn)周期,提高發(fā)動(dòng)機(jī)裝配的質(zhì)量,保證裝配人員工作的安全,使裝配工作真正在高效、高質(zhì)量、短時(shí)間、低成本的環(huán)境下完成[1]。本文探索性地設(shè)計(jì)了民航發(fā)動(dòng)機(jī)虛擬裝配實(shí)驗(yàn)系統(tǒng),設(shè)計(jì)流程如圖1所示。并對(duì)人機(jī)交互設(shè)備數(shù)據(jù)接口進(jìn)行開(kāi)發(fā),將3DVIA Studio虛擬仿真平臺(tái)、四通道POWR WALL沉浸式環(huán)境投影系統(tǒng)和體感交互設(shè)備kinect集成在一起,改變傳統(tǒng)的鍵盤(pán)鼠標(biāo)控制模式,使操作者像在真實(shí)環(huán)境中一樣對(duì)發(fā)動(dòng)機(jī)的零部件進(jìn)行實(shí)時(shí)交互、感知以及各類(lèi)裝配操作,對(duì)發(fā)動(dòng)機(jī)零部件的可裝配性作出直接的評(píng)價(jià)。
圖1 民航發(fā)動(dòng)機(jī)虛擬裝配實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)流程圖
3DVIA Studio是達(dá)索公司推出的一款用于集成和開(kāi)發(fā)虛擬現(xiàn)實(shí)系統(tǒng)專(zhuān)業(yè)軟件,支持沉浸式虛擬現(xiàn)實(shí)顯示,可以生成跨平臺(tái)渲染、播放和操作的虛擬現(xiàn)實(shí)場(chǎng)景,支持450個(gè)圖形化行為模塊(Building Block)開(kāi)發(fā),并提供VSL(Virtools Script Language)腳本語(yǔ)言和基于C++語(yǔ)言的SDK(Software Development Kit)開(kāi)發(fā),開(kāi)發(fā)人員可以在3DVIA Studio里面直接進(jìn)行代碼語(yǔ)言開(kāi)發(fā),可與幾乎所有主流虛擬現(xiàn)實(shí)硬件進(jìn)行無(wú)縫匹配[2]。設(shè)計(jì)人員可以在Assemble面板中對(duì)場(chǎng)景進(jìn)行組裝和配置,在3D View窗口中對(duì)物體進(jìn)行變換操作、相機(jī)視圖操作、以及實(shí)時(shí)修改屬性動(dòng)態(tài)調(diào)整物體參數(shù)。開(kāi)發(fā)人員可以在Behavior面板中進(jìn)行行為及功能的開(kāi)發(fā),并在3D窗口實(shí)時(shí)調(diào)試和運(yùn)行。3DVIA Studio的粒子系統(tǒng)可以模擬如水、煙、火、雨、雪等自然現(xiàn)象。動(dòng)態(tài)物理模擬系統(tǒng)可以幫助用戶(hù)完成諸如重力、摩擦力、彈力、干涉、碰撞、運(yùn)動(dòng)副、鉸鏈、彈簧、外力等物理模擬[3]。
利用三維建模工具CATIA對(duì)發(fā)動(dòng)機(jī)建模,提高建模速度和模型精確度。根據(jù)發(fā)動(dòng)機(jī)維護(hù)手冊(cè)要求對(duì)各個(gè)零件、子裝配體、總裝配體進(jìn)行編號(hào)。發(fā)動(dòng)機(jī)數(shù)據(jù):風(fēng)扇直徑(mm)1613,長(zhǎng)度(mm)3200。通過(guò)分析和計(jì)算,確定1:12比例(3200÷266≈12.03,1613÷135≈11.95),計(jì)算出風(fēng)扇葉片長(zhǎng)度為:46mm×12=552mm,寬度大約為240mm,以及風(fēng)扇機(jī)匣、高壓壓氣機(jī)、燃燒室、高壓渦輪、低壓渦輪、尾噴等結(jié)構(gòu)的軸向尺寸,使用這些尺寸進(jìn)行發(fā)動(dòng)機(jī)主體零件的3D造型,如圖2所示。3DVIA Studio能直接打開(kāi)由CATIA導(dǎo)出的3DXML工程模型,其中的數(shù)據(jù)信息、模型、材質(zhì)、動(dòng)畫(huà)(機(jī)構(gòu)仿真)等,都能進(jìn)入到3DVIA Studio中。
運(yùn)用3DS MAX建模軟件建立發(fā)動(dòng)機(jī)大修車(chē)間系統(tǒng)場(chǎng)景和虛擬維修人員模型,包括發(fā)動(dòng)機(jī)整機(jī)裝配模型(如修理車(chē)間、修理工具如螺絲刀、扳手、刀具類(lèi)、錘類(lèi)、鉗類(lèi)、軌道、支架、吊鉤等)以及其他實(shí)體模型(如廠房、地面等),添加材質(zhì)、貼圖后,導(dǎo)出為DAE格式導(dǎo)入3DVIA Studio中,如圖3、圖4所示。3DVIA Studio中默認(rèn)使用的單位為米,而一般機(jī)械CAD默認(rèn)采用毫米為單位。為確保各類(lèi)模型單位統(tǒng)一,在模型導(dǎo)入前,調(diào)整3DVIA Studio的首選項(xiàng),Reader 3DXML/Unit Scale調(diào)整為0.001[4]。
圖2 發(fā)動(dòng)機(jī)虛擬樣機(jī)
圖3 虛擬維護(hù)人員模型
圖4 翻修廠虛擬場(chǎng)景
人機(jī)交互是指用戶(hù)對(duì)現(xiàn)實(shí)平臺(tái)中的物體執(zhí)行操作并從虛擬環(huán)境中得到相應(yīng)的反饋,它是構(gòu)成虛擬裝配的關(guān)鍵技術(shù)[5]。本系統(tǒng)中,在虛擬環(huán)境下人與裝配零部件之間的交互行為是通過(guò)系統(tǒng)中圖形化行為模塊(Building Block),如vkIOdevicemanger這一系列數(shù)據(jù)接口,接受外接設(shè)備的數(shù)據(jù)輸入,引發(fā)系統(tǒng)里面設(shè)置好的邏輯事件從而達(dá)到人機(jī)交互的目的,邏輯編程如圖5所示。通過(guò)使用vkiodevicemanger::keyboard系統(tǒng)接受鍵盤(pán)的輸入從而并觸發(fā)iskey pressed判斷從而引起設(shè)置好的鍵盤(pán)觸發(fā)事件,通過(guò)enqueue animation命令人物開(kāi)始執(zhí)行相應(yīng)的動(dòng)作。
圖5 人機(jī)交互控制邏輯編程圖
本系統(tǒng)以最自然的方式即以自己的肢體語(yǔ)言實(shí)現(xiàn)對(duì)整個(gè)系統(tǒng)的控制,采用微軟kinect通過(guò)紅外線測(cè)點(diǎn)原理,得到人體的深度圖像,從中獲得人體每個(gè)的骨骼數(shù)據(jù),如圖6所示,可以看到通過(guò)深度流算法可以將人體從背景中提取出來(lái),并得到每個(gè)骨骼節(jié)點(diǎn)的三維坐標(biāo)并在虛擬人的數(shù)據(jù)和kinect傳輸?shù)臄?shù)據(jù)建立連接,從而實(shí)現(xiàn)控制。編程代碼如下:
圖6 人機(jī)交互控制邏輯編程圖
圖7 BB:Interpolator
圖8 BB:Set Local Position
獲取骨骼數(shù)據(jù):
//獲得離Kinect距離最近被骨骼跟蹤的用戶(hù)
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];
將骨骼數(shù)據(jù)賦予虛擬人的骨骼
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中模型的運(yùn)動(dòng)是通過(guò)編輯程序腳本來(lái)實(shí)現(xiàn),其運(yùn)動(dòng)不能根據(jù)參照面,軸線等準(zhǔn)備定位目標(biāo)位置。以裝配體的形式導(dǎo)入3DVIA Studio的發(fā)動(dòng)機(jī)及維修廠房模型模型,首先將各零部件移動(dòng)到相應(yīng)的工位上去,再根據(jù)兩零部件初始的相對(duì)位置關(guān)系即可確定部件的正確裝配位置[6]。
根據(jù)3DVIA Studio提供的一部分封裝好的圖形化模塊 (Building Block,BB),可以實(shí)現(xiàn)一些基本的邏輯控制和模型操作,如BB:Interpolator,在兩個(gè)位置間進(jìn)行線性插值,如圖7所示。在BB Interpolator圖形化模塊選擇Edit Variable Settings,設(shè)置Interpolator的變量類(lèi)型,空間坐標(biāo)選擇vkvec3,value1是空間坐標(biāo)中物體運(yùn)動(dòng)后最終所處位置的坐標(biāo)。BB:Set Local Position,可以將物體放置到設(shè)定的坐標(biāo)位置。Get Local Position取得目標(biāo)對(duì)象的當(dāng)前空間坐標(biāo)。運(yùn)行時(shí)物體的空間坐標(biāo)不斷的向最終坐標(biāo)靠近,從而達(dá)到物體平滑移動(dòng)的效果。零部件平滑拆裝模塊邏輯圖如圖9所示。
圖9 零部件平滑移動(dòng)模塊邏輯圖
通過(guò)不同BB的組合可實(shí)現(xiàn)線性轉(zhuǎn)動(dòng)功能,如BB:RotateAround,實(shí)現(xiàn)物體繞指定物體的指定軸線轉(zhuǎn)動(dòng)指定的角度,但其轉(zhuǎn)動(dòng)瞬間完成的,通過(guò)結(jié)合其他BB來(lái)實(shí)現(xiàn)線性的轉(zhuǎn)動(dòng)。如圖10所示實(shí)現(xiàn)線性轉(zhuǎn)動(dòng)功能的圖形化腳本:首先將輸入的轉(zhuǎn)動(dòng)角度通過(guò)數(shù)學(xué)運(yùn)算轉(zhuǎn)化為弧度,然后在BB:LinearProgression指定的進(jìn)程時(shí)間內(nèi)循環(huán)調(diào)用BB:RotateAround完成轉(zhuǎn)動(dòng)。
圖10 BB組合實(shí)現(xiàn)線性轉(zhuǎn)動(dòng)功能
通過(guò)這些BB的組合可以實(shí)現(xiàn)大多數(shù)情況的運(yùn)動(dòng)控制。發(fā)動(dòng)機(jī)整個(gè)裝配過(guò)程的運(yùn)動(dòng)通過(guò)以下模塊循環(huán)應(yīng)用實(shí)現(xiàn)控制:1)視角速度線性變換模塊通過(guò)BB:Counter、Get World Transform、Set World Transform、Interpolator組合實(shí)現(xiàn);2)顯示或隱藏標(biāo)簽描述模塊通過(guò)BB:2D NLS Text、Compare、vkClickableEnterEvent、Triggers組合實(shí)現(xiàn);3)閃爍模塊通過(guò)BB:Set Material Override、Delayer、Counter組合實(shí)現(xiàn);4)平滑移動(dòng)模塊通過(guò)BB:Get Local Position、Set Local Position、Interpolator組合實(shí)現(xiàn);5)線性轉(zhuǎn)動(dòng)模塊通過(guò)BB:Divide、Linear Progression、Multiply Rotate Around、Add組合實(shí)現(xiàn);6)物體漸隱消失模塊通過(guò)BB:Get Opacity、Set Opacity、Interpolator、Counter組合實(shí)現(xiàn)。
發(fā)動(dòng)機(jī)零部件碰撞檢測(cè)在進(jìn)行虛擬拆裝時(shí),為了避免各個(gè)部件產(chǎn)生接觸碰撞,需要進(jìn)行碰撞檢測(cè)[7]。解決碰撞問(wèn)題的辦法是通過(guò)給模型添加物理屬性,從而使兩個(gè)物體之間產(chǎn)生物理碰撞,具體的實(shí)現(xiàn)方法是添加vkObject Slider Constraint以防止模型間的干涉。
3DVIA studio中提供了區(qū)域檢測(cè)技術(shù),即當(dāng)物體進(jìn)入這個(gè)區(qū)域后就會(huì)觸發(fā)相應(yīng)設(shè)計(jì)好的動(dòng)作,如圖11、圖12所示,這在很大的程度上解決了kinect光學(xué)體感技術(shù)在虛擬航空發(fā)動(dòng)機(jī)拆裝動(dòng)畫(huà)中精度不足問(wèn)題,只要部件達(dá)到一定區(qū)域后,就可自動(dòng)實(shí)現(xiàn)精確的拆裝。
圖11 觸發(fā)域
圖12 進(jìn)入觸發(fā)域之后所觸發(fā)的邏輯圖
以3DVIA Studio虛擬仿真平臺(tái)、數(shù)據(jù)頭盔、四通道POWR WALL式沉浸環(huán)境投影系統(tǒng)為基礎(chǔ),搭建沉浸式虛擬仿真環(huán)境,以多通道視景同步技術(shù)和數(shù)字圖像邊緣融合技術(shù)為支撐,根據(jù)人眼3D呈象原理,即人眼左右眼在看同一個(gè)物體時(shí),有視距差約為5cm左右,所以人眼的左右眼所看到畫(huà)面是不相同的,通過(guò)左右眼視差中包含的物體的深度信息,而在大腦圖層重新疊加成三維圖像,形成立體視覺(jué)。本系統(tǒng)利用此原理,通過(guò)設(shè)置左右兩個(gè)攝像機(jī)代替人的左右眼,通過(guò)腳本編程,讓左右攝像機(jī)之間差一個(gè)人眼的視距,從而獲得類(lèi)似于人眼的左右兩個(gè)不同的畫(huà)面,再通過(guò)偏振鏡等形式使左眼只能看到左畫(huà)面右眼只能看見(jiàn)右畫(huà)面從而在大腦皮層重新疊加成3D效果[8]。
把3D攝像機(jī)iv Steroscopic Camera Post Process Rendering拖入3D View窗口后,可看到里面包含左右兩個(gè)攝像機(jī),使用左右眼3D成像原理,選擇side by side模式,對(duì)VSL腳本語(yǔ)言編程,代碼如圖13所示。設(shè)置兩個(gè)攝像機(jī)cameratomatch和match2代替原來(lái)的left和right,采用兩個(gè)自由的攝像機(jī)代替了原來(lái)的組件,再通過(guò)腳本編程進(jìn)行控制,如圖14所示。以主攝像機(jī)為核心里面的Get world transform,左右攝像機(jī)和主攝像機(jī)之間控制間距通過(guò)multiply還有add給主攝像機(jī)的x坐標(biāo)偏移一個(gè)半個(gè)視距,然后賦給左攝像機(jī),同理向另外一個(gè)攝像機(jī)向相反方向偏移一個(gè)值,給右攝像機(jī),如此就形成了3D顯示效果,如圖15所示。
圖13 3D成像腳本編程
圖14 左右眼攝像機(jī)腳本編程
民航發(fā)動(dòng)機(jī)傳統(tǒng)維護(hù)培訓(xùn)投入大、耗費(fèi)人力和物力,采用虛擬樣機(jī)裝配替代發(fā)動(dòng)機(jī)實(shí)物可節(jié)省大量培訓(xùn)經(jīng)費(fèi),縮短培訓(xùn)周期,提高發(fā)動(dòng)機(jī)裝配的質(zhì)量,保證裝配人員工作的安全。本文提供一套民航發(fā)動(dòng)機(jī)虛擬裝配實(shí)驗(yàn)系統(tǒng)的設(shè)計(jì)框架,實(shí)驗(yàn)系統(tǒng)如圖16所示。對(duì)人機(jī)交互設(shè)備數(shù)據(jù)接口進(jìn)行開(kāi)發(fā),通過(guò)人機(jī)交互設(shè)備kinect與3DVIA Studio虛擬現(xiàn)實(shí)軟件相結(jié)合,改變傳統(tǒng)的鍵盤(pán)鼠標(biāo)控制模式,使用肢體語(yǔ)言操控發(fā)動(dòng)機(jī)虛擬裝配,加強(qiáng)發(fā)動(dòng)機(jī)裝配仿真的逼真度,為虛擬裝配提供科學(xué)、高效、自然的人機(jī)交互解決方案,提高在虛擬環(huán)境中進(jìn)行裝配工作分析評(píng)價(jià)的可信度。以3DVIA Studio虛擬仿真平臺(tái),數(shù)據(jù)頭盔、四通道POWR WALL沉浸式環(huán)境投影系統(tǒng)為基礎(chǔ),搭建沉浸式虛擬仿真環(huán)境,使參與者獲得一種身臨其境的虛擬仿真視覺(jué)感受。
圖15 沉浸式左右眼3D顯示
圖16 民航發(fā)動(dòng)機(jī)虛擬裝配實(shí)驗(yàn)系統(tǒng)
[1]劉國(guó)柱.Virtools嵌入式服務(wù)器與虛擬現(xiàn)實(shí)協(xié)同設(shè)計(jì)平臺(tái)[J].科技通報(bào),2012,28(4).
[2]高穎,鐘嘯,許志國(guó),鄭濤.基于VR技術(shù)的航空發(fā)動(dòng)機(jī)虛擬教學(xué)實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)[J].系統(tǒng)仿真學(xué)報(bào),2008,20(11):2925-2930.
[3]劉江省,姚英學(xué),李建廣,等.虛擬裝配中基于數(shù)據(jù)手套的虛擬操作研究[J].系統(tǒng)仿真學(xué)報(bào), 2004,16(8):1744-1747.
[4]鄭軼,寧汝新,劉檢華,杜龍.虛擬裝配關(guān)鍵技術(shù)及其發(fā)展[J].系統(tǒng)仿真學(xué)報(bào),2006,18(3):649-654.
[5]胡小強(qiáng).虛擬現(xiàn)實(shí)技術(shù)[M].北京:北京郵電大學(xué)出版社.2005:107.
[6]付曉靚.基于Virtools與Flash的實(shí)時(shí)交互虛擬NMR實(shí)驗(yàn)室的構(gòu)建[D].大連:大連理工大學(xué),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.