一种室内定位免采集室内店铺Wi-Fi指纹填充算法

如下内容为咱们内部人员供稿,著做权归做者全部。商业转载请联系咱们得到受权,非商业转载请注明出处。

对于目前最主流的室内Wi-Fi指纹定位技术而言,采集Wi-Fi指纹的覆盖度和新鲜度是决定定位精度最重要的因素。受到成本和导航需求等因素的限制,腾讯地图定位平台目前提供的室内定位服务只对商场的走廊部分采集了指纹信息。对于面积更大的商场店铺,目前很难人工采集Wi-Fi指纹。本文介绍了咱们如何利用过去积累的定位日志数据,实现了室内店铺Wi-Fi指纹的自动填充,并用于室内定位服务,从而提高了咱们室内定位服务的覆盖度和服务质量。android

1、问题背景

在室内环境中,因为建筑对信号的遮挡,GPS信号很是微弱甚至探测不到,没法用于定位服务。而随着Wi-Fi技术的普及和普遍部署,基于Wi-Fi指纹的定位技术目前已经成为室内最普适、最基础的定位解决方案。然而,对于Wi-Fi指纹定位技术而言,采集指纹的覆盖度和新鲜度是决定定位精度的最重要的因素。ide

1.png
图1. 北京欧美汇购物中心某层人工采集Wi-Fi指纹覆盖示意图


目前,腾讯地图定位平台对国内的主要商场都提供了基于Wi-Fi指纹的室内定位服务。然而,受到指纹采集成本和导航需求等因素的限制,目前指纹采集主要集中在商场走廊区域。图1展现了在北京欧美汇购物中心某一层中咱们采集的Wi-Fi指纹的覆盖状况。从图中咱们能够看到,对于商场内主要的走廊区域,咱们都进行了指纹的采集。然而,对于范围更大的店铺部分,目前采集Wi-Fi指纹的流程很难覆盖到。这种指纹覆盖不全的状况会致使咱们没法在整个商场内保证定位质量的一致性。当有用户在店铺内发起定位请求时,因为店铺内缺失Wi-Fi指纹信息,理想的状况是刚好在店铺门口采集的Wi-Fi指纹与用户请求定位时扫描到的Wi-Fi信息比较相似,将用户定位在店铺门口。然而,更糟糕的一种状况则是如图2展现的那样,咱们将用户定位在了一个离店铺较远的位置,严重下降了用户的定位体验。性能

2.png
图2. 用户在店铺中发出定位请求,实际定位结果偏移了44米


对于这种状况,最为直接的解决方案是在店铺内也采集指纹信息,作到整个商场内指纹采集全覆盖。然而,因为店铺的面积远远大于商场内走廊区域的面积,采集店铺指纹会致使成本成倍增长。同时,因为店铺装修、搬迁以及店内Wi-Fi设备更换更为频繁,要想保证店铺指纹的准确性,店铺指纹的更新也须要更加的频繁。这些因素致使了在目前的技术条件下,没法人工地对店铺指纹进行采集。所以,咱们要寻求别的方式来对商场内的店铺指纹进行填充,并将其用于咱们的定位服务。优化

2、店铺Wi-Fi指纹的自动化填充

目前,腾讯地图定位平台的室内定位服务覆盖了全国的三千多个主要商场,天天有上亿次定位请求发生在这些商场中,而且有上千万次定位请求是在手机链接了Wi-Fi热点的状况下发出。若是一个用户发出定位请求时链接的Wi-Fi热点是店铺内的热点,那么该用户发出定位请求时所在的真实位置颇有可能就在该店铺中。此时,该用户请求定位时上传的Wi-Fi扫描信息就有机会被用于创建店铺指纹。 然而,想要利用用户链接热点时请求定位的日志记录来创建店铺指纹,有一些挑战须要解决:ui

  1. 用户链接的Wi-Fi热点是否在店铺中?在哪一个店铺中?
  2. 如何确保链接了热点的定位请求就必定是在对应的店铺中发出的?

针对第一个问题,咱们根据每一个Wi-Fi热点的名称、店铺的名称、从历史定位日志中挖掘出的每一个Wi-Fi的位置以及其它的一些信息,尝试把每一个Wi-Fi热点都和一个店铺关联起来,创建了Wi-Fi和店铺之间的映射关系库,为咱们后续用定位日志数据来填充店铺指纹提供了良好的数据基础。spa

针对第二个问题,咱们根据定位请求中扫描到的店铺内Wi-Fi热点的信号强度信息对定位日志进行清洗,保留下来那些信号强度较强的请求数据,从而尽量保证每一个用于店铺指纹填充的请求日志都是在对应的店铺内产生的。最后咱们采用最近一个月的日志数据对店铺指纹进行填充,而且按期更新。经过这种方式,咱们既保证了店铺指纹的自动化填充,同时也确保了店铺指纹的新鲜度——即便店铺发生变化或者迁移,咱们的指纹数据也可以及时适应。日志

