• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      虛擬裝配系統(tǒng)開發(fā)中參數(shù)化模型表達(dá)與交互意圖識(shí)別研究

      2021-07-03 05:30:58胡兆勇何梓秋何漢武吳悅明
      關(guān)鍵詞:數(shù)據(jù)文件手柄工具

      胡兆勇, 何梓秋, 何漢武, 吳悅明

      (廣東工業(yè)大學(xué)機(jī)電工程學(xué)院, 廣州 510006)

      近年來,虛擬現(xiàn)實(shí)技術(shù)在教學(xué)培訓(xùn)方面應(yīng)用日益廣泛. 其中,虛擬裝配訓(xùn)練能夠有效解決傳統(tǒng)裝配訓(xùn)練中場(chǎng)地、人力和設(shè)備短缺問題,同時(shí)也能充分規(guī)避傳統(tǒng)裝配訓(xùn)練中潛在的安全隱患、昂貴設(shè)備損壞等風(fēng)險(xiǎn)[1-2];除此之外,虛擬環(huán)境中可以加入視覺反饋等真實(shí)場(chǎng)景所不具備的因素[3],輔助裝配訓(xùn)練過程,提高培訓(xùn)效果.

      目前,國(guó)內(nèi)外對(duì)虛擬裝配訓(xùn)練系統(tǒng)的研究取得不少的成果,如:研發(fā)了以數(shù)據(jù)手套進(jìn)行交互的醫(yī)療器械裝配訓(xùn)練系統(tǒng),實(shí)現(xiàn)了從基于任務(wù)到基于動(dòng)作的多級(jí)訓(xùn)練場(chǎng)景[4];研發(fā)了基于Unity3D的VR民航虛擬訓(xùn)練軟件,可選擇拆裝工具,利用鼠標(biāo)拖拽進(jìn)行拆卸與裝配訓(xùn)練[5];研發(fā)了以HTC VIVE交互的模具虛擬裝配培訓(xùn)系統(tǒng),利用Petri網(wǎng)構(gòu)建裝配序列,使用預(yù)分割策略對(duì)OBB樹算法進(jìn)行改進(jìn),使得碰撞檢測(cè)更加貼合零件[6];研發(fā)了一種液壓支架裝配系統(tǒng),通過為每個(gè)部件建立裝配順序數(shù)據(jù)表,實(shí)現(xiàn)了基于概率的裝配順序自學(xué)習(xí)[7].

      文獻(xiàn)[6-7]設(shè)計(jì)了裝配序列表達(dá),但大多采取定制化開發(fā)方式,且交互操作真實(shí)感不足. 在實(shí)際虛擬裝配開發(fā)時(shí),有一大類涉及到具有多個(gè)同類型的裝配科目任務(wù),每個(gè)任務(wù)可能需要演示、練習(xí)和考核等多種培訓(xùn)模式的需求. 隨著終端顯示設(shè)備的不同,虛擬裝配系統(tǒng)需要適應(yīng)PC機(jī)、VR頭盔和zSpace等不同平臺(tái). 為滿足這種多同類型任務(wù)、多培訓(xùn)模式的開發(fā)需求,需要構(gòu)建一定程度上通用的系統(tǒng),實(shí)現(xiàn)可通過裝配序列構(gòu)建基礎(chǔ)數(shù)據(jù)驅(qū)動(dòng)的高效開發(fā).

      因此,本文將常見拆裝操作描述為幾種規(guī)范的幾何運(yùn)動(dòng),進(jìn)一步形成了拆裝動(dòng)作序列的參數(shù)化表達(dá)模型;采用主流的可擴(kuò)展標(biāo)記語言(XML),設(shè)計(jì)了該參數(shù)化模型的數(shù)據(jù)表達(dá)方法;結(jié)合Unity3D引擎,研究了XML參數(shù)化表達(dá)模型的解析原理,從而實(shí)現(xiàn)了拆裝操作與用戶交互意圖的響應(yīng)機(jī)理識(shí)別;針對(duì)演示、練習(xí)、考核3種培訓(xùn)模式,研究了邏輯實(shí)現(xiàn)的解析方法.

      1 基于XML的裝配序列參數(shù)化建模方法

      1.1 裝配操作的數(shù)據(jù)表達(dá)

      利用參數(shù)描述操作過程的形式有多種,如:采用ASO建模方法,將裝配行為劃分為對(duì)象交互特征和虛擬人的基本動(dòng)作,建立了虛擬人的行為模型[8];利用UML類圖構(gòu)建了設(shè)備拆裝的動(dòng)作過程模型[9];分析飛機(jī)拆裝過程參數(shù),對(duì)虛擬人行為進(jìn)行參數(shù)化建模,從而建立一種循環(huán)迭代的拆裝過程模型[10].

      在開發(fā)某航天地檢設(shè)備的虛擬拆裝訓(xùn)練系統(tǒng)時(shí),面臨眾多儀器模塊拆裝科目、3種培訓(xùn)模式和zSpace/HTC的多終端開發(fā)任務(wù)需求. 結(jié)合文獻(xiàn)[9-10]和該拆裝開發(fā)任務(wù)的實(shí)際需求,本文將不同裝配操作動(dòng)作的共性特征通過若干個(gè)參數(shù)進(jìn)行統(tǒng)一、規(guī)范地描述,每個(gè)操作步驟分解為3類參數(shù)化要素:

      (1)任務(wù)要素:描述該操作步驟在裝配任務(wù)中的信息,包括該步驟的索引號(hào)、操作完成標(biāo)志位.

      (2)靜態(tài)要素:描述操作運(yùn)動(dòng)發(fā)生前的準(zhǔn)備要素,包括所操作的零部件、所用工具.

      (3)動(dòng)作要素:描述裝配操作的各個(gè)動(dòng)作要素參數(shù),包括操作動(dòng)作要素類型和所需參數(shù)等. 常見的裝配操作動(dòng)作要素類型包括隱藏、顯示、觸碰、旋轉(zhuǎn)和移動(dòng).

      隱藏、顯示操作用于模型的消隱需求,觸碰操作用于表示點(diǎn)擊開關(guān)(按鈕)的瞬間操作. 這3類操作類型不需要?jiǎng)幼饕貐?shù). 旋轉(zhuǎn)和移動(dòng)可細(xì)分為自轉(zhuǎn)、公轉(zhuǎn)、平移和自由移動(dòng)4種操作動(dòng)作要素類型(表1). 各動(dòng)作要素所需參數(shù)中,自轉(zhuǎn)軸、平移方向和公轉(zhuǎn)軸均可使用三維向量進(jìn)行描述,稱為操作方向;旋轉(zhuǎn)量和平移量可使用一個(gè)數(shù)值來描述,稱為終止閾值;對(duì)自由移動(dòng)的目的地參數(shù)則通過交互邏輯確定.

      表1 常見裝配操作的動(dòng)作要素Table 1 The action element of general assembly operations

      1.2 基于XML的裝配序列參數(shù)化描述方法

      虛擬裝配動(dòng)作序列可概括為單一步驟串聯(lián)式線性序列和多步驟并聯(lián)式并行序列兩大類型邏輯關(guān)系. 本文通過每步與其先行步來表達(dá)這2種邏輯關(guān)系. 設(shè)第i步的先行步集合為{j,k,…},完成該集合中的所有步驟后,第i步方可執(zhí)行,則第i步可描述為:

      i|{j,k,…} (i,j,k=0,1,…,n,i≠j≠k),

      其中,當(dāng)i=0時(shí)不存在先行步集合.

      基于先行步集合的思路,本文設(shè)計(jì)了一種表達(dá)裝配序列邏輯關(guān)系的路由圖模型(圖1).

      圖1 裝配序列邏輯關(guān)系路由圖模型

      用戶可自行定義每個(gè)操作步驟的先行步集合,按照自己的需求來設(shè)定裝配序列的分支與匯合. 如圖1中的1、3、4為分支步,7、8為匯合步.

      本文選用XML語言[11-12]來描述裝配序列的參數(shù)化表達(dá)模型. XML是一種自描述的可擴(kuò)展標(biāo)記語言,可以定義任意類型標(biāo)記節(jié)點(diǎn),用于存儲(chǔ)元數(shù)據(jù),通過多層子節(jié)點(diǎn)存儲(chǔ)多層數(shù)據(jù)關(guān)聯(lián)信息[13].

      基于XML語言的規(guī)范,本文使用1個(gè)標(biāo)記節(jié)點(diǎn)表示1個(gè)操作步驟. 根據(jù)1.1的參數(shù)化描述,綜合考慮父子裝配體間運(yùn)動(dòng)關(guān)系和提示信息參數(shù),在每步標(biāo)記節(jié)點(diǎn)下設(shè)計(jì)11個(gè)子標(biāo)記節(jié)點(diǎn),用于參數(shù)化描述操作步驟. XML數(shù)據(jù)文件結(jié)構(gòu)如圖2所示.

      圖2 XML數(shù)據(jù)文件結(jié)構(gòu)圖

      1.3 XML數(shù)據(jù)文件的生成與解析

      為了便于用戶編寫裝配序列數(shù)據(jù),本文設(shè)計(jì)了用于輸入裝配序列的路由圖狀邏輯關(guān)系的Excel數(shù)據(jù)文件,自動(dòng)解析并生成裝配序列的XML數(shù)據(jù)文件,并通過C#的OleDbConnection和OleDbDataAdapter類描述裝配序列XML文件的參數(shù)化模型.

      本文選用了虛擬訓(xùn)練系統(tǒng)開發(fā)的主流引擎Unity3D. 在程序中使用C#腳本創(chuàng)建一個(gè)解析器類ActionStep,將XML中的數(shù)據(jù)讀入到虛擬裝配系統(tǒng)中. XML數(shù)據(jù)節(jié)點(diǎn)名稱與C#腳本數(shù)據(jù)對(duì)照表如表2所示. 表中的“子裝配體聯(lián)動(dòng)”數(shù)據(jù)用于確定某一步驟對(duì)應(yīng)的零部件是否與模型結(jié)構(gòu)樹中其余同級(jí)零部件共同運(yùn)動(dòng).

      表2 XML數(shù)據(jù)節(jié)點(diǎn)與C#腳本數(shù)據(jù)類型對(duì)照表

      2 仿真訓(xùn)練系統(tǒng)的設(shè)計(jì)與關(guān)鍵環(huán)節(jié)實(shí)現(xiàn)

      2.1 系統(tǒng)總體架構(gòu)設(shè)計(jì)

      仿真訓(xùn)練系統(tǒng)的架構(gòu)可用多種模式. 本文設(shè)計(jì)了Winform程序與VR仿真訓(xùn)練環(huán)境的雙向通訊模式. 用戶在Winform程序選擇運(yùn)行模式后,系統(tǒng)將啟動(dòng)相應(yīng)模式的VR仿真訓(xùn)練環(huán)境,利用帶參數(shù)啟動(dòng)傳入用戶信息;在VR仿真訓(xùn)練環(huán)境操作完成后,系統(tǒng)將用戶的使用記錄寫入數(shù)據(jù)庫,供用戶在Winform查看. 通訊流程劃分為4層架構(gòu),如圖3所示.

      圖3 系統(tǒng)通訊流程架構(gòu)圖

      2.2 虛擬場(chǎng)景交互的具體實(shí)現(xiàn)

      2.2.1 裝配序列的解析和表達(dá)方法 裝配動(dòng)作序列的解析與表達(dá)是虛擬裝配訓(xùn)練系統(tǒng)開發(fā)的核心. 根據(jù)本文的參數(shù)化描述方法,定義3個(gè)數(shù)據(jù)集合(表3).

      表3 數(shù)據(jù)集描述Table 3 The definition of data set

      上述3個(gè)數(shù)據(jù)集合的數(shù)據(jù)流解析流程(圖4)具體為:首先,讀取XML格式的數(shù)據(jù)文件,獲取所有操作步驟得到的信息并將其存入集合S;其次,從第i=0步開始,遍歷集合S下的操作步驟,判斷先行步是否已全部完成;然后,篩選出當(dāng)前可操作步驟并進(jìn)行初始化,為可操作步驟對(duì)應(yīng)的零部件添加碰撞器和高亮組件,使這些可操作步驟可以進(jìn)行人機(jī)交互操作,并在步驟完成后注銷初始化的內(nèi)容;最后,遞增步序直到完成所有操作步驟,從而將用戶按照規(guī)范設(shè)計(jì)的裝配序列進(jìn)行數(shù)據(jù)呈現(xiàn).

      圖4 系統(tǒng)數(shù)據(jù)呈現(xiàn)流程

      2.2.2 基于碰撞檢測(cè)的人機(jī)交互操作 系統(tǒng)使用Unity3D的碰撞器組件以及碰撞檢測(cè)回調(diào)函數(shù)作為虛擬場(chǎng)景交互的基礎(chǔ). 虛擬場(chǎng)景初始化后,系統(tǒng)將在虛擬手柄、工具上添加BoxCollider碰撞器(圖5A,圖5B),并添加剛體組件. 在初始化一個(gè)可操作步驟時(shí),將為該步驟所對(duì)應(yīng)的虛擬零件添加MeshCollider碰撞器(圖5C).

      虛擬手柄通過碰撞檢測(cè)可拾取工具,使用SetParent()方法把工具設(shè)置為虛擬手柄的子物體,使工具跟隨手柄移動(dòng);亦可直接對(duì)零件進(jìn)行交互操作. 工具被拾取后,若檢測(cè)到工具碰撞器與零件碰撞器相碰,則可對(duì)零件進(jìn)行交互操作. 根據(jù)XML數(shù)據(jù)文件中存儲(chǔ)的裝配信息,系統(tǒng)調(diào)用相應(yīng)的操作方法感知用戶的交互意圖,零件將根據(jù)用戶的交互作出位姿和狀態(tài)變化,從而完成裝配操作.

      圖5 各部件碰撞器示意圖

      2.2.3 裝配操作-交互意圖響應(yīng)的識(shí)別機(jī)理 系統(tǒng)中設(shè)置了一個(gè)累加器,用于實(shí)時(shí)存儲(chǔ)當(dāng)前步操作的零件逐幀累加起來的運(yùn)動(dòng)變化量,當(dāng)累加器的值等于終止閾值時(shí),該步驟操作完成. 每步的操作動(dòng)作要素類型決定了調(diào)用何種操作方法,各個(gè)操作方法的核心即為實(shí)時(shí)計(jì)算累加器的值以及解算零件的最新位姿. 以下是各操作方法的具體實(shí)現(xiàn):

      (1)自轉(zhuǎn)操作:零件的自轉(zhuǎn)軸用vRot=(aRot,bRot,cRot)來表示. 如圖6所示,設(shè)對(duì)零件進(jìn)行自轉(zhuǎn)操作時(shí)工具或手柄繞vRot每幀旋轉(zhuǎn)的角度為θ,則零件自轉(zhuǎn)的角度亦為θ.

      圖6 自轉(zhuǎn)操作計(jì)算示意圖

      一幀的旋轉(zhuǎn)運(yùn)動(dòng)用四元數(shù)表示如下:

      (1)

      將其與零件當(dāng)前的姿態(tài)四元數(shù)Q相乘,可得到零件旋轉(zhuǎn)后的姿態(tài)Qnew:

      Qnew=Q′·Q.

      (2)

      為了確保交互真實(shí)感,規(guī)定手柄或工具自身坐標(biāo)系的Z軸與零件不超過15度時(shí)方可進(jìn)行自轉(zhuǎn)操作.

      (2)平移操作:如圖7所示,在一幀內(nèi),手柄移動(dòng)前后的2個(gè)位置點(diǎn)構(gòu)成vFrm=(aFrm,bFrm,cFrm).vFrm在指定平移方向上投影為vdis,|vdis|為有效移動(dòng)距離值. 若vdis與指定平移方向的夾角大于90度,則有效移動(dòng)距離為負(fù)數(shù). 設(shè)零件平移前的位置為p0,零件平移后的位置p1為:

      p1=p0+vdis.

      (3)

      圖7 平移操作計(jì)算示意圖

      (3)公轉(zhuǎn)操作:如圖8所示,零件的公轉(zhuǎn)軸可為任意方向的vRev=(aRev,bRev,cRev). 建立平面P,P與vRev垂直相交于O(xO,yO,zO),則P的方程為:

      aRev(x-xO)+bRev(y-yO)+cRev(z-zO)=0.

      (4)

      圖8 公轉(zhuǎn)操作計(jì)算示意圖

      手柄帶動(dòng)零件運(yùn)動(dòng)時(shí),手柄當(dāng)前幀所在位置為n1,而零件上一幀所在位置為n0,n1、n0點(diǎn)構(gòu)成手柄一幀內(nèi)的運(yùn)動(dòng)方向vHand.n1、n0點(diǎn)在平面P的投影分別為m1、m0,可見n1m1和n0m0與vRev平行,根據(jù)平行關(guān)系可得:

      (5)

      同時(shí)m0和m1為平面P上一點(diǎn),滿足式(4). 結(jié)合式(4)、(5),可以得到t的值以及m1、m0的坐標(biāo),從而得到vHand在P平面上的投影vP. |Om0|為公轉(zhuǎn)軌跡的半徑r,vP向公轉(zhuǎn)軌跡的過m0的切線方向上投影,從而得到vEff. 最后計(jì)算Om0與Om2的夾角θ,即可得到這一幀零件所轉(zhuǎn)過的角度. 根據(jù)公轉(zhuǎn)軌跡圓的半徑和旋轉(zhuǎn)角,可以得到零件的最新位置,將θ代入式(1)、(2)可以得到零件的最新姿態(tài). 當(dāng)累加器的值超過終止閾值時(shí),公轉(zhuǎn)動(dòng)作完成.

      (4)自由移動(dòng)操作:當(dāng)零件被手柄拾取時(shí),使用Unity3D的transform.SetParent()函數(shù),使虛擬零件成為手柄的子物體,虛擬零件跟隨手柄運(yùn)動(dòng). 當(dāng)虛擬零件足夠接近目的地時(shí),它將脫離與手柄的父子關(guān)系,Vector3.Lerp()和Quaternion.Lerp()函數(shù)進(jìn)行位姿插值計(jì)算,使零件自動(dòng)向目的地移動(dòng),并設(shè)置累加器的值等于1.

      (5)隱藏操作:觸發(fā)后更改零件材質(zhì)圖形著色器,替換后的著色器在渲染管線的片元著色器階段剔除所有處于虛擬場(chǎng)景地面以上的像素,使之不渲染,并設(shè)置累加器的值等于1.

      (6)顯示操作:與隱藏操作相反,觸發(fā)后把零件材質(zhì)的圖形著色器替換為常規(guī)的著色器,并設(shè)置累加器的值等于1.

      2.2.4 UI交互與場(chǎng)景漫游功能 UI分為手柄按鍵UI及場(chǎng)景空間UI. 手柄按鍵UI使用SteamVR插件,將各功能映射到HTC手柄的按鍵上,點(diǎn)擊手柄按鍵即可觸發(fā). 根據(jù)常用功能需求,設(shè)計(jì)了“掛載”“瞬移”“跳步”“退出”4個(gè)功能(圖9A). 其中,“瞬移”解決了大場(chǎng)景漫游問題. 通過使用SteamVR的Nav Mesh和Teleporter插件,將虛擬場(chǎng)景的地面分割為若干個(gè)單元格,并在手柄按鍵UI定義一個(gè)“瞬移”功能,向虛擬地面射出拋物線,指向某個(gè)單元格,觸發(fā)該功能后,用戶位置將被轉(zhuǎn)移到該單元格,如圖9B所示.

      圖9 UI交互與場(chǎng)景漫游示意圖

      2.3 練習(xí)與考核模式的邏輯實(shí)現(xiàn)

      對(duì)于虛擬裝配系統(tǒng)常用的練習(xí)模式和考核模式來說,兩者在裝配序列的人機(jī)交互邏輯實(shí)現(xiàn)原理是一致的. 相同點(diǎn)是用戶通過VR交互設(shè)備自主操作虛擬模型完成裝配,不同點(diǎn)是前者有提示信息而后者無提示信息及考核要求.

      人機(jī)交互邏輯模型(圖10)主要含以下部分:

      (1)知識(shí)模型. 為了描述虛擬場(chǎng)景中的交互信息,本文選擇場(chǎng)景上下文和用戶上下文來描述知識(shí)模型. 其中,場(chǎng)景上下文是指當(dāng)前可操作步驟所包含的場(chǎng)景信息,一部分由XML數(shù)據(jù)文件規(guī)定,包括零部件、操作類型、操作方向、終止閾值、累加器、子裝配體聯(lián)動(dòng)、正確工具、錯(cuò)誤工具和目的地等;另一部分由用戶的交互輸入決定,包括零件狀態(tài)和工具狀態(tài),由各自的有限狀態(tài)機(jī)[14]管理. 用戶上下文是指用戶在交互過程中的動(dòng)作語義,包括當(dāng)前手柄發(fā)生碰撞的物體、手柄的位姿、手柄旋轉(zhuǎn)和手柄移動(dòng)等. 由于用戶的交互實(shí)時(shí)刷新,使得場(chǎng)景上下文實(shí)時(shí)發(fā)生改變,因此,知識(shí)模型是動(dòng)態(tài)的,不同時(shí)刻的知識(shí)模型可以匹配不同的規(guī)則,以完成不同的交互.

      (2)規(guī)則庫. 規(guī)則庫以產(chǎn)生式規(guī)則“IF…THEN…”的形式描述虛擬拆裝中各項(xiàng)的交互規(guī)則,分為動(dòng)作規(guī)則庫和感知規(guī)則庫. 動(dòng)作規(guī)則庫的作用是將當(dāng)前的用戶上下文和場(chǎng)景上下文結(jié)合,產(chǎn)生交互意圖. 感知規(guī)則庫的作用是感知用戶交互意圖產(chǎn)生決策,進(jìn)而使用戶完成交互.

      (3)規(guī)則推理機(jī). 規(guī)則推理機(jī)是運(yùn)行在平臺(tái)中的邏輯代碼塊,包括解釋器和匹配器. 系統(tǒng)通過匹配器將當(dāng)前的知識(shí)模型與動(dòng)作規(guī)則庫進(jìn)行匹配,進(jìn)而由規(guī)則庫中的某一規(guī)則確定用戶的動(dòng)作語義所隱含的交互意圖. 解釋器根據(jù)感知規(guī)則庫的決策進(jìn)行計(jì)算,根據(jù)2.2.3所闡述的各操作類型得到零件的最新位姿,完成裝配操作.

      圖10 人機(jī)交互邏輯模型

      2.4 演示模式的邏輯實(shí)現(xiàn)

      演示模式下用戶無需與零件進(jìn)行交互,裝配將通過系統(tǒng)控制自動(dòng)執(zhí)行. 根據(jù)用戶需求,本文把虛擬模型設(shè)置為攝像機(jī)的子物體,確保演示時(shí)虛擬模型一直在視野正前方.

      本文提出了基于裝配序列的虛擬裝配自動(dòng)演示算法,使開發(fā)過程無需額外制作動(dòng)畫便實(shí)現(xiàn)了虛擬裝配的演示模式. 系統(tǒng)初始化一個(gè)操作步驟后,進(jìn)入自動(dòng)演示流程,該流程分為以下4個(gè)階段:

      (1)姿態(tài)調(diào)整階段:使模型發(fā)生旋轉(zhuǎn),以使得用戶獲得最好的觀看視角. 若該步驟操作類型為平移或自轉(zhuǎn),則操作方向定義為vAuto;否則,遍歷當(dāng)前零件局部坐標(biāo)系的6個(gè)正負(fù)軸方向,與相機(jī)+Z軸夾角最小的坐標(biāo)軸方向定義為vAuto.設(shè)vAuto與相機(jī)坐標(biāo)系+Z軸的夾角為α,與相機(jī)坐標(biāo)系-Z軸的夾角為β.若α≥β,則旋轉(zhuǎn)后vAuto對(duì)齊+Z軸;否則,旋轉(zhuǎn)后vAuto對(duì)齊-Z軸.

      為計(jì)算姿態(tài)調(diào)整的旋轉(zhuǎn)軸,定義向量vZ平行于Z軸且與+Z軸同向.利用叉積可得到旋轉(zhuǎn)軸L:

      L=vAuto×vZ.

      (6)

      利用式(1)、(2)構(gòu)建四元數(shù)并求得模型旋轉(zhuǎn)后的姿態(tài),使用Quaternion.Slerp()函數(shù)對(duì)設(shè)備進(jìn)行位姿插值計(jì)算,使用戶能看清整個(gè)設(shè)備模型的姿態(tài)調(diào)整過程.

      (2)位置調(diào)整階段:調(diào)整整個(gè)設(shè)備模型與相機(jī)的距離,使整個(gè)設(shè)備模型移動(dòng)到視野中央,即相機(jī)坐標(biāo)系下的坐標(biāo)(0,0,z). 首先,讀取待操作零件模型在相機(jī)局部坐標(biāo)系下的坐標(biāo)PC(xC,yC,zC).其次,根據(jù)下式計(jì)算整個(gè)設(shè)備模型沿著相機(jī)坐標(biāo)系-X、-Y和-Z軸的移動(dòng)距離:

      (7)

      其中,Vp為待操作零件包圍盒的體積,ε為常數(shù).

      使用函數(shù)Vector3.Lerp()使整個(gè)設(shè)備模型沿著相機(jī)坐標(biāo)系3個(gè)坐標(biāo)軸移動(dòng),使用戶能看清整個(gè)設(shè)備模型的位置調(diào)整過程.

      (3)工具就位階段:使工具以正確的位姿出現(xiàn)在零件處,其作用是告知用戶如何利用工具進(jìn)行拆裝操作. 工具模型在建模過程中設(shè)置了局部坐標(biāo)系,坐標(biāo)系的原點(diǎn)設(shè)定為工具與操作零件的接觸點(diǎn),并設(shè)置局部坐標(biāo)系+Z軸為工具的主方向. 如:扳手工具的主方向(圖11A)為扳手的旋轉(zhuǎn)軸方向. 通過逐幀插值更新四元數(shù),令工具的主方向與相機(jī)坐標(biāo)系的+Z軸對(duì)齊,同時(shí)逐幀插值使工具運(yùn)動(dòng)到目標(biāo)位置. 設(shè)待操作零件的位置為(0,0,z0),零件包圍盒沿Z軸方向的長(zhǎng)度為L(zhǎng)1,工具的包圍盒沿Z軸方向的長(zhǎng)度為L(zhǎng)2,則工具的目標(biāo)位置為(0,0,z1),其中z1為:

      (8)

      工具就位后效果如圖11B所示.

      圖11 工具模型示意圖

      (4)自動(dòng)演示階段:自動(dòng)演示將2.2.2節(jié)中的各操作類型計(jì)算過程封裝為自動(dòng)執(zhí)行的方法,根據(jù)當(dāng)前操作步驟的操作類型,調(diào)用相應(yīng)的演示方法. 方法函數(shù)調(diào)用時(shí),將工具綁定為待操作零件的子物體,使工具與零件同步更新位姿. 系統(tǒng)通過逐幀調(diào)用自動(dòng)演示方法,逐幀使零件運(yùn)動(dòng)并計(jì)算累加器的值,從而完成自動(dòng)裝配.

      3 實(shí)例驗(yàn)證

      3.1 系統(tǒng)開發(fā)實(shí)例

      鑒于某型號(hào)航天地檢設(shè)備的涉密性,本文以二級(jí)減速器虛擬安裝與拆卸的仿真開發(fā)為例. 將減速器模型導(dǎo)入U(xiǎn)nity3D引擎中,編輯模型結(jié)構(gòu)樹(圖12),再根據(jù)本文的參數(shù)化表達(dá)模型制作規(guī)范的裝配序列XML數(shù)據(jù)文件(圖13). 需確保XML數(shù)據(jù)文件中模型命名與模型結(jié)構(gòu)樹中的模型名稱相同,否則虛擬拆裝時(shí)的交互操作無法匹配到正確的虛擬模型.

      圖12 減速器模型預(yù)處理

      圖13 減速器裝配序列的XML數(shù)據(jù)示意

      登陸PC端程序選擇模式和科目后,系統(tǒng)將加載與已選擇科目名稱相同的模型與XML數(shù)據(jù)文件,進(jìn)入VR環(huán)境,如圖14A所示. 練習(xí)模式的操作步驟的提示信息UI如圖14B所示,演示模式的界面如圖14C所示. 退出VR環(huán)境后,在成績(jī)查詢界面中可查詢到考核成績(jī),如圖14D所示.

      3.2 跨平臺(tái)通用性驗(yàn)證

      為驗(yàn)證XML數(shù)據(jù)文件跨平臺(tái)的通用性,選用桌面式VR設(shè)備zSpace平臺(tái)進(jìn)行虛擬裝配訓(xùn)練系統(tǒng)開發(fā). zSpace以六自由度操控筆作為交互輸入設(shè)備,利用zCore SDK和射線檢測(cè)搭建該平臺(tái)的人機(jī)交互操作功能. 通過DOM技術(shù)讀取并解析與HTC VIVE客戶端相同的XML數(shù)據(jù)文件,即可生成zSpace的虛擬裝配環(huán)境. 以減速箱安裝為例,如圖15所示,使用zSpace可順利完成桌面式虛擬裝配訓(xùn)練.

      圖14 減速器案例

      圖15 zSpace客戶端開發(fā)案例

      同理,若把系統(tǒng)移植到更多的引擎與平臺(tái),亦無需修改XML數(shù)據(jù)文件,僅需在VR客戶端程序中實(shí)現(xiàn)對(duì)應(yīng)的解析器類,以儲(chǔ)存XML數(shù)據(jù)文件解析后的數(shù)據(jù);同時(shí),使用適配于該引擎及設(shè)備的SDK,結(jié)合本文的方法實(shí)現(xiàn)交互操作功能. 通過載入同一份模型文件和XML數(shù)據(jù)文件,即可獲得多平臺(tái)的虛擬裝配環(huán)境.

      4 結(jié)語

      為了提高重復(fù)性開發(fā)工作的效率和解決通用性問題,本文定義了11個(gè)參數(shù)表達(dá)的虛擬裝配操作步驟參數(shù)化模型,利用XML描述了裝配序列的路由圖狀的線性和并行邏輯關(guān)系,研究了拆裝操作邏輯與人機(jī)交互操作意圖的識(shí)別機(jī)理,實(shí)現(xiàn)了7種裝配交互操作的邏輯解析. 減速器的開發(fā)實(shí)例證明參數(shù)化模型及對(duì)應(yīng)的交互操作意圖識(shí)別的虛擬裝配系統(tǒng)可有效縮短開發(fā)時(shí)間、降低開發(fā)難度,且有利于跨平臺(tái)的數(shù)據(jù)移植.

      猜你喜歡
      數(shù)據(jù)文件手柄工具
      基于PLC控制的手柄座鉆孔攻絲一體機(jī)的研發(fā)
      波比的工具
      波比的工具
      一種多功能無線手柄的設(shè)計(jì)
      電子制作(2018年11期)2018-08-04 03:25:44
      數(shù)據(jù)文件恢復(fù)專題問答
      數(shù)據(jù)文件安全管控技術(shù)的研究與實(shí)現(xiàn)
      SQL數(shù)據(jù)文件恢復(fù)工具
      “巧用”工具
      讀者(2017年18期)2017-08-29 21:22:03
      為什么廚具的手柄不是金屬的?
      銀行家
      丹东市| 荥阳市| 陵川县| 滕州市| 台湾省| 姜堰市| 黔西| 黄梅县| 定兴县| 大宁县| 中西区| 柯坪县| 迭部县| 蒙阴县| 澳门| 罗田县| 休宁县| 金门县| 乌拉特中旗| 淮南市| 通辽市| 嘉善县| 延安市| 辉南县| 资中县| 山丹县| 县级市| 遂宁市| 尼玛县| 深水埗区| 浙江省| 腾冲县| 江口县| 奉贤区| 咸阳市| 海南省| 伊宁县| 金坛市| 隆昌县| 芮城县| 东港市|