朱泓光,宋永強(qiáng),劉議聰
(綿陽市維博電子有限責(zé)任公司,綿陽 621000)
基于Unity3D的裝卸料機(jī)運(yùn)動(dòng)控制仿真
朱泓光,宋永強(qiáng),劉議聰
(綿陽市維博電子有限責(zé)任公司,綿陽 621000)
面對(duì)日益增長(zhǎng)的核電人才需求,以及普通大眾對(duì)核電發(fā)展的反感,本文采用當(dāng)下很成熟流行的游戲開發(fā)引擎Unity3D,以某核電站裝卸料機(jī)為仿真原型,對(duì)其運(yùn)動(dòng)控制程序進(jìn)行了分析歸納,并繪制了主要運(yùn)動(dòng)機(jī)構(gòu)的控制流程圖,同時(shí)選擇了橋架、小車、提升等機(jī)構(gòu),利用3DMAX創(chuàng)建三維模型,利用Unity3D強(qiáng)大的物理引擎開發(fā)了裝卸料機(jī)仿真互動(dòng)游戲。采用互動(dòng)游戲的方式,有利于核電培訓(xùn)方式的多元化,有助于普通大眾了解核電裝卸料機(jī)的運(yùn)行。
仿真;虛擬現(xiàn)實(shí);Unity3D;裝卸料機(jī)
核電廠內(nèi)核燃料組件裝卸、轉(zhuǎn)運(yùn)和貯存系統(tǒng)屬于核輔助系統(tǒng),包括新燃料組件入堆前的接收、檢查、貯存,拆卸和裝封反應(yīng)堆,堆芯換料以及乏燃料組件的運(yùn)輸、貯存和發(fā)送等一系列工藝操作。裝卸料機(jī)作島內(nèi)換料的關(guān)鍵設(shè)備,主要負(fù)責(zé)堆芯燃料組件的裝換作業(yè),是核電廠換料大修關(guān)鍵路徑上的一個(gè)重要項(xiàng)目[1]。雖然裝卸料機(jī)沒有直接參與參與核電廠的日常運(yùn)行與安全活動(dòng),但間接地影響核電廠的安全可靠性,是核電廠的重要設(shè)備之一[2]。根據(jù)世界核能協(xié)會(huì)的數(shù)據(jù),截止2015年底,全球在運(yùn)營(yíng)核電數(shù)439座,在建及擬建總量184座。即便是每座僅有一個(gè)反應(yīng)堆,那也有439個(gè)裝卸料機(jī),這就需要更多的核電專業(yè)人才。在國(guó)內(nèi),不少大眾一說核電就覺得有污染有輻射,更有甚者,到核電廠鬧事以阻礙核電正常運(yùn)行。所以需要一個(gè)簡(jiǎn)單而接地氣的方式,讓普通大眾去了解核電。
在核電站現(xiàn)場(chǎng),采用了實(shí)際控制室環(huán)境高度逼真的培訓(xùn)模擬機(jī),這樣不僅可用來培訓(xùn),亦可為后期優(yōu)化做邏輯驗(yàn)證[3]。但是價(jià)格不菲,不適合一般情況下的功能演示與高校培訓(xùn)。
Unity 3D是由 Unity Technologies 開發(fā)的讓玩家輕松創(chuàng)建諸如H維視頻游戲、建筑可視化、實(shí)時(shí)H維動(dòng)畫、腳本后臺(tái)編輯綁定等類型互動(dòng)內(nèi)容的多平臺(tái)綜合型游戲開發(fā)工具,是一個(gè)全面整合的專業(yè)游戲引擎。Unity 3D是一種涉及到多種不同領(lǐng)域的跨平臺(tái)的三維虛擬現(xiàn)實(shí)游戲平臺(tái),是一款易于使用的產(chǎn)品,用戶界面簡(jiǎn)單,編輯器上手容易,支持多腳本的語言,并具有強(qiáng)大的物理引擎。Unity 3D又可方便的在Windows 、IOS、 安卓、WEB、等平臺(tái)發(fā)布,跨平臺(tái)優(yōu)勢(shì)明顯。另外,Unity3D本身的使用無需昂貴的授權(quán)費(fèi)。鑒于Unity3D的以上優(yōu)勢(shì),本文使用它作為開發(fā)工具,實(shí)現(xiàn)裝卸料機(jī)的運(yùn)動(dòng)仿真,可方便的用于功能展示。同時(shí)利用多平臺(tái)優(yōu)勢(shì)、以游戲互動(dòng)的方式,讓大眾更加直觀的了解裝卸料設(shè)備的工作方式、同時(shí)也可用于高校的培訓(xùn)。由于Unity3D強(qiáng)大可擴(kuò)展性能,更可添加其他一些列外圍設(shè)備,比如kinect 或者 Oculus Rift虛擬頭盔,可大大增加互動(dòng)的代入感[4]。
利用國(guó)外某核電站的裝卸料機(jī)作為分析對(duì)象,梳理了其控制程序的相應(yīng)模塊(圖1),并繪制了執(zhí)行機(jī)構(gòu)的控制流程圖(圖2、圖3、圖4),并利用3DMAX建立了3D模型。同時(shí),根據(jù)裝卸料機(jī)的運(yùn)動(dòng)控制邏輯,選擇部分控制邏輯作為仿真重點(diǎn)(如表1所示),采用C#做為腳本語言,編寫了相應(yīng)的控制邏輯模塊。從而實(shí)現(xiàn)了對(duì)裝卸料機(jī)運(yùn)動(dòng)控制的仿真。便于運(yùn)動(dòng)畫面顯示,當(dāng)機(jī)構(gòu)運(yùn)動(dòng)時(shí),UI界面將跟隨。
由于Unity 3D本身的建模能力不足,我們采用第三方工具3d max建模, 然后處理好材質(zhì)、貼圖,并保存為FBX格式文件。將FBX模型文件導(dǎo)入U(xiǎn)nity3D中,進(jìn)行仿真交互的開發(fā),具體包括UI交互界面、碰撞檢測(cè)腳本、模型運(yùn)動(dòng)控制腳本、攝像機(jī)視野腳本等等。腳本調(diào)試好后,即可打包發(fā)布為WINDOWS平臺(tái)的可執(zhí)行文件。

