查看原文
其他

【知识点】WIFI定位的原理

丁爸 丁爸 情报分析师的工具箱 2022-10-14

WiFi(也就是AP)定位原理是什么?为什么有时比GPS还准?

1、每一个无线AP都有一个全球唯一的MAC地址,并且一般来说无线AP在一段时间内是不会移动的。
2、设备在开启Wi-Fi的情况下,即可扫描并收集周围的AP信号,无论是否加密,是否已连接,甚至信号强度不足以显示在无线信号列表中,都可以获取到AP广播出来的MAC地址。

3、设备将这些能够标示AP的数据发送到位置服务器,服务器检索出每一个AP的地理位置,并结合每个信号的强弱程度,计算出设备的地理位置并返回到用户设备。

4、位置服务商要不断更新、补充自己的数据库,以保证数据的准确性,毕竟无线AP不像基站塔那样基本100%不会移动。

这样的位置服务商在美国有Skyhook和Google两家,他们收集位置数据的方式也是相似的 :
1、主动采集
    Google的街景拍摄车还有一个重要的功能就是采集沿途的无线信号,并打上通过GPS定位出的坐标回传至服务器

Skyhook在美国及欧洲一些国家也是直接开着信号采集车采集AP和基站的信号数据,相对来说覆盖城市没有Google多,目前中国仅有少数城市有覆盖,并且他们在包括中国在内的多个国家招募有偿工作者,以协助Skyhook收集位置数据。当然你也可以直接在其网站上提交一个MAC地址。

2、用户提交
    Android手机用户在开启“使用无线网络定位”时会提示是否允许Google的定位服务手机匿名地点数据。

 同样的Skyhook的最大客户Apple也在iPhone的User Guide中说明会以不能识别用户身份的方式收集位置数据。

   当然苹果公司也有自己的位置服务器,不过苹果的数据都来自于用户提交,2011年有人发现iPhone里竟然保存了用户一年多的定位记录,还同步到iTunes备份,总之Apple会依靠用户上传的Wi-Fi以及基站数据建立一个大的数据库,用户都在默默奉献... 

        


    

       

Wi-Fi定位的三个步骤:

 第一步:数据采集与制备,通过主动采集和用户手机静默上传获取每个WiFi热点的位置信息。

    这时不管你的手机有没有连接 Wi-Fi,手机都会扫描附近存在的Wi-Fi信号,如果扫描出某个Wi-Fi信号,那么手机系统就可以知道WiFi的BSSID(MAC 地址),也就是这个Wi-Fi在地球上唯一的名字。

    此刻如果你的手机还用 GPS 定上了位,那么在采集方的数据库里就会添加一条数据,【BSSID、(X1,Y1)】,其中(X1,Y1)正是GPS 定位得到的坐标。但是(X1,Y1)并不是 WiFi的位置,而是手机的位置,因为手机实际离WiFi存在一定的距离。为了得到更精确的WiFi 位置坐标,此WiFi会被大量的手机扫描到,并重复采集。如果此WiFi被采集了 N 次,那么在数据库里,实际的WiFi信息应该是【BSSID、(X1,Y1),(X2,Y2)...(Xn,Yn)】。

        一个 WiFi可能只被采集一次, 可能被采集上百次。当WiFi被采集的次数越多,通过算法计算出的WiFi 坐标也就越精准。经过算法处理,最终该热点的位置数据应该是【BSSID、(X,Y)】。

     如果一个WiFi 能够被不断采集,那么此WiFi 的坐标随着采集次数的增多而不断地迭代,其坐标也会越来越精准。

第二步:确定移动设备与热点的距离。

Wi-Fi信号是电磁波,其信号强度会随着传播距离的增加而衰减。
当手机连接上某一 Wi-Fi时,手机的系统会记录手机能够捕获的 Wi-Fi信号强度-RSSI。既然 Wi-Fi信号会随着距离衰减,那么通过RSSI=a+b*log(d)的理想化模型便可以计算出手机距离路由器的长度 d。当理想化模型终究是理想化模型,无线信号因为干扰、反射等等原因,我们计算出的距离其实并不太准确。 

第三步:通过算法推断出移动设备的位置。

有了热点的坐标和到热点的距离,就得靠定位算法来帮助我们定位了。
Wi-Fi定位的算法其实有很多,目前主流的有三种算法:

1、三角定位算法

 三角定位算法就是以WiFi 的坐标为圆心画圆,圆的半径是手机与热点之间的距离,三圆重叠处就有可能是手机的位置。

但是三角定位也有其缺点,就是定位结果不精准。原因很简单,因为WiFi  的位置和手机距离WiFi 的长度都是推算出的,误差+误差=更大的误差。

2、指纹定位算法

指纹算法是指手机会扫描周围所有WiFi  的 BSSID。这时所有能采集到的 BSSID 序列就成了WiFi 指纹信息存储在数据库中。当有手机采集的 BSSID 序列能够匹配之前已采集到的指纹(BSSID序列),那么就可以认为此时的坐标正是指纹所指向的坐标。

指纹算法也有致命缺点:

一是采集量需要非常大。

二是对服务端性能和数据存储要求太高。

三是Wi-Fi不密集的地方,定位结果会非常糟糕。

3、最大似然估算法

最大似然法(Maximum Likelihood,ML)也称为最大概似估计,也叫极大似然估计,是一种具有理论性的点估计法,此方法的基本思想是:当从模型总体随机抽取n组样本观测值后,最合理的参数估计量应该使得从模型中抽取该n组样本观测值的概率最大,而不是像最小二乘估计法旨在得到使得模型能最好地拟合样本数据的参数估计量。

最大似然法功率谱估计是一种可获得高分辨率的非线性谱估值方法,它特别适用于水声、地震波等信号的频率波数功率谱估值;同样,也可用于平稳时间序列的功率谱估值。最大似然法功率谱估值的分辨率略低于最大熵法功率谱估值,但其性能更为稳定。

说直白一点就是三角算法结合概率论的算法。


附Skyhook定位服务网址:https://www.skyhookwireless.com/

部分内容来自于微信公众号:LBS

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存