徐 正 單忠德 李 周 Hans Peter Lentes
1.機械科學研究總院先進制造技術研究中心,北京,100083 2.弗勞恩霍夫工業經濟與組織研究所,斯圖加特,德國,70569
基于虛擬現實技術的生產線仿真可以對邏輯、控制進行系統仿真并對生產能力進行評估。但因設計者無法判斷自身所處的真實環境和具體尺度[1],故整個仿真過程并不十分直觀。基于Lightning的虛擬現實系統解決了生產線仿真的此類問題,采用1∶1的比例對在線設備進行仿真,為生產線設計者提供一個具有高度沉浸感和真實性的最優平臺。同時系統可以還利用來自CAD的幾何數據和在線設備的控制信號對生產線進行進一步的評估,在來自在線設備實時控制信號的驅動下,模擬設備的真實運行過程。
在一定數量的硬件基礎上,虛擬現實可實現多視角環境[2]。為此本系統在硬件方面,采用英偉達Quadro FX5800專業顯卡的工作站,并外接了光學跟蹤系統 ART;軟件方面,采用基于Ubuntu操作系統的Lightning,成功地搭建了面向對象的多視點環境(圖1)。系統的設備管理器負責以上硬件的管理工作;交互管理器負責跟蹤設備及控制設備的信號運算,并將計算結果發送到Lightning內核中;模型管理器負責管理模型數據庫中的虛擬模型,以確保模型在虛擬場景中具有正確的渲染順序。

圖1 基于Lightning的生產線虛擬現實系統框架
Lightning虛擬現實系統作為快速的虛擬現實應用開發工具于1996年面世[3],最初應用在建筑和展示領域,后來發展成為擁有3D用戶接口的工程交互仿真系統[4]。利用它可以進行不同應用類型的開發實驗,如對CAD設計的評估、虛擬裝配和數字化工廠等。Lightning的另一個重要特性是可以連接各類外部資源庫,以此來快速擴展其功能模塊,在程序運行時載入指定的庫文件,使所有模塊都將共享這些庫文件;實際的主程序則成為一種帶有內部解釋器的加載器,可加載程序運行中的各類模塊。Lightning引入域變量作為各類參數的載體(所有的對象都存在于對象池中)。同時,Lightning將簡捷的腳本語言TCL作為其接口開發語言集成到核心系統中,更方便了程序的快速開發。
Lightning支持很多標準的虛擬現實文件格式(如 VRML-97 、obj、flt),因此可以更加自由地創建模型數據庫。來自生產線設計者的數據一般為CAD模型格式,這類數據不僅包含了模型的幾何信息,還包含了約束、公差和其他的工程信息。如果直接將其轉換為虛擬現實數據,模型將會含有大量的多邊形,而過多的多邊形將給圖形工作站帶來極大負擔,無法完成此類數據的實時渲染任務。因此,建立模型數據庫的第一步是優化這類直接由CAD數據轉換的虛擬現實模型,在減少模型多邊形數量的前提下最大限度地保存其幾何信息。如圖2所示,優化后多邊形的數量不到原模型多邊形數量的1/10,而模型的幾何信息得到了較好的保留。

圖2 簡化前后的多邊形數量
第二步是將模型有組織地加入到數據庫中并建立合理的層次結構。雖然系統中的模型管理器會將模型按照正確的順序進行渲染,但合理的數據庫層次結構將會顯著提高計算機的渲染速度。邏輯結構和空間結構是模型數據庫中應用最為廣泛的兩種結構[5]。在邏輯結構中,相同類型的模型(節點)將被劃分至同一組中。由于相同類型的設備具有相同的行為,當信號傳遞到由相同類型節點組成的組節點時,所有的組內節點將同時獲得這一信號,因此模型間的信號傳遞時間將會大大縮短。在空間結構中,相同區域內的模型將被劃分至同一組,因為相同區域的模型在系統運行時將在同一時間被渲染器剔除和繪制,判斷模型是否可見的時間將會大大縮短。考慮到兩類結構的優點,我們將模型數據庫設置為圖3所示結構。圖3中,數據庫的上層節點以空間結構進行組織,下層節點以邏輯結構進行組織,模型管理器占用的模型數據庫訪問時間將會降低到最少。

