劉繼忠,曠有濤,金穎,李祎,李道良
(南昌大學(xué)機(jī)電工程學(xué)院,江西 南昌 330031)
目前高校對(duì)機(jī)械產(chǎn)品拆裝實(shí)驗(yàn)、認(rèn)知水平教學(xué)基本停留在比較傳統(tǒng)的模式上,存在著學(xué)生實(shí)踐時(shí)間短、教學(xué)成本高、設(shè)備緊張等諸多問題,一定程度上影響了實(shí)驗(yàn)教學(xué)工作的開展和學(xué)生實(shí)踐創(chuàng)新能力的培養(yǎng)[1-4]。液壓拆裝實(shí)驗(yàn)是學(xué)生掌握液壓元器件結(jié)構(gòu)、工作原理的一個(gè)重要基礎(chǔ)實(shí)驗(yàn)。由于液壓拆裝實(shí)驗(yàn)需要完成對(duì)液壓元件的拆解、裝配,學(xué)生數(shù)量多,循環(huán)使用,極易造成元器件損壞,且本身亦需要較多不同類型液壓元器件,因此,導(dǎo)致拆裝實(shí)踐教學(xué)成本高,臺(tái)套數(shù)不易滿足教學(xué)需求等問題。而最新發(fā)展迅速的虛擬現(xiàn)實(shí)技術(shù),具有交互性好、沉浸感強(qiáng)和良好的體驗(yàn)感等優(yōu)勢(shì)[5-7],且在虛擬仿真教學(xué)、虛擬訓(xùn)練系統(tǒng)中得到了較為廣泛的應(yīng)用,有著提升學(xué)生學(xué)習(xí)興趣等優(yōu)勢(shì)[8-9]。張俊等[10]以RV減速器為研究對(duì)象,應(yīng)用虛擬仿真技術(shù)和增強(qiáng)現(xiàn)實(shí)技術(shù)基于Unity3D開發(fā)出了一套R(shí)V減速器虛擬仿真系統(tǒng)。Wang等[11]以交互性火星探測(cè)車為對(duì)象,開發(fā)出一套火星探測(cè)車虛擬訓(xùn)練系統(tǒng)。李玉勝等[12]以Delta機(jī)器人為研究對(duì)象,基于Unity3D技術(shù)結(jié)合HTC vive設(shè)備開發(fā)出Delta機(jī)器人的虛擬仿真實(shí)驗(yàn)系統(tǒng)。
因此,基于以上研究,針對(duì)液壓傳動(dòng)具有理論抽象、實(shí)驗(yàn)成本高、設(shè)備要求多等問題,結(jié)合虛擬現(xiàn)實(shí)技術(shù)交互性好、沉浸感強(qiáng)和良好的體驗(yàn)感等優(yōu)勢(shì),開發(fā)一套基于虛擬現(xiàn)實(shí)(virtual reality,VR)和增強(qiáng)現(xiàn)實(shí)(augmented reality,AR)的液壓拆裝實(shí)驗(yàn)教學(xué)系統(tǒng),以降低教學(xué)成本,并提升學(xué)生學(xué)習(xí)興趣,拓展學(xué)生新型技術(shù)視野。
《液壓傳動(dòng)》課程拆裝實(shí)驗(yàn)主要是完成能源裝置(泵類)、控制調(diào)節(jié)裝置(閥類)、執(zhí)行裝置(液壓缸和液壓馬達(dá)類)等液壓元器件的拆解裝配、結(jié)構(gòu)與工作原理掌握,因此,系統(tǒng)開發(fā)主要完成三大裝置的立體結(jié)構(gòu)建模以及基于虛擬現(xiàn)實(shí)技術(shù)的拆解裝配、結(jié)構(gòu)與工作原理掌握等功能,因此,從功能設(shè)計(jì)上主要考慮基本知識(shí)講解、立體結(jié)構(gòu)展示(包括透視、旋轉(zhuǎn)、縮放等)與虛擬拆裝(包括整體立體爆炸圖、單件拆裝、復(fù)原等)、工作原理動(dòng)畫模擬、音視頻與圖片嵌入、實(shí)驗(yàn)交互功能設(shè)計(jì)等。同時(shí)考慮到課程統(tǒng)一安排的集中實(shí)驗(yàn)以及便于學(xué)生隨時(shí)自學(xué),系統(tǒng)并設(shè)計(jì)了適合于兩種實(shí)驗(yàn)教學(xué)情形的教學(xué)系統(tǒng),即便于課堂實(shí)驗(yàn)教學(xué)的PC端VR系統(tǒng)和便于學(xué)生隨時(shí)隨地學(xué)習(xí)掌握的手機(jī)APP端AR系統(tǒng),具體功能如圖1所示。
圖1 系統(tǒng)功能結(jié)構(gòu)Fig.1 System function modules
具體技術(shù)路線與系統(tǒng)架構(gòu)如圖2所示,第1部分軟件建設(shè)部分,首先要完成視頻、音頻、Vuforia插件等素材收集或錄制,其次要完成基于Solidworks或者Proe等軟件的液壓元器件三維模型建模以及第三貼圖等素材制作,最后處理后導(dǎo)入U(xiǎn)nity3D軟件平臺(tái);第2部分硬件支撐部分,主要包括HTC vive頭盔、操作手柄、安卓手機(jī)、PC或筆記本電腦。第1部分和第2部分共同構(gòu)成了實(shí)驗(yàn)教學(xué)系統(tǒng)開發(fā)的軟、硬件平臺(tái)支撐。液壓元器件包括液壓泵、液壓閥、液壓馬達(dá)、液壓缸等裝置的虛擬拆裝主要通過適合于課堂集中實(shí)驗(yàn)教學(xué)的PC端VR系統(tǒng)和適合于學(xué)生隨時(shí)隨地掌握學(xué)習(xí)的手機(jī)APP端AR系統(tǒng)實(shí)現(xiàn),具體VR系統(tǒng)功能主要通過虛擬拆裝、工作原理模擬、旁白或視頻講解、結(jié)構(gòu)透明展示、旋轉(zhuǎn)及縮放觀察、知識(shí)點(diǎn)考核等實(shí)現(xiàn),具體AR系統(tǒng)功能則主要通過二維掃描對(duì)應(yīng)、觸屏控制、虛擬拆裝、旋轉(zhuǎn)及縮放觀察、知識(shí)點(diǎn)考核等實(shí)現(xiàn)。
圖2 技術(shù)路線與系統(tǒng)架構(gòu)Fig.2 Technique route and system architecture
如圖2中所示,開發(fā)平臺(tái)包括軟件平臺(tái)和硬件平臺(tái)。軟件平臺(tái)主要是為完成元器件三維結(jié)構(gòu)建模、環(huán)境渲染以及VR/AR系統(tǒng)開發(fā)提供支撐,具體包括虛擬現(xiàn)實(shí)開發(fā)平臺(tái)Unity3D,三維建模軟件SolidWorks、Proe或UG(文中采用SolidWorks,三者皆可實(shí)用,可轉(zhuǎn)化統(tǒng)一格式導(dǎo)入U(xiǎn)nity3D),優(yōu)化渲染軟件3Dmax,軟件系統(tǒng)開發(fā)工具包DOTween和Vuforia插件。虛擬現(xiàn)實(shí)開發(fā)平臺(tái)Unity3D支持Android 、Windows、網(wǎng)頁(yè)等應(yīng)用平臺(tái)的全平臺(tái)發(fā)布[13],開發(fā)者可以將所開發(fā)產(chǎn)品方便的發(fā)布到Android 、Windows、網(wǎng)頁(yè)等應(yīng)用平臺(tái),可以根據(jù)實(shí)際需求,實(shí)現(xiàn)單機(jī)、網(wǎng)頁(yè)、移動(dòng)終端及其他平臺(tái)同時(shí)使用的要求。系統(tǒng)虛擬現(xiàn)實(shí)功能開發(fā)和增強(qiáng)現(xiàn)實(shí)功能開發(fā)采用C#編程語(yǔ)言,UI界面設(shè)計(jì)采用Unity自帶的UGUI。具體的開發(fā)平臺(tái)、工具及其作用如表1所示。
表1 開發(fā)平臺(tái)、工具及其作用Tab.1 Development platforms,tools and their functions
硬件平臺(tái)主要包括:虛擬現(xiàn)實(shí)硬件系統(tǒng)如HTC頭盔、定位模塊、操作手柄、高性能顯卡等,實(shí)現(xiàn)虛擬場(chǎng)景沉浸式體驗(yàn)與交互,支撐VR實(shí)驗(yàn)系統(tǒng)運(yùn)行的承載平臺(tái)——計(jì)算機(jī)系統(tǒng)如筆記本電腦、臺(tái)式PC等,實(shí)現(xiàn)易于隨時(shí)隨地學(xué)習(xí)掌握的AR系統(tǒng)運(yùn)行的承載平臺(tái)——安卓手機(jī)系統(tǒng)。
系統(tǒng)分為PC端VR系統(tǒng)和手機(jī)APP端AR系統(tǒng),由于采用Unity3D開發(fā)平臺(tái),支持PC端、Web端、APP端的全平臺(tái)發(fā)布,且AR系統(tǒng)是基于VR系統(tǒng)內(nèi)容開發(fā),因此,重點(diǎn)以PC端VR系統(tǒng)開發(fā)為主闡述,并在第3部分單獨(dú)進(jìn)一步闡述AR系統(tǒng)。系統(tǒng)主要開發(fā)流程如圖3所示,主要如下。
1) 液壓元件三維建模。液壓元件三維模型的建立是液壓虛擬拆裝實(shí)驗(yàn)系統(tǒng)建設(shè)的基礎(chǔ),也是后續(xù)液壓VR系統(tǒng)基本回路實(shí)驗(yàn)、液壓系統(tǒng)仿真的實(shí)現(xiàn)基礎(chǔ)??苫赑roe/Solidwork三維建模軟件對(duì)液壓元件模型進(jìn)行建模,構(gòu)成液壓元件三維模型系統(tǒng)。
2) 三維模型的導(dǎo)入與修飾、渲染。第一,將建好的三維模型轉(zhuǎn)化成stl格式,導(dǎo)入到3DMax中,對(duì)零部件的中心位置坐標(biāo)軸進(jìn)行調(diào)整,以及對(duì)模型導(dǎo)入后缺失的點(diǎn)、線、面進(jìn)行優(yōu)化處理,并根據(jù)實(shí)際需求附上材質(zhì)。第二,可進(jìn)一步利用Photoshop軟件制作一些貼圖,配合模型在Unity3D中使用。第三,將模型導(dǎo)出為.fbx格式,并和模型一起進(jìn)一步導(dǎo)入到Unity3D開發(fā)平臺(tái)中,進(jìn)行場(chǎng)景內(nèi)容制作、UI界面設(shè)計(jì)等VR實(shí)驗(yàn)系統(tǒng)開發(fā)。
3) 界面優(yōu)化、虛擬實(shí)驗(yàn)場(chǎng)景制作。結(jié)合模型和課程實(shí)驗(yàn),制作VR虛擬實(shí)驗(yàn)場(chǎng)景和進(jìn)行交互功能設(shè)計(jì),具體包括結(jié)合實(shí)驗(yàn)需求的UI界面、基于C#腳本語(yǔ)言編程操控的虛擬場(chǎng)景下的人機(jī)交互。
4) 發(fā)布。將開發(fā)調(diào)試好的系統(tǒng)選擇PC端平臺(tái)發(fā)布,生成可直接執(zhí)行的VR實(shí)驗(yàn)系統(tǒng)。
圖3 系統(tǒng)開發(fā)流程Fig.3 System development process
2.2.1 交互界面
利用Unity自帶的UGUI組件可以快速地創(chuàng)建圖形用戶界面(GUI界面)實(shí)現(xiàn)用戶與機(jī)器的交互。利用UI界面中image、button等控件實(shí)現(xiàn)元件介紹、結(jié)構(gòu)圖及原理圖、分離和復(fù)原、模型透明顯示等交互界面功能。利用按鈕附上腳本設(shè)計(jì)完成面板之間和場(chǎng)景之間的流暢切換。作為實(shí)際VR液壓實(shí)驗(yàn)系統(tǒng),考慮到用戶管理以及實(shí)驗(yàn)選擇,并設(shè)計(jì)登錄注冊(cè)界面、液壓元件拆裝實(shí)驗(yàn)選擇界面、液壓元件知識(shí)學(xué)習(xí)與考核界面。系統(tǒng)中一葉片泵液壓元件拆裝實(shí)驗(yàn)界面如圖4所示。
2.2.2 標(biāo)簽顯/隱功能
考慮虛擬實(shí)驗(yàn)操作中的實(shí)時(shí)提示,系統(tǒng)設(shè)計(jì)對(duì)每個(gè)液壓元件及其零部件都加上實(shí)時(shí)標(biāo)簽功能,具體是通過每個(gè)零部件添加Box Collider碰撞體,當(dāng)鼠標(biāo)經(jīng)過物體,調(diào)用OnMouseEnter()函數(shù),當(dāng)鼠標(biāo)離開物體,調(diào)用OnMouseExit()函數(shù),并利用一個(gè)布爾值,當(dāng)鼠標(biāo)經(jīng)過物體,OnGUI()函數(shù)檢測(cè)到布爾值為true,利用GUI中l(wèi)abel控件繪制大小適合的零件名稱標(biāo)簽,當(dāng)鼠標(biāo)移出將恢復(fù)。系統(tǒng)一葉片泵具體實(shí)例如圖5所示,當(dāng)鼠標(biāo)靠近零件時(shí)會(huì)顯示零件的名稱如圖5(b),而且該零件的顏色會(huì)變紅;當(dāng)鼠標(biāo)移出零件位置時(shí),標(biāo)簽會(huì)消失,零部件的顏色會(huì)恢復(fù)到物體原來的顏色如圖5(a)。
圖4 葉片泵VR拆裝實(shí)驗(yàn)操作界面及分離效果圖Fig.4 Interface and separation diagram of vane pump
(a) 變色前
(b) 變色后圖5 葉片泵顯/隱實(shí)時(shí)提示功能Fig.5 Display/hidden real-time prompt function of Vane pump
2.3.1 旋轉(zhuǎn)、縮放、平移、透明功能
液壓拆裝實(shí)驗(yàn)是為了學(xué)生更好地掌握液壓元器件結(jié)構(gòu)和工作原理,因此,方便地觀察元器件結(jié)構(gòu)是其最為重要功能之一,系統(tǒng)設(shè)計(jì)了旋轉(zhuǎn)全方位觀察、縮放細(xì)節(jié)觀察、透明內(nèi)部觀察功能。旋轉(zhuǎn):主要利用四元數(shù)Quaternion類的原理實(shí)現(xiàn),點(diǎn)擊鼠標(biāo)右鍵讓液壓元件旋轉(zhuǎn),實(shí)現(xiàn)不同角度全方位的液壓元件觀察;縮放:通過代碼對(duì)虛擬攝像頭控制,滑動(dòng)鼠標(biāo)滾輪可以對(duì)液壓元件進(jìn)行放大或者縮小,方便液壓元件模型細(xì)節(jié)觀察;平移:具體通過將世界坐標(biāo)系轉(zhuǎn)化為屏幕坐標(biāo)系,記下物體與鼠標(biāo)的距離,通過將物體的坐標(biāo)加上這段距離,實(shí)現(xiàn)用鼠標(biāo)左鍵對(duì)重要零部件拖動(dòng)到特定位置進(jìn)行觀察;透明:通過材料透明化處理,可以觀察元件內(nèi)部結(jié)構(gòu),再次點(diǎn)擊可以使其恢復(fù)到原狀態(tài)。系統(tǒng)并可以按鈕模型顯示,液壓元件模型將會(huì)以合適比例出現(xiàn)在界面內(nèi),整個(gè)旋轉(zhuǎn)、縮放、平移、透明操作結(jié)合虛擬場(chǎng)景和頭盔,具有良好的沉浸感和現(xiàn)場(chǎng)感。
2.3.2 拆裝功能
為了更好地理解掌握元件結(jié)構(gòu)與工作原理,也是液壓拆裝實(shí)驗(yàn)的核心目的,因此,系統(tǒng)設(shè)計(jì)了虛擬場(chǎng)景下的液壓元件拆裝功能,具體包括分離、復(fù)原和拆裝。學(xué)生通過在界面上點(diǎn)擊分離和復(fù)原的按鈕,實(shí)現(xiàn)相應(yīng)分離、復(fù)原功能,系統(tǒng)葉片泵分離效果如圖4所示,通過具體元件零件的點(diǎn)擊拾取與放回實(shí)現(xiàn)手動(dòng)拆裝功能。其中實(shí)現(xiàn)零件的分離和復(fù)原具體是通過獲取液壓元件子對(duì)象即每個(gè)零件的位置,在分離功能時(shí)結(jié)合Dotween動(dòng)畫插件將每個(gè)零件依次按順序移動(dòng)到特定位置,在點(diǎn)擊復(fù)原時(shí)將每個(gè)零件移動(dòng)到初始位置實(shí)現(xiàn),其核心代碼如下:
void Start ()
{
for (int i=0;i < YePianB.childCount;i++)
{
pos[i]=YePianB.GetChild(i).transform.localPosition;//獲取每一個(gè)子對(duì)象零件的位置
}
}
2.3.3 知識(shí)學(xué)習(xí)與考核功能
液壓虛擬拆裝實(shí)驗(yàn)教學(xué)系統(tǒng)除了結(jié)合實(shí)驗(yàn)教學(xué)外,還配置了對(duì)應(yīng)的知識(shí)學(xué)習(xí)和考核功能,可以通過單擊“液壓元件基本知識(shí)”、“結(jié)構(gòu)圖及職能符號(hào)”、“液壓工作原理”、“視頻”按鈕可以激活相應(yīng)的學(xué)習(xí)面板,學(xué)習(xí)面板圖文并茂,其中視頻界面主要以視頻和音頻的方式介紹液壓元件,工作原理主要是對(duì)每個(gè)需要運(yùn)動(dòng)的物體附上相應(yīng)的C#運(yùn)動(dòng)腳本。通過Unity腳本控制這幾個(gè)面板之間的來回切換,保證切換的流暢性。
基于手機(jī)APP端的增強(qiáng)現(xiàn)實(shí)(AR)系統(tǒng),更易于隨時(shí)隨地學(xué)習(xí)和掌握[14-15],手機(jī)APP端液壓拆裝實(shí)驗(yàn)AR系統(tǒng)主要是實(shí)現(xiàn)學(xué)習(xí)、增強(qiáng)現(xiàn)實(shí)虛擬實(shí)驗(yàn)、對(duì)應(yīng)元件的結(jié)構(gòu)與工作原理知識(shí)掌握功能,其開發(fā)實(shí)現(xiàn)與PC端VR系統(tǒng)類似,此部分主要闡述對(duì)應(yīng)元件的結(jié)構(gòu)與工作原理知識(shí)掌握功能。
手機(jī)移動(dòng)端利用Vuforia SDK增強(qiáng)現(xiàn)實(shí)工具對(duì)二維液壓元件圖進(jìn)行跟蹤注冊(cè),生成標(biāo)志圖文件導(dǎo)入進(jìn)unity平臺(tái),通過AR掃描與對(duì)應(yīng)關(guān)聯(lián),實(shí)現(xiàn)系統(tǒng)中對(duì)應(yīng)的AR模型結(jié)構(gòu)與工作原理掌握功能。具體是通過添加手指觸屏功能實(shí)現(xiàn)在手機(jī)端對(duì)液壓元件模型的放大、縮小、分離、復(fù)原等虛擬交互,實(shí)現(xiàn)手機(jī)移動(dòng)端三維增強(qiáng)現(xiàn)實(shí)結(jié)構(gòu)與工作原理及知識(shí)掌握,AR系統(tǒng)端主要設(shè)計(jì)流程如圖6所示。
圖6 AR系統(tǒng)主要設(shè)計(jì)流程Fig.6 AR system main design flowchart
具體操作是通過交互界面按鈕或手機(jī)觸屏實(shí)現(xiàn)放大、縮小、旋轉(zhuǎn)、分離、復(fù)原等虛擬交互功能,系統(tǒng)一基于二維圖紙掃描的AR操作實(shí)例如圖7所示。
圖7 手機(jī)移動(dòng)端AR系統(tǒng)操作實(shí)例Fig.7 An example of mobile phone AR system
具體實(shí)現(xiàn)例如AR系統(tǒng)模型縮放,主要是通過判斷觸屏上兩個(gè)手指間的距離變化,距離變大則將模型放大,距離變小,則將模型縮小,其主要核心代碼如下:
float length1=Mathf.Sqrt((oP1.x-oP2.x)*(oP1.x-oP2.x)+(oP1.y-oP2.y)*(oP1.y-oP2.y));
float length2=Mathf.Sqrt((nP1.x-nP2.x)*(nP1.x-nP2.x)+(nP1.y-nP2.y)*(nP1.y-nP2.y));//獲取兩觸點(diǎn)之間的距離
float oldScale=transform.localScale.x;
float newScalse=oldScale*1.035f//縮放比例
transform.localScale=new Vector3(newScalse,newScalse,newScalse);//改變模型的大小。
系統(tǒng)開發(fā)完成后,將虛擬現(xiàn)實(shí)液壓拆裝系統(tǒng)發(fā)布到PC端生成.exe格式文件,將增強(qiáng)現(xiàn)實(shí)液壓拆裝系統(tǒng)發(fā)布到安卓端生成.apk文件。用戶只需要點(diǎn)擊軟件,輸入相應(yīng)的登錄注冊(cè)賬號(hào),就進(jìn)入液壓元件選擇界面,選擇對(duì)應(yīng)的液壓元件,就可以利用操作手柄/鼠標(biāo)或手指完成對(duì)應(yīng)元件虛擬拆裝、理論知識(shí)學(xué)習(xí)、工作原理模擬、旋轉(zhuǎn)、縮放等功能的學(xué)習(xí)。圖8為PC端VR系統(tǒng)發(fā)布后的葉片泵功能測(cè)試圖,圖9為手機(jī)端AR系統(tǒng)發(fā)布后的葉片泵的功能測(cè)試圖。經(jīng)過反復(fù)運(yùn)行測(cè)試,系統(tǒng)運(yùn)行流暢,功能滿足了基本的設(shè)計(jì)要求。
(a) 手動(dòng)拆裝
(b) 透視圖8 VR系統(tǒng)功能測(cè)試圖Fig.8 Functional test diagram of VR system
(a) 旋轉(zhuǎn)前
(b) 旋轉(zhuǎn)后圖9 AR系統(tǒng)功能測(cè)試圖Fig.9 Functional test diagram of AR system
針對(duì)液壓傳動(dòng)課程拆裝實(shí)驗(yàn)的高成本、設(shè)備臺(tái)套不足等問題,結(jié)合最新虛擬現(xiàn)實(shí)/增強(qiáng)現(xiàn)實(shí)技術(shù),設(shè)計(jì)了一套VR/AR液壓拆裝實(shí)驗(yàn)教學(xué)系統(tǒng),給出了開發(fā)實(shí)現(xiàn)平臺(tái)和具體實(shí)現(xiàn)開發(fā)過程。該系統(tǒng)不僅可以解決液壓傳動(dòng)課程拆裝實(shí)驗(yàn)的高成本、設(shè)備臺(tái)套不足問題,還可以實(shí)現(xiàn)學(xué)生隨時(shí)隨地與遠(yuǎn)程學(xué)習(xí),促進(jìn)提高學(xué)生學(xué)習(xí)興趣和拓展學(xué)生新型技術(shù)應(yīng)用視野,并為高等學(xué)校創(chuàng)新實(shí)驗(yàn)教學(xué)模式和機(jī)械類其他相應(yīng)類型的虛擬實(shí)驗(yàn)平臺(tái)開發(fā)提供支撐和借鑒參考。