王 蕾,郭向坤,李 姝
1(中國科學院大學,北京 100049)
2(中國科學院 沈陽計算技術研究所,沈陽 110168)
3(沈陽理工大學,沈陽 110159)
混合現實[1]是在虛擬現實基礎上發展而來的新技術,它在同一時刻將計算機系統生成的虛擬場景、物體或系統提示等信息疊加到真實場景中展現給用戶,在同一個空間場景中虛實共存,從而產生一個全新的感官世界[2].基于混合現實的虛擬拆裝系統是混合現實技術在工業領域的全新應用,為機械部件拆裝帶來了新思路和新方法.
近年來,虛擬拆裝系統得到了大量的研究.然而,這些研究大多集中在系統交互、系統開發等方面[3-5],很少有針對拆裝邏輯的研究.現有的關于拆裝邏輯的研究[6,7]也存在邏輯設計只是針對某一個或某一類特定的機械模型,并不能適應于所有模型,導致系統存在通用性差、適用范圍小等問題.針對這些問題,本文提出一種基于圖遍歷算法的數據結構來表達各個模型的邏輯關系,并基于此算法設計并實現了一套基于混合現實的虛擬拆裝原型系統.實驗結果表明:該系統實現了對模型部件按工藝流程進行虛擬拆解和裝配,提高了虛擬拆裝系統的通用性,說明該系統具有很好的實用價值.
該系統基于混合現實技術,以Unity3D 引擎為開發工具,借助HoloLens MR 頭顯進行交互的通用虛擬拆裝系統,系統的整體框架可以分為3個部分:數據工具、系統拆裝邏輯、自然交互系統.虛擬拆裝系統整體架構圖如圖1所示.

圖1 虛擬拆裝系統整體架構圖
數據工具負責采集處理系統所需的各種數據并進行存儲,供系統其他部分使用.這些數據主要包括:(1)模型數據:用于供交互系統展示的機械模型.在Solid Works 建模軟件中構建設備部件的機械模型,然后導入到3D Max 中進行減面、紋理重置、渲染等優化,使得模型更加兼容Unity 引擎的開發.(2)邏輯數據:用于供拆裝核心動作邏輯判定拆裝是否符合真實拆裝邏輯,其中主要包括模型的位置信息及模型之間的邏輯關系.(3)依賴表:用于供拆裝核心運作邏輯判定各部分依賴是否得到滿足,實現對拆裝順序的限制.
系統拆裝邏輯的設計是實現系統通用性的核心,針對現有的虛擬拆裝系統所存在的問題,本文設計出一種基于圖遍歷算法[8]的數據結構來表達各個模型的邏輯關系,解決了拆裝順序的可定義和通用性等問題,并能夠對模型部件按工藝流程進行虛擬拆解和裝配.虛擬拆裝系統拆裝核心運作邏輯主要包括以下兩個方面:連接邏輯和順序邏輯.系統拆裝邏輯的設計與實現將在第3節詳細介紹.
結合語音交互技術、手勢交互技術以及交互方法的組織方法,獲取和識別語音、手勢等信息建立多模式人機交互接口,構建出一套滿足直接與虛擬信息進行實時互動交互的人機自然交互接口.結合拆裝流程對裝配人員意圖智能化理解,保證裝配操作人員在拆裝過程中,不僅能夠對模型部件按工藝流程進行虛擬拆解和裝配,還能準確無誤地獲取裝配交互信息,實現信息實時共享.最終設計出一種全息融合顯示模式,并完成支持語音和手勢自然交互系統的設計和實現,提高用戶的交互效率和交互體驗.
機械模型的合理正確拆裝是虛擬拆裝系統的關鍵,系統開發過程中必須借助一系列嚴密的邏輯思想,才能夠控制整個拆裝流程按照部件實際的拆裝時序進行虛擬拆解和裝配[9].虛擬拆裝系統要實現對機械模型通用的拆裝仿真,其拆裝核心運作邏輯就要詳細設計以下兩個部分:連接邏輯和順序邏輯.
在虛擬拆裝過程中,系統需要“感知”哪些機械部件是連著的,即系統要像人一樣知道部件的連接邏輯.以及當操作某一部分時會對部件的其他部分造成哪些影響,即需要讓系統“感知”現實中部件連接的特點.因此,虛擬拆裝系統連接邏輯的設計需要考慮以下兩個方面:(1)任意兩個可連接的部件,可以連接,也可以拆解.(2)連接在一起的幾個部件,當拖動其中一個部件時,與之相連的部件均會發生聯動,它們的相對位置始終保持不變.
3.1.1 連接邏輯設計
機械部件的拆裝過程與分形或遞歸的思想相似,對一個部件或幾個部件組成的整體而言,二者的操作和管理幾乎相同.因此為簡化系統設計,需要對其做一個封裝,若干個(包括一個)連接好的部件作為一個節點進行處理.但同時,多部件組成的復合節點在拆裝過程中是動態的、多變的,需要進行動態維護,并且保存若干個最大的復合節點在程序實現和使用上沒有明顯的必要.另外,作為整個系統的基礎,單部件節點保存著整個機械模型的關系數據,是始終存在的;作為單部件節點的引用和封裝,復合節點不包含實質信息的邏輯存在,設計為在需要時生成的臨時對象.
通過對部件的連接方式總結和分析,本文設計一種類似化學鍵[10]概念的連接邏輯.每個節點上有若干個半鍵(HalfBond)可以與其他節點上的半鍵配對形成一個連接,這樣兩個節點之間就有了邏輯關系.根據機械部件的連接特點,為實現連接邏輯的通用性,半鍵的設計需要考慮以下幾點:(1)與化學鍵不同的是半鍵有類型,只有同類型的半鍵才能配對連接.同時,同類型半鍵有不對稱性,即區分公母口.(2)部件上的每個半鍵均有自己的位置信息,能夠判斷與其他半鍵之間的位置關系.(3)復合節點的半鍵,來自其所包含的部件,部件之間已配對的半鍵不再暴露出來作為復合節點的半鍵.
3.1.2 連接邏輯算法實現
連接邏輯算法設計的關鍵是要“感知”部件之間的連接關系.本文定義一種特殊的圖結構G=