圖1 PLC程序模塊

圖2 橋架工作流程圖

圖3 提升工作流程圖

圖4 抓具工作流程圖
2.2.1 模型導(dǎo)入U(xiǎn)nity3D
在3DMAX中搭建好模型后,還需要設(shè)置材質(zhì)的漫射、反射、光澤度、折射、BRDF等參數(shù),注意只有standard(標(biāo)準(zhǔn)材質(zhì))和Multi/Sub-Objiect(多維/子物體材質(zhì))被Unity3D軟件所支持。同時(shí)旋轉(zhuǎn)調(diào)整好軸心,并將模型居中。然后,將模型導(dǎo)出為FBX格式,導(dǎo)出時(shí)需要注意勾選嵌入的媒體,如果不勾選,在Unity3D中貼圖將無法導(dǎo)入。單位最好設(shè)置為毫米,這樣在Unity3D中1個(gè)單位就是1米,默認(rèn)的inch會(huì)使導(dǎo)出不成比例。并將FBX文件和貼圖、材質(zhì)文件一起移至Unity3D項(xiàng)目的Assets文件夾中。模型導(dǎo)入U(xiǎn)nity3D后,會(huì)發(fā)現(xiàn)材質(zhì)沒有了,不過Unity3D已經(jīng)將導(dǎo)入的材質(zhì)生成材質(zhì)球,我們需要利用material類從新設(shè)置材質(zhì),另外還可以利用它來設(shè)置自定義shader著色器,紋理貼圖,顏色,材質(zhì)通道等信息。

表1 仿真運(yùn)動(dòng)控制腳本模塊

