• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      面向拆裝訓(xùn)練的輸油泵機(jī)組虛擬維修系統(tǒng)設(shè)計(jì)

      2019-05-08 12:59:40蔡凱駿1張偉明1趙鴻飛
      計(jì)算機(jī)測量與控制 2019年4期
      關(guān)鍵詞:輸油泵受訓(xùn)者管理器

      蔡凱駿1, 張偉明1, 趙鴻飛, 師 磊

      (1.陸軍勤務(wù)學(xué)院 油料系,重慶 401331;2.中國人民解放軍 31605部隊(duì),南京 211100)

      0 引言

      輸油泵機(jī)組是輸油管線系統(tǒng)的核心設(shè)備,主要包括發(fā)動(dòng)機(jī)、離心泵和增速器等,在石油化工和軍事供油領(lǐng)域具有重要應(yīng)用。正確、熟練的維修活動(dòng)是保持泵機(jī)組較高可用度的關(guān)鍵,其中拆卸與裝配是所有維修活動(dòng)中普遍存在的步驟,因此針對(duì)使用人員的維修拆裝訓(xùn)練尤為重要。傳統(tǒng)維修拆裝訓(xùn)練主要依靠實(shí)裝進(jìn)行,受場地、時(shí)間、費(fèi)用等因素限制,訓(xùn)練效果受到一定影響。隨著虛擬現(xiàn)實(shí)技術(shù)的不斷發(fā)展與成熟,其在維修領(lǐng)域的應(yīng)用研究引起了廣泛關(guān)注[1]。Abate等[2]開發(fā)了面向航天領(lǐng)域的虛擬訓(xùn)練系統(tǒng),Jayaram等[3]研究了人體工效學(xué)虛擬評(píng)估系統(tǒng),楊新紅等[4]分別開發(fā)了車輛虛擬實(shí)驗(yàn)系統(tǒng)。但是,上述系統(tǒng)針對(duì)產(chǎn)品的結(jié)構(gòu)展示與操作,受訓(xùn)者主要采用觀看以及少量操作的方式參與訓(xùn)練。而針對(duì)輸油泵機(jī)組維修拆裝的虛擬訓(xùn)練系統(tǒng)需要受訓(xùn)者利用鼠標(biāo)等設(shè)備進(jìn)行大量操作以達(dá)到較好的訓(xùn)練效果,系統(tǒng)的交互性明顯增強(qiáng)。鄒俞等[5]、崔慶春等[6]分別基于Kinect和OSG開發(fā)了沉浸式的交互式訓(xùn)練系統(tǒng)。但是沉浸式系統(tǒng)的造價(jià)高昂,操作精度受設(shè)備影響。與之相比,桌面式系統(tǒng)成本低、易于開發(fā)且操作方便,適合面向拆裝訓(xùn)練的虛擬維修系統(tǒng)。因此,本文研究了面向輸油泵機(jī)組虛擬拆卸與裝配訓(xùn)練的關(guān)鍵技術(shù)并設(shè)計(jì)了相應(yīng)的桌面式虛擬維修系統(tǒng)。

      1 仿真平臺(tái)對(duì)比

      仿真平臺(tái)是虛擬維修訓(xùn)練系統(tǒng)實(shí)現(xiàn)擬實(shí)視覺效果和人機(jī)交互的基礎(chǔ)。當(dāng)前圖形程序接口OpenGL以及面向Web三維虛擬仿真的Java 3D、VRML等可用于構(gòu)建虛擬維修仿真平臺(tái)[7],但是利用上述編程語言開發(fā)效率較低,難度較大?,F(xiàn)有的成熟商用虛擬現(xiàn)實(shí)軟件由于易學(xué)易用易獲取且性能較好,被廣泛應(yīng)用于虛擬維修訓(xùn)練系統(tǒng)的設(shè)計(jì)與開發(fā)[8-13],總結(jié)各軟件平臺(tái)的功能、特點(diǎn)及其適合應(yīng)用領(lǐng)域如表1所示。

      面向拆卸與裝配的輸油泵機(jī)組虛擬維修訓(xùn)練系統(tǒng)需要較強(qiáng)的交互性和較好的視覺效果。通過對(duì)比可以看出,Unity3D具有視覺效果好,交互式設(shè)計(jì)方便,靈活易操作等突出優(yōu)勢,故選取Unity3D作為系統(tǒng)開發(fā)平臺(tái)。

      表1 不同虛擬維修仿真平臺(tái)對(duì)比

      2 系統(tǒng)需求分析與結(jié)構(gòu)體系設(shè)計(jì)

      2.1 需求分析

      系統(tǒng)主要作用是使輸油泵機(jī)組使用、維修人員掌握設(shè)備維修拆裝的要求與方法,提高維修能力與效率,因此對(duì)系統(tǒng)提出功能和性能兩方面需求。

      功能需求主要包括:

      1)能對(duì)設(shè)備常見保養(yǎng)、故障維修進(jìn)行訓(xùn)練,能通過鍵盤、鼠標(biāo)等實(shí)現(xiàn)交互式拆裝。

      2)采集操作過程數(shù)據(jù)并考評(píng)。性能需求方面,系統(tǒng)能在所有windows系統(tǒng)中使用。為保證適用性,系統(tǒng)在具有中低等配置的計(jì)算機(jī)(處理器Inter Core i5 2410M,圖形處理器 NVIDIA GeForce GT 550M,內(nèi)存2 GB)運(yùn)行時(shí),場景渲染頻率不小于30FPS(Frames Per Second)。

      2.2 多層次模塊化訓(xùn)練結(jié)構(gòu)體系

      本文參考了國內(nèi)外通用虛擬訓(xùn)練(General Virtual Environment, GVE)體系理念[14-15],針對(duì)輸油泵機(jī)組使用過程中的維修情況,提出如圖1所示的多層次模塊化訓(xùn)練結(jié)構(gòu)體系。系統(tǒng)主要包括維修訓(xùn)練,技能考核兩大部分。

      1)維修訓(xùn)練按照從簡到難的順序,包括子裝配體拆裝訓(xùn)練、設(shè)備保養(yǎng)、故障維修、完全拆解與裝配4個(gè)內(nèi)容。受訓(xùn)者通過鼠標(biāo)點(diǎn)擊拖拽與鍵盤操作相結(jié)合完成相應(yīng)維修拆裝任務(wù),交互性較強(qiáng)。

      2)技能考核考察受訓(xùn)者設(shè)備維修技能的掌握程度。獲取、分析維修過程中各步驟完成時(shí)間、使用提示次數(shù)、錯(cuò)誤操作次數(shù)等數(shù)據(jù)并進(jìn)行打分。

      圖1 系統(tǒng)多層次模塊化體系結(jié)構(gòu)圖

      3 交互式拆裝

      系統(tǒng)交互式拆裝設(shè)計(jì)目的是使受訓(xùn)者經(jīng)過自主判斷后,可通過鼠標(biāo)、鍵盤完成零部件的拆裝、工具的拾取等操作,更好地模擬實(shí)際維修過程,主要功能如下:

      1)受訓(xùn)者移動(dòng)鼠標(biāo)光標(biāo)至目標(biāo)零件上的任意位置,按住左鍵并移動(dòng)鼠標(biāo)可實(shí)現(xiàn)拖拽效果。

      2)零件在拖拽過程中始終沿著預(yù)定的拆裝路徑移動(dòng)。

      3)零件移動(dòng)時(shí)限于初始位置和目標(biāo)位置之間。拖拽零件到達(dá)指定位置后,零件不能再拖動(dòng)。

      為實(shí)現(xiàn)上述功能,鼠標(biāo)拖動(dòng)時(shí)零件位置計(jì)算是關(guān)鍵,對(duì)此提出如下算法。

      Step1:根據(jù)零件在世界坐標(biāo)系的坐標(biāo)值PWorld,通過WorldToScreenPoint函數(shù)得到屏幕坐標(biāo)系的坐標(biāo)值PScreen。

      Step2:鼠標(biāo)點(diǎn)擊時(shí)計(jì)算鼠標(biāo)光標(biāo)位置與零件中心位置的偏差向量d。每次鼠標(biāo)點(diǎn)擊時(shí)Unity調(diào)用OnMouseDown函數(shù),在該函數(shù)中將PScreen中Z軸的值PScreen.z賦給MScreen.z,其中MScreen為鼠標(biāo)光標(biāo)位置在屏幕坐標(biāo)系的坐標(biāo)值。通過ScreenToWorldPoint函數(shù)得到光標(biāo)在世界坐標(biāo)系的坐標(biāo)值MWorld。計(jì)算鼠標(biāo)光標(biāo)位置與零件中心位置的偏差向量d=PWorld-MWorld。

      圖2為零件位置計(jì)算示意圖,圖3為算法流程圖。

      圖2 零件位置計(jì)算示意圖

      圖3 算法流程示意圖

      4 事件驅(qū)動(dòng)設(shè)計(jì)

      拆卸與裝配過程中,由于裝配關(guān)系的約束,待拆裝零件滿足一定的拆裝順序。因此對(duì)于某一零件,需根據(jù)其它相關(guān)零件的狀態(tài)以決定其是否可拆裝。Unity提供了Update函數(shù)在系統(tǒng)運(yùn)行的每一幀調(diào)用一次。因此在該函數(shù)中利用條件判斷語句可實(shí)現(xiàn)零件狀態(tài)的實(shí)時(shí)監(jiān)控,是一種較為方便的方法。但是當(dāng)某一維修過程涉及零部件數(shù)量眾多時(shí),利用Update函數(shù)監(jiān)控所有零部件狀態(tài)會(huì)造成大量計(jì)算資源的浪費(fèi),嚴(yán)重時(shí)造成運(yùn)行畫面的卡頓現(xiàn)象。對(duì)此本文研究了一種基于事件驅(qū)動(dòng)的改進(jìn)方案。

      事件驅(qū)動(dòng)的實(shí)現(xiàn)主要依賴以下3個(gè)核心部分:

      1)事件監(jiān)聽器:事件監(jiān)聽器需要被告知事件是否發(fā)生,因此將需要根據(jù)其它零件的拆裝狀態(tài)來決定自己是否可拆裝的零件定義為事件監(jiān)聽器。

      2)消息傳遞器:當(dāng)某一事件發(fā)生時(shí),消息傳遞器發(fā)送相關(guān)消息至該事件的全部監(jiān)聽器。

      3)事件管理器:設(shè)置為單例持久對(duì)象以提供全局訪問行為。事件管理器連接監(jiān)聽器與傳遞器,并接收傳遞器發(fā)送的消息然后以事件的形式發(fā)送給監(jiān)聽器。

      例如某拆卸過程中,零件A和B拆卸后零件C才可拆,實(shí)現(xiàn)這一關(guān)系的事件驅(qū)動(dòng)原理如圖4所示。

      圖4 事件驅(qū)動(dòng)原理

      首先定義了IListener接口,通過繼承接口,其它對(duì)象根據(jù)多態(tài)機(jī)制可調(diào)用接口函數(shù),因此任何類型對(duì)象均可設(shè)置為事件監(jiān)聽器。IListener接口偽代碼如下:

      public enum EVENT_NAME{事件A,事件B,事件C,……}

      public interface IListener

      {

      Event (EVENT_NAME Event_Name, Component Sender, Object Param=null) {}

      }

      使零件C繼承IListener接口,則零件C可設(shè)置為事件監(jiān)聽器。

      事件管理器主要包括添加監(jiān)聽器和消息傳遞器兩個(gè)函數(shù)。其中消息傳遞器的作用是將發(fā)生的事件通知相應(yīng)監(jiān)聽器。事件管理器偽代碼如下:

      事件管理器

      {

      定義Dictionary< EVENT_NAME,List >類型的監(jiān)聽器數(shù)組Listeners,第一個(gè)元素為事件名稱,第二個(gè)元素為List類型的監(jiān)聽器列表;

      添加監(jiān)聽器(EVENT_NAME Event_Name, IListener Listener)

      {

      if(事件Event_Name已存在監(jiān)聽器列表)

      將Listener添加進(jìn)列表;

      else

      {

      新建監(jiān)聽器列表,將Listener添加進(jìn)列表;

      將Event_Name與監(jiān)聽器列表添加進(jìn)監(jiān)聽器數(shù)組Listeners;

      }

      }

      消息傳遞器(EVENT_NAME Event_Name, Component Sender, Object Param=null)

      {

      if(Event_Name事件沒有對(duì)應(yīng)監(jiān)聽器)

      返回;

      遍歷事件Event_Name的所有監(jiān)聽器,調(diào)用監(jiān)聽器的Event函數(shù);

      }

      移除事件(EVENT_Name Event_Name)

      {

      移除Listeners中的Event_Type項(xiàng);

      }

      }

      零件C通過事件管理器的添加監(jiān)聽器方法,針對(duì)零件A完成拆卸和零件B完成拆卸這兩個(gè)事件注冊為監(jiān)聽器。當(dāng)零件A和零件B完成拆卸時(shí),通過消息傳遞器通知零件C,C利用Event函數(shù)使其自身處于可拆卸狀態(tài)。

      相比利用Update函數(shù)系統(tǒng)每一幀對(duì)零件狀態(tài)進(jìn)行判斷,基于事件驅(qū)動(dòng)的方法只需在事件發(fā)生時(shí)將消息通知監(jiān)聽器,很大程度上節(jié)省了計(jì)算資源。

      5 系統(tǒng)實(shí)現(xiàn)

      根據(jù)前述相關(guān)技術(shù),基于Unity3D軟件設(shè)計(jì)并開發(fā)了輸油泵機(jī)組虛擬維修訓(xùn)練系統(tǒng)。維修拆裝訓(xùn)練過程如圖5(a)所示。維修拆裝訓(xùn)練或技能考核科目結(jié)束后存儲(chǔ)受訓(xùn)者各操作步驟的完成時(shí)間、錯(cuò)誤操作次數(shù)、使用提示次數(shù)等數(shù)據(jù)如圖5(b)所示。

      圖5 系統(tǒng)實(shí)現(xiàn)

      利用Profiler工具對(duì)系統(tǒng)性能進(jìn)行測試。當(dāng)系統(tǒng)運(yùn)行時(shí),Profiler工具獲取中央處理器、圖形處理器的負(fù)載、幀率等性能數(shù)據(jù)并提供圖形化顯示。系統(tǒng)硬件平臺(tái)同2.1節(jié),進(jìn)行拆裝訓(xùn)練時(shí)的性能數(shù)據(jù)如圖6所示。圖中橫坐標(biāo)表示幀,縱坐標(biāo)顯示了各幀的幀率、時(shí)間和計(jì)算開銷,其中較大值反映了苛刻的運(yùn)行環(huán)境,此時(shí)幀率較低,計(jì)算開銷較大。受訓(xùn)者開始拆裝訓(xùn)練時(shí)還未將視角移動(dòng)至設(shè)備處,這時(shí)設(shè)備模型未在屏幕顯示,系統(tǒng)幀率保持在60FPS以上,如圖前半段所示。當(dāng)受訓(xùn)者將視角移動(dòng)至設(shè)備處并開始維修操作時(shí),系統(tǒng)計(jì)算開銷增大、幀率降低,如圖后半段所示,但仍保持在30FPS以上,滿足系統(tǒng)性能需求。系統(tǒng)在整個(gè)訓(xùn)練過程中運(yùn)行流暢,維修模擬效果較好,驗(yàn)證了本文方法的有效性。

      圖6 系統(tǒng)運(yùn)行性能

      6 結(jié)束語

      1)本文總結(jié)了現(xiàn)有主流虛擬維修仿真平臺(tái)的特點(diǎn)及適用領(lǐng)域,分析了以Unity3D作為系統(tǒng)開發(fā)平臺(tái)的優(yōu)勢。

      2)依據(jù)系統(tǒng)面向的對(duì)象和目的,分析了系統(tǒng)功能和性能需求。設(shè)計(jì)了系統(tǒng)多層次模塊化體系結(jié)構(gòu),確定了主要包含的訓(xùn)練科目。

      3)提出了零件位置更新算法,實(shí)現(xiàn)了維修訓(xùn)練時(shí)鼠標(biāo)拖動(dòng)零件的交互式拆裝功能。針對(duì)維修過程中零件拆裝的先后順序問題,研究了基于事件驅(qū)動(dòng)編程的改進(jìn)方法,節(jié)省了計(jì)算資源。

      4)經(jīng)實(shí)際運(yùn)行測試,系統(tǒng)滿足各項(xiàng)功能和性能需求,維修模擬效果較好,驗(yàn)證了本文方法的有效性。系統(tǒng)不僅滿足輸油泵機(jī)組維修訓(xùn)練的需求,還可為其它產(chǎn)品的維修拆裝訓(xùn)練系統(tǒng)設(shè)計(jì)提供參考。

      猜你喜歡
      輸油泵受訓(xùn)者管理器
      淺析輸油泵安裝不當(dāng)引起的故障及其維修保養(yǎng)
      一種兩級(jí)雙吸管道輸油泵
      體育訓(xùn)練階段運(yùn)動(dòng)損傷的預(yù)防路徑
      網(wǎng)球訓(xùn)練中多球訓(xùn)練法的實(shí)施探索①
      應(yīng)急狀態(tài)啟動(dòng)磁盤管理器
      體育運(yùn)動(dòng)訓(xùn)練中的運(yùn)動(dòng)損傷及預(yù)防措施
      灌籃(2019年16期)2019-11-25 15:59:23
      原油管道輸送中輸油泵工作機(jī)理及維修保養(yǎng)
      淺議軍事技能教學(xué)中的檢查與糾正
      山西青年(2019年7期)2019-01-15 06:22:50
      Windows文件緩沖處理技術(shù)概述
      輸油泵振動(dòng)超標(biāo)預(yù)防
      化工管理(2017年20期)2017-03-03 18:55:59
      光泽县| 商城县| 洛隆县| 和硕县| 平潭县| 双峰县| 望城县| 黄石市| 治县。| 沅陵县| 奉节县| 阜新市| 双牌县| 喀喇| 黄石市| 伽师县| 松江区| 彭泽县| 河北区| 龙陵县| 安新县| 白银市| 南安市| 伊宁县| 承德县| 开封市| 界首市| 黔南| 唐山市| 定结县| 昌黎县| 浦北县| 鄂托克旗| 来凤县| 繁峙县| 鄱阳县| 南丹县| 连南| 贵南县| 潼关县| 道孚县|