卞新玉,何圣超,王樹軍
(南京工業(yè)大學(xué) 浦江學(xué)院,江蘇南京,211200)
我國近年來大力發(fā)展汽車產(chǎn)業(yè),頻繁出臺政策刺激汽車消費,在有效的政策驅(qū)動下汽車產(chǎn)業(yè)運行顯著上升,處于綠燈區(qū)。為滿足用戶的停車需求,商場、樂園等場所修建了大量的室內(nèi)停車場。由于室內(nèi)停車場正逐漸向大型化,多樓層化發(fā)展[1],并且停車場區(qū)域環(huán)境相仿,標志物較少,不易分清方向。用戶時常會面臨停車位難覓,尋車困難的問題。本文設(shè)計了一種基于BLE+位置指紋的停車場內(nèi)導(dǎo)航系統(tǒng)。利用BLE+位置指紋的方式實現(xiàn)用戶定位。通過建立位置指紋庫的方式,記錄停車場中不同位置的RSSI 數(shù)值。用戶手機掃描到藍牙基站周期性發(fā)送的藍牙廣播,使用卡爾曼濾波處理數(shù)據(jù)。再使用KNN 最近鄰算法進行用戶位置的推算,并將推算結(jié)果上傳至服務(wù)端。服務(wù)端使用弗洛伊德算法實現(xiàn)出發(fā)點到停車位的最短路徑規(guī)劃,為用戶出行提供可視化的路線導(dǎo)航。
硬件系統(tǒng)設(shè)計上,在停車場現(xiàn)場布設(shè)監(jiān)測端,檢測端使用高速Linux 單板計算機為核心的控制系統(tǒng),外接攝像頭捕獲車牌圖像,調(diào)用車牌識別算法掃描識別,并將掃描識別的結(jié)果打包成數(shù)據(jù)包,通過數(shù)據(jù)傳輸單元上傳至服務(wù)器后臺。在停車場布設(shè)多個藍牙基站,基站基于CC26x2r1 芯片為核心開發(fā),周期性地發(fā)送穩(wěn)定的藍牙廣播,進入停車場的用戶移動設(shè)備接收基站廣播,采集基站藍牙信號強度RSSI 值,將搜集到的RSSI 數(shù)據(jù)實時上傳到云端服務(wù)器。系統(tǒng)整體框架如圖1 所示。
圖1 系統(tǒng)整體框架
在軟件設(shè)計上,云端獲取用戶APP 上發(fā)送的RSSI 數(shù)據(jù),調(diào)用卡爾曼濾波、KNN、指紋庫對比等算法進行數(shù)據(jù)處理,計算用戶車輛位置,并將計算結(jié)果上傳至服務(wù)端,服務(wù)端以微服務(wù)框架為主要架構(gòu)??蛻舳讼蚍?wù)端實時發(fā)送數(shù)據(jù)獲取請求,進行位置數(shù)據(jù)獲取,客戶端獲取位置數(shù)據(jù)后,將用戶位置信息渲染至App 界面,實時展示用戶當(dāng)前位置。
用戶在停車時,系統(tǒng)將會以最近原則推送附近的停車場信息、可用車位數(shù)量、收費標準等,供用戶選擇,幫助用戶找到合適的停車場,停放車輛。用戶進入停車場后,在手機應(yīng)用程序中進入相應(yīng)的停車場地圖[2]。在地圖顯示的可用車位中選擇自己所需的停車位,系統(tǒng)會自動將相關(guān)信息保存到本地記錄中,以便停車結(jié)束后找車時使用。用戶尋車時,系統(tǒng)以用戶當(dāng)前位置的定位結(jié)果為起點,將存儲的停車位設(shè)置為終點,采用弗洛伊德路線規(guī)劃算法,計算出最短路徑,為用戶提供尋車的路徑導(dǎo)航。管理員在后臺可通過Web 端頁面實時查看可視化數(shù)據(jù)圖表,以便及時掌握停車場相關(guān)狀態(tài),方便根據(jù)情況反饋系統(tǒng)管理員和及時動態(tài)調(diào)整停車場的管理調(diào)度。系統(tǒng)管理員可查看問題反饋,對所有停車場的整體數(shù)據(jù)情況進行導(dǎo)出操作,也可刪除或者添加普通管理員以及停車場信息。
詳細功能模塊劃分如圖2 所示。
圖2 系統(tǒng)功能模塊劃分
室內(nèi)環(huán)境錯綜復(fù)雜,鋼筋混凝土墻壁對信號有著巨大的干擾。本系統(tǒng)通過移動端獲取藍牙基站的RSSI 值,再匹配位置指紋庫,最后確定目標的位置,減小環(huán)境因素對定位的影響。RSSI 值識別過程如圖3所示。
圖3 RSSI 值識別過程
系統(tǒng)在布設(shè)時首先確定藍牙基站在停車場中的位置,部署藍牙基站時要求藍牙信號盡可能覆蓋整個停車場。藍牙發(fā)出的廣播信號和RSSI 信號會隨著距離而衰減,所以需要對RSSI 信號要做離線采集處理,本文對停車場定位系統(tǒng)進行了部署實測,藍牙基站經(jīng)測試調(diào)整后的布局圖如圖4 所示。
圖4 藍牙基站布局圖
圖5 卡爾曼濾波前后的對比
停車場的定位指紋庫建立過程如下:
(1)所有的網(wǎng)關(guān)節(jié)點向其所覆蓋的網(wǎng)絡(luò)周期性發(fā)送廣播信息,包含自身節(jié)點 ID 及基站的坐標位置。網(wǎng)絡(luò)內(nèi)的信標節(jié)點收到廣播信息后,對同一網(wǎng)關(guān)節(jié)點的 RSSI 取均值,并記錄與各網(wǎng)關(guān)節(jié)點的距離。
(2)所有的網(wǎng)關(guān)節(jié)點對信標節(jié)點回復(fù)的RSSI 數(shù)值進行濾波處理。
(3)各信標節(jié)點建立自己的優(yōu)選信標節(jié)點列表。
(4)根據(jù)信標節(jié)點建立虛擬的信標節(jié)點列表并對各虛擬信標節(jié)點進行編號。
可以對經(jīng)過離線處理的信標節(jié)點建立定位指紋庫,再進行在線使用,通過與指紋庫匹配就可以得到最合理的目標位置。
在現(xiàn)實復(fù)雜環(huán)境中,藍牙信號會受到其他信號源的干擾,其強度會動態(tài)變化,呈現(xiàn)不規(guī)則信號強度衰減,無法按照標準的無線電信號傳播模型進行計算。卡爾曼濾波算法在線性問題以及信號過濾方面卓有成效,因此,本系統(tǒng)選擇使用卡爾曼濾波算法對接收到的藍牙信號強度值RSSI 進行處理。
(1)多個藍牙基站獲取到同一移動設(shè)備的RSSI 數(shù)值,通過得到當(dāng)前數(shù)據(jù)的高斯噪聲方差;
(3)計算出估計值:
RSSI 經(jīng)過過濾后,波形較原始波形有了明顯的改善。得到的數(shù)據(jù)在濾除可能的誤差因素影響后,更加精確。
其他過濾方法,如均值濾波,連續(xù)采集一段時間,獲取短時間內(nèi)的RSSI 均值。這些方法雖然可以在一定程度上減小干擾導(dǎo)致的誤差,但是在出現(xiàn)較大的波動時,依然將較大波動計算在內(nèi),會影響指紋采集的精確度??柭鼮V波算法以預(yù)測的形式,結(jié)合預(yù)測值和測量值,可以得到當(dāng)前狀態(tài)(k)的最優(yōu)化估算值,擬合出數(shù)值更加平滑,可以有效避免大的波動值對測量數(shù)據(jù)的影響。
本文系統(tǒng)考慮到藍牙信號在常規(guī)環(huán)境下衰減帶來的巨大誤差,往往產(chǎn)生10dbm 的偏移。因此系統(tǒng)在錄入位置指紋信息時,采用分割區(qū)域塊的方式進行。將停車場分割成多個長寬相等的正方形區(qū)域。測量單個區(qū)域塊時,通過移動藍牙設(shè)備采集當(dāng)前區(qū)域塊藍牙信號最強的三個藍牙基站信號數(shù)據(jù),實時上傳藍牙RSSI 數(shù)據(jù)信息。通過卡爾曼濾波處理后繪制圖像,當(dāng)圖像穩(wěn)定在0dbm~5dbm 左右時,則將當(dāng)前三組數(shù)據(jù)作為當(dāng)前區(qū)域塊的RSSI 特征值并進行數(shù)據(jù)持久化處理。后續(xù)則是將移動藍牙設(shè)備采集處理后的數(shù)據(jù)與特征值進行匹配,從而找到特征值所對應(yīng)的區(qū)塊實現(xiàn)室內(nèi)定位。
信號的RSSI 或者接收功率取決于接收器的位置。RSSI的獲取很簡單,因為它是大多數(shù)無線通信設(shè)備正常運行中所必需的。很多通信系統(tǒng)需要RSSI 信息用來感知鏈路的質(zhì)量,實現(xiàn)切換,適應(yīng)傳輸速率等功能。RSSI 不受信號帶寬的影響,因此RSSI 是一個很受歡迎的信號特征,并廣泛應(yīng)用于定位中。在本文系統(tǒng)中我們通過RSSI 為基礎(chǔ)元素構(gòu)建指紋庫,通過移動藍牙設(shè)備掃描獲取固定位置上的藍牙基站的藍牙RSSI 數(shù)值以每組50 個為單位共獲取10 組,通過卡爾曼濾波數(shù)據(jù)過濾后,用平均分獲得平均特征,傳遞給服務(wù)器。并錄入相關(guān)位置坐標服務(wù)器構(gòu)建藍牙位置指紋庫。
效果如表1 所示。
表1 位置坐標信息
用戶在進入停車場后,手機端會收集各個藍牙信標的RSSI 數(shù)據(jù)值,然后將實時采集到的數(shù)據(jù)值與指紋庫中進行匹配算法的比較,選取指紋庫的最佳參考點。本文選取的匹配算法為KNN 最近鄰算法[1],選取K 個相似度最高的位置指紋所對應(yīng)的參考點的坐標。其中K 值的取值十分重要,K值較小,整體模型就會變復(fù)雜,易發(fā)生過擬合現(xiàn)象,K 值較大,更多的點影響著實驗結(jié)果,增大了誤差,為此采取了交叉驗證來選定K 的最佳值,最終得出K=3 時系統(tǒng)誤差最小,示意圖如圖6 所示。
圖6 指紋對比示意圖
藍牙基站實時采集到的數(shù)據(jù)為[R1,R2,R3],Ri 為當(dāng)前不同藍牙基站監(jiān)測到的同一藍牙移動設(shè)備的RSSI 值。藍牙基站將采集到的R 值與數(shù)據(jù)庫中的參考點數(shù)據(jù)(S1、S2、S3)進行對比。計算當(dāng)前采集值與參考值之間的歐氏距離D 為:
通過計算,可以得到多個歐式距離D,選取三個距離最小的位置指紋所對應(yīng)的參考點,然后獲取該參考點在位置指紋庫記錄的位置坐標。
本文系統(tǒng)的路徑規(guī)劃主要采用的是弗洛伊德最短路徑規(guī)劃算法,首先采用路徑點法對路徑進行建模,將物理的數(shù)據(jù)路徑抽象為能進行路徑規(guī)劃計算的數(shù)據(jù)結(jié)構(gòu)模型。本文系統(tǒng)將停車場平面圖中的關(guān)鍵節(jié)點標上序號,經(jīng)過數(shù)字轉(zhuǎn)化得到圖7。
圖7 停車場關(guān)鍵節(jié)點數(shù)字化
接下來進行路徑規(guī)劃的第二個階段,路徑搜索。任意一點i 到另一點j 的路徑只有兩條,一種是i 點直接到達j 點,另一種則是i 點先到其他點再到j(luò) 點。定義二維數(shù)組G[i][j],設(shè)G[i][j]為點u 到點v 的最短距離。那么只需要設(shè)中間點K,對全部頂點進行遍歷,判斷任意一點i 到任意點j 的距離G[i][j]是否會大于經(jīng)過點k 的距離G[i][k]+G[k][j],如果大于,那么就將G[i][j]重新賦值為G[i][k]+G[k][j]。最后遍歷G[i][j]獲取最短路線集。根據(jù)最優(yōu)路徑中的路徑結(jié)果信息提供給用戶端,在地圖上顯示,進而提供給用戶導(dǎo)航指示。
本文設(shè)計了基于低功耗藍牙BLE+位置指紋實現(xiàn)定位的室內(nèi)停車導(dǎo)航系統(tǒng)。采用建立指紋庫并輔以卡爾曼濾波算法、KNN 最近鄰算法,獲取用戶位置。通過弗洛伊德路線規(guī)劃算法進行最短路徑規(guī)劃。移動端APP 采用flutter 跨平臺開發(fā)框架,可以有效兼容當(dāng)前手機,具有很好的便利性。用戶在停車過程中,可以根據(jù)停車場信息,選擇合適的停車位置。在完成停車后,系統(tǒng)進行車位記錄。尋車過程中主要實現(xiàn)了室內(nèi)定位與最短路徑導(dǎo)航。綜上所述,系統(tǒng)能夠很好地解決室內(nèi)停車場目標車輛的定位、導(dǎo)航問題,打通了室外與室內(nèi)地圖信息的隔閡[5],具有良好的應(yīng)用前景。