常高祥, 徐曉剛, 王建國
(1. 海軍大連艦艇學院裝備系統與自動化系,遼寧 大連 116018 ;2. 浙江大學CAD&CG國家重點實驗室,浙江 杭州 310058)
虛擬維修訓練系統中數據庫的應用
常高祥1,2, 徐曉剛1,2, 王建國1,2
(1. 海軍大連艦艇學院裝備系統與自動化系,遼寧 大連 116018 ;2. 浙江大學CAD&CG國家重點實驗室,浙江 杭州 310058)
數據庫技術在虛擬維修訓練系統中起著重要的作用。文章以MySQL數據庫為例簡述了數據庫特點,分析了應用數據庫的虛擬維修訓練系統的優勢,介紹了虛擬維修訓練系統中數據庫設計的基本方法,結合Torque Game Engine三維引擎開發了具有較好可移植性的虛擬維修訓練系統。實驗結果表明,將數據庫技術應用到虛擬維修訓練系統,可以有效提高系統開發的效率。
計算機應用;數據庫設計;虛擬維修;可移植性
虛擬維修(Virtual Maintenance)是以計算機技術與虛擬現實技術為依托,在由計算機生成的包含了產品數字樣機與維修人員 3D(三維)人體模型的虛擬場景中,通過驅動人體模型(包括采用人在回路的方式)來完成整個維修過程仿真的綜合性應用技術[1]。 國內外許多研究機構對維修訓練系統進行了大量研究,如日本京都大學新加坡國立大學以及國內的石家莊軍械工程學院[2]等。將虛擬維修技術用于維修訓練,有助于提前訓練的開始時間點,甚至在沒有實物對象時就可以開展部分的訓練工作提高訓練工作的靈活性,可以針對訓練中的關鍵點與難點合理方便地安排訓練內容,突破了以往訓練工作中對地點、時機等條件的限制。
在虛擬維修訓練系統中,數據的管理及數據與系統的通信問題,一直是開發人員要解決的難點和重點。在虛擬維修訓練系統中主要通過數據庫技術以及讀取文本文件的方式來管理數據,不同方法的應用環境不同。因此,要合理選用數據管理方式才能達到最優的效果。SQL數據庫技術是專業的數據管理技術,數據庫的設計、優化、管理相對較為麻煩,但在數據量較多且數據類型復雜時無疑是最好的工具;用文本文件來管理數據是非常局限的一種方法,因為它管理的數據類型較為單一、數據量較小。在虛擬維修訓練系統中,要用到的數據量很大,包括模型、圖片、維修序列、用戶信息、模擬故障的數據等,數據類型也是相當復雜,所以要選用數據庫技術來管理數據。
文章將MySQL數據庫應用到虛擬維修訓練系統的開發中,并提出了一套數據庫設計和優化的方案,有效解決了大量數據管理和傳輸的難題,實現了具有較好可移植性的虛擬維修訓練系統,大大加快了不同裝備的虛擬維修訓練系統的開發進程。
虛擬維修訓練是利用虛擬現實技術,在計算機上建立起虛擬裝備和相應的交互方式,從而實現裝備的維修訓練過程。虛擬維修訓練系統必須要體現出真實訓練的重點,這些重點主要通過下面的特性來實現:維修序列的正確性、交互操作的方便性、故障模擬的合理性、零件模型的逼真性、維修訓練的可評估性等等。這些重點的實現過程中會有大量數據的傳輸和管理問題,這些問題的解決需要數據庫的參與。
系統的可移植性即通用性,指同一套虛擬維修訓練系統可以對不同的裝備進行虛擬維修操作,而不對系統內部進行修改,要求系統與不同的虛擬裝備之間必須有一個接口,存儲裝備的各項數據。開發一套虛擬維修訓練系統,要花費大量的時間和人力資源。大部分的維修訓練系統只是針對某一型裝備進行開發的,如果開發的系統具有較好的通用性,其應用價值將會大大提高。裝備的改變不能影響到系統的應用,如果系統只與數據庫連接,而數據庫與模型、維修序列、評估標準等外部因素連接,就可以解決通用性的問題。
系統開發過程中有較多重復性工作,比如定義場景中的維修對象,它由許多零件構成,要將這些零件分類,同類的零件可能會有很多。如果在開發過程中逐個實例化維修對象,會有很大的工作量。將零件的屬性寫入到數據庫的一個表中,用 SQL語句將要用到的字段調出來,在系統的底層代碼中用循環語句實例化同類的零件。用這樣的方法將會大大節省開發時間。數據庫給系統的開發提供了很多的便利性,系統開發人員可以靈活運用數據庫,使開發過程簡單化。
系統開發的整體過程如圖1所示,開發者根據裝備的特點開發出適合該裝備的數據庫,并將不同虛擬裝備的各種信息寫入數據庫中;在開發平臺中編程實現對數據庫的調用;測試人員將對開發出的維修操作平臺的測試意見反饋給開發者,以此來完善系統的各項功能。
數據庫設計不是設計一個完整的數據庫管理系統(DBMS),而是根據一個給定的應用環境,構造最優的數據模型。數據庫設計包括結構設計和行為設計,結構設計是按照應用要求確定一個合理的數據模型,行為設計是指應用程序的設計。在虛擬維修訓練系統中,結構設計是指按照系統要求將所用到的數據分類并建立合理的數據模型,而行為設計是在腳本里實現對數據的存取和應用[4]。

