梁劍斌,曾秋瑋,周志豪
(廣東工業大學機電工程學院,廣州 510006)
裝配是指按照設計要求實現零件或部件的連接,把零件或部件組合成產品。隨著生產線自動化技術的快速發展,自動化裝配已是裝配行業的主流技術。但在機械行業中,大量機器維修仍需要人工裝配技術。因此,提高人工機械裝配的效率能有效提高機械行業的運作效率。對于人工機械裝配技術,有3個方面可以提升工作效率:①讓操作者在實際操作前閱讀并記憶大量的技術文檔。②讓操作者在實訓平臺訓練實施整個裝配工序。③有經驗的操作者協助工藝設計者改進裝配工序。這都需要付出大量的時間和物料以供試錯。
增強現實(augmented reality,AR)是一種將虛擬信息無縫疊加在真實場景圖像的技術。使用AR技術輔助人工機械裝配,可提升操作者工作效率,具體體現在以下3方面:①AR可以讓操作者在實際操作中更直觀和便捷地獲取工藝信息,減少操作者的記憶負擔;②AR可以實現高逼真度的虛擬裝配培訓,減低培訓成本;③高逼真的虛擬裝配培訓也可用于裝配效率評估,從而提升裝配工藝水平。
對于增強現實裝配輔助技術(augmented reali?ty assembly supporting,ARAS),研究大多集中于增強圖像顯示效果的提升與系統集成,對人機交互的關注較少。人機交互方式是影響應用工作效率的重要因素,良好的人家交互能讓操作者獲得更好的反饋和使用沉浸感。現有的ARAS交互技術更多的作用是實現系統功能與拆裝流程的漫游,對具體操作的虛擬仿真較少。
傳統的ARAS交互大多需要操作者手持標識物或穿戴設備以得到穩定的交互體驗,但是這些AR交互裝置存在2個缺點:①真實裝配環境并不需要AR交互裝置即可進行裝配,過多的額外裝置會破壞體驗的沉浸感;②AR交互裝置的握持或佩戴都會增加裝配工藝流程的復雜度。為了解決以上問題,研究者把手勢或體感交互引入ARAS以減少使用AR交互裝置。手勢和體感交互是用戶通過手部或肢體動作與系統互動的交互技術[1],在現有的ARAS交互研究中,研究者利用該技術可實現裝配操作[3]、系統功能漫游[4]、裝配流程瀏覽[5]和高擬真度抓取[6]等應用。但現有的應用大多采用通用化手勢,對裝配操作狀態缺乏反饋,不利于提升交互的沉浸感。
針對以上問題,本文從機械裝配操作實際需求出發,提出了一個AR拆裝徒手交互系統并對系統各個組成部分進行闡述。該系統讓操作者在一個虛實融合的交互環境下,按照工藝規范執行虛擬裝配操作。最后設計了應用實例,通過實驗,對AR拆裝徒手交互系統的可行性進行了驗證。
AR拆裝徒手交互系統的體系結構如圖1所示。該系統包括硬件層、輸入輸出層、交互功能層和離線數據層。

圖1 AR拆裝徒手交互系統框架
從圖中可以看到每個層之間交換的數據流。用戶的動作首先被深度相機采集并輸出為深度圖和彩色圖;手部分割模塊從深度圖中分割并提取手部信息,其中包括手掌掌心三維位置、手部深度圖像、手部靜止狀態;操作感知模塊在手部信息和工藝信息的基礎上,計算當前操作狀態信息,其中包括操作進度、完成狀態和虛擬物件姿態;操作反饋模塊首先利用手部深度圖像生成手部表面曲面,另外將操作狀態信息轉換為可視化視覺元素;三維渲染模塊則根據其他模塊生成的虛擬物件姿態、操作視覺反饋信息和手部表面曲面生成虛實融合圖像,并傳輸到顯示器呈現。
硬件層的作用是提供與操作者對接的人機交互界面,主要的硬件包括深度相機和顯示器。深度相機的作用是采集整個交互場景的彩色圖和深度圖。顯示器的作用是呈現最終的AR畫面。整個硬件層可以看作是一個AR交互場景,場景內各硬件的擺放如圖2所示。

圖2 AR拆裝徒手交場景設計
場景在離地面2.4 m處架設深度攝像頭,從俯視的視角采集整個場景的深度圖像。在操作者面前架設了顯示屏,用于呈現AR圖像。本文使用KinectV2作為具體的深度攝像頭型號,KinectV2可以同時提供深度圖像和彩色圖像,本文研究的交互模型使用深度圖像作為數據源。受制于深度攝像頭的采集范圍,該場景的交互空間呈四角錐臺形狀,頂面離攝像頭0.5 m,底面離攝像頭2.4 m,相對的兩組斜面夾角分別為70°和60°。
輸入輸出層的作用是預處理采集數據,并輸出最終的AR圖像,該層包括手部分割模塊和三維渲染模塊。
手部分割模塊的功能是使用圖像處理技術從場景深度圖中提取手部信息。模塊的工作主要分為3個步驟:①使用固定閾值法從深度圖中提取操作者區域,利用寬度特征提取手部區域,根據各個手部區域與軀干之間位置關系識別左右手區域,求出手部區域對應的深度圖區域;②提出基于大窗口高斯模糊的掌心位置迭代算法,將單個手部區域劃分為手掌、手指和手臂三個區域,并求出掌心三維坐標;③提出基于面積變化的識別算法,求出手部靜止狀態。圖3展示了手部分割模塊的工作流程。

