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