从WiFI强度信号计算3个计算距离的三边测量

时间:2014-11-19 00:40:38

标签: java android python trilateration

我正在使用android来扫描WIFI AP的每一帧时间,我从每个AP获得信号强度(dbm中的RSSI),我正在用这个公式计算距离:

public double calculateDistance(double levelInDb, double freqInMHz) {
    double exp = (32.44 - (20 * Math.log10(freqInMHz)) + Math.abs(levelInDb)) / 20.0;
    return Math.pow(10.0, exp);
}

工作正常,所以我有三个或更多的距离,现在我需要在地图上绘制所有AP的固定位置,我在互联网上做了一些阅读,我找到了Trilateration(就是这个过程)通过测量距离来确定点的绝对或相对位置)但看起来我至少需要一个点(x,y),此时我只能计算距信号强度的距离,可以作为半径不同的圆周。

我很困惑,因为我没有任何具体点(x,y)来开始计算手机的位置。

我只需要知道是否有办法计算这一点,或者我可以假设初始点或我遗漏了一些东西。

谢谢,我真的很感激。

1 个答案:

答案 0 :(得分:9)

正如Paulw11提到的那样,你必须知道所有AP的确切位置,或者至少知道其中一个AP的位置以及其他两个AP的相对位置。然后,Trilateration程序将为每个AP生成一个圆圈,并且拦截它们将是设备。

请记住,使用Wi-Fi的Trilateration将产生一个区域而不是一个点,这将产生一个不确定的区域,其精度至少为2-3m。从我所看到的你基于自由空间损失模型计算距离是一种通用类型,并且它不是每种环境的真实情况,因此,这种假设会使你的估计更加糟糕。

一种好的方法是首先使用设备进行Wi-Fi测量,然后根据此Wi-Fi指纹对您所在区域进行无线电映射。或者先准备一个培训期。有很多教程。