圖3 手部分割模塊處理流程
三維渲染模塊的作用是輸出AR圖像,其工作原理是三維引擎基礎上,根據交互功能層輸出的結果調整或生成三維物體,并把場景彩色圖應用到場景背景和手部表面模型中。圖4展示模塊輸出的虛實融合畫面。

圖4 手部分割模塊處理流程
交互功能層的作用是在收集到的手部信息和工藝信息的基礎上,感知操作者的裝配操作并生成反饋。該層是整個原型系統的核心區域,包括操作感知模塊和操作反饋模塊。
操作感知模塊根據當前的工藝步驟采取對應的感知策略,并輸出當前操作的虛擬零部件或工具實時位姿和操作進度。模型主要分為三個部分:①虛擬物體抓取模塊,根據手部靜止狀態的變化和手部與抓取點之間的位置關系,識別虛擬物體是否被抓取;②裝配操作感知模塊,根據工藝信息與虛擬零部件或工具的運動,識別當前操作進度;③虛擬物體位姿變換模塊,根據工藝要求,將手部運動轉換為虛擬零部件或工具的位姿變換。
操作反饋模塊主要有兩個功能:①將手部深度圖像轉化為包含材質坐標信息的手部表面模型;②基于有限狀態機理論,根據手部信息、工藝信息與操作狀態信息輸出視覺反饋信息。操作反饋模塊的輸出結果如圖5所示。

圖5 手部分割模塊處理流程
離線數據層的作用是儲存裝配相關的信息與CAD。該層儲存的內容包括:虛擬零部件和工具的CAD模型、虛擬零部件信息、虛擬工具信息和工藝信息。其中,虛擬零部件信息的生成是根據工藝文檔和真實零部件的操作特性放置抓取點;虛擬工具的生成是根據工藝文檔和真實工具的操作特性放置抓取點和旋轉軸;工藝信息的生成是根據工藝文檔選取需要被操作的虛擬零部件或工具,并從工藝文檔中提煉工藝參數,最后對所有數據進行封包。
增強現實拆裝徒手交互原型系統使用x86型計算機作為數據處理平臺。計算機具有以下配置:CPU為英特爾酷睿i5-8250U,主頻1.6 GHz;運行內存8 GB;顯卡為英偉達MX150,顯存容量為4 GB。使用KinectV2采集場景的深度圖和彩色圖,其中彩色圖分辨率為1920×1080,幀率為30fps;深度圖分辨率為512×424,幀率為30 fps。
軟件系統采用Windows 10平臺,使用Visual Studio 2017編輯和編譯代碼,使用Unity 2018建立和渲染三維場景。在此基礎上,使用Kinect SDK 2.0采集彩色圖和深度圖,使用OpenCV 2.4.10進行圖像處理。
為了加快圖像數據的處理速度,基于OpenCV和KinectSDK的開發都使用本地C++語言。而基于Unity的三維渲染與圖像呈現是使用C#語言開發。開發的語言的不同造成數據不能直接共享,因此本文建立一套基于動態鏈接庫(dy?namic-link library,DLL)的內存共享機制,如圖6所示。在系統初始化階段,由C#申請需要共享的內存塊。在實時運行中,KinectSDK的作用是從Kinect采集彩色圖和深度圖,深度圖在C++內部傳輸到基于OpenCV的圖像處理模塊,并把彩色圖寫入共享內存塊。OpenCV圖像處理模塊的作用是從深度圖提取手部信息并寫入共享內存塊。Unity3D則從共享內存塊中讀取所需的數據進行后續處理。

圖6 內存共享機制流程
本文通過汽車發動機的應用案例來驗證原型系統以及系統中所采用的交互技術的使用情況。汽車發動機裝配流程總結為34個步驟,大多數為零部件安置與螺紋連接操作。
在系統初始化之后,待操作的物件(虛擬零部件或工具)會呈現在屏幕右側,等待操作者抓取。操作者抓取物件后根據操作狀態進行虛擬裝配操作。操作完成后,系統自動呈現下一步需要操作的物件,循環直至裝配全部完成。圖7展示部分運行效果圖。

圖7 運行效果圖
針對ARAS交互技術對裝配操作狀態反饋不充分的問題,本文提出了本文給出了增強現實拆裝徒手交互系統。系統包含了4個層次和4個核心模塊,本文對每個層次和模塊的作用都進行了詳細闡述。最后設計了一個汽車發動機拆裝案例驗證了系統的可行性。