android 定位蓝牙,Android开发-蓝牙RSSI定位
RSSI(Received Signal Strength Indication)是接收的信號(hào)強(qiáng)度指示,用來判定鏈接質(zhì)量,利用RSSI信號(hào)值可以計(jì)算主設(shè)備和藍(lán)牙設(shè)備的距離信息。通過至少三個(gè)設(shè)備的RSSI值即可計(jì)算出二維平面內(nèi)點(diǎn)的相對(duì)位置。
轉(zhuǎn)自lil-Xing的個(gè)人博客
RSSI為什么是負(fù)值
RSSI的單位是dBm,表示的是藍(lán)牙信號(hào)的強(qiáng)度,因?yàn)闊o線信號(hào)多為mW級(jí)別,所以對(duì)它進(jìn)行了極化,轉(zhuǎn)化為dBm而已,不表示信號(hào)是負(fù)的,1mW就是0dBm,小于1mW就是負(fù)數(shù)的dBm數(shù)。理想情況下RSSI可以達(dá)到最大值0,實(shí)際情況下當(dāng)你將主設(shè)備貼著藍(lán)牙設(shè)備也只能獲取到-50dBm。
獲取RSSI
在上篇藍(lán)牙模塊的基礎(chǔ)上,直接在onReceive()方法中通過下面方法獲取RSSI信號(hào)強(qiáng)度。注意獲取到的值為負(fù)
short rssi = intent.getShortExtra(BluetoothDevice.EXTRA_RSSI, Short.MIN_VALUE);
計(jì)算主設(shè)備與藍(lán)牙設(shè)備之間的距離
計(jì)算公式:d = 10^((abs(RSSI) - A) / (10 * n))
參數(shù)含義:
d - 所求距離
RSSI - 信號(hào)強(qiáng)度(負(fù)值)
A - 發(fā)射端和接收端相隔1米時(shí)的信號(hào)強(qiáng)度
n - 環(huán)境衰減因子
因?yàn)椴煌h(huán)境下的環(huán)境衰減因子不同,所以在每個(gè)環(huán)境下都要重新計(jì)算A和n,先測(cè)出發(fā)射端和接收端相隔1米時(shí)的信號(hào)強(qiáng)度A,再隨機(jī)取個(gè)距離,計(jì)算n,需要多次計(jì)算取均值。實(shí)例如下:
public double getDistance(double Rssi) {
Rssi = (Rssi - 60) / 36.0;
double d= Math.pow(10.0, Rssi);
d = (double) Math.round(d * 100) / 100;
return d;
}
三點(diǎn)定位算法
通過三個(gè)藍(lán)牙設(shè)備的坐標(biāo)和與主設(shè)備的距離計(jì)算得到主設(shè)備的坐標(biāo)信息,因?yàn)橹挥腥齻€(gè)設(shè)備而再增加設(shè)備,需要通過最佳匹配得到坐標(biāo)信息,因此該方法的準(zhǔn)確度不高,誤差較大。
指紋法定位算法
指紋法將環(huán)境的位置與特定的指紋聯(lián)系起來,指紋中存儲(chǔ)一種或多種特征。在實(shí)際定位中,通過獲得的多個(gè)特征與指紋中的特征匹配,從而獲得適配的指紋的坐標(biāo)從而定位,在室內(nèi)定位中,用得最多的特征也就是RSSI定位。指紋定位分為兩個(gè)階段:離線階段和在線階段。離線階段將每個(gè)位置的坐標(biāo)記錄并保存該位置的RSSI,收集完所有指紋得到指紋庫。在線階段則通過實(shí)際的特征查詢指紋庫獲得定位。當(dāng)然,實(shí)際的特征中不可能剛好和指紋庫中特征相同,這時(shí)就需要一定的算法得到最佳適配的指紋,比如KNN最近鄰算法,KNN屬于一種確定型算法,是一種機(jī)器學(xué)習(xí)算法,具體內(nèi)容后續(xù)補(bǔ)充。
Kerman濾波
卡爾曼濾波(Kalman filtering)一種利用線性系統(tǒng)狀態(tài)方程,通過系統(tǒng)輸入輸出觀測(cè)數(shù)據(jù),對(duì)系統(tǒng)狀態(tài)進(jìn)行最優(yōu)估計(jì)的算法。由于觀測(cè)數(shù)據(jù)中包括系統(tǒng)中的噪聲和干擾的影響,所以最優(yōu)估計(jì)也可看作是濾波過程。卡爾曼濾波可以有效預(yù)測(cè)向量的下一次走向,并不斷優(yōu)化回歸,使預(yù)測(cè)更精確,即實(shí)現(xiàn)“預(yù)測(cè)+自我調(diào)整”。在這里,可以拿來預(yù)測(cè)室內(nèi)運(yùn)動(dòng)的走向,減少干擾。
總結(jié)
以上是生活随笔為你收集整理的android 定位蓝牙,Android开发-蓝牙RSSI定位的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么说用PHP开发大型系统令人不爽
- 下一篇: 【安卓学习之常见问题】 Google P