儲(chǔ)岳中, 劉束青, 石軍花, 張學(xué)鋒, 何勝方
1(安徽工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 馬鞍山 243032)
2(江蘇省安全生產(chǎn)科學(xué)研究院, 南京 210016)
3(馬鞍山鋼鐵股份有限公司港務(wù)原料廠, 馬鞍山 243021)
多層建筑內(nèi)部結(jié)構(gòu)復(fù)雜, 人流密度大, 存在安全隱患, 一旦發(fā)生火災(zāi)等突發(fā)情況, 易出現(xiàn)擁擠、踩踏甚至傷亡等事故, 若不能高效有序地組織應(yīng)急疏散, 將造成生命財(cái)產(chǎn)損失. 開展實(shí)戰(zhàn)演習(xí)成本高且不易實(shí)現(xiàn). 針對以上應(yīng)急疏散問題, 可視化的計(jì)算機(jī)仿真提供了直觀的真實(shí)環(huán)境, 且已成為主流[1-3].
目前研究應(yīng)急疏散的仿真模型可分為宏觀和微觀兩種. 宏觀模型主要考慮疏散整體的影響, 在人員基數(shù)大的場景中仿真效果好, 但其缺點(diǎn)是不考慮疏散個(gè)體的具體行為以及它們的差異性[4]; 微觀模型中, 元胞自動(dòng)機(jī)[5-7]和社會(huì)力模型[8,9]是最常用的兩種. Cremer等人[10]將元胞自動(dòng)機(jī)模型合理應(yīng)用在車輛交通流中, 實(shí)現(xiàn)了城市網(wǎng)絡(luò)交通流動(dòng)態(tài)過程的快速仿真. Helbing等人[11]提出的社會(huì)力模型較真實(shí)地模擬了人員疏散情況, 并將其運(yùn)用在行人流的研究上. 劉景昊[12]通過微觀視角研究了智能體交互問題, 采用底層分布式動(dòng)態(tài)避障算法ORCA, 并引入行人瞬間能耗概念實(shí)現(xiàn)快速尋路, 解決了智能體與其它智能體或障礙物之間的碰撞避免問題. 周美琦等人[13]提出了一種改進(jìn)元胞自動(dòng)機(jī)模型的乘客疏散運(yùn)動(dòng)模型, 充分考慮了乘客在突發(fā)事故下疏散時(shí)的趨利避害和從眾心理等. 原志路[14]在基于社會(huì)力模型的基礎(chǔ)上, 對人員在疏散過程中的行人流變化規(guī)律進(jìn)行了研究, 并對房間內(nèi)部的疏散過程進(jìn)行仿真實(shí)驗(yàn). 蒙盾等人[15]提出一種改進(jìn)A*算法的應(yīng)急疏散系統(tǒng), 采用鄰接節(jié)點(diǎn)的遍歷方式完成路徑搜索,并將人員密度和障礙物加入代價(jià)值的計(jì)算中, 給出了單層多出口情況下的多路徑擇優(yōu)方案.
上述學(xué)者雖然通過不同方法對人員疏散進(jìn)行了大量研究, 但均未將多智能體技術(shù)應(yīng)用在機(jī)器人智能搜救室內(nèi)被困人員的研究中, 鑒于此, 本文以多層建筑為背景, 采用改進(jìn)的A*算法并結(jié)合多智能體技術(shù), 對不同火災(zāi)發(fā)生點(diǎn)機(jī)器人如何搜救被困人員進(jìn)行深入研究,較好地模擬了不同情況下的疏散過程.
火災(zāi)燃燒過程復(fù)雜, 不僅受風(fēng)向、風(fēng)速等影響, 而且還會(huì)產(chǎn)生大量有毒氣體、濃煙等, 對人構(gòu)成危害, 極大影響逃生效率. 為了便于研究, 本文根據(jù)張學(xué)鋒等人[16]提供的模型, 將火源簡化為一個(gè)圓錐模型, 并通過火源功率計(jì)算火勢大小.