圖1 系統開發流程圖
數據庫設計過程可分為以下6個階段:
· 需求分析;
· 概念結構設計;
· 邏輯結構設計;
· 物理結構設計;
· 數據庫實施;
· 數據庫運行和維護。
下面介紹各個階段的工作。
需求分析階段的工作是詳細準確地了解數據庫應用系統的運行環境和用戶要求。
虛擬維修訓練系統是這個數據庫的用戶,考察用戶需求重點是“數據”和“處理”,用戶需求的信息主要包括:維修對象、維修規則、維修工具、故障模擬、碰撞檢測。這5種數據流包含很多的數據項,例如,維修對象中的數據項有:零件 ID號、零件名稱、材質、零件類型、零件動畫序列、零件坐標、零件個數等,這些數據項都要合理定義其數據類型及長度。
概念結構設計主要實現由現實世界到信息世界的抽象,建立概念模型。概念模型的表示方法很多,最著名的是采用實體—聯系方法即E-R模型法,用E-R圖描述概念模型,從而確定實體、屬性和實體間的關系,便于進行邏輯結構設計。
圖 2是一虛擬維修訓練系統數據庫的 E-R圖。在圖2中清晰地描述了5個實體之間的關系,以及各個實體的屬性,給下面的數據庫設計工作提供了很好的思路。
邏輯結構設計的內容簡單地說,就是將概念結構設計結果——E-R圖轉換為某一種DBMS支持的數據模型。
建立數據模型首先要確定關系模式,關系模式實際是實體與其屬性的另一中表現方式,但還應包括聯系與其屬性。圖2所示的虛擬維修訓練系統的關系模式可以表示為:
操作人員(人員 ID,姓名,密碼,單位,職務)
維修任務(任務ID,任務名稱,裝備名稱,故障提示,模型名稱,任務描述)
故障(故障ID,故障名稱,故障類型)
零件(零件ID,任務ID,名稱,零件類型,圖片名稱,三維坐標,零件介紹)
工具(工具ID,零件ID,名稱,圖片名稱,動畫序列)
維修(任務ID,人員ID ,維修日志)
其中,維修是聯系與其屬性的關系模式,其它關系模式是實體與其屬性的關系模式,帶下劃線的數據項為主鍵。
物理結構設計階段要完成的工作主要是確定數據庫表的結構,并進行優化,為數據模型選擇合理的存儲結構和存取方法,決定存取路徑和分配存取空間等。
對于記錄的存取格式應考慮如何節省存取空間,盡量用占用字節比較少的數據類型,例如,用戶的單位可以用0、1、2、3、…來代替用漢字來描述,還有故障類型和零件類型等也可用這種方式來表示,就可以節省大量的空間。
數據庫實施是運用 DBMS建立數據庫,創建各種對象(表、窗體、查詢等),編制與調試應用程序,錄入數據,進行試運行。
建立表時要參考邏輯結構設計中的關系模式,一個關系模式就是一個數據表,而關系模式內的每一個數據項將成為表中的一個字段。確定了表中包括哪些字段后,還應確定每一個字段的類型及數據長度。
從圖2可容易得出,對應該E-R圖的數據庫要包含5個表分別是:用戶信息表、維修任務表、故障表、零件表、工具表,相應表的字段即為每個實體的屬性。

