侯明祥,劉振遠(yuǎn),方維維,才子昕,劉 銘,路紅英
(北京交通大學(xué) 計(jì)算機(jī)與信息技術(shù)學(xué)院,北京 100044)
基于藍(lán)牙信標(biāo)和微信的位置服務(wù)系統(tǒng)研究
侯明祥,劉振遠(yuǎn),方維維,才子昕,劉 銘,路紅英
(北京交通大學(xué) 計(jì)算機(jī)與信息技術(shù)學(xué)院,北京 100044)
隨著人們對(duì)實(shí)時(shí)位置信息需求的不斷增長(zhǎng),基于位置的服務(wù)因此得到快速發(fā)展。但由于GPS定位技術(shù)無法在室內(nèi)環(huán)境下實(shí)現(xiàn)定位,因此現(xiàn)有的室外位置服務(wù)系統(tǒng)無法有效地應(yīng)用在室內(nèi)環(huán)境中。設(shè)計(jì)并實(shí)現(xiàn)了一種基于藍(lán)牙信標(biāo)和微信的新型位置服務(wù)系統(tǒng)。該系統(tǒng)使用藍(lán)牙信標(biāo)作為信號(hào)發(fā)射基站,將移動(dòng)終端設(shè)備作為客戶端,使用微信提供的搖一搖周邊功能作為系統(tǒng)入口,通過調(diào)用微信公眾平臺(tái)提供的周邊服務(wù)開發(fā)接口,動(dòng)態(tài)監(jiān)聽客戶端鄰近基站發(fā)送的藍(lán)牙信號(hào),并從中解析出鄰近基站的標(biāo)識(shí)、信號(hào)強(qiáng)度等信息,并在此基礎(chǔ)上實(shí)現(xiàn)客戶端實(shí)時(shí)定位、周邊信息推薦和動(dòng)態(tài)導(dǎo)航等功能。經(jīng)過真實(shí)環(huán)境測(cè)試,結(jié)果表明該系統(tǒng)在功能上達(dá)到了預(yù)期效果,易于部署和使用,并且可以在多種環(huán)境下正常提供服務(wù),擴(kuò)展了位置服務(wù)的應(yīng)用范圍。
藍(lán)牙信標(biāo);微信;室內(nèi)定位;信息推薦;導(dǎo)航
隨著移動(dòng)互聯(lián)網(wǎng)技術(shù)的進(jìn)步和“互聯(lián)網(wǎng)+”概念的興起,位置服務(wù)系統(tǒng)(Location Based Service,LBS)[1]正廣泛應(yīng)用于人們的生活。目前市場(chǎng)上主流的位置服務(wù)系統(tǒng),如百度地圖和美團(tuán)外賣等,均采用GPS定位技術(shù)[2]獲取用戶的地理位置,并以移動(dòng)應(yīng)用(App)形式為用戶提供位置服務(wù),極大地方便了人們的生活。然而這種位置服務(wù)系統(tǒng)也存在著以下缺點(diǎn):一方面,GPS定位技術(shù)在衛(wèi)星信號(hào)受到干擾時(shí)定位效果不佳,尤其是室內(nèi)環(huán)境中,通常無法為用戶提供位置服務(wù);另一方面,采用App的應(yīng)用形式不便于系統(tǒng)的開發(fā)和使用,系統(tǒng)開發(fā)者需要針對(duì)不同的客戶端系統(tǒng)使用對(duì)應(yīng)的編程語(yǔ)言開發(fā)界面和功能相同或相似的App,增加了系統(tǒng)開發(fā)難度和成本;同時(shí),用戶在使用App時(shí)需要提前下載和安裝,不便于該系統(tǒng)的推廣和用戶粘性的維持。
為了彌補(bǔ)GPS定位技術(shù)在室內(nèi)環(huán)境下定位效果的不足,出現(xiàn)了多種室內(nèi)位置服務(wù)的技術(shù)。其中,低功耗藍(lán)牙技術(shù)因其低成本、低功耗及快速連接等特點(diǎn),成為室內(nèi)位置服務(wù)的熱門技術(shù)之一[3]。目前,低功耗藍(lán)牙已經(jīng)發(fā)展得相當(dāng)成熟,國(guó)內(nèi)外也出現(xiàn)了多種以低功耗藍(lán)牙為基礎(chǔ)的服務(wù)應(yīng)用。如在市場(chǎng)營(yíng)銷中,實(shí)現(xiàn)對(duì)消費(fèi)者的位置追蹤,從而進(jìn)行針對(duì)性營(yíng)銷[4];在室內(nèi)環(huán)境中,通過高效的移動(dòng)偵測(cè),確定用戶位置,優(yōu)化室內(nèi)服務(wù),實(shí)現(xiàn)“智能建筑”[5];在醫(yī)院中實(shí)現(xiàn)用戶定位,可以幫助病人快速查找門診或病房[6];微信搖一搖在2015年開始支持低功耗藍(lán)牙,通過搖一搖周邊實(shí)現(xiàn)特定信息的推送。低功耗藍(lán)牙正在改變著零售商、組織活動(dòng)者、教育或醫(yī)療機(jī)構(gòu)在室內(nèi)環(huán)境下與用戶的交互方式,對(duì)未來位置服務(wù)的發(fā)展具有重要意義[7]。
文中給出了一套基于藍(lán)牙信標(biāo)[8]和微信的位置服務(wù)系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)方法。該方法使用藍(lán)牙信標(biāo)作為信號(hào)發(fā)射基站,使用手機(jī)或平板電腦等移動(dòng)終端設(shè)備作為客戶端,將用戶數(shù)量龐大的微信移動(dòng)App作為系統(tǒng)入口。通過微信公眾平臺(tái)的頁(yè)面綁定機(jī)制實(shí)現(xiàn)信號(hào)發(fā)射基站與信息頁(yè)面的綁定,通過調(diào)用其搖一搖周邊開發(fā)接口(JS API)[9]動(dòng)態(tài)獲取信號(hào)發(fā)射基站的標(biāo)識(shí)和距離等信息,在此基礎(chǔ)上實(shí)現(xiàn)客戶端定位、周邊信息推薦和動(dòng)態(tài)導(dǎo)航功能。
如圖1所示,系統(tǒng)從總體架構(gòu)上可以分為信號(hào)發(fā)射基站、微信公眾平臺(tái)、微信App端、服務(wù)器端和數(shù)據(jù)庫(kù)五部分,各部分的功能如下所述:
(1)信號(hào)發(fā)射基站(以下簡(jiǎn)稱“基站”)不間斷地發(fā)射藍(lán)牙信號(hào),微信App自身具有接收和解析藍(lán)牙信號(hào)的功能,可以從信號(hào)中解析出基站的唯一標(biāo)識(shí)、發(fā)射功率等基本信息,作為獲取信息頁(yè)面和客戶端定位的參數(shù)。
(2)微信公眾平臺(tái)的主要功能是實(shí)現(xiàn)基站與信息頁(yè)面的綁定和提供JS API。由于本系統(tǒng)使用微信搖一搖周邊功能作為系統(tǒng)入口,因此需要在搖一搖周邊中獲取綁定頁(yè)面的鏈接,微信公眾平臺(tái)的頁(yè)面綁定機(jī)制確保微信在監(jiān)測(cè)到基站信號(hào)時(shí)可以獲取該基站綁定的信息頁(yè)面;JS API是由微信公眾平臺(tái)提供的,使開發(fā)者能夠在自己的應(yīng)用上實(shí)現(xiàn)動(dòng)態(tài)地搜索鄰近基站信號(hào)的一套程序接口,該套接口動(dòng)態(tài)返回鄰近基站的標(biāo)識(shí)、基站與客戶端之間的距離等信息,調(diào)用JS API時(shí)需要提供接口調(diào)用憑證。
(3)微信App端的主要功能包括獲取信息頁(yè)面、動(dòng)態(tài)監(jiān)聽鄰近基站信號(hào)和數(shù)據(jù)可視化顯示。用戶使用搖一搖功能時(shí),微信自動(dòng)監(jiān)測(cè)并解析鄰近基站信號(hào),根據(jù)解析出的基站標(biāo)識(shí)從微信公眾平臺(tái)中獲取基站綁定的信息頁(yè)面;為了在系統(tǒng)運(yùn)行過程中動(dòng)態(tài)監(jiān)聽鄰近基站信號(hào),客戶端從微信公眾平臺(tái)調(diào)用JS API,接口調(diào)用憑證由服務(wù)器提供,接口返回的數(shù)據(jù)被推送至服務(wù)器端;微信App端使用微信內(nèi)嵌的網(wǎng)頁(yè)瀏覽器顯示服務(wù)器的返回結(jié)果。
(4)服務(wù)器端的主要功能包括為微信App端提供JS API接口調(diào)用憑證、為系統(tǒng)提供計(jì)算服務(wù)和存儲(chǔ)系統(tǒng)資源。服務(wù)器從微信公眾平臺(tái)請(qǐng)求JS API接口調(diào)用憑證,計(jì)算過程的主要參數(shù)來自于微信App端推送的數(shù)據(jù)和數(shù)據(jù)庫(kù)存儲(chǔ)的信息,系統(tǒng)運(yùn)行過程中產(chǎn)生的數(shù)據(jù)(如用戶標(biāo)識(shí)、用戶行為記錄)被存儲(chǔ)至數(shù)據(jù)庫(kù);系統(tǒng)中所有在地圖上顯示的圖片,包括地圖圖層和位置圖標(biāo)等資源都存儲(chǔ)在服務(wù)器端,為了避免用戶在放大和縮小地圖時(shí)造成圖片失真的問題,上述資源均采用SVG格式的圖片。服務(wù)器的計(jì)算結(jié)果和圖片資源以HTML5頁(yè)面的形式推送至微信App端內(nèi)嵌瀏覽器上顯示,JS API接口調(diào)用憑證也被注入到HTML5頁(yè)面的腳本程序中。
(5)數(shù)據(jù)庫(kù)中存儲(chǔ)基站信息、位置信息等預(yù)置數(shù)據(jù)和系統(tǒng)運(yùn)行過程中產(chǎn)生的歷史和統(tǒng)計(jì)數(shù)據(jù),原則上數(shù)據(jù)庫(kù)和服務(wù)器可位于同一主機(jī)。
圖1 系統(tǒng)總體架構(gòu)
系統(tǒng)總體上可以提供實(shí)時(shí)定位、周邊推薦、動(dòng)態(tài)導(dǎo)航和數(shù)據(jù)存儲(chǔ)四種不同的功能。
實(shí)時(shí)定位功能將用戶當(dāng)前位置實(shí)時(shí)展現(xiàn)在客戶端,由信號(hào)監(jiān)聽模塊、噪音過濾模塊、位置計(jì)算模塊和定位顯示模塊實(shí)現(xiàn);周邊推薦功能推送符合用戶需求的周邊信息,由推薦分析模塊和推薦顯示模塊實(shí)現(xiàn);動(dòng)態(tài)導(dǎo)航功能提供用戶當(dāng)前位置到達(dá)目標(biāo)位置的一到多條最優(yōu)路線,并根據(jù)用戶當(dāng)前位置實(shí)時(shí)更新路線,由路線查詢模塊和路線顯示模塊實(shí)現(xiàn);數(shù)據(jù)存取功能實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作,具體操作的數(shù)據(jù)將在1.3節(jié)詳細(xì)闡述,該功能為其他功能的實(shí)現(xiàn)提供數(shù)據(jù)庫(kù)操作接口。各模塊功能詳細(xì)描述如下:
信號(hào)監(jiān)聽模塊:通過調(diào)用JS API實(shí)現(xiàn)對(duì)鄰近基站信號(hào)的動(dòng)態(tài)監(jiān)聽和解析,并將解析后的數(shù)據(jù)推送至噪音過濾模塊。JS API中獲取藍(lán)牙基站信息的接口包括開始監(jiān)聽接口(startSearchBeacos)、動(dòng)態(tài)監(jiān)聽接口(onSearchBeacons)和停止監(jiān)聽接口(stopSearchBeacons)。其中,動(dòng)態(tài)監(jiān)聽接口返回的數(shù)據(jù)中包含了基站標(biāo)識(shí)、基站與客戶端之間的距離以及距離的精度等。
噪音過濾模塊:接收信號(hào)監(jiān)聽模塊推送的基站信息,并使用高斯濾波算法[10]對(duì)基站與客戶端之間的距離進(jìn)行平滑處理,去除突發(fā)噪聲影響,獲取相對(duì)穩(wěn)定的距離值,處理后的基站信息推送至位置計(jì)算模塊。
位置計(jì)算模塊:根據(jù)噪音過濾模塊推送的基站信息,從數(shù)據(jù)庫(kù)中獲取基站對(duì)應(yīng)的位置坐標(biāo),結(jié)合基站與客戶端之間的距離和距離精度等信息計(jì)算出用戶當(dāng)前位置,并推送至定位顯示模塊、推薦分析模塊和路線查詢模塊;根據(jù)用戶當(dāng)前位置,從數(shù)據(jù)庫(kù)中獲取距離用戶最近的位置對(duì)應(yīng)的信息頁(yè)面鏈接,并推送至位置顯示模塊;將用戶當(dāng)前位置和當(dāng)前時(shí)間等數(shù)據(jù)作為用戶行為記錄存儲(chǔ)至數(shù)據(jù)庫(kù)中。計(jì)算用戶當(dāng)前位置的具體技術(shù)細(xì)節(jié)將在第2.1節(jié)詳細(xì)闡述。
定位顯示模塊:顯示位置計(jì)算模塊推送的用戶當(dāng)前位置和推送信息頁(yè)面,用戶當(dāng)前位置在地圖頁(yè)面中顯示,通過調(diào)用第三方地圖開發(fā)JS插件(如LeafletJS等)實(shí)現(xiàn)地圖的顯示,通過調(diào)用HTML5封裝的移動(dòng)設(shè)備傳感器開發(fā)接口[11]獲取用戶當(dāng)前方向;信息頁(yè)面與地圖頁(yè)面并列顯示。
推薦分析模塊:從數(shù)據(jù)庫(kù)中獲取用戶行為記錄,結(jié)合位置計(jì)算模塊推送的用戶當(dāng)前位置,分析符合用戶需求的周邊信息,分析過程中的主要技術(shù)將在2.1節(jié)詳細(xì)闡述。
推薦顯示模塊:顯示推薦分析模塊的分析結(jié)果。與位置顯示模塊對(duì)應(yīng),推薦信息分別在信息頁(yè)面和地圖頁(yè)面顯示。
路線查詢模塊:從數(shù)據(jù)庫(kù)中獲取位置信息,根據(jù)位置計(jì)算模塊推送的用戶當(dāng)前位置和目標(biāo)位置查詢出一條或多條可行路線,路線查詢過程中充分結(jié)合路線長(zhǎng)度、路線人流量?jī)煞N因素,具體技術(shù)將在2.3節(jié)詳細(xì)闡述。
路線顯示模塊:顯示路線查詢模塊的查詢結(jié)果,導(dǎo)航過程中,根據(jù)位置計(jì)算模塊推送的用戶當(dāng)前位置,動(dòng)態(tài)擦除用戶已經(jīng)走過的路線。
通過各模塊具體功能的分析,各模塊功能之間的關(guān)系如圖2所示。
數(shù)據(jù)庫(kù)中存儲(chǔ)的表格主要包括:基站表、位置表、用戶表和行為記錄表?;颈泶鎯?chǔ)所有基站的信息,包括基站標(biāo)識(shí)和位置坐標(biāo);位置表存儲(chǔ)地圖上所有位置的信息,包括位置標(biāo)識(shí)、位置坐標(biāo)、位置類型、位置描述和位置對(duì)應(yīng)的信息頁(yè)面鏈接;用戶信息表存儲(chǔ)用戶標(biāo)識(shí)和用戶登錄時(shí)間,微信公眾平臺(tái)為每個(gè)通過微信搖一搖進(jìn)入系統(tǒng)的用戶分配唯一的隨機(jī)標(biāo)識(shí)OpenId,系統(tǒng)從微信公眾平臺(tái)獲取用戶OpenId并作為該用戶在本系統(tǒng)中的唯一標(biāo)識(shí);行為記錄表存放用戶行為記錄,包括用戶標(biāo)識(shí)、位置標(biāo)識(shí)、用戶逗留時(shí)間。數(shù)據(jù)庫(kù)各表的詳細(xì)設(shè)計(jì)如表1所示。
圖2 模塊功能關(guān)系圖
表名列名類型允許為空說明基站表UUIDchar(30)否基站標(biāo)識(shí)LocateXfloat否橫坐標(biāo)LocateYfloat否縱坐標(biāo)位置表Tagchar(30)否位置標(biāo)識(shí)LocationXfloat否位置橫坐標(biāo)LocationYfloat否位置縱坐標(biāo)Typeint否位置類型Describechar(50)是位置描述DescribePagechar(30)是信息頁(yè)面鏈接用戶表OpenIdchar(30)否用戶標(biāo)識(shí)LoginTimetime是登錄時(shí)間行為記錄表UserTagchar(30)否用戶標(biāo)識(shí)LocationTagchar(30)否位置標(biāo)識(shí)Durationint否逗留時(shí)間
定位功能使用的基本算法是多邊定位算法[12],將基站作為錨節(jié)點(diǎn),其坐標(biāo)記為(xi,yi)(i表示第i個(gè)基站,i=1,2,…,N)。將移動(dòng)客戶端作為未知節(jié)點(diǎn),其坐標(biāo)記為(x,y)。移動(dòng)客戶端與基站之間的距離記為di,根據(jù)多邊定位的原理可得到方程組(1)。
(1)
使用最小二乘法可計(jì)算出客戶端坐標(biāo):
(2)
其中
(3)
(4)
使用式(2)計(jì)算客戶端位置。通過多次測(cè)試發(fā)現(xiàn),當(dāng)每隔5 m部署一個(gè)基站時(shí),定位的誤差在2 m以內(nèi),可以達(dá)到理想的定位效果,且部署密度越大,誤差越小,但相應(yīng)的部署成本也會(huì)增大。
由于藍(lán)牙基站的定位距離精度,按照標(biāo)準(zhǔn)可分為4個(gè)級(jí)別:Immediate(小于0.5 m)、Near(小于2 m)、Far(小于30 m)和Unknown(大于30 m),因此當(dāng)客戶端監(jiān)測(cè)到基站距離精度為Immediate時(shí),用戶與該基站的距離在0.5 m以內(nèi),此時(shí)將基站位置作為用戶當(dāng)前位置可以將定位誤差減小到0.5 m以內(nèi)。使用多邊定位與Immediate校準(zhǔn)相結(jié)合的定位方式,可以減小基站部署成本,提高系統(tǒng)定位精度。
根據(jù)以上分析,定位模塊的偽代碼如下:
獲取各個(gè)基站的信息存儲(chǔ)至集合beacons
布爾型變量isImmediate標(biāo)記客戶端位置是否已校準(zhǔn)
while(beacons不為空) {
for(獲取beacons中的一個(gè)元素beacon){
獲取beacon距離的精度proximity
if(proximity等于Immediate){
將beacon的位置作為客戶端位置
isImmediate置為真
break
}
}
if(isImmediate為假)
根據(jù)式(2)計(jì)算客戶端位置
}
推薦功能的實(shí)現(xiàn)基于兩種不同的推薦方案:默認(rèn)推薦方案和基于用戶偏好的推薦方案。
對(duì)于首次使用系統(tǒng)的用戶,用戶行為記錄表中沒有該用戶的行為記錄或記錄較少,因此無法分析出用戶偏好,此時(shí)系統(tǒng)采用默認(rèn)推薦方案。默認(rèn)推薦方案是在系統(tǒng)部署前預(yù)置的若干條不依賴于用戶偏好的推薦規(guī)則,如優(yōu)先推薦促銷商品、優(yōu)先推薦游覽人次最多的景點(diǎn)等規(guī)則,由于這些規(guī)則沒有結(jié)合用戶偏好,因此默認(rèn)推薦方案無法實(shí)現(xiàn)個(gè)性化推薦。
對(duì)于行為記錄充足的用戶,系統(tǒng)采用基于用戶偏好的推薦方案,根據(jù)用戶行為記錄,分析用戶偏好,為其推送個(gè)性化信息。分析用戶偏好基于兩個(gè)標(biāo)準(zhǔn):用戶在各位置逗留的時(shí)間與用戶使用系統(tǒng)總時(shí)間的比例、用戶到達(dá)個(gè)位置的次數(shù)與用戶行為記錄總數(shù)的比例。例如,通過對(duì)用戶行為記錄表的分析,發(fā)現(xiàn)用戶在公園逗留的時(shí)間占其使用本系統(tǒng)總時(shí)間的50%,或者用戶到達(dá)公園的次數(shù)占用戶行為記錄總數(shù)的50%,則可以判斷該用戶對(duì)休閑娛樂比較感興趣。當(dāng)其到達(dá)一個(gè)新的位置或者重新登錄時(shí),系統(tǒng)為其推送周邊的公園、植物園和廣場(chǎng)等休閑位置。
導(dǎo)航功能的實(shí)現(xiàn)基于K最短路徑[13]的基本思想:根據(jù)已經(jīng)查詢到的k-1條最優(yōu)路徑,使用Dijkstra算法[14]計(jì)算所有候選偏離點(diǎn)到達(dá)終點(diǎn)的最優(yōu)路徑,并將此路徑與起點(diǎn)到達(dá)該候選偏離點(diǎn)的路徑拼接構(gòu)成候選路徑,從所有的候選路徑中選擇最優(yōu)路徑作為第k條最優(yōu)路徑,如此循環(huán),直到查找到的路徑數(shù)量滿足給定需求K。本系統(tǒng)中,構(gòu)成路徑的各個(gè)路段的花費(fèi)由路段長(zhǎng)度和路段擁堵情況共同決定。計(jì)算方法是首先給所有路段賦予相同大小的花費(fèi),然后通過以下兩個(gè)步驟對(duì)花費(fèi)進(jìn)行調(diào)整:
(1)根據(jù)位置表計(jì)算路段長(zhǎng)度,如果路段較長(zhǎng)則增大路段花費(fèi),否則減小路段花費(fèi);
(2)通過分析用戶行為記錄表,計(jì)算當(dāng)前路段的人流量,如果人流量較大則增大路段花費(fèi),否則減小路段花費(fèi)。
獲取前K條最優(yōu)路徑的偽代碼如下:
根據(jù)點(diǎn)位表和路段消費(fèi)計(jì)算方法初始化圖G(v,e)
初始化集合A和B,分別用于存儲(chǔ)前K條最優(yōu)路徑和備選路徑
用戶當(dāng)前點(diǎn)位標(biāo)記為source,目標(biāo)點(diǎn)位標(biāo)記為sink
使用Dijkstra算法搜素source到sink的最優(yōu)路徑存儲(chǔ)至A
for(k的范圍為[1,K]) {
從A中獲取第k-1條最優(yōu)路徑,標(biāo)記為bKPath
for(遍歷bKPath中除最后一個(gè)節(jié)點(diǎn)之外的所有節(jié)點(diǎn),第i個(gè)節(jié)點(diǎn)標(biāo)記為iNode) {
將bKPath中source到達(dá)iNode的子路徑標(biāo)記為rootPath
for(遍歷A中所有路徑,當(dāng)前路徑標(biāo)記為p) {
路徑p中從source到達(dá)iNode的子路徑,標(biāo)記為pRootPath
if(rootPath與pRootPath重合) {
p中第i與第i+1節(jié)點(diǎn)之間的邊記為pRootEdge
從G中刪除pRootEdge
}
}
for(獲取rootPath中除iNode之外的節(jié)點(diǎn)rootPathNode)
從G中刪除rootPathNode
使用Dijkstra算法搜索iNode到sink的最優(yōu)路徑,標(biāo)記為sPath
拼接rootPath和sPath,標(biāo)記為totalPath
將totalPath存儲(chǔ)至B
恢復(fù)G中所有刪除的邊和點(diǎn)
}
if(B中沒有元素) break
獲取集合B中的最優(yōu)路線,標(biāo)記為kShortest
將kShortest添加至集合A,并清空集合B
}
returnA;
系統(tǒng)測(cè)試階段,選擇某商場(chǎng)一層的一塊邊長(zhǎng)10 m的正方形區(qū)域作為實(shí)驗(yàn)場(chǎng)地,在場(chǎng)地的四個(gè)頂點(diǎn)以及對(duì)角線的交叉點(diǎn)各部署一個(gè)基站;客戶端選用操作系統(tǒng)為Android 5.1的手機(jī),支持藍(lán)牙低功耗技術(shù),微信版本為6.3.27;服務(wù)端部署在新浪應(yīng)用引擎上,測(cè)試過程中確??蛻舳丝梢赃B接網(wǎng)絡(luò)并開啟藍(lán)牙服務(wù),具體的測(cè)試結(jié)果如下。
打開微信客戶端,通過微信搖一搖獲取系統(tǒng)頁(yè)面鏈接,點(diǎn)擊鏈接進(jìn)入系統(tǒng)。首先顯示的是當(dāng)前位置的信息頁(yè)面,該頁(yè)面與地圖頁(yè)面并列顯示,點(diǎn)擊菜單欄“定位導(dǎo)航”按鈕切換至地圖頁(yè)面,用戶從A點(diǎn),沿著正方形場(chǎng)地的邊界,依次走過C點(diǎn)、E點(diǎn)和D點(diǎn),最后回到A點(diǎn)。測(cè)試過程中記錄下的路線如圖3(左)所示,定位誤差分析結(jié)果如圖4所示。
圖3 定位效果及導(dǎo)航功能測(cè)試結(jié)果
通過對(duì)定位結(jié)果的分析,系統(tǒng)定位的誤差在3 m以內(nèi),而且距離基站越近誤差越小,平均定位誤差為1.2 m。測(cè)試場(chǎng)地所在的商場(chǎng)長(zhǎng)度大約70 m,寬度大約80 m。按照本次實(shí)驗(yàn)的部署方法,商場(chǎng)一層在最多部署128個(gè)基站的情況下,即可達(dá)到3 m以內(nèi)的定位精度,基本可滿足普通移動(dòng)用戶的定位需求,如需進(jìn)一步提高,可適當(dāng)增加基站部署密度。
圖4 定位誤差分析
測(cè)試推送功能的過程中,分別以兩個(gè)不同的微信賬號(hào)登錄客戶端微信,其中一個(gè)賬號(hào)從未登陸過本系統(tǒng),模擬首次使用系統(tǒng)的用戶A;另一個(gè)賬號(hào)多次登錄過本系統(tǒng),并且每次都在餐廳附近逗留,模擬有充足行為記錄的用戶B。當(dāng)兩個(gè)用戶接近地圖中的同一個(gè)位置時(shí),在信息頁(yè)面的最下方,系統(tǒng)為用戶A推薦了周邊的促銷信息,為用戶B推薦了周邊的餐飲信息;切換至地圖頁(yè)面,兩個(gè)用戶對(duì)應(yīng)的推薦信息均以滑動(dòng)菜單的形式顯示在地圖下方,點(diǎn)擊滑動(dòng)菜單的“去這里”選項(xiàng),系統(tǒng)進(jìn)入導(dǎo)航模式。地點(diǎn)詳情頁(yè)面和地圖頁(yè)面的推薦功能測(cè)試結(jié)果如圖5所示。
圖5 推薦功能測(cè)試結(jié)果
導(dǎo)航模式中,當(dāng)前位置到達(dá)目標(biāo)位置的多條方案以滑動(dòng)菜單的形式顯示在地圖下方,點(diǎn)擊菜單可以查看對(duì)應(yīng)的方案在地圖上的路線及該方案耗時(shí),導(dǎo)航過程中的系統(tǒng)界面顯示如圖3(右)所示。
導(dǎo)航功能的測(cè)試結(jié)果表明:系統(tǒng)為用戶選擇的是所有可行路線中距離最短的路線;導(dǎo)航過程中,地圖上代表用戶當(dāng)前位置的圖標(biāo)在實(shí)時(shí)刷新,用戶已經(jīng)行走過的路線也被自動(dòng)擦除;滑動(dòng)菜單欄中始終顯示用戶的當(dāng)前位置和目標(biāo)位置;當(dāng)用戶達(dá)到目的位置后,系統(tǒng)會(huì)自動(dòng)結(jié)束導(dǎo)航并返回至定位模式,繼續(xù)提供實(shí)時(shí)定位服務(wù)。
實(shí)現(xiàn)了一種基于藍(lán)牙和微信的位置服務(wù)系統(tǒng),系統(tǒng)具有部署方便、定位效果良好、在室外和室內(nèi)環(huán)境下均能正常工作以及便于向移動(dòng)終端推送信息等優(yōu)點(diǎn)。在實(shí)際的應(yīng)用場(chǎng)景中進(jìn)行了測(cè)試,結(jié)果表明該系統(tǒng)在功能方面達(dá)到了預(yù)期的效果?;谒{(lán)牙和微信的位置服務(wù)系統(tǒng)在以下方面有待于進(jìn)一步研究:結(jié)合客戶端加速度傳感器,進(jìn)一步提高系統(tǒng)定位的精度;結(jié)合機(jī)器學(xué)習(xí)的相關(guān)研究,優(yōu)化系統(tǒng)推薦算法。
[1] 劉 成.LBS定位技術(shù)研究與發(fā)展現(xiàn)狀[J].導(dǎo)航定位學(xué)報(bào),2013(1):78-83.
[2] 張 惠,張 健,梁興忠,等.全球定位系統(tǒng)(GPS)技術(shù)的發(fā)展現(xiàn)狀及未來發(fā)展趨勢(shì)[J].儀器儀表標(biāo)準(zhǔn)化與計(jì)量,2011(2):38-40.
[3] OKSAR I.A Bluetooth signal strength based indoor localization method[C]//International conference on systems,signals and image processing.[s.l.]:IEEE,2014.
[4] NEWMAN N.Apple iBeacon technology briefing[J].Journal of Direct Data & Digital Marketing Practice,2014,15(3):222-225.
[5] CONTE G,DE MARCHI M,NACCI A A,et al.BlueSentinel:a first approach using iBeacon for an energy efficient occupancy detection system[C]//ACM conference on embedded systems for energy-efficient buildings.[s.l.]:ACM,2014:11-19.
[6] YANG J,WANG Z,ZHANG X.An iBeacon-based indoor positioning systems for hospitals[J].International Journal of Smart Home,2015,9(7):161-168.
[7] FARDH K,CHEN Y,SON K K.Indoor positioning of mobile devices with agile iBeacon deployment[C]//IEEE 28th Canadian conference on electrical and computer engineering.Canadian:IEEE,2015:275-279.
[8] 張倬勝,馬方方,薛靜遠(yuǎn),等.基于iBeacon的精細(xì)室內(nèi)定位方法研究[J].地理信息世界,2015,22(2):26-30.
[9] 騰訊公司.微信公眾平臺(tái)開發(fā)者文檔[EB/OL].(2015-10-09)[2015-10-20].https://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html.
[10] 彭玉旭,楊艷紅.一種基于RSSI的貝葉斯室內(nèi)定位算法[J].計(jì)算機(jī)工程,2012,38(10):237-240.
[11] 劉華星,楊 庚.HTML5-下一代Web開發(fā)標(biāo)準(zhǔn)研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011,21(8):54-58.
[12] 崔法毅,邵冠蘭.基于RSSI多邊定位誤差的加權(quán)質(zhì)心定位算法[J].紅外與激光工程,2015,44(7):2162-2168.
[13] 徐 濤,丁曉璐,李建伏.K最短路徑算法綜述[J].計(jì)算機(jī)工程與設(shè)計(jì),2013,34(11):3900-3906.
[14] 王戰(zhàn)紅,孫明明,姚 瑤.Dijkstra算法的分析與改進(jìn)[J].湖北第二師范學(xué)院學(xué)報(bào),2008,25(8):12-14.
ResearchonLocationServicesSystemBasedonBluetoothBeaconandWeChat
HOU Ming-xiang,LIU Zhen-yuan,F(xiàn)ANG Wei-wei,CAI Zi-xin,LIU Ming,LU Hong-ying
(School of Computer and Information Technology,Beijing Jiaotong University,Beijing 100044,China)
With the increasing demand of real-time location information for people,location-based services is developed rapidly.However,the GPS locating technology can’t provide locating service in indoor environments,so the existing outdoor location service system is ineffective in indoor environments.A new type of location service system based on the Bluetooth beacon and WeChat is designed and realized.It uses Bluetooth beacon as its base station of signal transmitting,mobile terminals as its client,and WeChat Shake as its access.The Bluetooth signal is monitored dynamically from near base station of client by adoption of surrounding service interfaces provided by WeChat public platform,from which the identities and signal intensity of nearby beacons are obtained.Based on that,the system realizes the functions of client locating,information recommending and dynamic navigation.After the test under real environment,it is showed that the system can achieve the desired effects,easy to deploy and use,and provide services in a variety of environments,expanding the application scope of location-based services.
Bluetooth beacon;WeChat;indoor location;information recommendation;navigation
TP393
A
1673-629X(2017)12-0187-06
10.3969/j.issn.1673-629X.2017.12.040
2016-12-03
2017-04-19 < class="emphasis_bold">網(wǎng)絡(luò)出版時(shí)間
時(shí)間:2017-09-27
國(guó)家自然科學(xué)基金資助項(xiàng)目(61202430,61303245);中央高?;究蒲袠I(yè)務(wù)費(fèi)資助項(xiàng)目(2016JBZ006);宇航動(dòng)力學(xué)國(guó)家重點(diǎn)實(shí)驗(yàn)室開放基金資助項(xiàng)目(2016ADL-DW0402)
侯明祥(1993-),男,碩士,研究方向?yàn)橐苿?dòng)計(jì)算和室內(nèi)定位;方維維,通信作者,副教授,博導(dǎo),研究方向?yàn)槲锫?lián)網(wǎng)。
http://kns.cnki.net/kcms/detail/61.1450.TP.20170927.0957.018.html