其中, D為錐形底面直徑; Q為火災(zāi)熱釋放率(kW); qe為單位面積的熱釋放率(kW/m2), 統(tǒng)一取值為500 kW/m2;H為火源高度.
現(xiàn)實(shí)中, 逃生人員經(jīng)過火源區(qū)域會(huì)有危險(xiǎn)狀態(tài)臨界值判斷, 例如煙氣溫度超過180℃, CO濃度達(dá)到0.25%, 會(huì)因皮膚灼傷、吸入毒煙等對人構(gòu)成危害. 本文統(tǒng)一將上述危險(xiǎn)狀態(tài)簡化為生命值的衰減, 當(dāng)?shù)陀谀骋婚撝禃?huì)暈倒甚至死亡.
每個(gè)人員及機(jī)器人為一個(gè)Agent, 且都配有視覺傳感器, 采用射線檢測技術(shù)模擬人類視覺, 計(jì)算射線與物體的交點(diǎn)來確定兩者距離. 根據(jù)Agent當(dāng)前位置, 獲取一定范圍內(nèi)的外界信息, 通過模擬人類視線進(jìn)行環(huán)境交互, 并做出相應(yīng)反應(yīng)行為, 視覺模擬如圖1所示. 以Agent所處位置為中心, 感知與其速度垂直方向左右90°范圍內(nèi)的物體.

圖1 視覺模擬系統(tǒng)
從Agent模型雙眼視區(qū)內(nèi)發(fā)射射線, 當(dāng)檢測到物體碰撞時(shí), 識(shí)別它的位置和物體類型. Agent在疏散過程中, 會(huì)不時(shí)地檢測是否發(fā)生碰撞, 進(jìn)而實(shí)時(shí)計(jì)算Agent下一時(shí)刻的運(yùn)動(dòng)數(shù)據(jù), 包括位置信息、移動(dòng)速度、運(yùn)動(dòng)方向等, 通過從傳感器接收的信息做出下一步?jīng)Q策. Agent模型結(jié)構(gòu)如圖2所示.

圖2 Agent模型結(jié)構(gòu)
為了使仿真效果更加接近現(xiàn)實(shí), 本文將人員Agent屬性分為固有屬性和動(dòng)態(tài)屬性, 見表1.

表1 人員Agent屬性信息
人員編號(hào)用于標(biāo)記人員間的信息, 可通過編號(hào)搜尋到人員實(shí)時(shí)位置; 年齡影響逃生效率, 籠統(tǒng)劃分為成年男性、成年女性、小孩、老人; 性別則為男女; 成年男性、女性耐力普遍優(yōu)于小孩、老人; 位置屬性為當(dāng)前疏散人員所在位置; 速度屬性為當(dāng)前行走速度; 距離屬性記錄從初始位置到當(dāng)前位置行走的路程; 時(shí)間屬性為逃生花費(fèi)的時(shí)間.
本文根據(jù)各年齡段人員類型設(shè)定不同平均行走速度, 參考文獻(xiàn)[17]的描述, 采用表2中的數(shù)據(jù).

表2 不同人員類型平均行走速度 (m/s)
機(jī)器人在智能搜救做出決策分析的過程中, 將不同年齡段人員類型分為兩大類: 一類是具有完全行為能力的個(gè)體, 包括成年男性、成年女性. 另一類是具有部分行為能力的個(gè)體, 主要指小孩、老人, 逃生過程中該類個(gè)體通常需要機(jī)器人引導(dǎo). 對于不同類型的人員Agent在應(yīng)急疏散過程中采取的決策行為是不同的, 其決策流程如圖3所示.

圖3 決策流程圖
決策層會(huì)根據(jù)被困人員的自身狀態(tài)及所處環(huán)境決定采取何種疏散行為. 若被困人員喪失行動(dòng)能力或因吸入大量有毒氣體導(dǎo)致暈厥等, 機(jī)器人發(fā)出警報(bào), 并立即向施救人員輸出該被困人員信息, 包括位置、傷亡情況、救援級(jí)別等. 若被困人員有能力逃生, 但因恐慌或濃煙迷失方向, 機(jī)器人將采取引導(dǎo)疏散策略, 協(xié)助被困人員到達(dá)安全出口.
A*算法結(jié)合了貪心算法和Dijkstra算法, 是一種高效的啟發(fā)式搜索算法[18]. 通過計(jì)算當(dāng)前節(jié)點(diǎn)相鄰的所有可達(dá)節(jié)點(diǎn)代價(jià)值, 選出值最小的節(jié)點(diǎn)作為下次搜索的父節(jié)點(diǎn), 繼續(xù)搜索該父節(jié)點(diǎn)周圍可達(dá)節(jié)點(diǎn), 循環(huán)往復(fù)直到搜索出目標(biāo)節(jié)點(diǎn), 相比于Dijkstra算法, 遍歷搜索節(jié)點(diǎn)數(shù)更少, 運(yùn)行速度更快, 提高了搜索效率. A*算法估價(jià)函數(shù)可表示為:

其中, f(n)表示從初始點(diǎn)經(jīng)由節(jié)點(diǎn)n到目標(biāo)點(diǎn)的代價(jià)估計(jì); g(n)表示從初始點(diǎn)到節(jié)點(diǎn)n的實(shí)際代價(jià); h(n)是一種啟發(fā)式函數(shù), 表示從節(jié)點(diǎn)n到目標(biāo)點(diǎn)的最佳路徑的估計(jì)代價(jià).
在A*算法評(píng)估函數(shù)中, g(n)為已遍歷的節(jié)點(diǎn), 數(shù)值固定, h(n)成為影響算法效率的關(guān)鍵. h(n)應(yīng)滿足下式:

其中, *h(n)表示節(jié)點(diǎn)n到目標(biāo)點(diǎn)的真實(shí)最小代價(jià).
通常, 啟發(fā)式函數(shù)采用曼哈頓距離來計(jì)算當(dāng)前節(jié)點(diǎn)到目標(biāo)點(diǎn)的代價(jià), 其公式為:

其中, (Xi, Yi)代表節(jié)點(diǎn)i的坐標(biāo), (Xj, Yj)代表節(jié)點(diǎn)j的坐標(biāo).
A*算法搜索過程如圖4所示, 其中綠色方塊S代表初始點(diǎn), 紅色方塊E代表目標(biāo)點(diǎn), 黑色方塊代表障礙物. 首先將初始點(diǎn)S放入開放列表OpenList中, 所謂的OpenList基本上是一個(gè)待檢查的方格列表, 目前OpenList里只有一項(xiàng), 也就是S點(diǎn), 后面將逐步加入更多項(xiàng). 若OpenList為空, 則搜索失敗. 若OpenList中存在目標(biāo)點(diǎn), 則搜索成功. 然后從OpenList中取f(n)值最小的節(jié)點(diǎn)作為當(dāng)前父節(jié)點(diǎn), 并將其加入到封閉列表CloseList中, CloseList中的每個(gè)方格都無需再關(guān)注. 計(jì)算與當(dāng)前父節(jié)點(diǎn)相鄰的所有可達(dá)子節(jié)點(diǎn), 對每一個(gè)子節(jié)點(diǎn): 若該節(jié)點(diǎn)在CloseList中, 則丟棄; 若該節(jié)點(diǎn)在OpenList中, 則檢查通過當(dāng)前節(jié)點(diǎn)計(jì)算得到的f(n)值是否更小, 如果更小則更新f(n), 并將其父節(jié)點(diǎn)設(shè)置為當(dāng)前節(jié)點(diǎn); 若該節(jié)點(diǎn)不在OpenList中, 則將其加入到OpenList中, 并計(jì)算f(n)值, 設(shè)置其父節(jié)點(diǎn)為當(dāng)前節(jié)點(diǎn),如此循環(huán). 當(dāng)OpenList中出現(xiàn)目標(biāo)點(diǎn)E時(shí), 說明路徑已經(jīng)找到, 當(dāng)OpenList中沒有了數(shù)據(jù), 則說明無合適路徑.

圖4 A*算法搜索過程
傳統(tǒng)A*算法有一定缺陷, 例如, 存在多個(gè)最小值時(shí)并不能保證搜索的路徑最優(yōu); 隨著地圖的擴(kuò)大, 其空間增長呈指數(shù)級(jí)別; 當(dāng)目標(biāo)點(diǎn)不可達(dá)時(shí)會(huì)出現(xiàn)大量的性能消耗; 路徑平滑性較差; 若規(guī)劃的路徑上障礙物較多, 會(huì)緊貼障礙物, 易發(fā)生碰撞.
本文重點(diǎn)研究的是機(jī)器人對疏散效率的影響, 運(yùn)用傳統(tǒng)A*算法進(jìn)行路徑規(guī)劃時(shí), 通常忽略機(jī)器人體積及運(yùn)動(dòng)特性, 進(jìn)而導(dǎo)致機(jī)器人途經(jīng)障礙物頂點(diǎn)時(shí)斜穿而過, 同時(shí)規(guī)劃出來的路徑不平滑, 針對以上問題, 對A*算法做了如下改進(jìn):
在傳統(tǒng)八鄰域的基礎(chǔ)上做了改進(jìn), 將當(dāng)前節(jié)點(diǎn)周圍8個(gè)相鄰節(jié)點(diǎn)進(jìn)行優(yōu)先級(jí)劃分, 如圖5所示. 假設(shè)當(dāng)前節(jié)點(diǎn)為O, 周圍相鄰節(jié)點(diǎn)分別為A-H.
將圖5節(jié)點(diǎn)劃分為兩部分, 其中, 當(dāng)前節(jié)點(diǎn)O周圍水平豎直方向的B、D、E、G四個(gè)節(jié)點(diǎn)為優(yōu)先遍歷節(jié)點(diǎn), 剩余子節(jié)點(diǎn)依規(guī)則遍歷, 其遍歷規(guī)則見表3.