圖5 導(dǎo)入U(xiǎn)nity3D的3D模型
2.2.2 碰撞檢測(cè)
裝卸料機(jī)有很多限位開關(guān)。總體分為兩種功能,一是觸發(fā)后減速,二是觸發(fā)后停止。在Unity 3D中常見的碰撞檢測(cè)SphereCollider,WheelCollider,BoxCollider和Mesh-Collider等,我們使用BoxCollider即可。另外在在仿真中,兩個(gè)GameObject發(fā)生碰撞,要想檢測(cè)到觸發(fā)信息,最少要有一個(gè)剛體碰撞器并且勾選了IsTrigger復(fù)選框,另一個(gè)最少要有一個(gè)碰撞器組件,此時(shí)檢測(cè)碰撞的腳本必須附加在那個(gè)帶有剛體的觸發(fā)器上。例如我們將大車對(duì)應(yīng)位置設(shè)置好4個(gè) 小盒子,以模擬減速限位開關(guān)和停止限位開關(guān)。將小車設(shè)置為剛體,并勾選IsTrigger。在腳本中,利用MonoBehaviour.OnTriggerEnter() 和 MonoBehaviour.OnCollisionEnter()等接口函數(shù)實(shí)現(xiàn)觸發(fā)信息和碰撞信息的檢測(cè)。
2.2.3 運(yùn)動(dòng)控制
Unity3D有多種實(shí)現(xiàn)物體運(yùn)動(dòng)的方式,本文直接采用了transform.Translate,該方法可以將物體從當(dāng)前位置,移動(dòng)到指定位置,并且可以選擇參照的坐標(biāo)系。當(dāng)需要進(jìn)行坐標(biāo)系轉(zhuǎn)換時(shí),可以考慮使用該方法以省去轉(zhuǎn)換坐標(biāo)系的步驟。首先通過邏輯流程圖判斷是運(yùn)動(dòng)條件是否滿足,然后利用transform.Translate實(shí)現(xiàn)運(yùn)動(dòng)。其中大車的最大速度為0.2m/s大車運(yùn)動(dòng)部分代碼如下:

2.2.4 交互界面
UI界面的制作設(shè)計(jì)采用NGUI 插件進(jìn)行開發(fā),NGUI 提供強(qiáng)大的UI 系統(tǒng)和事件通知框架,能夠方便地實(shí)現(xiàn)2D、3D 界面開發(fā)。默認(rèn)情況下W、S、A、D 控制大小車、I,k利用前、后方向鍵控制提升機(jī)構(gòu)。通過腳本自定義按鍵功能,按鍵的消息響應(yīng)在MonoBehavior 的派生類的Update( )函數(shù)中實(shí)現(xiàn)。UI界面跟隨機(jī)構(gòu)運(yùn)動(dòng)的實(shí)現(xiàn)方式是首先獲得機(jī)構(gòu)在屏幕上的坐標(biāo),然后根據(jù)位置做對(duì)應(yīng)移動(dòng)。利用Camera. WorldToScreenPoint和Camera. ScreenToWorldPoint別將世界坐標(biāo)和屏幕坐標(biāo)相互轉(zhuǎn)換,部分代碼如下:


文章分析了實(shí)際項(xiàng)目中的裝卸料機(jī)控制程序框架,并梳理了執(zhí)行機(jī)構(gòu)運(yùn)動(dòng)流程圖。通過3DMAX建立了3D模型并利用Unity3D完成了裝卸料機(jī)大車、小車、提升等機(jī)構(gòu)的運(yùn)動(dòng)仿真,結(jié)果表明,采用游戲互動(dòng)的方式有利于高校培訓(xùn)及核電科普在大眾中傳播。

圖6 仿真系統(tǒng)的開始界面
[1] 郭科科.AP1000裝卸料設(shè)備的特點(diǎn)分析[A].中國(guó)核學(xué)會(huì).中國(guó)核科學(xué)技術(shù)進(jìn)展報(bào)告(第二卷)——中國(guó)核學(xué)會(huì)2011年學(xué)術(shù)年會(huì)論文集第2冊(cè)(鈾礦冶分卷、核能動(dòng)力分卷(上))[C].中國(guó)核學(xué)會(huì),2011:4.
[2] 付月明.三代壓水堆核電廠PMC設(shè)備的特色與設(shè)計(jì)改進(jìn)分析[J].機(jī)電信息,2013,(33):124-125.
[3] 任永忠,任湘郴.核電廠培訓(xùn)模擬機(jī)設(shè)計(jì)和開發(fā)[J].系統(tǒng)仿真技術(shù),2009,(02):125-129.
[4] 王守尊,陳虎,郭聰.基于Unity 3D的艦載機(jī)虛擬訓(xùn)練系統(tǒng)設(shè)計(jì)[J].海軍工程大學(xué)學(xué)報(bào),2016,(04):92-96.
Manipulator crane simulation based on Unity3D
ZHU Hong-guang, SONG Yong-qiang, LIU Yi-cong
TP24
:A
:1009-0134(2017)08-0116-04
2017-06-27
朱泓光(19 -),