陸 揚 錢雪軍
(同濟大學電子與信息工程學院,200092,上海//第一作者,碩士研究生)
火災報警系統(Fire Alarm System,簡為FAS)的主要功能是自動捕捉監測區域內火災發生時的煙霧或熱氣,發出聲光報警,通知輸出接點,控制自動滅火系統、事故照明、事故廣播、消防給水和排煙系統等實施救災,以實現監測、報警和滅火的自動化。
車站火災報警系統由報警主機、外圍設備、管網等設備組成。外圍設備由手動報警器、模塊、電話、探測器等組成,如圖1所示。
報警主機是火災報警系統的核心設備,是分析、判斷、記錄和顯示火災的部件。它通過探測器不斷向監視現場發出巡測信號,監視現場的煙霧濃度、溫度等,并由探測器不斷反饋;控制器將返回的現場值與正常值比較,判斷是否有火災。當確認發生火災時,在控制器上發出聲光報警并顯示火災區域的地質編碼,同時向火災現場發出警鈴報警。于此同時,各應急疏散指示燈亮,指示疏散路線等。
探測器可分為煙感探測器、感溫探測器、復合型探測器。應根據區域內環境條件、火災特點、房間高度、場所內的氣流狀況及設備主機的配置等選擇探測器。探測器和報警主機構成一個遠距離信號采集、控制網絡。
隨著城市的高速化發展,地鐵車站的人流量日趨增多。地鐵車站建筑結構特殊,客流量巨大,一旦發生火災,后果不堪設想,因而對車站消防系統提出了更高的要求。但在這樣一個偌大的消防系統結構中,各部分之間協調的功能是很復雜的,如果未經過系統的理論和實踐培訓,相關工作人員很難在意外事故發生時做出最有效的操作和處理。為減少人員傷亡和財產損失,提高工作人員預防和處理火災等事故的能力,同時加強培訓基地和模擬訓練設施建設,開發一套能逼真地模擬真實火災環境的消防訓練系統至關重要。
該系統針對車站相關工作人員,在模擬仿真的環境下,訓練其處理火災緊急事故的應對能力,從而提高在真實環境下操作的正確及熟練程度,最大限度地減少火災造成的傷亡損失。
車站消防仿真系統分為主控制器、主要操作工位、虛擬車站系統、與車站部分的連接系統等四個模塊,如圖2所示。其中,虛擬車站系統是將主控機傳送過來的火災信號虛擬現實化,即將火災的場景通過OSG三維視景技術虛擬地仿真出來,將事故發生的場景地點以及當時火災狀況和處理后的狀況等顯示出來,讓培訓人員在處理相關事故時能有身臨其境的沉浸感,更好地把握處理火災的操作過程。
圖1 車站火災報警系統
圖2 車站消防仿真系統的架構
OpenSceneGraph(OSG)是一個高性能的開源三維圖形引擎,基于修改的LGPL協議(OSGPL)免費發布,廣泛應用于虛擬仿真、虛擬現實、科學和工程可視化等領域。它以OpenGL為底層平臺,可運用 于 Windows、UNLX/Linux、MacOSX、IRIX、Solaris等操作系統。其功能特性涵蓋了大規模場景的分頁支持、多線程、多顯示的渲染、粒子系統與陰影、各種文件格式的支持,以及對于Java、Perl、Python等語言的封裝。
OSG引擎由一系列與圖形學相關的功能模塊組成,主要為圖形圖像應用程序的開發提供場景管理和圖形渲染優化的功能。它使用可移植性的ANSI C++編寫,并使用已成為工業標準的OpenGL底層渲染API。OSG的核心代碼支持多種場景裁剪技術(Culling)、細節層次節點(LOD)、渲染狀態排序(State Sort)、頂點數組,VBO、PBO、FBO、OpenGL著色語言等,以及文字顯示、粒子系統、陰影系統、雨雪、火焰煙霧等特效、場景動態調度、多線程渲染等各種機制,使OSG逐漸成為一個高性能的三維圖形引擎。
OSG本身雖然支持幾何體的繪制,但是在構建復雜場景時,不可能通過手動編程OSG圖元繪制完成一個模型,而是利用其他的建模工具如3DMAX、MultiGen Creator等構建好場景所需的模型,再從外部導入進來。
本文選用MultiGen Creator進行模型創建。MultiGen Creator由美國 Multigen-Paradigm公司開發,擁有針對實時應用優化的OpenFlight數據格式、強大的多邊形建模、矢量建模、大面積地形精確生成功能,以及多種專業選項及插件,能高效、最優化地生成實時三維(RT3D)數據庫,并與后續的實時仿真軟件緊密結合。運用Creator將地鐵車站中的場景一一建模出來,要注意與真實場景的比例大小。為了在OSG三維仿真中提高速度,可盡量減少面的使用數量。此外,模型的紋理盡量采用rgba格式的圖片,長和寬都是2n,否則在三維仿真應用時,紋理可能會扭曲或無法正常顯示。
由于站臺層的電梯和屏蔽門均是可活動的,所以要在它們的組節點上增加相應的自由度節點DOF,這樣在OSG中就可以控制它們的活動。此外,逃生指示牌在發生火警后也要由正常的綠色狀態變為紅色的緊急狀態。可建立Switch節點的兩種狀態,在OSG中調用該節點實現兩種狀態的轉化,如圖3所示。
圖3 Creator創建的場景模型
OSG屬于開源的,故在編寫OSG程序時靈活性非常大。將所要用到的庫導入到該工程下,即可編寫所需的程序。
當火災報警主控機監測到有火災信號時,會將該事發點的位置坐標傳輸到下位機;下位機運行OSG三維仿真,通過該數據將車站的場景迅速切換到始發地的位置。OSG產生的目標場景視圖的變換過程類似于用相機進行拍照。其主要步驟如圖4所示。
圖4 三維圖像顯示流程圖
需要創建一個自定義漫游器。首先編寫一個新類,繼 承 自 osgGA::MatrixManipulator,重 載handle()及其相關矩陣函數。注意在handle()中添加合適的事件處理函數,并指定執行相關的動作;然后設置相機的碰撞檢測,防止在移動中直接穿越障礙物(可使用牛頓引擎來實現精確的碰撞);最后關聯該操作器到當前視圖場景中,viewer->setCameraManipulator(camera)。這樣就可以實現在車站的虛擬場景中完成自定義的運動。
需要注意的是,在設置相機初始位置時,需重載setByMatrix函數,將所要變換的矩陣作為形參,與初始的位置(1.0f,1.0f,1.0f)相乘。這樣就可任意控制屏幕在車站場景中的位置。
OSG中有很多效果,如雨、雪等,這些都可以通過粒子系統來實現。粒子系統是一個非常復雜的粒子模擬過程。由osgParticle來處理粒子系統的模擬。其主要架構如圖5所示。
在OSG中除了這些粒子系統的主要模塊外,還包含其他已經定義好的模塊,如osgParticle::ExplosionEffect (爆 炸 模 擬 )、osgParticle::SmokeEffect(煙霧模擬)、osgParticle::FireEffect(火光模擬)等。只需實例化這些OSG定義的類,就能將特效加入到場景中。可以根據需要選擇自定義模擬粒子或用現成定義好的效果模塊。煙霧模擬和火光模擬特效加入車站場景中的效果如圖6所示。
圖5 粒子系統的主要架構
圖6 基于OSG下的場景仿真
在一個逼真的虛擬場景里,會有很多動態變化。OSG中有幀動畫、骨骼動畫等可以實現這些變化。若是用flt格式的模型,則可以通過自由度(DOF)節點來控制其運動。這樣,只需在Creator建模時建立DOF節點,并將運動的路徑設置好,在OSG中便可直接調用。
在編程中需用到訪問器。訪問器的設計允許用戶將某個特定節點的指定函數應用到當前場景遍歷的所有此類節點中。可以從基類osg::NodeVisitor派生一個特定的節點訪問器。這個類需要一個std::string變量,用于和搜索的有名節點進行字符串比較。一個節點列表變量(std::vector),用于保存符合搜索字符串的所有節點。
在DOF節點的控制上也可添加相應的碰撞檢測,諸如屏蔽門夾到了物體、電梯上移時可載人等。在發生火災時,能立刻切換到火災應急狀態:逃生指示牌變為紅色應急狀態,屏蔽門全部合上,驗票機的柵欄全部放下等。
火災報警主機是一個以微型計算機為基礎的智能系統。它一方面接收探測器發來的信息,經變換后,通過傳輸系統送進微處理器進行運算處理;另一方面又接收微處理器發來的指令信號,經轉換后向現場有關的控制裝置傳送。在此基礎上,可將一個串口連接到虛擬場景仿真的下位機上,把報警信號、事件類型以及事發地的位置坐標等都發送到下位機上。下位機通過這些數據來控制虛擬場景的各種變化。
在下位機的OSG程序中,可以把Windows自帶的API串口通信模塊加入到其中,用CreateThread創建一個線程,在線程里打開串口,實時監聽串口;當有信號傳來時,讀取串口數據,從而控制車站內的虛擬場景變化。
基于OSG虛擬仿真技術的車站消防系統,結合報警主控機的操作,能模擬車站中的各種火災場景,逼真地再現火災場景,使車站工作人員在熟練掌握主機操作的同時,產生身臨其境的沉浸感,提高現實中處理火災的能力。
[1]王銳,錢學雷.OpenSceneGraph三維渲染引擎設計與實踐[M].北京:清華大學出版社,2009.
[2]許志豪.地鐵火災的防火分析[J].消防技術與產品信息,2007(3):26.
[3]李劍鋒,張學魁.虛擬現實技術在消防訓練中的應用[J].武警學院學報,2008,24(2):80.
[4]張云飛.地鐵延伸線火災報警系統構成及實現[J].鐵道通信信號,2009,45(8):44.
[5]楊立中,鄒蘭.地鐵火災研究綜述[J].工程建設與設計,2005(11):8.