藍(lán)牙定位是iBeacon技術(shù)最常被應(yīng)用的方向之一,基于藍(lán)牙定位可以實(shí)現(xiàn)諸如尋路、尋車、向?qū)У群芏嗌虡I(yè)需求,也是基于iBeacon技術(shù)實(shí)現(xiàn)的。藍(lán)牙定位又可以分為一維定位和二維定位,本文將介紹兩種藍(lán)牙定位技術(shù)的實(shí)現(xiàn)原理及實(shí)現(xiàn)方法。
藍(lán)牙定位一維定位
原理
藍(lán)牙定位的底層技術(shù)是藍(lán)牙測(cè)距,所謂一維定位其實(shí)就是對(duì)藍(lán)牙測(cè)距技術(shù)的最簡(jiǎn)單應(yīng)用,只要將藍(lán)牙信標(biāo)設(shè)備部署在指定點(diǎn),當(dāng)接收設(shè)備(手機(jī))足夠靠近信標(biāo)時(shí),就認(rèn)為用戶到達(dá)了指定點(diǎn)。之所以稱之為一維定位,是因?yàn)槎ㄎ唤Y(jié)果完全依附于信標(biāo)設(shè)備的位置,沒(méi)有任何其他維度上的擴(kuò)展。
應(yīng)用
這種方式通常用在固定路線的沿途部署,為路線上的用戶提供定位信息。
優(yōu)點(diǎn)是部署成本和開(kāi)發(fā)成本很低,缺點(diǎn)是只能應(yīng)用在路線固定,并且定位點(diǎn)間隔不太密集的場(chǎng)景。典型的例子就是景區(qū)或者園區(qū),景區(qū)內(nèi)的路徑都是經(jīng)過(guò)設(shè)計(jì)的,固定而且?guī)缀跷ㄒ?;景點(diǎn)之間的距離也不會(huì)很近,至少在50m以上的間距。只要沿途以大致固定的間距部署信標(biāo)設(shè)備,就可以為用戶提供相對(duì)實(shí)時(shí)而且準(zhǔn)確的定位信息。
實(shí)現(xiàn)
一維定位的部署非常簡(jiǎn)單,如上文所述,只要確定好信標(biāo)設(shè)備的有效覆蓋范圍,然后沿途部署就可以。部署同時(shí)收集每個(gè)或部分信標(biāo)設(shè)備的位置信息,作為程序的定位檢索依據(jù)。
開(kāi)發(fā)方面,移動(dòng)設(shè)備只要將收到的信號(hào)做距離排序,找到距離最近的一個(gè)信標(biāo)設(shè)備,如果距離在指定范圍內(nèi),就檢索該設(shè)備的位置信息,認(rèn)為用戶到達(dá)了該地區(qū)。
太簡(jiǎn)單了,就不多說(shuō)了。
藍(lán)牙定位二維定位
原理
二維定位顧名思義,就是可以實(shí)現(xiàn)二維空間中的任意定位。定位的主要理論依據(jù)三角形三邊關(guān)系公式。
如上圖,已知三角形三邊長(zhǎng)度,CD是底邊AB的垂線,AD和BD的長(zhǎng)度計(jì)算公式分別為
BD = (AB2+CB2-AC2)÷2AB
AD = (AB2-CB2+AC2)÷2AB
整體思路是,將信標(biāo)設(shè)備在場(chǎng)地內(nèi)按指定間距做網(wǎng)狀部署,使用戶在場(chǎng)地內(nèi)任意點(diǎn)都可以接收到3個(gè)距離最近而且連線構(gòu)成直角的定位點(diǎn)信息,如下圖
通過(guò)三角形三邊關(guān)系公式,可以計(jì)算出上圖中px和py的長(zhǎng)度,也就是當(dāng)前點(diǎn)在當(dāng)前正方形網(wǎng)格中的坐標(biāo)。
再根據(jù)當(dāng)前所在正方形在整個(gè)矩陣中的位置,結(jié)合部署間距,算出當(dāng)前點(diǎn)在整個(gè)矩陣中的坐標(biāo)。
應(yīng)用
二維定位理論上適用于任何場(chǎng)景,通常用在用戶活動(dòng)路徑不固定的自由空間中,比如展會(huì)、商場(chǎng)。
優(yōu)點(diǎn)是場(chǎng)地適應(yīng)性更強(qiáng),缺點(diǎn)是部署成本和開(kāi)發(fā)成本相對(duì)較高。以商場(chǎng)為例,嚴(yán)格按照固定間距部署藍(lán)牙信標(biāo),往往需要結(jié)合實(shí)地情況選擇合適的距離,程序也要根據(jù)實(shí)際間距做相應(yīng)的計(jì)算調(diào)整。另外還要考慮不規(guī)則區(qū)域的處理,往往會(huì)將一維定位和二維定位結(jié)合使用。
實(shí)現(xiàn)
上面原理部分說(shuō)起來(lái)有點(diǎn)啰嗦,看圖其實(shí)很簡(jiǎn)單。
假設(shè)現(xiàn)在有一個(gè)30m * 30m的場(chǎng)地,將信標(biāo)設(shè)備以10m為間距網(wǎng)狀部署,共需要16個(gè)信標(biāo),每個(gè)信標(biāo)都按下圖所示標(biāo)注上坐標(biāo)信息
此時(shí)用戶無(wú)論在場(chǎng)地內(nèi)的任何位置,都將身處9個(gè)正方形網(wǎng)格中的一個(gè)(暫不考慮臨界情況),那么移動(dòng)設(shè)備收到的距離最近的4個(gè)信標(biāo)點(diǎn),應(yīng)該就是當(dāng)前所在正方形的4個(gè)頂點(diǎn)。
假設(shè)當(dāng)前用戶此時(shí)在左上角第一個(gè)正方形中,根據(jù)藍(lán)牙測(cè)距結(jié)果,得到距離最近的3個(gè)信標(biāo)點(diǎn),對(duì)應(yīng)的距離分別為distance1, distance2, distance3,如圖
三個(gè)頂點(diǎn)距離已知,部署間距已知,根據(jù)三邊關(guān)系公式可以得px, py的值,也就是當(dāng)前點(diǎn)在當(dāng)前網(wǎng)格中的坐標(biāo)。
在這之前先要解決一個(gè)問(wèn)題,那就是三個(gè)點(diǎn)之間的關(guān)系。我們知道三個(gè)點(diǎn)肯定兩兩連線互為直角,但到底哪兩個(gè)點(diǎn)在橫軸上,哪兩個(gè)點(diǎn)在縱軸上。這需要結(jié)合點(diǎn)的坐標(biāo)信息做進(jìn)一步處理。
至此,就很容易算出定位點(diǎn)的橫軸坐標(biāo)和縱軸坐標(biāo)了,再分別加上當(dāng)前網(wǎng)格在整個(gè)矩陣中的橫坐標(biāo)和縱坐標(biāo),就得到了最終的定位坐標(biāo)。
上例中的xAxisPoints和yAxisPoints已經(jīng)對(duì)坐標(biāo)信息做了排序,橫軸數(shù)組第一個(gè)點(diǎn)的x值,以及縱軸數(shù)組第一個(gè)點(diǎn)的y值,就是網(wǎng)格在整個(gè)矩陣中的橫坐標(biāo)和縱坐標(biāo)。
總結(jié)
一維定位和二維定位分別有各自的應(yīng)用場(chǎng)景,其中二維定位對(duì)實(shí)施能力提出了較高的要求?,F(xiàn)實(shí)環(huán)境中往往還需要將一維定位和二維定位結(jié)合使用,這里需要程序設(shè)計(jì)上處理好兩種情況的兼容。
得到定位信息,往往只是項(xiàng)目的第一步。比如在導(dǎo)航系統(tǒng)中,定位信息需要匹配最近的目標(biāo)點(diǎn),整個(gè)導(dǎo)航功能才可以開(kāi)始使用。有機(jī)會(huì)后面會(huì)對(duì)導(dǎo)航系統(tǒng)的實(shí)現(xiàn),做進(jìn)一步的分享。
本文轉(zhuǎn)自網(wǎng)路,侵刪