3、约束式定位

在填充了店铺指纹以后,咱们还须要将店铺指纹用于咱们的定位服务,填补人工采集的Wi-Fi指纹没有覆盖到的区域。然而,店铺Wi-Fi指纹和人工采集的走廊区域的Wi-Fi指纹存在很大的差别,致使两者没法直接融合。blog

首先,不一样来源的指纹的新鲜度不一样。店铺Wi-Fi指纹来自定位日志,可以天天自动更新,时刻保持最新鲜的状态。可是,人工采集指纹的周期通常都在一年左右。所以,走廊区域的指纹信息会随着时间逐渐老化,与实际请求时扫描到的Wi-Fi列表的匹配度会逐渐降低。这两种指纹信息同时用于位置计算时,会因为新鲜度差别致使指纹匹配度存在bias。排序

其次,不一样获取方式获得的指纹可靠性不一样。人工采集的Wi-Fi指纹具备十分明确的真实位置的标注,可信度较高;而自动填充的店铺Wi-Fi指纹,即便加入了数据清洗策略,也只能保证大部分指纹数据数据来源于店铺中,总体数据中存在必定比例的噪声数据。部署

3.png
图3. 基于网格Wi-Fi指纹的定位过程:选择最类似的几个网格计算最终位置


除此以外,人工采集的Wi-Fi指纹所表明的区域大小和店铺指纹所表明的区域大小也有很大的不一样。人工采集Wi-Fi指纹时会将定位区域以网格的形式进行划分,每一个网格具备相同的大小,而后采集每一个网格的Wi-Fi指纹。在实际定位过程当中,如图3所示,咱们会选择一个或几个Wi-Fi指纹和采集到的Wi-Fi列表最类似的网格来肯定目标位置。然而,店铺Wi-Fi指纹表述的是整个店铺的特征。一个店铺比一个网格通常要大不少,而且不一样店铺的大小和形状也不相同。

受上述因素的影响,咱们没法将人工采集的网格指纹和自动填充的店铺指纹直接对等地融合在一块儿提供位置服务。同时,考虑到店铺指纹的可靠性较低以及覆盖范围过大,店铺指纹若是最终参与到位置计算中有可能会形成较大偏移。所以,咱们最终采起了基于排序的约束式定位。图4展现了咱们目前版本约束式定位的总体流程。

4.png
图4. 基于店铺填充Wi-Fi指纹的约束式定位示意图


首先,咱们创建了一个排序模型来判断目标发出请求的位置是在店铺内仍是在有人工采集指纹覆盖的走廊内。咱们根据人工采集的网格指纹和自动填充的店铺指纹中出现的Wi-Fi、每一个Wi-Fi对应的信号强度等信息,对每一个网格和店铺都提取出了一个41维的特征向量。基于特征向量,咱们训练了一个XGBoost树模型做为咱们的排序模型,来对店铺和网格进行排序,判断用户发出定位请求的实际区域。

5.png
图5. 将最终定位结果约束在店铺附近


而后,基于不一样排序结果,咱们采用了不一样的定位策略。若是咱们判断出目前发出请求的位置更多是在人工采集过指纹的网格中,那么咱们采用已有的定位流程,根据网格内的指纹特征,选择最类似的1个或几个网格来计算目标的位置。若是咱们判断出目标发出定位请求的位置更多是在某个店铺中,那么咱们会找到店铺周围的那些网格,如图5所示,用这些网格来最终肯定目标的位置,从而将定位结果约束在目标最可能存在店铺门口,以避免产生过大的定位偏移。

最终,在上述策略下,对于因店铺指纹缺失致使定位结果偏离实际位置过远的状况,咱们可以将50%的请求从新约束在正确范围内进行定位,大大减小了大偏移定位结果的数量。而对于原有系统可以正肯定位的状况,咱们最多也只会对其中2%的定位请求形成错误约束,不会对现有的定位性能和其它相关服务形成负面影响。

4、小结

随着定位服务质量的提高,愈来愈多的用户开始使用咱们的室内定位服务,同时也对定位精度提出了更高的要求。然而,受系统搭建成本的限制,咱们人工采集室内指纹没法真正覆盖室内的全部区域。店铺指纹的缺失已经成为限制室内定位服务质量进一步提高的关键。在本文中,咱们利用了团队过去积累下来的定位数据的优点,在不增长成本的状况下,自动化地填充了一部分店铺指纹,并用于定位服务,提升了可定位区域的范围,大大提高了用户定位体验。将来,咱们会不断优化用于指纹填充的数据质量,同时结合更多的数据来源,提升数据准确度的同时也为更多的店铺进行指纹填充,从而提供一个更加全面和精准的定位体验,也为更上层的应用服务提供一个可靠的基础位置信息服务。

目前室内图产品为咱们腾讯位置服务特点付费产品,如感兴趣可点击了解,欢迎你们体验~
iOS地图SDK室内图Android地图SDK室内图

相关文章
相关标签/搜索