劉桂艷, 王一拙, 楊建梅, 計衛星, 高玉金
(1. 北京理工大學 生命學院, 北京 100081; 2. 北京理工大學 計算機學院, 北京 100081)
虛擬仿真技術探索與實踐
面向藥物化學類實驗的虛擬裝配引擎VAEPCE
劉桂艷1, 王一拙2, 楊建梅1, 計衛星2, 高玉金2
(1. 北京理工大學 生命學院, 北京 100081; 2. 北京理工大學 計算機學院, 北京 100081)
使用Java語言設計了一個簡便的實現藥物化學實驗虛擬化的虛擬實驗設備裝配引擎——VAEPCE。主要介紹了VAEPCE中藥物化學類虛擬實驗裝置和器件的內部數據表示、虛擬裝配過程關鍵技術和連接正確性檢查的實現原理。使用VAEPCE可以方便地設計虛擬裝置、定制虛擬器件、實現虛擬裝配和標準裝配流程展示等功能。
藥物化學實驗; 虛擬化實驗; 虛擬裝配; 裝配引擎
實驗教學虛擬化是現代計算機與電子技術在實驗教學中的應用。虛擬化實驗教學與傳統的實體實驗教學相比,在教學成本、過程可重現性、標準化等方面具有很大的優勢[1]。目前,很多高校在實驗教學中引入虛擬實驗作為輔助教學手段,并將其作為實驗教學改革的主要內容之一[2]。虛擬化實驗作為輔助手段,對于耗時長、耗材毒性大或易燃易爆等危險類實驗尤其具有重要意義。
目前市場上的虛擬化工具軟件適用范圍廣、功能強大[3],應用也十分復雜,但并不適合很多本科教學的簡單實驗虛擬化[4]。筆者基于藥物化學類實驗虛擬化原理的研究成果和經驗,使用Java語言設計了一個簡便的虛擬實驗設備裝配引擎——VAEPCE(virtual assembly engine for pharmaceutical chemistry experiment),該引擎原理簡單,使用和掌握十分方便,適用于大部分虛擬實驗裝置的裝配虛擬化。
任何實驗都會使用若干套實驗裝置,各實驗裝置在實驗過程中相對獨立,并且有不同的結構和功能。在特定的實驗中,這些裝置按照實驗的需求,按照特定的操控流程運行。
根據面向對象技術的原理[5-7],虛擬化裝置是裝置結構(即對象的內部靜態結構)、行為功能和操控流程3方面信息的匯集。
(1) 裝置結構。指構成虛擬裝置的各種虛擬器件及其之間的關系,包括各器件在顯示屏幕上的位置、外形、輪廓、紋理以及器件之間的鄰接關系等。
(2) 行為功能。指虛擬裝置在內部激勵或外部輸入輸出驅動下,按照自身運行規律所呈現出的行為和功能,是構成裝置的所有器件的行為功能的集合。這里的“行為”特指內部狀態的變化,而“功能”則是指裝置在不同狀態引發的輸入和輸出。
(3) 操控流程。實驗裝置通常具有多項功能,虛擬實驗的過程就是操作者發出操控指令(即實驗操作)、調用實驗裝置功能的過程。顯然,即便使用同樣的裝置,不同操控流程也將實現不同的實驗過程。預先編制的標準操控流程可用于判定操作者實時操控過程的正確性,也用于驅動裝置標準使用過程的演示。
在虛擬實驗軟件系統中,上述三方面的模型以軟件方式運行于計算機中,各種相關圖形、圖像、音視頻等呈現在學習者面前,學習者對虛擬裝置的操控,如同在現實世界中對實體實驗裝置的使用[8-9]。
實驗虛擬化原理適用于大多數實驗過程,但本文主要關注于虛擬實驗設備的裝配[10],因此,下文的操控流程特指虛擬裝置的裝配流程,器件行為功能也特指與器件擺放姿態等有關的行為。
要實現虛擬裝配,就需要實現器件外觀圖在屏幕上的拖動、器件本身在拖動過程中的狀態數據更新、器件連接正確性檢查等功能,而這一切的基礎是實現實驗裝置的建模,即虛擬裝置在軟件內部的數據結構。
2.1 裝置與器件內部格式
根據上文的實驗虛擬化原理,在VAEPCE中的實驗裝置由多個實驗器件構成,這些具體器件可能是不同類型的,但顯然具有一些共性。實際上,不但實體實驗設備是由器件構成的,器件本身通常也是由各種零部件構成的;但VAEPCE在器件虛擬化中,對于器件不再進行更詳細的拆分,而是將各種器件的共性封裝成VirDev類。對于特定類型器件的特殊性質和功能,使用VirDev的派生類描述。在具體建模中,為表示各種數據結構,需要引入更多的類,因此,VirDev具有如圖1和表1所示的靜態結構。
類Location、Size用于描述屏幕直角坐標和圖形的寬/高;類Face用于描述器件的外觀,其中含有外觀圖顯示比例尺、圖形坐標(相對器件矩形輪廓左上角)以及圖形動畫GIF文件的路徑。
VAEPCE器件圖上的一些點被稱作檢查點,這些點使用ChechPoint類描述,其中包括點的相對坐標和在該點需要進行的檢查項目(CheckItem對象)。在虛擬裝配過程中適當時刻,VAEPCE會調用特定函數對檢查點進行檢查,以確定器件是否正確裝配。

