梁劍斌,曾秋瑋,周志豪
(廣東工業(yè)大學(xué)機(jī)電工程學(xué)院,廣州 510006)
裝配是指按照設(shè)計(jì)要求實(shí)現(xiàn)零件或部件的連接,把零件或部件組合成產(chǎn)品。隨著生產(chǎn)線自動(dòng)化技術(shù)的快速發(fā)展,自動(dòng)化裝配已是裝配行業(yè)的主流技術(shù)。但在機(jī)械行業(yè)中,大量機(jī)器維修仍需要人工裝配技術(shù)。因此,提高人工機(jī)械裝配的效率能有效提高機(jī)械行業(yè)的運(yùn)作效率。對于人工機(jī)械裝配技術(shù),有3個(gè)方面可以提升工作效率:①讓操作者在實(shí)際操作前閱讀并記憶大量的技術(shù)文檔。②讓操作者在實(shí)訓(xùn)平臺(tái)訓(xùn)練實(shí)施整個(gè)裝配工序。③有經(jīng)驗(yàn)的操作者協(xié)助工藝設(shè)計(jì)者改進(jìn)裝配工序。這都需要付出大量的時(shí)間和物料以供試錯(cuò)。
增強(qiáng)現(xiàn)實(shí)(augmented reality,AR)是一種將虛擬信息無縫疊加在真實(shí)場景圖像的技術(shù)。使用AR技術(shù)輔助人工機(jī)械裝配,可提升操作者工作效率,具體體現(xiàn)在以下3方面:①AR可以讓操作者在實(shí)際操作中更直觀和便捷地獲取工藝信息,減少操作者的記憶負(fù)擔(dān);②AR可以實(shí)現(xiàn)高逼真度的虛擬裝配培訓(xùn),減低培訓(xùn)成本;③高逼真的虛擬裝配培訓(xùn)也可用于裝配效率評(píng)估,從而提升裝配工藝水平。
對于增強(qiáng)現(xiàn)實(shí)裝配輔助技術(shù)(augmented reali?ty assembly supporting,ARAS),研究大多集中于增強(qiáng)圖像顯示效果的提升與系統(tǒng)集成,對人機(jī)交互的關(guān)注較少。人機(jī)交互方式是影響應(yīng)用工作效率的重要因素,良好的人家交互能讓操作者獲得更好的反饋和使用沉浸感?,F(xiàn)有的ARAS交互技術(shù)更多的作用是實(shí)現(xiàn)系統(tǒng)功能與拆裝流程的漫游,對具體操作的虛擬仿真較少。
傳統(tǒng)的ARAS交互大多需要操作者手持標(biāo)識(shí)物或穿戴設(shè)備以得到穩(wěn)定的交互體驗(yàn),但是這些AR交互裝置存在2個(gè)缺點(diǎn):①真實(shí)裝配環(huán)境并不需要AR交互裝置即可進(jìn)行裝配,過多的額外裝置會(huì)破壞體驗(yàn)的沉浸感;②AR交互裝置的握持或佩戴都會(huì)增加裝配工藝流程的復(fù)雜度。為了解決以上問題,研究者把手勢或體感交互引入ARAS以減少使用AR交互裝置。手勢和體感交互是用戶通過手部或肢體動(dòng)作與系統(tǒng)互動(dòng)的交互技術(shù)[1],在現(xiàn)有的ARAS交互研究中,研究者利用該技術(shù)可實(shí)現(xiàn)裝配操作[3]、系統(tǒng)功能漫游[4]、裝配流程瀏覽[5]和高擬真度抓取[6]等應(yīng)用。但現(xiàn)有的應(yīng)用大多采用通用化手勢,對裝配操作狀態(tài)缺乏反饋,不利于提升交互的沉浸感。
針對以上問題,本文從機(jī)械裝配操作實(shí)際需求出發(fā),提出了一個(gè)AR拆裝徒手交互系統(tǒng)并對系統(tǒng)各個(gè)組成部分進(jìn)行闡述。該系統(tǒng)讓操作者在一個(gè)虛實(shí)融合的交互環(huán)境下,按照工藝規(guī)范執(zhí)行虛擬裝配操作。最后設(shè)計(jì)了應(yīng)用實(shí)例,通過實(shí)驗(yàn),對AR拆裝徒手交互系統(tǒng)的可行性進(jìn)行了驗(yàn)證。
AR拆裝徒手交互系統(tǒng)的體系結(jié)構(gòu)如圖1所示。該系統(tǒng)包括硬件層、輸入輸出層、交互功能層和離線數(shù)據(jù)層。
圖1 AR拆裝徒手交互系統(tǒng)框架
從圖中可以看到每個(gè)層之間交換的數(shù)據(jù)流。用戶的動(dòng)作首先被深度相機(jī)采集并輸出為深度圖和彩色圖;手部分割模塊從深度圖中分割并提取手部信息,其中包括手掌掌心三維位置、手部深度圖像、手部靜止?fàn)顟B(tài);操作感知模塊在手部信息和工藝信息的基礎(chǔ)上,計(jì)算當(dāng)前操作狀態(tài)信息,其中包括操作進(jìn)度、完成狀態(tài)和虛擬物件姿態(tài);操作反饋模塊首先利用手部深度圖像生成手部表面曲面,另外將操作狀態(tài)信息轉(zhuǎn)換為可視化視覺元素;三維渲染模塊則根據(jù)其他模塊生成的虛擬物件姿態(tài)、操作視覺反饋信息和手部表面曲面生成虛實(shí)融合圖像,并傳輸?shù)斤@示器呈現(xiàn)。
硬件層的作用是提供與操作者對接的人機(jī)交互界面,主要的硬件包括深度相機(jī)和顯示器。深度相機(jī)的作用是采集整個(gè)交互場景的彩色圖和深度圖。顯示器的作用是呈現(xiàn)最終的AR畫面。整個(gè)硬件層可以看作是一個(gè)AR交互場景,場景內(nèi)各硬件的擺放如圖2所示。
圖2 AR拆裝徒手交場景設(shè)計(jì)
場景在離地面2.4 m處架設(shè)深度攝像頭,從俯視的視角采集整個(gè)場景的深度圖像。在操作者面前架設(shè)了顯示屏,用于呈現(xiàn)AR圖像。本文使用KinectV2作為具體的深度攝像頭型號(hào),KinectV2可以同時(shí)提供深度圖像和彩色圖像,本文研究的交互模型使用深度圖像作為數(shù)據(jù)源。受制于深度攝像頭的采集范圍,該場景的交互空間呈四角錐臺(tái)形狀,頂面離攝像頭0.5 m,底面離攝像頭2.4 m,相對的兩組斜面夾角分別為70°和60°。
輸入輸出層的作用是預(yù)處理采集數(shù)據(jù),并輸出最終的AR圖像,該層包括手部分割模塊和三維渲染模塊。
手部分割模塊的功能是使用圖像處理技術(shù)從場景深度圖中提取手部信息。模塊的工作主要分為3個(gè)步驟:①使用固定閾值法從深度圖中提取操作者區(qū)域,利用寬度特征提取手部區(qū)域,根據(jù)各個(gè)手部區(qū)域與軀干之間位置關(guān)系識(shí)別左右手區(qū)域,求出手部區(qū)域?qū)?yīng)的深度圖區(qū)域;②提出基于大窗口高斯模糊的掌心位置迭代算法,將單個(gè)手部區(qū)域劃分為手掌、手指和手臂三個(gè)區(qū)域,并求出掌心三維坐標(biāo);③提出基于面積變化的識(shí)別算法,求出手部靜止?fàn)顟B(tài)。圖3展示了手部分割模塊的工作流程。
圖3 手部分割模塊處理流程
三維渲染模塊的作用是輸出AR圖像,其工作原理是三維引擎基礎(chǔ)上,根據(jù)交互功能層輸出的結(jié)果調(diào)整或生成三維物體,并把場景彩色圖應(yīng)用到場景背景和手部表面模型中。圖4展示模塊輸出的虛實(shí)融合畫面。
圖4 手部分割模塊處理流程
交互功能層的作用是在收集到的手部信息和工藝信息的基礎(chǔ)上,感知操作者的裝配操作并生成反饋。該層是整個(gè)原型系統(tǒng)的核心區(qū)域,包括操作感知模塊和操作反饋模塊。
操作感知模塊根據(jù)當(dāng)前的工藝步驟采取對應(yīng)的感知策略,并輸出當(dāng)前操作的虛擬零部件或工具實(shí)時(shí)位姿和操作進(jìn)度。模型主要分為三個(gè)部分:①虛擬物體抓取模塊,根據(jù)手部靜止?fàn)顟B(tài)的變化和手部與抓取點(diǎn)之間的位置關(guān)系,識(shí)別虛擬物體是否被抓??;②裝配操作感知模塊,根據(jù)工藝信息與虛擬零部件或工具的運(yùn)動(dòng),識(shí)別當(dāng)前操作進(jìn)度;③虛擬物體位姿變換模塊,根據(jù)工藝要求,將手部運(yùn)動(dòng)轉(zhuǎn)換為虛擬零部件或工具的位姿變換。
操作反饋模塊主要有兩個(gè)功能:①將手部深度圖像轉(zhuǎn)化為包含材質(zhì)坐標(biāo)信息的手部表面模型;②基于有限狀態(tài)機(jī)理論,根據(jù)手部信息、工藝信息與操作狀態(tài)信息輸出視覺反饋信息。操作反饋模塊的輸出結(jié)果如圖5所示。
圖5 手部分割模塊處理流程
離線數(shù)據(jù)層的作用是儲(chǔ)存裝配相關(guān)的信息與CAD。該層儲(chǔ)存的內(nèi)容包括:虛擬零部件和工具的CAD模型、虛擬零部件信息、虛擬工具信息和工藝信息。其中,虛擬零部件信息的生成是根據(jù)工藝文檔和真實(shí)零部件的操作特性放置抓取點(diǎn);虛擬工具的生成是根據(jù)工藝文檔和真實(shí)工具的操作特性放置抓取點(diǎn)和旋轉(zhuǎn)軸;工藝信息的生成是根據(jù)工藝文檔選取需要被操作的虛擬零部件或工具,并從工藝文檔中提煉工藝參數(shù),最后對所有數(shù)據(jù)進(jìn)行封包。
增強(qiáng)現(xiàn)實(shí)拆裝徒手交互原型系統(tǒng)使用x86型計(jì)算機(jī)作為數(shù)據(jù)處理平臺(tái)。計(jì)算機(jī)具有以下配置:CPU為英特爾酷睿i5-8250U,主頻1.6 GHz;運(yùn)行內(nèi)存8 GB;顯卡為英偉達(dá)MX150,顯存容量為4 GB。使用KinectV2采集場景的深度圖和彩色圖,其中彩色圖分辨率為1920×1080,幀率為30fps;深度圖分辨率為512×424,幀率為30 fps。
軟件系統(tǒng)采用Windows 10平臺(tái),使用Visual Studio 2017編輯和編譯代碼,使用Unity 2018建立和渲染三維場景。在此基礎(chǔ)上,使用Kinect SDK 2.0采集彩色圖和深度圖,使用OpenCV 2.4.10進(jìn)行圖像處理。
為了加快圖像數(shù)據(jù)的處理速度,基于OpenCV和KinectSDK的開發(fā)都使用本地C++語言。而基于Unity的三維渲染與圖像呈現(xiàn)是使用C#語言開發(fā)。開發(fā)的語言的不同造成數(shù)據(jù)不能直接共享,因此本文建立一套基于動(dòng)態(tài)鏈接庫(dy?namic-link library,DLL)的內(nèi)存共享機(jī)制,如圖6所示。在系統(tǒng)初始化階段,由C#申請需要共享的內(nèi)存塊。在實(shí)時(shí)運(yùn)行中,KinectSDK的作用是從Kinect采集彩色圖和深度圖,深度圖在C++內(nèi)部傳輸?shù)交贠penCV的圖像處理模塊,并把彩色圖寫入共享內(nèi)存塊。OpenCV圖像處理模塊的作用是從深度圖提取手部信息并寫入共享內(nèi)存塊。Unity3D則從共享內(nèi)存塊中讀取所需的數(shù)據(jù)進(jìn)行后續(xù)處理。
圖6 內(nèi)存共享機(jī)制流程
本文通過汽車發(fā)動(dòng)機(jī)的應(yīng)用案例來驗(yàn)證原型系統(tǒng)以及系統(tǒng)中所采用的交互技術(shù)的使用情況。汽車發(fā)動(dòng)機(jī)裝配流程總結(jié)為34個(gè)步驟,大多數(shù)為零部件安置與螺紋連接操作。
在系統(tǒng)初始化之后,待操作的物件(虛擬零部件或工具)會(huì)呈現(xiàn)在屏幕右側(cè),等待操作者抓取。操作者抓取物件后根據(jù)操作狀態(tài)進(jìn)行虛擬裝配操作。操作完成后,系統(tǒng)自動(dòng)呈現(xiàn)下一步需要操作的物件,循環(huán)直至裝配全部完成。圖7展示部分運(yùn)行效果圖。
圖7 運(yùn)行效果圖
針對ARAS交互技術(shù)對裝配操作狀態(tài)反饋不充分的問題,本文提出了本文給出了增強(qiáng)現(xiàn)實(shí)拆裝徒手交互系統(tǒng)。系統(tǒng)包含了4個(gè)層次和4個(gè)核心模塊,本文對每個(gè)層次和模塊的作用都進(jìn)行了詳細(xì)闡述。最后設(shè)計(jì)了一個(gè)汽車發(fā)動(dòng)機(jī)拆裝案例驗(yàn)證了系統(tǒng)的可行性。