圖3 模型數據庫層次結構
在本系統中,我們將基本的顯示和交互模塊,如窗口、攝像頭和按鈕控制定義在viewer.ltcl文件中,將與生產線相關的其他模塊定義在run.ltcl文件中。解釋器將執行run.ltcl文件并生成計算循環,通過定義在腳本中的時間模塊所產生的系統時間來渲染并更新系統的狀態。
系統在開始運行時,首先通過傳感器或從外部信號處獲得輸入數據,然后開始計算循環,如圖4所示。計算循環中,系統將輸入數據傳遞給模型對象中的函數,基于這些數據,模型對象的狀態如位置、方位和運動速度將在每一幀中被更新。經函數運算后,模型對象之間的內部信號也將路由到其他模型的接收端口。同時,系統將利用已經更新的數據來渲染新的狀態,并將輸出數據傳遞給外部硬件設備。結束一幀的計算后,系統將返回循環的開始并進行下一幀的計算。

圖4 系統運行過程
為了更加快捷高效地對虛擬現實應用系統進行設計,仿真過程采用適用于快速開發的解釋性語言TCL[6]為開發語言。所有模塊都可以通過應用程序中的腳本進行加載,通過簡單的連接口,TCL還可以提供外部工具和內置解釋器的連接。在Lightning中,TCL以基于字符串的形式被集成在系統層次,因此不會受限于個別的節點實例。
模型數據庫中的模型僅僅含有幾何信息,模型相應的行為信息則需要進一步進行設置。當虛擬設備的運動狀態與真實生產線上的設備行為相一致時,生產線的虛擬場景才會更具有真實性,從而讓人更加信服。設備行為的實現有兩種方式:一種是在VRML文件中定義模型的運動,并加入相應的javascript腳本,然后在Lightning中調用VRML模塊;另一種是利用 TCL語言直接在Lightning中定義運動模塊。
Lightning支持VRM L模型的各種行為,包括插補器和javascript的應用,因此對于設備的簡單運動過程,可以在VRML-97格式的文件中利用時間插補器、位置插補器、方位插補器等來實現運動,其中的VRML模塊可以讀取VRML-97格式的文件,并可為其定義域值,從而控制模型的運行。我們定義系統時間輸入域變量來接受當前的系統時間,同時VRML模塊將系統時間直接路由給VRML-97文件中的時間傳感器,并以此來驅動文件中的所有插補器,如圖5所示。定義的端口還可以作為外部控制信號的接口通過javascript中的函數來進行訪問。

圖5 VRML模塊的實現
使用VRML中的插補器和腳本很難實現實時的復雜運動,特別是一些需要有運動學方程計算而得出的復雜運動。為了達到實時處理的目的,我們可以通過TCL腳本直接定義包含優化算法的復雜運動模塊,如圖6所示,Lightning在運行時直接調用運動模塊,系統用來解釋VRML腳本的時間將會被節省。
對于一個典型的設備,我們將其劃分為若干功能部分,如控制部分、傳感器、電源部分、電機等,然后利用TCL腳本來定義各功能部分對應的抽象模塊,這些抽象的模塊將分別仿真其對應部分的功能。

圖6 設備模塊及腳本實現
在每一次計算循環中,域存儲的數據都會更新,模塊中的函數將同步檢查域的狀態并相應更新其參數值。
設備是生產線的基本元素,但在線的每臺設備并不是相互獨立存在的,而是相互協同工作來完成整條生產線的任務,因此在生產線運行時,在線設備間的相互通信將變得尤為重要。在本系統中,我們根據信號傳遞的優先級和范圍將其劃分為3個等級:設備級、功能單元級和生產線級,如圖7所示。