圖2 虛擬維修訓練系統中數據庫的E-R圖
數據庫正式投入使用后,還應不斷進行評價、修改與調整。這一時期的工作就是數據庫的運行和維護。
上述數據庫的設計過程可用圖3表示。數據庫設計的基本思想是過程迭代和逐步求精,每完成一個設計階段,就進行評價,根據評價結果,決定是進行下一階段或是重新進行這一階段的工作,甚至更前一階段的工作。因此,整個設計過程往往是上述6個階段的不斷反復。
目前,市面上的數據庫產品多種多樣,MySQL數據庫可以稱得上是目前運行速度最快的SQL語言數據庫。
總體來說,MySQL數據庫具有以下主要特點:
(1) 可以保存超過50,000,000條記錄;
(2) 是目前市場上現有產品中運行速度最快的數據庫系統;
(3) 用戶權限設置簡單、有效。
開發平臺TGE支持MySQL數據庫,開發者不用過多修改 TGE的底層代碼,就可以應用該數據庫,實現對數據的查詢、寫入和讀取。考慮到MySQL的種種優點,文章以MySQL數據庫為例,介紹在虛擬維修訓練系統的開發過程中如何管理和傳輸數據。

圖3 數據庫設計流程圖
為了使用戶和開發人員更方便地操作MySQL數據庫,要采用Apache作為MySQL的服務器,用Web上最流行的一種服務器腳本編程語言PHP(Personal Home Page)為MySQL數據庫編寫PMA,直接在Web頁面中對MySQL數據庫進行各種維護[5]。
根據上述的數據庫設計方法,得出在這個數據庫中需要的最基本的表有任務表、任務內容表、零件表、維修序列表、工具表、維修操作評分表、維修日志表、用戶信息表,對不同表的描述如下:
· 任務表 存儲不同的維修任務ID號、任務名稱、維修序列編號。
· 工具表 存儲工具模型名稱、工具ID號、對應的手型動畫ID。
· 零件表 存儲零件類型、零件模型名稱、零件對應的工具 ID和維修動畫 ID等零件的屬性。
· 任務內容表 存儲不同任務中的虛擬裝備以及裝備個模塊之間的相對位置關系。· 維修序列表 描述不同裝備的維修序列。· 維修操作評分表 存儲不同零件對應的不同分數。
· 維修動畫表 用不同的ID標識不同的維修動畫。
· 維修日志表 存儲每次訓練的日期、操作者和得分等信息。
· 用戶信息表 保存可以使用本系統的所有用戶信息。
實際的裝備哪個零件出現故障的概率有較大的隨機性,故障的外在表現形式也是千差萬別。故障設定的合理性與故障模擬的真實性,直接影響到受訓者對故障的判斷。
故障模擬主要通過變換紋理、粒子系統、播放動畫、3D音效等來實現。
變換紋理和3D音效來進行故障模擬,要用到很多紋理、動畫、聲音以及要加粒子的模型的源文件。這些源文件與腳本之間的通信過程較為簡單,數據庫里存儲了系統所需源文件的名字,腳本里指定了源文件的路徑,通過基于索引的查詢就可以找到源文件,從而實現了腳本與數據庫的通信。
粒子系統和播放動畫實現故障模擬,要確定哪個模型要添加粒子、哪個模型要播放動畫。在數據庫里定義每個模型的類型,用一個字段來存儲。不同字段值的零件用不同的方法進行故障模擬。
3.3.1 裝備的拆卸操作過程中的數據通信
向場景中加載模型過程中,要在腳本中讀取數據庫中模型的各種數據。而開發的數據庫是基于名字的索引,要在腳本中指定模型存儲的路徑,通過這條路徑查找模型源文件,完成場景與模型數據源的通信。
場景中模型的定位,必須要有一個基準點,即場景中的裝備誕生點。場景中模型的坐標就是誕生點的坐標加上數據庫中模型的坐標。為了使虛擬裝備的維修操作過程更貼近實際,擁有同一父零件的零件設為一個Group,在移動過程中可以對整個Group進行移動,這些Group可以進行更深入的拆卸操作。

