楊紅梅,關滄海,周雅慧
(1. 武漢大學 圖書館,武漢 430079;2. 黑龍江第一測繪工程院,哈爾濱 150025;3. 湖南地騰土地規劃咨詢有限公司,長沙 410007)
隨著空間信息技術、移動互聯網技術的發展和智能設備的普及,人們對于位置服務的需求越來越旺盛[1-2],目前全球衛星導航系統(global navigation satellite system, GNSS)技術已經廣泛應用于各種室外定位場景,但室內場景普適定位問題還沒有統一的解決方案。目前主流的室內定位技術主要包括無線保真(wireless fidelity, WiFi)、藍牙、超寬帶、偽衛星等,其中WiFi 和藍牙定位技術具有成本低、普適性高等特點,是目前室內定位大眾應用中較有前景的技術,且這兩種技術能夠較好地契合當前智能設備的普及狀況,用戶不需要增加任何設備就能夠實現最大規模人群的室內定位,具有廣泛的應用場景[2-8]。
當前WiFi 和藍牙定位技術的應用,大多是針對專門的場景來研發的,需要針對性地部署無線路由設備和藍牙信標(beacon),開發專門的定位軟件,一套室內定位基礎設施布設完畢后,只有專門的定位系統才能夠使用,其軟件接口不具備開發性和可拓展性,在同一定位場景、不同的室內應用,需要專門開發不同的定位系統,極大地增加了建設成本。針對上述問題,本文提出了一種基于云平臺的室內位置服務方法,對現有室內定位系統的系統架構和服務模式進行了改造,通過應用程序編程接口(application programming interface, API)和軟件開發工具包(software development kit, SDK)接口為用戶提供位置服務[9],滿足了大量級、多場景、易接入的室內位置服務需求,為室內位置服務建設提供了參考。
室內位置服務平臺使用低耦合、低成本、微服務的架構設計,將室內定位算法與室內位置服務應用分離。平臺用戶使用平臺提供的指紋采集模塊采集指紋數據,上傳至解算服務器,解算服務器獲取用戶指紋庫進行檢查,通過后生成定位服務接口,并將可用的定位服務接口發送給業務服務器,用戶調用業務服務器提供的定位服務器接口,獲取定位結果。其架構設計如圖1 所示。

圖1 移動端協同定位云服務架構設計
室內定位服務平臺的組成主要包括以下三個部分:
1)指紋采集。用戶按照平臺說明及自身需求,部署WiFi 路由器和藍牙信標,使用平臺提供的指紋采集模塊,采集定位環境中的指紋信息并上傳至指紋數據庫。
2)定位服務接口生成。解算服務器調用平臺研發的藍牙定位、WiFi 定位和藍牙協同定位算法,對指紋庫進行掃描計算,生成可用的室內定位服務接口發送給業務服務器,業務服務器生成API 和SDK 接口,并將相關參數發送給用戶。
3)用戶服務。用戶調用API/SDK 接口,將定位區域搜索到的藍牙/WiFi 信息發送給解算服務器,解算服務器自動匹配最優的室內定位算法,計算出結果后發送給用戶終端,用戶終端利用計算的結果來構建各種場景的室內定位應用服務。
從平臺的架構可以看到,移動端協同定位云服務用戶只需要專注于自身應用系統的研發,而不需要研究專門的定位服務算法,就能構建室內定位服務,能夠滿足多場景、快速構建室內定位應用的需要,降低了室內定位專業技術門檻。業務服務器直接面向用戶提供定位服務器,通過采用云服務器的方式實現高并發訪問情況下快速擴容,滿足大量級終端位置服務需求。
本文中室內位置服務平臺的室內定位原理為:基于接收信號強度的指紋匹配,首先將室內定位場景區域劃按照一點的間隔劃分格網,在格網點使用平臺提供的指紋采集模塊,采集各個格網點的信號指紋,組成信號指紋庫。定位時,通過接口提交掃描得到的信號指紋,通過指紋匹配算法得到定位結果[10],其原理如圖2 所示。室內位置服務平臺實現的指紋匹配算法包括最近鄰近法(nearest neighbor algorithm, NN)、K鄰近算法(K-nearest neighbor algorithm, KNN)和加權K鄰近算法(weighted K-nearest neighbor algorithm, WKNN)。最近鄰近法是搜索指紋庫中與定位點歐幾里德距離最小的格網點為定位結果。KNN 算法選取多個歐幾里德距離較小的格網點的平均值作為定位結果,其計算公式為

圖2 WiFi/藍牙定位原理

