WI-FI定位算法原理与介绍
2015-07-30 17:46
141 查看
所谓的定位,就是利用所有可以获取的信息,对用户所在的位置进行推算,得到最大可能的用户位置。
定位可以分为很多种定位,基站定位,WI-FI定位,GPS定位,甚至地磁定位。几种定位方式各有优缺点
需要注明的是:
1、GPS定位为什么定位速度比较慢呢,因为开始定位的时候,GPS设备要收取各个卫星的信号,这要花费3-5分钟时间,甚至更长。但是一旦进行了第一定位之后,第二次定位就比较快了。如果想了解更多,请自由Google。
2、地磁定位一般用在室内定位,根据磁场相对变动推导出位置,这个据说可以达到厘米级定位。
我们没有那么高端,GPS和地磁不在我们的讨论范围内,我们讨论的只是,当用户不开GPS的情况下 (GPS less)请求定位。最适用的方法就是基站和WI-FI定位。这篇WIKI开始讨论WIFI定位的各种方法。
WI-FI 指的就是 平常咱们在家里的无线路由发射器,它可以向外发射信号,手机就可以扫描到周围的WI-FI,连接上,就可以通过它上网了。现在设想这种情况,在一个陌生的位置,只能收到周围的Wi-Fi,如何确定位置?
最简单的想法也是最直接的想法如果我们知道这些WI-FI的位置,那么是不是就可以推断用户的位置。如下图所示:
下一步就是推断AP的发射点的位置,通过采集数据可以得到如下数据:
AP1:-50;AP2:-60;AP3:-80; gps 坐标1
AP1:-30;AP3:-60;AP4:-70; gps 坐标2
这样得到了 APi的一系列坐标点,通过加权求平均推断APi的位置。有了AP的位置,通过收到的信号,可以推测得到用户最终的位置。
换一种思考方式,多个AP信号同时发生在了用户的所在位置,那么就可以通过找这几个AP同时发生在概率最大的位置
v
代表位置, s代表AP的信号强度
多个AP 发生的概率是相互独立的,那么
通过采集数据来计算各个位置AP发生的概率。然后就可以计算出联合概率,选出概率最大的。
再来,采集数据中已经存在了多个AP的信号强度和GPS的对应关系,那么如果能找到用户手机收到的AP信号强度最相似的记录,那么记录中的GPS应该就是
该请求的GPS坐标。这里把多个AP和信号强度组成的一条记录称之为一条指纹。
那就创建database 把所有出现的指纹和GPS的对应关系都存储起来。定位过程中只要把相似的指纹选出来,相似记录的GPS作为该请求的坐标返回就可以了
至于相似度的选择,会在另一篇WIKI中做介绍。
指纹定位要存储的是各个AP信号所对应的位置信息。数据存储会很大,要实现定位,遍历的指纹时间花费也很可观。当然可以改成稀疏矩阵存储,但是依然不小。
应用机器学习算法SVM,ANN和DT做回归,就可以不存储那么多指纹,将这些指纹学习一个模型,定位过程中,只要将请求输入到模型中,模型会输出GPS坐标
给用户。存储量比较小,而且比较精确。
好了,基本上所有的定位算法都在这里涉及了,并不是说哪个定位算法比较好,这几种定位算法在实验室状态下都能实现3-10米定位。
但是 现实的结果是:
百度CEP 50% :27米
高德CEP 50% :31米
腾讯CEP 50% : 呵呵
现实中存在很多变数,存在很多挑战
GPS会漂,GPS都不准确,
Wi-Fi会移动 搬家 车载AP
并不是每个AP的采集量都是充足的
手机机型大不相同
信号强度是波动的
环境因素要考虑
.......
当初教我们机器学习的一个老师教导过我们,机器学习的方法不重要,好的数据比选用那种方式更重要!
定位可以分为很多种定位,基站定位,WI-FI定位,GPS定位,甚至地磁定位。几种定位方式各有优缺点
定位方式 | 精度(M) | 速度 | 耗电量 | 适用范围 |
---|---|---|---|---|
基站定位 | 500-2000 | 快 | 低 | 所有存在基站的位置 |
WI-FI定位 | 0-100 | 快 | 低 | 周围存在相对较固定的WI-FI |
GPS定位 | 0-10 | 慢 | 高 | 全球 |
地磁定位 | 0-1 | 快 | 中 | 室内 |
1、GPS定位为什么定位速度比较慢呢,因为开始定位的时候,GPS设备要收取各个卫星的信号,这要花费3-5分钟时间,甚至更长。但是一旦进行了第一定位之后,第二次定位就比较快了。如果想了解更多,请自由Google。
2、地磁定位一般用在室内定位,根据磁场相对变动推导出位置,这个据说可以达到厘米级定位。
我们没有那么高端,GPS和地磁不在我们的讨论范围内,我们讨论的只是,当用户不开GPS的情况下 (GPS less)请求定位。最适用的方法就是基站和WI-FI定位。这篇WIKI开始讨论WIFI定位的各种方法。
WI-FI定位
WI-FI 指的就是 平常咱们在家里的无线路由发射器,它可以向外发射信号,手机就可以扫描到周围的WI-FI,连接上,就可以通过它上网了。现在设想这种情况,在一个陌生的位置,只能收到周围的Wi-Fi,如何确定位置?
最简单的定位:
最简单的想法也是最直接的想法如果我们知道这些WI-FI的位置,那么是不是就可以推断用户的位置。如下图所示:下一步就是推断AP的发射点的位置,通过采集数据可以得到如下数据:
AP1:-50;AP2:-60;AP3:-80; gps 坐标1
AP1:-30;AP3:-60;AP4:-70; gps 坐标2
这样得到了 APi的一系列坐标点,通过加权求平均推断APi的位置。有了AP的位置,通过收到的信号,可以推测得到用户最终的位置。
最大似然概率定位
换一种思考方式,多个AP信号同时发生在了用户的所在位置,那么就可以通过找这几个AP同时发生在概率最大的位置v
代表位置, s代表AP的信号强度
多个AP 发生的概率是相互独立的,那么
通过采集数据来计算各个位置AP发生的概率。然后就可以计算出联合概率,选出概率最大的。
指纹定位
再来,采集数据中已经存在了多个AP的信号强度和GPS的对应关系,那么如果能找到用户手机收到的AP信号强度最相似的记录,那么记录中的GPS应该就是该请求的GPS坐标。这里把多个AP和信号强度组成的一条记录称之为一条指纹。
那就创建database 把所有出现的指纹和GPS的对应关系都存储起来。定位过程中只要把相似的指纹选出来,相似记录的GPS作为该请求的坐标返回就可以了
至于相似度的选择,会在另一篇WIKI中做介绍。
SVM/ANN/DT定位
指纹定位要存储的是各个AP信号所对应的位置信息。数据存储会很大,要实现定位,遍历的指纹时间花费也很可观。当然可以改成稀疏矩阵存储,但是依然不小。应用机器学习算法SVM,ANN和DT做回归,就可以不存储那么多指纹,将这些指纹学习一个模型,定位过程中,只要将请求输入到模型中,模型会输出GPS坐标
给用户。存储量比较小,而且比较精确。
好了,基本上所有的定位算法都在这里涉及了,并不是说哪个定位算法比较好,这几种定位算法在实验室状态下都能实现3-10米定位。
但是 现实的结果是:
百度CEP 50% :27米
高德CEP 50% :31米
腾讯CEP 50% : 呵呵
为什么?
现实中存在很多变数,存在很多挑战GPS会漂,GPS都不准确,
Wi-Fi会移动 搬家 车载AP
并不是每个AP的采集量都是充足的
手机机型大不相同
信号强度是波动的
环境因素要考虑
.......
当初教我们机器学习的一个老师教导过我们,机器学习的方法不重要,好的数据比选用那种方式更重要!
相关文章推荐
- CSS浮动和定位学习笔记
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析
- C++实现汉诺塔算法经典实例
- PHP实现克鲁斯卡尔算法实例解析