石 洋 高志廣 郭 爽
(三一重型裝備有限公司,遼寧 沈陽(yáng) 110027)
虛擬現(xiàn)實(shí)技術(shù)是物聯(lián)網(wǎng)的關(guān)鍵技術(shù)之一,將虛擬現(xiàn)實(shí)技術(shù)引入采煤機(jī)培訓(xùn)系統(tǒng),可以直觀地展示產(chǎn)品的參數(shù)規(guī)格、功能特性等信息。同時(shí),采煤機(jī)長(zhǎng)期處于地下惡劣的工況環(huán)境中,一旦發(fā)生停機(jī)故障就會(huì)嚴(yán)重?fù)p害企業(yè)利益。因此,在采煤機(jī)無(wú)故障運(yùn)行時(shí),積極展開(kāi)有針對(duì)性地?cái)?shù)字化虛擬培訓(xùn)尤為重要。
運(yùn)用Unity 3D技術(shù)對(duì)采煤機(jī)虛擬培訓(xùn)系統(tǒng)進(jìn)行開(kāi)發(fā),通過(guò)設(shè)置密碼管理、設(shè)備基本信息、結(jié)構(gòu)展示、工作原理、維修保養(yǎng)、平臺(tái)拓展等模塊,可以為使用者搭建一個(gè)實(shí)時(shí)交互的虛擬環(huán)境,模擬采煤機(jī)在運(yùn)行過(guò)程中的狀態(tài),從而完成全面了解采煤機(jī)以及對(duì)企業(yè)員工進(jìn)行崗前培訓(xùn)的工作,使員工快速掌握采煤機(jī)的相關(guān)知識(shí)。該文介紹了基于Unity 3D的采煤機(jī)虛擬培訓(xùn)系統(tǒng)的設(shè)計(jì)流程、結(jié)構(gòu)和功能,分析了該系統(tǒng)的優(yōu)點(diǎn),對(duì)開(kāi)展有針對(duì)性的虛擬培訓(xùn)具有重要意義。
采煤機(jī)虛擬培訓(xùn)系統(tǒng)以Unity 3D引擎作為系統(tǒng)開(kāi)發(fā)平臺(tái),建模工具采用Creo6.0,在Maya中進(jìn)行分級(jí)重組之后,導(dǎo)出FBX格式,然后導(dǎo)入U(xiǎn)nity 3D中,完成培訓(xùn)系統(tǒng)場(chǎng)景設(shè)計(jì)。Unity 3D是由Unity Technologies 開(kāi)發(fā)的跨平臺(tái)引擎,該軟件具有可視化編程、支持Open GL、支持Direct11以及集成了Phys X3.3物理系統(tǒng)等特點(diǎn),因此在虛擬現(xiàn)實(shí)仿真領(lǐng)域具有廣泛的應(yīng)用實(shí)例。
采煤機(jī)虛擬培訓(xùn)系統(tǒng)采用三層軟件架構(gòu)體系,由顯示模塊、操作模塊以及功能模塊組成,系統(tǒng)架構(gòu)如圖1所示:1)顯示模塊。搭建采煤機(jī)作業(yè)環(huán)境,在Unity 3D平臺(tái)中對(duì)采煤機(jī)的工作部件進(jìn)行展示和管理。2) 操作模塊。操作模塊實(shí)現(xiàn)該培訓(xùn)系統(tǒng)的密碼設(shè)置、GUI界面顯示以及人機(jī)交互等功能。3) 功能模塊。功能模塊通過(guò)編寫(xiě)C++腳本來(lái)展示采煤機(jī)的工作原理以及維修保養(yǎng)要點(diǎn),還可以對(duì)采煤機(jī)的工作過(guò)程、液壓原理以及重要部件的拆卸與安裝進(jìn)行動(dòng)畫(huà)仿真。
圖1 系統(tǒng)架構(gòu)圖
采煤機(jī)虛擬培訓(xùn)系統(tǒng)的硬件環(huán)境為云桌面,處理器為Intel(R) Xeon Gold 6254 CPU @ 3.10GHz,RAM 32G。可以通過(guò)鍵盤(pán)、手柄等硬件對(duì)采煤機(jī)虛擬培訓(xùn)系統(tǒng)的功能模塊進(jìn)行操控。該系統(tǒng)的開(kāi)發(fā)流程圖如圖2所示。
圖2 系統(tǒng)開(kāi)發(fā)流程圖
為了實(shí)現(xiàn)該系統(tǒng)維修保養(yǎng)的逼真程度和重要部件拆卸與安裝的功能,需要搭建采煤機(jī)的三維模型和虛擬作業(yè)環(huán)境。
為了重現(xiàn)采煤機(jī)的作業(yè)現(xiàn)場(chǎng),根據(jù)采煤機(jī)外形尺寸并通過(guò)Creo6.0軟件搭建采煤機(jī)的模型,考慮到后續(xù)要用Maya軟件及Unity 3D開(kāi)發(fā)平臺(tái)對(duì)該模型進(jìn)行操作,為提高M(jìn)aya軟件及Unity 3D開(kāi)發(fā)平臺(tái)的工作效率,因此需要簡(jiǎn)化建模,減少不必要的零件組裝(例如銘牌等部件)。同時(shí),將機(jī)械支撐部分建模成整體,便于后續(xù)處理。經(jīng)過(guò)簡(jiǎn)化建模后的采煤機(jī)包括左截割部組件、右截割部組件、行走部、過(guò)橋組件、機(jī)身組件、長(zhǎng)滑靴組件、短滑靴組件、銷(xiāo)軸組件、拖纜組件、水系統(tǒng)和液壓系統(tǒng)等部分。其中,電氣系統(tǒng)未建模,而是用EPLAN導(dǎo)出電氣系統(tǒng)原理圖,以二維圖的形式展示后續(xù)Unity 3D開(kāi)發(fā)平臺(tái)中的工作原理界面。采煤機(jī)建模完成后需要搭建作業(yè)場(chǎng)景,如圖3所示。將采煤機(jī)三維模型導(dǎo)入Maya中進(jìn)行渲染、分級(jí)重組以及格式轉(zhuǎn)換,將導(dǎo)出后的FBX格式的文件再導(dǎo)入U(xiǎn)nity 3D中,在Unity 3D中進(jìn)行場(chǎng)景搭建,搭建完的場(chǎng)景基本可以還原采煤機(jī)的真實(shí)工作環(huán)境。
圖3 場(chǎng)景模型
Unity 3D支持多種編譯腳本,該系統(tǒng)基于C#語(yǔ)言編寫(xiě)系統(tǒng)腳本,IDE采用Microsoft Visual Studio 2019。該系統(tǒng)設(shè)置了用戶登錄密碼驗(yàn)證、重要部件結(jié)構(gòu)展示、工作原理仿真、重要部件的拆卸與安裝虛擬動(dòng)畫(huà)展示以及維修保養(yǎng)要點(diǎn)知識(shí)等主要界面。這些功能模塊均采用人機(jī)交互模式,可人工操縱鼠標(biāo)對(duì)某一項(xiàng)功能進(jìn)行逐步操作,從而提升使用者的直觀感受。
使用鼠標(biāo)控制采煤機(jī)模型,可以對(duì)采煤機(jī)模型進(jìn)行移動(dòng)、旋轉(zhuǎn)、縮放和多角度觀察,還可以對(duì)采煤機(jī)的重要部件的結(jié)構(gòu)、工作原理、重要部件拆卸與安裝以及維修保養(yǎng)方法等內(nèi)容進(jìn)行展示、操作,系統(tǒng)地學(xué)習(xí)采煤機(jī)的結(jié)構(gòu)與原理。
用鼠標(biāo)左鍵按住模型對(duì)其進(jìn)行拖動(dòng)控制、鼠標(biāo)滑輪縮放模型、鼠標(biāo)中鍵按住旋轉(zhuǎn)模型的部分腳本如下。
if (MoveCam.instance.isRight) {
//獲取目標(biāo)點(diǎn)坐標(biāo)。棄用
//x += MoveCam.instance.getTargetPos().x * xSpeed * 0.002f;
//y -=MoveCam.instance.getTargetPos().y * ySpeed * 0.002f;
x += getTargetPos().x * xSpeed * 0.002f;
y -= getTargetPos().y * ySpeed * 0.002f;
} else {
x += Input.GetAxis("Mouse X") * xSpeed * 0.02f;
y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;
}
x = ClampAngle(x, xMinLimit, xMaxLimit);
y = ClampAngle(y, yMinLimit, yMaxLimit);
//print(Input.GetAxis("Mouse X"));
//print( Input.GetAxis("Mouse Y"));
//print(x);
//print(y);
}
//if( Input.GetMouseButton(1))
//{
//string str = EventSystem.currentToString().Substring(EventSystem.current.ToString().IndexOf(":"), 32);
//string str2 = str.Substring(str.IndexOf("(") + 1, str.IndexOf(")")- str.IndexOf("(") - 1);
// float xx = float.Parse(str2.Split(',')[0]);
// float yy = float.Parse(str2.Split(',')[1]);
// //distanceY += Input.GetAxis("Mouse Y") * ySpeed *0.002f;
// distanceY += yy * ySpeed * 0.0002f;
// //distanceY = Mathf.Clamp(distanceY, minDistanceY,maxDistanceY);
// //print(Input.GetAxis("Mouse X"));
// //print( Input.GetAxis("Mouse Y"));
// //print(x);
// //print(y);
// }
/*if((Input.mousePosition.x > 0)&&
(Input.mousePosition.x < Screen.width * leftCam.rect.width)&&
(Input.mousePosition.y > Screen.height * leftCam.rect.y)&&
(Screen.height > Input.mousePosition.y))
{*/
//if((Input.mousePosition.x > 0)&&
// (Input.mousePosition.x < Screen.width * leftCam.rect.width)&&
// (Input.mousePosition.y > Screen.height * leftCam.rect.y)&&
// (Screen.height > Input.mousePosition.y))
//{
if (!IsRaycastUI02()) {
distance += Input.GetAxis("Mouse ScrollWheel") * mSpeed;
distance = Mathf.Clamp(distance, minDistance, maxDistance);
}
//}
Quaternion rotation = Quaternion.Euler(y, x, 0.0f);
Vector3 disVector = new Vector3( 0.0f, 0.0f, -distance );
Vector3 position = rotation * disVector+target.position;
//adjust the camera
if( needDamping )
{
transform.rotation = Quaternion.Lerp(transform.rotation,rotation, Time.deltaTime*damping);
transform.position = Vector3.Lerp(transform.position, position,Time.deltaTime*damping);
}
else
{
transform.rotation = rotation;
transform.position = position;
}
功能模塊主要包括工作原理仿真和維修保養(yǎng)要點(diǎn)2個(gè)部分。其中,工作原理仿真模塊重點(diǎn)展現(xiàn)采煤機(jī)重要部件的結(jié)構(gòu)、液壓系統(tǒng)、電氣系統(tǒng)和水系統(tǒng)的工作原理。液壓系統(tǒng)、水系統(tǒng)采用真實(shí)的管路布置圖,可直觀展現(xiàn)系統(tǒng)工作時(shí)的液體流動(dòng)線路以及驅(qū)動(dòng)零部件的原理,電氣系統(tǒng)則無(wú)具體布置圖,僅通過(guò)二維原理圖展示電氣原理。維修保養(yǎng)要點(diǎn)模塊展示重要部件結(jié)構(gòu)、拆卸與安裝動(dòng)畫(huà)過(guò)程以及維修保養(yǎng)等相關(guān)信息。結(jié)構(gòu)展示和拆卸與安裝動(dòng)畫(huà)均可逐級(jí)向下拆解,直至不可分解的焊接件,可以直觀地展現(xiàn)采煤機(jī)的結(jié)構(gòu),并還原真實(shí)的拆卸與安裝過(guò)程。
將經(jīng)Creo6.0建模后的整機(jī)模型導(dǎo)入Maya軟件后,對(duì)重要部件進(jìn)行分類(lèi)分組管理,不僅避免了過(guò)多零件給Unity 3D的層級(jí)視圖管理帶來(lái)的困難,而且還加快了查找零件的速度,提升了開(kāi)發(fā)效率。將分類(lèi)分組后的模型導(dǎo)入采煤機(jī)虛擬培訓(xùn)系統(tǒng),展示為左截割部、右截割部、左滾筒、右滾筒、長(zhǎng)滑靴、短滑靴、行走部、液壓系統(tǒng)、水系統(tǒng)以及電氣系統(tǒng)等部分。截割部等重要部件可以繼續(xù)向下一組成部分逐級(jí)分解,直至分解為組成部分。每個(gè)重要部件均配有原理展示動(dòng)畫(huà)和功能說(shuō)明。左截割部的齒輪動(dòng)力傳動(dòng)如圖4所示(動(dòng)力傳輸方向?yàn)殡姍C(jī)——一軸組件——二軸組件——三軸組件——四軸組件——五軸組件——行星組件,動(dòng)力傳輸部件用粗線顯示)。
圖4 齒輪動(dòng)力傳動(dòng)圖
水系統(tǒng)采用虛擬液流的流動(dòng)展示水系統(tǒng)的工作原理。外噴霧水路的液流流動(dòng)圖如圖5所示(外噴霧水路流向?yàn)檫M(jìn)水口——冷卻器——?dú)んw內(nèi)部水道——?dú)んw底部水道——噴嘴)。
圖5 外噴霧水路
2.3.2 維修保養(yǎng)模塊
維修保養(yǎng)模塊重點(diǎn)展現(xiàn)重要部件的拆卸與安裝以及保養(yǎng)要點(diǎn)。在模擬拆卸與安裝的過(guò)程中,根據(jù)采煤機(jī)設(shè)計(jì)的特點(diǎn),用動(dòng)畫(huà)形式展示拆卸與安裝過(guò)程,可以通過(guò)人機(jī)交互的操作來(lái)控制。Unity 3D的Tween功能包括多種動(dòng)畫(huà)類(lèi)型。在腳本中設(shè)置零部件運(yùn)動(dòng)過(guò)程中的開(kāi)始位置坐標(biāo)和結(jié)束位置坐標(biāo),可以展現(xiàn)該零件的運(yùn)動(dòng)軌跡。通過(guò)編寫(xiě)腳本也可使零件的運(yùn)動(dòng)軌跡消失,零部件的拆卸與安裝過(guò)程就是通過(guò)該功能實(shí)現(xiàn)的,在編寫(xiě)腳本的過(guò)程中,需要不斷調(diào)整采煤機(jī)模型的內(nèi)部參數(shù),使模擬效果更加絲滑、真實(shí)。
針對(duì)行走部的維修保養(yǎng),導(dǎo)向滑靴和行走輪的拆卸過(guò)程如下:拆下行走箱蓋板螺栓,并拆下行走箱蓋板露出軸頭蓋;采用頂絲將軸頭蓋頂出后拆除行走部螺栓和墊圈;利用殼體螺紋和螺釘拆除行走殼體組焊件后取出油封,最后拆除導(dǎo)向滑靴組焊件和銷(xiāo)軌輪。具體拆卸過(guò)程如圖6所示。
圖6 導(dǎo)向滑靴和行走輪拆卸過(guò)程圖
采用鼠標(biāo)和鍵盤(pán)對(duì)采煤機(jī)虛擬培訓(xùn)系統(tǒng)進(jìn)行操作控制。使用鍵盤(pán)輸入密碼登錄該系統(tǒng)的操作界面。使用鼠標(biāo)選擇相應(yīng)功能按鈕觸發(fā)對(duì)應(yīng)功能。
為了驗(yàn)證該系統(tǒng)是否能滿足采煤機(jī)服務(wù)人員的培訓(xùn)要求,邀請(qǐng)100名服務(wù)人員對(duì)該系統(tǒng)進(jìn)行測(cè)試。通過(guò)與100名服務(wù)人員的共同測(cè)試與交流表明,該系統(tǒng)功能模塊完整,系統(tǒng)響應(yīng)迅速,動(dòng)畫(huà)過(guò)渡絲滑,人機(jī)交互性較強(qiáng)。系統(tǒng)測(cè)試結(jié)果見(jiàn)表1。
表1 系統(tǒng)測(cè)試結(jié)果
該文設(shè)計(jì)了一種基于Unity 3D的采煤機(jī)虛擬培訓(xùn)系統(tǒng),以三維模型為載體,采用交互式動(dòng)畫(huà)展示采煤機(jī)的重要部件架構(gòu)。該系統(tǒng)搭載采煤機(jī)真實(shí)控制面板,用實(shí)景化的方式展示了拆卸與安裝過(guò)程以及維修保養(yǎng)要點(diǎn)。同時(shí),該系統(tǒng)以三維布管模型為載體,還原真實(shí)系統(tǒng)的運(yùn)行狀態(tài),展示采煤機(jī)整機(jī)運(yùn)動(dòng)及系統(tǒng)的工作原理。服務(wù)人員通過(guò)學(xué)習(xí)該系統(tǒng)可以完整、系統(tǒng)地了解采煤機(jī),從而達(dá)到提升服務(wù)人員故障維修水平的目的。