式中:K為鄰近各網點的數量;(x,y)為定位結果;(xi,yi)為鄰近格網點的位置。
WKNN 算法通過匹配得到的多個鄰近格網點,進行加權后得到定位結果,其計算公式為

式中:di為定位點與指紋格網點的歐幾里得距離;η為加權系數;ε為一個較小的正數,避免分母出現零值。
室內往往是人流量較為密集的定位場景,同一定位場景內可能會存在多個用戶。利用這一特性,可以利用定位用戶群進行協同定位,提升定位的可靠性和精度[11],其原理如圖3 所示。協同定位時,首先將協同觀測指紋定位結果作為觀測值,將手機互掃的藍牙信號強度量成距離,作為協同觀測值引入,建立誤差方程(3),進行秩虧自由網平差[12],其計算方法為

圖3 協同定位原理

根據誤差方程(3),組成法方程為

式中:A為系數矩陣;l為協同觀測向量;P為單位權陣。
由式(4)計算坐標坐標改正數向量xδ為

從式(3)至式(5)中可以得到,協同定位的關鍵就是確定手機之間的協同觀測量,本文使用藍牙接收信號強度指示(received signal strength indicator, RSSI)值來量化信號傳播距離。
平臺通過API/SDK 接口為用戶提供定位服務,其上傳的指紋庫和定位信息必須按照一定的標準上傳到服務器,服務器解析后返回定位結果給用戶。標準化接口中最重要的部分是指紋數據采集模塊和定位請求接口,指紋采集模塊的工作流程如圖4 所示。

圖4 指紋采集模塊工作流程
打開指紋采集模塊,模塊會首先檢查與服務器之間的網絡連接,然后操作人員按照模塊提示,開始掃描格網中的WiFi 和beacon 藍牙信號,模塊首先會確認藍牙和無線局域網絡(wireless local area networks, WLAN)是否開啟,然后獲取藍牙和WiFi 信息,并將數據存入緩存,待數據全部采集完畢后,上傳所采集的指紋庫,服務器存儲并檢查指紋庫,檢查完畢后,在平臺將生成定位的接口地址。
用戶定位時,通過API/SDK 接口提交請求,用戶上傳賈瓦·斯克里普特(JavaScript)數據交換格式(JavaScript object notation, JSON)的定位請求數據,其提交的JSON 格式數據如表1 所示。

表1 提交數據說明
為了對服務平臺進行驗證,本文選取武漢大學圖書館室內定位場景,按照5 m 的間隔布設了藍牙beacon 設備。由于圖書館中已有無線路由器設備,能夠滿足定位要求,因此沒有單獨布設無線路由器設備。坐標系統采用獨立坐標系統,根據測試場景,選擇場景中的一個角為坐標遠點,并對定位場景劃分了格網,確定了定位場景中各個格網的坐標值。其中圖5 為beacon 設備的放置位置,圖6 為測試環境。

圖5 測試用的beacon 設備安裝位置

圖6 定位服務平臺測試環境
指紋庫采集使用平臺提供的指紋采集模塊,按照2 m 的間隔劃定測試區域的格網,采集各個格網點的WiFi/藍牙信號強度,采集完畢后,上傳到指紋數據庫。解算服務器掃描指紋庫,并生成服務端口及端口密碼以郵件形式發送給用戶,用戶調用API/SDK 端口就能夠進行室內定位。
定位測試時使用4 臺手機終端,同時進行了定位測試,分別使用了NN 方法、NN 協同定位方法,WKNN 方法和WKNN 協同定位方法分別進行了100 次的定位測試,其定位精度如圖7 所示,其中,使用協同定位方法能夠提高室內定位10%左右的精度,并且WKNN 方法的精度要高于NN方法。

圖7 不同定位算法的精度統計
圖8 為4 種定位結果的誤差分布情況,從圖8可以看到WKNN 協同定位的精度最高,其中80%的達4 m 左右,常規WKNN 定位方法的精度,其90%在5 m 以內,因此,平臺完全能夠滿足大型室內定位場景下的常規定位需求。

圖8 不同定位方式誤差累積分布對比
隨著日益增長的室內位置服務需求,室內定位技術研究已經成為了近年來的熱點。本文提出了基于云服務的室內定位服務公共服務平臺建設方法,利用WiFi/藍牙指紋定位技術,實現了能夠滿足一般場景下的基礎室內定位服務,平臺能夠為各類型室內定位場景提供快速、穩定的服務。云平臺的建設,實現室內定位基礎設施和室內定位服務的分離,避免了重復建設,可為大型公共區域室內定位場景建設提供了參考。