圖2 部件連接狀態
連接邏輯算法的關鍵是在圖G=
從算法流程圖中可以看出,本文提出的算法使用圖的深度優先搜索(DFS)遍歷對由部件之間連接關系構成的圖G=
(1)創建兩個集合,用來在遍歷的同時分別存儲節點和半鍵;同時定義一個變量,用來記錄新節點的個數,執行(2).
(2)判斷當前節點是否為復雜節點,若是則將復雜節點中的所有節點加入到節點集合中執行(3),否則執行(6).
(3)將所有單一節點存儲到節點集合中,執行(4).
(4)判斷是否存在未遍歷的節點.若存在則執行(5),否則執行(8).
(5)從節點集合中取出下一個節點,若該鍵連接節點,則新節點數加一,并遞歸執行(4);否則半鍵加入鍵集合執行(4).
(6)判斷集合中是否包含了當前節點,若包含則說明已遍歷過該節點,即圖中存在環路執行(8),否則執行(3).
(7)返回新節點數,執行(4).
(8)若新節點數大于零說明存在更大的包含節點,即找到了極大連通子圖.否則返回當前節點,說明沒有比自身更大的連通圖.至此,算法實現找到了最大的包含節點,即獲取到了部件之間的連接關系.

圖3 連接邏輯算法流程圖
機械設備裝配中各部件間的拆裝順序具有一定的順序邏輯,因此,在虛擬拆裝系統設計時需要考慮到拆裝順序可能造成的影響,即在拆裝過程中,系統需要“辨別”拆裝順序是否按照工藝流程進行,若是則做出正確的拆裝響應,否則需要做出錯誤提示.讓系統“辨別”拆裝順序正確與否的關鍵是系統順序邏輯設計.
3.2.1 順序邏輯設計
為簡化設計,本文定義一種特殊的數據結構——依賴表來實現對拆裝順序的限制.其核心思想是:當一個節點包含某幾個部件時,它必須包含另外幾個部件,否則該節點存在依賴異常,即拆裝順序不正確.在實現中,前者使用一個復合節點做篩選,后者使用另一個復合節點做判定.在程序啟動時按照依賴表把每條依賴寫入對應部件節點中,每個部件節點可能存在多條依賴.當判斷某節點內是否存在依賴異常時,通過篩選節點確定哪幾條依賴生效,然后對生效的依賴所對應的判定節點進行判定.若判定全部通過,則依賴全部滿足,否則存在依賴異常.本文中,依賴表定義為二維數組,每行兩個元素,分別為篩選節點和判定節點(這里的節點包含復雜節點).
在安裝過程中,當兩個半鍵配對連接后,兩個部件及其連接的所有部件形成一個復合節點.如果連接這兩個部件前需要先連其他部件,那么這個復合節點中必然存在依賴異常,否則不存在依賴異常.因此,判斷該鍵是否可以配對連接,即判斷連接后該節點是否存在依賴異常.類似的,在拆解過程中,當拆開兩個半鍵時,所屬的兩個部件會有各自的復合節點.如果拆開這兩個部件前需要先拆其他部件,那么這兩個復合節點中必然存在依賴異常.因此,判斷該鍵是否可以斷開,即判斷拆開后的兩個復合節點是否存在依賴異常.
3.2.2 順序邏輯算法實現
依賴表中已經存入了部件節點之間的依賴關系.系統要正確實現拆裝順序,需要設計算法來解讀依賴表,系統會根據依賴的滿足與否判定拆裝是否正確,并以此體現拆裝順序.
解讀依賴表首先考慮用包含關系進行判斷,即判斷篩選節點中是否包含判定節點.但是包含關系不能解決所有情況,例如存在相同部件,檢測出包含但不能證明是該節點所需的部件,因此不僅需要考慮類型包含還需要考慮實例包含和結構包含.在所有的包含類型中,類型包含是基礎,通過參考節點的數據來決定進階判定,若參考節點無實例無鍵數據,則為純類型包含;若其中若干節點有實例物體,則另加實例判定;若其中若干物體有鍵數據,則另加結構判定.算法流程設計如下:(1)檢測篩選節點的類型包含.(2)將檢測到的類型加入到實例集合中.(3)使用圖的廣度優先搜索檢測判定節點的具體實例.(4)若存在實例包含則對實例的鍵的位置進行結構包含檢測.當3種包含都滿足則說明拆裝過程不存在依賴異常,部件與部件之間的鍵連接或斷開操作順序正確.否則,依賴異常,拆裝操作中斷.
虛擬拆裝系統借助HoloLens MR 頭顯采用混合現實的方式進行交互,基于混合現實的人機交互為用戶和應用環境提供了無縫的界面[11].本文采用機械模型——6 關節機械臂以及特種閥門進行系統通用性測試,并驗證系統拆裝邏輯的準確性.機械臂主要由6個節點組成,具體結構如圖4.

