室内定位技术研究


基本假设

考虑到投入的成本、实现的复杂度以及民用可行性,诸如激光测距仪、超声波之类的重量级或者军用解决方案暂不在考虑范畴。这里主要考虑的是仅仅基于室内的wifi热点、蓝牙(ibeacon等)加上我们平时用的手机上提供的各种传感器的室内定位方案。

Wifi测距

Wifi测距定位基于三角定位原理(室外定位的GPS系统同样是基于三角定位原理只不过用的是卫星)。

三角定位

假定在位置P,检测到N个Wifi信号源的信号强度分别为RSSI_1,RSSI_2,…,RSSI_N。根据信号强度衰减公式,可以算出P距离已经标定的N个信号源的距离d_i, 那么联立以下方程组可以求得用户的位置P。

wifi测距定位公式

方程组的个数一般多于变量个数,所以问题归结为求一个极大似然估计解即可。

根据d_1,…,d_N求解位置P的另一种思路是,以d_i作为信号源坐标S_i的权重,用户坐标P等于信号源坐标的加权平均值。实际计算的时候,可以取N = 3过滤掉强度太弱的信号,以提高求解的精度。

  • 优点:只要将硬件部署好即可按照算法计算出用户位置
  • 缺点:室内环境复杂对信号强度有很大的影响,除非探针位置布置的极为合理,否则结果会产生较大的误差

Wifi指纹定位

Wifi指纹可以较好的解决室内环境复杂对定位精度的影响。这种方法的实施分为两个步骤:

  1. 训练阶段

    当硬件部署完成后,需要专人或者机器脚本进行踩点探测各个样本位置的信号强度向量。此举的目的在于建立位置和信号强度的映射关系也就是指纹数据库,并上报服务器存储进数据库。测量的过程中,需要在不同的朝向上多测几次取平均值上报服务器,并且采集的点应该尽量做到室内空间的全覆盖没有死角。

  2. 定位阶段

    用户将自己位置所探测到的信号强度向量(S_1,S_2,…,S_N)上报给服务器,服务器根据信号强度向量,结合已有的指纹数据库,根据一定的匹配算法(KNN,神经网络,余弦相似性等)判定用户的确切位置。

  • 优点:解决了Wifi测距法无法解决的室内障碍影响问题
  • 缺点:需要额外的标定训练阶段,并且因为室内环境会变化,最多每隔几个月就需要重新标定一次

关于Wifi指纹方法的定位阶段,我以为另一个或许可行的思路是采用机器学习的方法,利用训练过程采集的信息得到一个回归模型用来判定用户的位置。这样的好处是服务器侧也不用存储指纹数据库,直接根据回归得到的模型计算即可,当然每隔几个月的重新标定/训练还是必不可少的。

手机传感器的作用

惯性导航

indooratlas地磁导航方案

应用开发的问题以及业内解决方案

百度地图

根据网络搜索的资料,百度地图目前采用的应当是Wifi指纹+indooratlas地磁室内导航的解决方案。

腾讯地图

腾讯地图目前采用的解决方案也是基于Wifi指纹和手机传感器数据,目前在安卓客户端上初步实现了室内导航功能,覆盖范围包括北京机场以及部分商场。

关于精度的问题

对民用级的室内定位产品来说,个人的观点是:

不用在提高精度上花太多的功夫!!!定位误差在10m左右皆可接受。在10m这个距离,人只要四周多看看,多走两步就一定能找到要找的东西。多数情况下,10m的误差对于商家推送区域相关信息、定位客户位置等需求来说也完全够用。在民用领域,室内定位需要解决的主要问题是位置跳变和精度与硬件部署成本的平衡问题(也就是部署尽量少的探针)。


上篇: Lua源码阅读笔记(0) 下篇: 关于任意凸多边形的CPU剪裁问题