我尝试使用RSSI和TxPower计算从信标到Android设备的距离,但波动非常高。那么如何获得更稳定的距离呢?我试过下面给出的代码片段:
public double calculateAccuracy(int txPower, double rssi) {
if (rssi == 0) {
return -1.0;
}
double ratio = rssi * 1.0 / txPower;
if (ratio < 1.0) {
return Math.pow(ratio, 10);
} else {
double accuracy = (0.89976) * Math.pow(ratio, 7.7095) + 0.111;
return accuracy;
}
}
答案 0 :(得分:0)
这个问题没有简单的答案,因为rssi确实波动很大,特别是在较远的距离。蓝牙内置频道切换加剧了这种情况。每个通道返回不同的平均RSSI。
您可以做的最好的事情是在一段时间内尽可能多地平均rssi测量值,这对您的用例来说是合理的。您可以使用简单的算术平均值或更复杂的统计过滤器,但之间的差异并不显着。
将信标的广告费率设置得尽可能高以获得更多统计样本也很有用,并将发射机强度设置得尽可能高,因为较大的信噪比会减少rssi中的差异。< / p>