圖4 模型加載流程圖
加載模型的實現過程如圖 4所示,用 SQL查詢語句,找到所有符合條件的記錄,將這些記錄對應的零件信息傳遞到代碼中,然后定義數據塊和實例化模型對象,用任務對象的句柄調用Add函數讓模型在場景中顯示。
3.3.2 維修動作合法性判斷過程中的數據通信
判斷維修動作是否合法在虛擬維修訓練中的重要性是不言而喻的,維修序列從實質上講就是判斷語句:if A then B,只要建立零件之間的相互約束關系就能夠解決設定維修序列的問題。
用數據庫中某字段代表零件不同的狀態,如表1所示,字段ContentID表示操作時選中的物體的ID號,AccessoryState代表零件的初始狀態,rState表示操作后的狀態,ConditionId 表示拆卸ContentID 所標識的物體時的條件物體,ConditionState表示條件物體的狀態。以表 1中ContentID為1的零件為例進行具體介紹零件拆裝過程中維修序列的判定過程:選中物體($selectShape)的ID(ContentID)為1,若要對1進行拆卸操作,要滿足1處于安裝完畢的狀態;若要對1進行安裝操作,要滿足3和24已經安裝完畢。可以參考此例,設置其它零件拆裝和更換的約束條件,實現對維修動作的合法性判斷。

表1 維修序列表中的部分記錄
數據庫在整個虛擬維修訓練系統的開發過程中都扮演著重要的角色,靈活運用數據庫不但可以給開發工作帶來很多便利條件,而且讓系統通用性得到很大提高。本文解決的主要問題包括:在使用TGE進行開發虛擬維修訓練系統時,怎樣設計數據庫、怎樣實現基于 TGE的虛擬維修訓練系統與MySQL數據庫的通信,并將該系統分別應用到了某雷達裝備和某火炮的虛擬維修訓練中,取得了較好的效果。
[1]楊宇航, 李志忠, 等. 虛擬維修研究綜述[J]. 系統仿真學報, 2005, 17(9):2191-2195.
[2]馬 麟. 虛擬維修技術的探討[J]. 計算機輔助設計與圖形學學報, 2005, 17(12):2729-2733.
[3]Kenneth C Finney. Advanced 3D game programming all in one [M]. Thomson Learning, 2006. 367-392.
[4]張俊玲. 數據庫原理與應用[M]. 北京:清華大學出版社, 2005. 10-30, 40-50.
[5]唐漢明, 翟振興, 蘭麗華, 等. 深入淺出MySQL[M].北京:人民郵電出版社, 2008. 3-103, 111-116.
Application of Database to Virtual Maintenance Training System
CHANG Gao-xiang1,2, XU Xiao-gang1,2, WANG Jian-guo1,2
( 1. Department of Equipment System and Automatization, Dalian Naval Academy, Dalian Liaoning 116018, China;2. State Key Lab of CAD&CG, Zhejiang University, Hangzhou Zhejiang 310058, China )
Database technology is very important in the Virtual Maintenance Training System.This article gives a brief description of the characteristics of MySQL database, analyzes the dominance of using database in Virtual Maintenance Training System, and introduces the basic means of designing database in it. An Virtual Maintenance Training System with preferable and transplantable property is developed combining with the Torque Game Engine. The experimental result indicates that applying database technology to the Virtual Maintenance Training System helps improve the system development efficiency.
computer application; database design; virtual maintenance; transplantable property
TP 391
A
1003-0158(2010)05-0157-06
2008-12-25
遼寧省自然科學基金資助項目(20082176);“浙江大學CAD&CG國家重點實驗室”開放課題資助項目(A0906)
常高祥(1986-),男,河南汝陽人,碩士研究生,主要研究方向為虛擬維修。