圖1 VAEPCE的虛擬設備VirApp相關類結構

類變量類型含義說明VirDev虛擬器件devnameString器件名typeDEVICETYPE器件類型xyLocation位置,中心坐標whSize尺寸,即寬和高alphaint旋轉角度,繞x軸和y軸mfaceFace外觀,如刻度等zorderint層次,覆蓋順序parentVirApp本器件所屬裝置cpointList
2.2 器件定制與更新
VAEPCE為虛擬裝配過程提供了相對便利的交互機制。例如,每當從器件庫拖動一個器件圖標到裝配區(如圖2所示),當鼠標按鍵釋放時,對于這個圖標,VAEPCE內部會自動創建相應的VirDev派生類,并彈出該器件的屬性窗口,等待用戶填寫空白的屬性信息(坐標、類型等信息自動填寫)。
盡管虛擬裝配過程所涉及的器件外觀圖都是靜態圖像,但由于在裝配過程中,器件會經常被鼠標拖動到屏幕不同的位置、改變顯示層次,甚至被旋轉,因此裝配過程中經常需要對器件外觀進行重新繪制,并將器件的位置、形狀等信息記錄下來。VAEPCE的這個過程是結合GEF框架[10-11]實現的,VAEPCE本身只要提供存儲圖形的文件即可。實際上,VAEPCE的功能部分等同于簡單的圖形用戶界面管理系統[12]。
當結束器件圖在屏幕上拖動、鼠標左鍵抬起時,VAEPCE調用該圖形類VirDev或其派生類的信息更新函數public void Update(Location xy,Sizewh,int alpha,intzOrder)對相關信息進行存儲,該函數調用Face類的publicvoid Draw(VirDev parent),并根據器件信息對器件模型進行重新更新。在GEF中創建的控制器負責監聽模型變動,并更新模型可視化表示。