圖7 多層級信號傳遞
圖7中,在設備內部傳遞的信號屬于設備級信號,它是多層次信號仿真中的最低級,所有模塊的信號與設備級通信模塊相連接。首先,傳感器模塊接收到外界信號,并將其傳遞給通信模塊;然后控制模塊從通信模塊處取得信號,對信號進行分析后將控制信號傳回通信模塊;最后,電機模塊和電源模塊得到控制信號并將驅動信號傳遞給機械模塊。我們也可以直接向控制模塊發送信號,并將其作為外部的緊急中斷。
為了完成某一項功能,若干設備協同工作并組成了一個功能單元。在功能單元內部各設備之間傳遞的信號屬于功能單元級信號,其處于多層級仿真的中間層級。在此層級中,所有的設備全部連接到控制總線上,控制中心接收來自設備的信號,并將控制信號通過總線進行反饋。功能單元之間傳遞的信號屬于生產線級信號,是多級仿真中的最高級,但是其擁有的優先級最低,在緊急情況下可以被來自功能單元級或設備級的信號中斷。
這類多層級信號傳遞機制可以用來進行系統測試,并可以很快找到故障的原因。當我們進行生產線的測試時,可以將整條生產線劃分為簡單的功能單元,然后將功能單元劃分為若干設備的集合,最后將設備劃分為更為簡單的功能模塊,這樣便可以通過逐步縮小故障的范圍最終來確定故障原因。
我們以某全自動紡織染整生產線為原型,建立了一套逼真的虛擬現實仿真系統。在系統設計的初期,將各類在線設備的CAD數據進行優化及整合,建立了詳實而準確的模型數據庫。在分析各在線設備的功能和內部信號傳遞邏輯后,針對其各個模塊建立抽象的多層次模型。
系統在運行時調用了各類外部的庫函數,同時將烘干機、調濕機和移載車等設備的抽象模塊調入內存,如圖8所示,在圖形工作站的實時渲染下,系統按照事先編訂的運行程序仿真各類設備的運行情況。若設備在運行中出現干涉等錯誤,虛擬場景中將出現提示信息。系統還具有輸入外部中斷信號的功能,可以對單個設備及整條生產線進行人工調試,并觀察其實時的反饋情況。利用各種反饋信息,設計者可以及時對生產線進行優化和修改,在提高了工作效率的同時,減少了現場調試所消耗的能源和材料。

圖8 系統運行場景
利用Lightning來實現數據庫的建立和仿真,所有的設備都被抽象化為 Lightning中的模塊,而模塊之間的信號則被定義為模塊功能函數中的參數,在這種設備-模塊的對應關系中,可以方便地進行整條生產線的仿真實驗。建立了不同的在線設備對應的幾何與行為模型,使其具有高度的沉浸感、真實性和交互性。生產線的設計者可以通過增加或刪除對應的模塊來方便地更改在線的設備并對生產線進行系統的測試。在未來的研究中,將利用TK對系統添加各類對話模塊,以加強系統的交互性和靈活性,并采用物理引擎來模擬真實物體間的碰撞和響應。
[1]Neugebauer R,Weidlich D,Zickner H,et al.Virtual Reality Aided Design of Parts and Assemblies[J].InternationalJournalon InteractiveDesign and Manufacturing,2007,1(1):15-20.
[2]Fr? hlich B,Blach R,Stefani O,et al.Implementing Multi-Viewer Stereo Displays[C]//International Conferences in Central Europe on Computer Graphics,Visualization and ComputerVision.Plzen,2005:139-146.
[3]Landauer J,Blach R,Bues M,et al.Towards Next Generation Virtual Reality Systems[C]//IEEE International Conference on Multimedia Computing and Systems.Ottawa,1997:581-588.
[4]Blach R,Landauer J,R ? sch A,et al.A Flexible Prototyping Tool for 3D Real-time User-interaction[C]//Proceedings of the Eurographics Workshop on Virtual Environments.Stuttgart,1998:195-203.
[5]徐正,沈笑云,韓丹.基于Creator的飛行視景數據庫建模技術[J].計算機工程,2009,35(9):265-268.
[6]Ousterhout J K.Tcl and the Tk Toolkit[M].Indianapolis,Indiana:Addison-Wesley Professional,1994.