蔡旭瑩 陳小瀚
(廣東海洋大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院 廣東省湛江市 524088)
隨著經(jīng)濟(jì)發(fā)展和生活水平的提高,人們精神層面的需求不斷提高,各類主題的展館也隨之孕育而生。在滿足觀展需求的同時(shí),人們對(duì)觀展服務(wù)也有了更高的要求,展館定位與導(dǎo)覽服務(wù)便是其中之一。在室內(nèi)位置相關(guān)的服務(wù)中,常見(jiàn)的主要定位技術(shù)包括Wi-Fi 定位、藍(lán)牙定位、紅外定位、超寬帶定位、超聲波定位、LED 定位、ZigBee 定位、射頻識(shí)別定位等[1]。不同的技術(shù)以及配置方案,其定位精度、穩(wěn)定性、實(shí)施成本也不盡相同。隨著藍(lán)牙技術(shù)的普及,目前絕大多移動(dòng)端設(shè)備均裝載了該項(xiàng)通信功能,用以實(shí)現(xiàn)數(shù)據(jù)傳輸。利用藍(lán)牙信號(hào)技術(shù)實(shí)現(xiàn)定位的最大優(yōu)點(diǎn)在于用戶適用程度高,有很好的普遍性。藍(lán)牙定位基于RSSI(Received Signal Strength Indication,接收信號(hào)強(qiáng)度指示)值進(jìn)行定位,通過(guò)在展館、商城等室內(nèi)環(huán)境中部署低能耗藍(lán)牙設(shè)備,即藍(lán)牙iBeacon,利用用戶移動(dòng)設(shè)備中的藍(lán)牙接收端接收發(fā)射端廣播的RSSI 場(chǎng)強(qiáng)信號(hào),以此判斷出用戶的室內(nèi)位置[2]。相比其他技術(shù),藍(lán)牙室內(nèi)定位技術(shù)優(yōu)勢(shì)更為突出,部署在室內(nèi)環(huán)境的藍(lán)牙信標(biāo)iBeacon 設(shè)備不僅體積小,而且功耗也小、工作時(shí)間長(zhǎng)。iBeacon 采用電池供電,在默認(rèn)功率的情況下,設(shè)備的電池電量可持續(xù)3 至5年(如E5 定位型iBeacon),且部署藍(lán)牙iBeacon 不需要額外布設(shè)電纜[3],這些優(yōu)點(diǎn)使得藍(lán)牙定位在室內(nèi)定位技術(shù)中更具實(shí)用性;同時(shí),相比Wi-Fi 定位技術(shù),藍(lán)牙受周圍環(huán)境的干擾比較小[4]。因此將其作為展館定位的主要技術(shù)可以以最低的成本大幅提升用戶在展館中的體驗(yàn)。
低能耗藍(lán)牙(Bluetooth Low Energy)是藍(lán)牙技術(shù)聯(lián)盟設(shè)計(jì)和銷售的一種個(gè)人局域網(wǎng)技術(shù)。相比于經(jīng)典藍(lán)牙,低能耗藍(lán)牙旨在保持同等通信范圍的同時(shí)顯著降低功耗和成本。藍(lán)牙技術(shù)聯(lián)盟的低能耗技術(shù)面向包括智能家庭、健康、運(yùn)動(dòng)等多個(gè)市場(chǎng)。其主要優(yōu)點(diǎn)包括能耗低、體積小、成本低,且與現(xiàn)有的大部分手機(jī)、平板電腦和計(jì)算機(jī)兼容。藍(lán)牙技術(shù)聯(lián)盟沿用經(jīng)典藍(lán)牙的規(guī)范內(nèi)容,為低能耗藍(lán)牙定義了一些設(shè)備描述(Profile),這些描述定義了一個(gè)設(shè)備在特定應(yīng)用情景下的工作方式。當(dāng)前所有低功耗應(yīng)用描述都基于通用屬性規(guī)范(Generic Attribute Profile,GATT)。GATT 定義的多層數(shù)據(jù)結(jié)構(gòu),簡(jiǎn)要概括就是服務(wù)(service)可以包含多個(gè)特征(characteristic),每個(gè)特征包含屬性(properties)和值(value),還可以包含多個(gè)描述(descriptor)。
iBeacon 是蘋果公司發(fā)布的IOS7 系統(tǒng)中所配備的新功能。它是低能耗藍(lán)牙技術(shù)的應(yīng)用,iBeacon 通過(guò)配置低能耗藍(lán)牙中名為“通告幀”(Advertising)的廣播幀,實(shí)現(xiàn)在通告幀的有效負(fù)載部分將自主格式的數(shù)據(jù)嵌入其中并進(jìn)行廣播。周邊設(shè)備只要支持低能耗藍(lán)牙,便能接收到iBeacon 所廣播的數(shù)據(jù),并讀取其中特有的ID加以利用。iBeacon 的數(shù)據(jù)包含四個(gè)部分,分別是UUID、Major、Minor 和RSSI。其中UUID 是iBeacon 的通用唯一識(shí)別碼,是獨(dú)一無(wú)二的;Major 和Minor 為iBeacon 的標(biāo)識(shí)信息,Major 為主要字段,而Minor 為次要字段;RSSI 則是接收iBeacon 設(shè)備發(fā)射的信號(hào)強(qiáng)度指標(biāo),可用于計(jì)算iBeacon 設(shè)備與接收端設(shè)備之間的距離[5]。
蜂鳥(niǎo)地圖主要用于三維室內(nèi)地圖制作,為消防、工業(yè)、商業(yè)、交通等領(lǐng)域提供了良好的室內(nèi)地圖解決方案[6]。蜂鳥(niǎo)云平臺(tái)是蜂鳥(niǎo)視圖產(chǎn)品(Fengmap)平臺(tái),提供室內(nèi)地圖、跨平臺(tái)地圖SDK、室內(nèi)定位、在線地圖編輯工具等云端工具。在蜂鳥(niǎo)云平臺(tái)上可以獲得室內(nèi)地圖制作、跨平臺(tái)應(yīng)用開(kāi)發(fā)、室內(nèi)定位集成、行業(yè)地圖解決方案定制等室內(nèi)地圖全流程服務(wù)和支持,并且可以通過(guò)用戶控制臺(tái)管理私有應(yīng)用、私有地圖等。通過(guò)蜂鳥(niǎo)云平臺(tái)云端服務(wù),可將室內(nèi)地圖功能與移動(dòng)APP集成,并發(fā)布到公眾號(hào)或加入Web應(yīng)用管理系統(tǒng)。
3.1.1 信標(biāo)距離計(jì)算模型
藍(lán)牙信號(hào)的空間傳播與其它無(wú)線信號(hào)的傳播一樣,存在著無(wú)線信號(hào)衰減的現(xiàn)象。接收端獲取到發(fā)射端RSSI 強(qiáng)度值通常與兩者之間的距離存在一定的函數(shù)關(guān)系,稱之為傳播損耗模型。本文采用了經(jīng)典的對(duì)數(shù)距離路徑損耗模型作為RSSI 強(qiáng)度與距離之間的換算模型[7]。對(duì)數(shù)距離路徑損耗模型如公式(1)所示:
其中,LP(·)為某一距離的RSSI 信號(hào)強(qiáng)度;d0為發(fā)射端至參考點(diǎn)的距離,d 則為實(shí)際接收端與發(fā)射端的距離;n 是路徑損失比例系數(shù),其表示信號(hào)隨距離增加的損失程度,于室內(nèi)定位而言,該系數(shù)取值3.5[7];χ 是均值為零的高斯分布隨機(jī)變量,根據(jù)文獻(xiàn)[7]此處取值為零。如果以單位1 作為近距離參考點(diǎn)的距離d0,公式(1)則可表示為:
其中A 為發(fā)射端與接收端的實(shí)時(shí)RSSI 信號(hào)強(qiáng)度,R 為參考點(diǎn)的RSSI 信號(hào)強(qiáng)度。因此,根據(jù)公式(2)則可得到接收端與某一藍(lán)牙信標(biāo)(發(fā)射端)的相對(duì)距離。
3.1.2 三邊測(cè)量定位算法
三邊測(cè)量定位算法利用三個(gè)已知位置坐標(biāo)的輔助定位點(diǎn)來(lái)計(jì)算待測(cè)點(diǎn)的實(shí)際位置[8]。如圖1所示,設(shè)P1,P2,P3為三個(gè)已知的輔助定位點(diǎn),其坐標(biāo)分別為(x1,y1),(x2,y2),(x3,y3),則待測(cè)點(diǎn)PD的坐標(biāo)xD=(xD,yD)可由公式(3)計(jì)算得到:
圖1:三邊測(cè)量定位原理
其中d1,d2,d3分別為PD到P1,P2,P3的距離。就本文研究的實(shí)際應(yīng)用場(chǎng)景而言,展館中通常部署了與展品同數(shù)量的信標(biāo),因此在一定的有效信號(hào)距離內(nèi),可獲得的信標(biāo)數(shù)量通常多于3 個(gè)。因此,為了提高定位的效果,本文將接收端可獲得的藍(lán)牙信標(biāo)全部用于待測(cè)點(diǎn)PD的位置估計(jì),由此構(gòu)成了一個(gè)由多邊定位的超定方程組。假設(shè)n×2 矩陣P 為n 個(gè)輔助定位點(diǎn)的坐標(biāo),則PD的位置可通過(guò)最優(yōu)化求解公式(3)得到:
其中d=(d1,d2,…,dn)T,dn為由公式(2)計(jì)算得到的待測(cè)點(diǎn)PD到第n 個(gè)輔助定位點(diǎn)Pn的距離。
3.2.1 藍(lán)牙相關(guān)配置
根據(jù)三邊測(cè)量定位算法的設(shè)計(jì),本文基于微信小程序開(kāi)發(fā)接口實(shí)現(xiàn)了定位功能。首先使用微信API wx.openBluetoothAdapter()方法開(kāi)啟藍(lán)牙適配器,再調(diào)用wx.startBeaconDiscovery()方法開(kāi)啟iBeacon 設(shè)備的掃描,并通過(guò)UUID 參數(shù)篩選出指定的設(shè)備。開(kāi)啟掃描iBeacon 設(shè)備成功后,使用wx.onBeaconUpdate()方法監(jiān)聽(tīng)iBeacon 設(shè)備的信息變化,并在該方法的回調(diào)函數(shù)中處理返回的iBeacon 信息。
3.2.2 用戶定位分析
創(chuàng)建一個(gè)IBeacon 類用于存儲(chǔ)iBeacon 信息,同時(shí)在數(shù)據(jù)庫(kù)中存儲(chǔ)了每個(gè)展品上部署的iBeacon 設(shè)備信息,信息結(jié)構(gòu)與該類結(jié)構(gòu)相同。
在app 實(shí)例的globalData 中聲明全局變量currentiBeaconList 數(shù)組用于存儲(chǔ)當(dāng)前周圍的iBeacon 設(shè)備信息。在wx.onBeaconUpdate()的回調(diào)函數(shù)中會(huì)返回用戶周圍iBeacon 設(shè)備信息的更新值,并對(duì)每次更新的iBeacon 信息處理,若currentiBeaconList 中存在iBeacon則更新其值,若不存在則加入到數(shù)組中。
RSSI 數(shù)值單位為dBm,用以表示信號(hào)強(qiáng)度[9],根據(jù)公式(2),則通過(guò)該值可計(jì)算設(shè)備與用戶之間的距離。程序獲取當(dāng)前iBeacon設(shè)備列表中距離用戶最近的設(shè)備,將其與數(shù)據(jù)庫(kù)中的iBeacon 庫(kù)進(jìn)行匹配,得到該iBeacon 設(shè)備對(duì)應(yīng)的展品以及該展品所在的區(qū)域,以此對(duì)用戶進(jìn)行定位。
在全局變量中定義一個(gè)locationArea 用于存儲(chǔ)當(dāng)前用戶所在的區(qū)域,在每次周圍iBeacon 設(shè)備的信息更新后對(duì)currentiBeaconList數(shù)組中的iBeacon 按RSSI 值從小到大排序,讀取數(shù)組中iBeacon 設(shè)備的歸屬區(qū)域并賦值給locationArea。在用戶移動(dòng)的過(guò)程中會(huì)實(shí)時(shí)的更新周圍iBeacon 設(shè)備信息,因此用戶附近的設(shè)備列表和用戶所在區(qū)域都將得到實(shí)時(shí)更新。
3.2.3 展品定位分析
iBeacon 設(shè)備的RSSI 值越小,距離設(shè)備越遠(yuǎn),反之越近。通過(guò)實(shí)際測(cè)試,當(dāng)RSSI 值大于-45 時(shí),能夠較為精準(zhǔn)的區(qū)分兩個(gè)距離較近的iBeacon,定位到相應(yīng)的位置并展示相關(guān)展品的信息。
從currentiBeaconList 中獲取到RSSI 值最大的iBeacon 設(shè)備,并對(duì)RSSI 值進(jìn)行驗(yàn)證,就能在用戶靠近展品時(shí)準(zhǔn)確獲取到該展品的信息。
小程序首頁(yè)頂部設(shè)計(jì)為展館圖片輪播,用戶可在此查看展館大致布局,圖2 為首頁(yè)界面。其次用戶可查看展館公告獲取展館最近發(fā)布的信息列表,并查看不同公告的詳情。在幫助中心中用戶可以獲取展館相關(guān)服務(wù),如獲取預(yù)約講解服務(wù)的相關(guān)流程等。
圖2:展館信息界面
在系統(tǒng)中,展館的展品匯總為列表展示給用戶,用戶可在列表頁(yè)面中查看不同區(qū)域的展品列表。展品列表中還可以通過(guò)關(guān)鍵詞或展品編號(hào)搜索展品,程序?qū)⒑Y選出相應(yīng)的展品展示給用戶。用戶進(jìn)入展品詳情頁(yè)后可以獲取展品更多的詳細(xì)信息,如展品圖片、展品所在區(qū)域、展品的詳細(xì)介紹以及顯示展品定位功能等。
展館地圖為用戶展示展館的整體結(jié)構(gòu)以及展品的分布狀況。系統(tǒng)可以通過(guò)地圖的指南針獲取朝向信息并在使用過(guò)程中為用戶顯示地圖朝向。地圖分2D 和3D 兩種顯示模式,并為用戶提供自行切換顯示模式。圖3 (a)為地圖界面的2D 模式,圖3 (b)為地圖界面的3D 模式。地圖中的展品將顯示品名標(biāo)簽,用戶可通過(guò)地圖控件切換地圖中的標(biāo)簽顯示,使地圖界面更為簡(jiǎn)潔。在展品詳情頁(yè)面中用戶可以通過(guò)展品定位功能跳轉(zhuǎn)至地圖中相應(yīng)展品的位置,且通過(guò)該展品查看其相關(guān)信息。
圖3:地圖相關(guān)界面
系統(tǒng)根據(jù)周圍展品的iBeacon 信號(hào)展示用戶附近的展品列表,列表中的展品按距離從近到遠(yuǎn)排序。同時(shí)根據(jù)展品iBeacon 設(shè)備的RSSI 值,分析與用戶周圍距離最近的展品,通過(guò)三邊測(cè)量定位算法,判定用戶所在區(qū)域位置,并在周圍展品列表的上方顯示用戶所在區(qū)域。當(dāng)點(diǎn)擊地圖界面定位按鈕時(shí),則高亮顯示其所在區(qū)域。而當(dāng)用戶接近展品到一定距離時(shí),地圖頁(yè)面則會(huì)移動(dòng)到相應(yīng)展品的位置并自動(dòng)彈出該展品的信息。
本文結(jié)合低能耗藍(lán)牙iBeacon 設(shè)備、蜂鳥(niǎo)視圖API 和微信小程序?qū)崿F(xiàn)了一款用于展館導(dǎo)覽及定位的小程序。通過(guò)展品上的藍(lán)牙設(shè)備信號(hào)對(duì)用戶進(jìn)行區(qū)域定位,并使用蜂鳥(niǎo)云開(kāi)發(fā)繪制展館地圖供用戶使用。在本文設(shè)計(jì)的系統(tǒng)中,用戶可通過(guò)地圖查看展品位置,并與地圖中的展品交互,查看展品詳細(xì)信息,滿足了展館用戶的定位與導(dǎo)覽需求。