圖4 機械臂
(1)移動:將節點3到節點6 共4個部件安裝在一起形成一個整體,移動其中一個部件節點5 導致連帶移動,即部件整體形成的復雜節點也會向相同的方向移動.移動操作效果圖如圖5.

圖5 移動測試
(2)旋轉:將節點4到節點6 共3個部件安裝在一起形成一個整體,將其中一個節點逆時針旋轉90°,部件整體形成的復雜節點也會跟隨旋轉相同的角度.旋轉操作效果圖如圖6.

圖6 旋轉測試
(3)固定:將節點3到節點6 共4個部件安裝在一起形成一個整體,固定其中一個節點,部件整體形成的復雜節點也被固定,無法進行移動或者旋轉等操作.固定操作效果圖如圖7.

圖7 固定測試
測試結果表明,在拆裝過程中連接邏輯能夠精確判斷部件之間的連接關系,系統能夠根據具體的操作做出正確的響應.滿足了連接邏輯的設計要求,驗證了連接邏輯的準確性.
節點3到節點6 共4個部件安裝在一起形成一個整體,將形成的復雜節點設置為T.按照工藝流程及測試系統需要,我們在依賴表中設置依賴關系為:復雜節點T與節點2裝配之前需要先將節點2與節點1裝配,拆解順序與此相反.因此,若嚴格按照安裝順序進行裝配,順序邏輯不存在依賴異常,系統將準確的進行裝配操作;若違反安裝順序,例如在節點2 未與節點1裝配之前將復雜節點T與節點2進行裝配,系統將提示裝配異常.拆解操作與裝配順序相反,這里不加贅述.順序邏輯測試如圖8.

圖8 順序邏輯測試
測試結果表明,在拆裝過程中順序邏輯能夠正確處理部件之間的拆裝順序,系統能夠按照工藝流程準確的進行拆解和裝配,若違反順序,系統將不會做出拆裝響應.滿足了順序邏輯的設計要求,驗證了順序邏輯的準確性.
為了使測試結果更具普適性,本文對特種閥門進行了同樣的測試.圖9展示了特種閥門在該虛擬拆裝系統中的拆裝測試,測試結果表明:系統的拆裝邏輯能夠按照工藝流程正確的處理部件之間的拆解和裝配,即驗證了系統拆裝邏輯的準確性以及系統的通用性.

圖9 閥門拆裝測試
為了解決現有的虛擬拆裝系統存在通用性差等問題,本文提出了一種基于圖遍歷算法的拆裝邏輯,并在此基礎上設計實現了一套基于混合現實的虛擬拆裝系統.最后,通過自然交互的方式,使用了不同模型對該系統進行了測試.測試結果表明:該系統不僅能夠生動形象的展示模型拆裝的過程,也能正確處理部件之間的拆裝順序,并且能夠按照工藝流程對拆裝過程進行限制,對于不同的模型具有通用性.因此,本系統初步解決了現有虛擬拆裝系統通用性差、適用范圍小等問題,具有很高的實用價值.
本文實現的系統在用戶體驗方面還需進一步完善,同時本文提出的算法也有改進的余地.下一步將提高界面友好度并改進算法復雜度,以實現系統更加真實高效的運行.