表3 子節(jié)點(diǎn)遍歷規(guī)則

圖5 相鄰節(jié)點(diǎn)優(yōu)先級(jí)劃分
針對路徑不平滑問題, 引入了貝塞爾曲線對改進(jìn)的A*算法規(guī)劃出來的路徑進(jìn)行平滑處理. 根據(jù)機(jī)器人和障礙物選定一系列特征點(diǎn), 通過對特征點(diǎn)的擬合形成初始目標(biāo)路徑. 機(jī)器人行走半徑和橫向加速度關(guān)系如下:

其中, ρ為對應(yīng)路徑曲率, r為曲率半徑, m為機(jī)器人質(zhì)量, 本文統(tǒng)一取值為5 kg, ay是機(jī)器人行走過程中的橫向加速度, v為機(jī)器人步速, 取固定值1.2 m/s.
機(jī)器人的橫向加速度和它的軌跡曲率呈線性關(guān)系,在整個(gè)搜救過程中, 機(jī)器人的橫向加速度連續(xù), 則軌跡曲率也要連續(xù), 這就要求機(jī)器人運(yùn)動(dòng)軌跡的擬合函數(shù)光滑可導(dǎo), 因此要選擇高階貝塞爾曲線進(jìn)行軌跡擬合,其表達(dá)式為:

其中, B(t)表示貝塞爾擬合曲線, t為曲線參數(shù), Pi表示構(gòu)成曲線的(i+1)個(gè)頂點(diǎn)坐標(biāo).
對子節(jié)點(diǎn)優(yōu)化以及引入貝塞爾曲線, 有效避免了機(jī)器人斜穿障礙物頂點(diǎn), 減少了拐角次數(shù), 路徑安全性、機(jī)器人運(yùn)動(dòng)效率有較大提高, 縮短了疏散中的搜救時(shí)間和路徑長度. 傳統(tǒng)A*算法和改進(jìn)后的A*算法在相同條件下的仿真時(shí)間對比如圖6所示.

圖6 仿真時(shí)間對比
本實(shí)例以某高校圖書館為場景, 利用三維激光點(diǎn)云建模, 建模主要包括數(shù)據(jù)采集、數(shù)據(jù)預(yù)處理、三維建模、紋理映射4個(gè)步驟, 具體流程如圖7所示. 首先對圖書館進(jìn)行掃描, 采集點(diǎn)云數(shù)據(jù)、紋理圖片; 其次,對采集得到的數(shù)據(jù)進(jìn)行點(diǎn)云裁剪、降噪、精簡預(yù)處理操作, 以滿足3DS Max建模需求[19]; 然后, 根據(jù)點(diǎn)云輪廓構(gòu)建圖書館主體模型; 最后, 根據(jù)三維信息提取每個(gè)面的最佳紋理信息, 并實(shí)現(xiàn)紋理自動(dòng)映射[20].

圖7 3DS Max建模技術(shù)流程
主體框架完成后, 再對其內(nèi)部結(jié)構(gòu)進(jìn)行細(xì)節(jié)建模,在3DS Max建模軟件中對每個(gè)獨(dú)立單元重新組合, 并且將采集的紋理圖片用于模型的渲染、貼圖等操作中,最終以特定的格式(.FBX)導(dǎo)入到Unity3D平臺(tái)中, 完成與實(shí)物成比例的三維模型, 其最終三維模型如圖8所示. 其中, 一樓是服務(wù)大廳, 有南北2個(gè)安全出口; 二樓是閱覽室, 共有4個(gè)樓梯口, 且均連通至一樓大廳.