圖2 器件定制、設備組裝及提供界面
2.3 連接正確性檢查
在虛擬裝置裝配過程中,器件連接正確性檢查是虛擬裝配的核心問題之一,VAEPCE使用了如下的簡單機制。
2.3.1 預置檢查點
為實現連接正確性檢查,在設計器件和裝置外形圖時,需要為參與某點連接的各個器件預置檢查點,即物理上的檢查點位于器件的可能連接點處。只有擁有同類型檢查點的器件才能互連,并且連接點處所連接器件的檢查點必須為同類檢查點。
例如圖3(a)中的柱層析實驗裝置,該裝置所需的鐵架臺(類SupporStand)、錐形瓶(類ErlenFlask)、硅膠柱(類Column)、管夾(類Holder)等器件上都預置了檢查點(圖3(b)),同類型檢查點為同色標記(在VAEPCE中,這些檢查點是不顯示的)。
通常,每個器件可有多個不同類型的檢查點,例如錐形瓶瓶口和瓶底的檢查點為不同類型。根據圖3(a),可理解VAEPCE的器件連接正確性的原理:在裝配過程中,當不同器件的同類型檢查點的屏幕坐標基本相同,則說明器件連接關系正確。

圖3 器件檢查點與連接檢查示意圖
每個器件的檢查點存儲在VirDev數據成員cpoints所指向的List列表中。VAEPCE可在器件圖定制對話框中定制檢查點。
2.3.2 設置檢查項
實際上,在判斷器件連接關系是否正確時,僅查驗相連器件檢查點坐標是否相同是不夠的,往往還需要對器件角度、相對位置以及其他約束條件進行查驗,即一個檢查點具有多個檢查項。檢查項以類CheckItem描述,其中包含檢查項類型CHECKTYPE type、標準值intvalidvalue、錯誤提示信息等數據成員(見圖1和表1)。
檢查項類型CHECKTYPE以enum類型的方式定義。以圖3中的器件為例,與其相關的檢查項類型定義如下,與每個檢查點關聯的是若干個檢查項。
publicenum CHECKTYPE {Unknown, LINK_Erlen_Column, // Green LINK_Erlen_Support, // Purple LINK_Holder_Support,// Red LINK_Holder_Column, // Blue Rot_XXXX, // This is for rotation …… }
VirDev提供的檢查機制僅僅適用于一般器件的簡單裝配規則,對于某些特定器件的特殊約束條件,應該在該器件類(VirDev派生類)提供專門的檢查函數,并重寫父類VirDev的連接正確性檢查函數。
2.3.3 連接檢查
通過上文檢查點和檢查類型的解釋,很容易理解連接正確性判據為:相連器件連接點處的檢查點位置相同、檢查項類型相同、檢查值相同,即VAEPCE進行器件連接正確性檢查時,只是檢查連接點附近各器件檢查點是否滿足上述3個“相同”:如是,則認為連接正確;如否,則認為連接錯誤。
VAEPCE提供的連接正確性檢查有兩種:一種是對單個器件的連接性檢查,另一種是對所有器件的連接性檢查。對于單個器件的連接性檢查而言,驅動該檢查的事件是當用戶拖動器件圖到裝配區后松開左鍵時,鼠標消息傳遞給控制器,由控制器調用該器件所屬類(VirDev或其派生類)的正確性檢查函數。VirDev的檢查函數如下:
publicboolean Check(VirDevvd) {//This function just check this device with vd for(int i=0; i 可以看到,函數Check()遍歷當前器件的所有兄弟器件(即當前器件父類的所有器件),遍歷它們的所有檢查點,查看當前器件是否與它們正確連接。 對于所有器件的連接性檢查發生于用戶主動申請進行正確性檢查時,該檢查過程是用戶點擊“連接性檢查”工具圖標或選單項、控制器調用VirApp的正確性檢查函數實現的,該函數分別對VirApp的所有器件進行連接正確性檢查,算法與單器件檢查類似。 在上述正確性檢查實現過程中使用了Java的多態性。由于正確性檢查函數的調用都是通過List 由于每個器件都有自己的特定功能,這個功能不適合在VirDev描述,而應該放置在VirDev的派生類中。由于篇幅所限,對于器件功能虛擬化主要涉及器件功能建模、器件外觀動畫制作和動畫播放控制等,本文僅給出VAEPCE實現功能虛擬化的策略。 由于VAEPCE涉及大量的交互,為便于實現,除上述虛擬器件外,還應提供虛擬操作者類Actor,該類對象負責與現實世界的學習者交互,根據學習者的鼠標和鍵盤操作,建立裝配子流程,按照該流程調用VirApp、VirDev或者通知GEF控制器。 在VAEPCE實現中,還可以將預先定義的裝配流程存儲于Actor對象中,由其按照該流程控制進行虛擬裝置標準裝配過程的自動演示。 VAEPCE目前已經應用于多個實驗的虛擬化中,涉及到柱層析、旋轉蒸發儀、HPLC、索氏提取等多個實驗裝置,這些應用證明VAEPCE的虛擬化原理可行,基本能夠滿足本科實驗教學中藥物化學實驗虛擬化的需求。 References) [1] 孫丕波,周利江.一種通用性虛擬教學平臺的研究[J].中國科技信息,2006(8):288-289,285. [2] 宋象軍.虛擬實驗室在高校實驗教學中的應用前景[J].實驗技術與管理,2005,22(1):35-37,47. [3] 劉英杰,楊雪,闞寶朋.基于3ds Max和Virtools的大學物理虛擬實驗的設計與開發[J].現代教育技術,2008(6):88-92. [4] 王晶琳,焦瑋.虛擬現實技術與應用[J].實驗技術與管理,2003,20(1):58-61. [5] Dale Skrien.面向對象設計原理與模式[M].騰靈靈,仲婷,譯.北京:清華大學出版社,2009. [6] 劉峰,陳媛,范偉.組件式虛擬實驗系統面向對象的實現方法[J].重慶理工大學學報:自然科學,2012(5):86-89. [7] 宋佳聲.面向對象的思想在虛擬儀器開發中的應用[J].計算技術與自動化,2008(3):141-144. [8] 藺海曉,岳高偉,楊大方.材料力學虛擬演示實驗的應用與教學[J].實驗技術與管理,2012,29(5):124-126. [9] 雷冬,朱飛鵬,殷德順,等.力學虛擬仿真教學實驗室建設的探討[J].實驗技術與管理,2014,31(12):95-96,100. [10] 黃河,張生貴,劉鋼,等.一種杠桿系統虛擬裝配方法:中國,CN103678737A[P].2014-03-26. [11] 白明,張健.基于GEF的計算機組成原理實驗仿真[J].實驗技術與管理,2010,27(9):81-84. [12] 田邊,戴航,戴冠中,等.PDUIMS:基于持久存儲的用戶界面管理系統的設計與應用[J].計算機學報,2000,23(6):660-666. A virtual assembly engine for pharmaceutical chemistry experiment Liu Guiyan1, Wang Yizhuo2, Yang Jianmei1, Ji Weixing2, Gao Yujin2 (1. School of Life Science,Beijing Institute of Technology,Beijing 100081,China;2. School of Computer Science & Technology,Beijing Institute of Technology,Beijing 100081,China) A virtual assembly engine for pharmaceutical chemistry experiment is presented,with which the designation of the virtual apparatus,virtual devices,virtual assemblage and the exhibition of the standard flow for virtual assemblage can be finished easily. The principles for implementing the key techniques of virtual assemblage,apparatus and devices are elucidated. pharmaceutical chemistry experiment; virtualization experiment; virtual assembly; assembly engine 2015- 02- 04 北京理工大學教改項目“生命學科實驗教學虛擬化及其可行性研究” 劉桂艷(1965—),女,吉林遼源,博士,副教授,主要從事天然藥物化學與天然產物生物轉化研究 E-mail:gyliu@bit.edu.cn 高玉金(1974—),男,河南新野,博士,講師,主要從事計算機體系結構和軟件工程自動化的研究和教學. E-mail:paulgyj@bit.edu.cn TP391.9 A 1002-4956(2015)10- 0111- 043 關于功能虛擬化和虛擬操控者
4 結束語