圖8 圖書館三維模型
首次進(jìn)入仿真演練系統(tǒng)需要注冊, 注冊成功后方可登錄. 注冊登錄界面如圖9所示. 成功登錄仿真演練系統(tǒng)后, 警報(bào)發(fā)出, 館內(nèi)人員開始疏散, 施救人員隨即趕到現(xiàn)場指揮救援.

圖9 注冊登錄界面
本文對各樓層人員類型人數(shù)分布做了表4中的假設(shè), 人員位置隨機(jī)生成.

表4 各樓層人員類型人數(shù)分布
設(shè)置機(jī)器人遍歷所有樓層房間, 并開始計(jì)時(shí). 機(jī)器人通過感知周圍環(huán)境, 對室內(nèi)被困人員做出決策分析.機(jī)器人遍歷完所有樓層房間以及將全部被困人員引導(dǎo)疏散至安全出口后, 停止計(jì)時(shí). 疏散過程中, 可通過點(diǎn)擊“查看實(shí)時(shí)信息”按鈕, 動(dòng)態(tài)查看館內(nèi)人員總數(shù)、已疏散人員數(shù)、剩余人數(shù)和演練進(jìn)行時(shí)間等信息, 如圖10所示.

圖10 仿真實(shí)時(shí)信息
為了更好地說明機(jī)器人個(gè)數(shù)及初始位置對疏散效率的影響, 本文較為全面地模擬了5種疏散方案, 每個(gè)機(jī)器人的種類、大小、步速等參數(shù)均是統(tǒng)一的, 見表5.

表5 機(jī)器人搜救方案設(shè)計(jì)
將上述5種方案分別進(jìn)行仿真實(shí)驗(yàn), 實(shí)驗(yàn)數(shù)據(jù)曲線如圖11所示.

圖11 不同疏散方案曲線圖
從圖11中不難看出, 疏散時(shí)間整體上會(huì)隨著機(jī)器人數(shù)量的增加而呈縮減趨勢, 60 s時(shí), 館內(nèi)絕大多數(shù)人員已安全疏散; 相比于其他未著火樓層設(shè)置的機(jī)器人個(gè)數(shù)而言, 火災(zāi)發(fā)生點(diǎn)樓層設(shè)置的機(jī)器人個(gè)數(shù)越多, 搜救時(shí)間越短, 但當(dāng)機(jī)器人數(shù)量達(dá)到一定個(gè)數(shù)后, 對搜救時(shí)間長短影響不大; 疏散前10 s沒有人員抵達(dá)安全出口位置, 究其原因不難發(fā)現(xiàn), 從發(fā)現(xiàn)火災(zāi)到疏散至安全地點(diǎn)期間, 有一個(gè)反應(yīng)時(shí)間和逃生時(shí)間, 符合實(shí)際情況.
針對多層建筑復(fù)雜的內(nèi)部結(jié)構(gòu), 傳統(tǒng)A*算法規(guī)劃出的路徑平滑性較差, 且通常忽略機(jī)器人體積及運(yùn)動(dòng)特性, 當(dāng)路徑上障礙物較多時(shí), 會(huì)緊貼障礙物, 易發(fā)生碰撞等安全問題. 本文結(jié)合多智能體技術(shù), 并提出一種子節(jié)點(diǎn)優(yōu)先級(jí)劃分的改進(jìn)A*算法, 通過引入貝塞爾曲線, 有效避免了機(jī)器人斜穿障礙物頂點(diǎn), 減少了拐角次數(shù), 路徑安全性、機(jī)器人運(yùn)動(dòng)效率有較大提高.
仿真環(huán)境中, 通過設(shè)置不同的火災(zāi)發(fā)生點(diǎn), 機(jī)器人個(gè)數(shù)及初始位置, 人員速度等參數(shù), 對影響疏散時(shí)間的相關(guān)因素進(jìn)行了模擬實(shí)驗(yàn), 驗(yàn)證了應(yīng)急疏散的真實(shí)有效性. 本仿真研究利用機(jī)器人智能搜救并引導(dǎo)人員疏散, 在很大程度上減少了不必要的人員傷亡, 實(shí)驗(yàn)結(jié)果符合實(shí)際情況, 為多層建筑應(yīng)急疏散預(yù)案的制定提供了參考依據(jù).