摘 要: 随着移动互联网的迅猛发展和智能终端的普及,人们对基于位置服务尤其是室内定位的需求日益增长。通过研究无线WiFi信号的特性,利用Android智能手机,结合计算机网络编程和ArcGISMAP等技术设计并实现了一套基于位置指纹定位算法的室内定位系统。通过对某实验楼一个楼层的室内定位实验表明,该系统使用灵活、简单、界面友好,具有良好的定位精度。
关键词: 室内定位;WiFi;Android平台;ArcGIS
0 引言
随着移动互联网时代的到来,定位服务需求量迅速增长[1],例如大型商场或候机厅快速找到出口、家长跟踪小孩的位置、房屋根据人员位置开关电灯、商店根据用户位置向用户推送关于商品的介绍等。如今室外定位技术已经发展十分成熟,然而在室内环境中,经常会出现“都市峡谷”(Urban Canyon)效应[2],GPS系统无法精确定位。随着无线网络的覆盖范围越来越广,基于WiFi的无线定位技术可以弥补卫星定位在建筑密集区和室内应用的限制,扩大定位服务的应用行业和范围,已经成为室内定位的普遍选择[3]。
本文针对室内定位的需求,设计并实现了基于WiFi的室内定位系统。该系统由客户端应用和后台定位服务构成,用户可以通过智能终端进行定位,并在终端的地图上显示定位位置,同时服务器端记录用户定位时间、AP名称及RSSI(接收的信号强度指示)等定位信息。系统客户端使用Java ME开发,地图信息采集与发布采用ArcGIS,定位算法采用位置指纹算法,服务端架构采用REST技术[4]。系统测试表明,该系统定位精度较好,响应时间较快,具有良好的应用前景。
1 系统设计
1.1 系统工作原理
系统工作原理和基本模型如图1所示。
系统客户端的操作平台使用Android。Android系统设计之初就表现出其强大的开源性和可扩展性,这为Android不断完善及应用带来了极大的用户群。据国际数据公司(IDC)公布的新数据[5],在2013年Android系统的市场占有率已经达到75%。而在中国,中投顾问发布报告[6]显示,2013年Android手机占同期智能手机出货量的94.0%。本系统基于Android系统开发,可以满足大部分移动用户的定位需求。
服务器端包括定位服务、地图服务和指纹库数据管理。定位服务基于Java SE开发,并使用Tomcat平台发布。地图服务使用ArcGIS Server来发布室内地图并返回定位信息。数据库管理采用Mysql。服务器端与客户端之间通过Http通信,完成数据的交互。
1.2 系统框架
本系统基于客户端/服务器架构。客户端由RSSI信号采集模块、通信模块、地图操作模块组成;服务器端由定位模块、地图模块、通信模块组成。系统框架如图2所示。
系统的交互流程如下:
(1)Android客户端程序启动,程序请求ArcGIS地图服务;
(2)地图服务器利用ArcGIS for Server响应地图服务,向客户端发布在线地图;
(3)用户请求定位功能,客户端调用WiFiManager扫描周围AP的信息,包括AP的信号强度值、IP地址、MAC地址,然后将此位置信息通过Http发送给服务器端;
(4)服务端将收到的位置信息与数据库进行匹配并结合位置指纹算法,得到位置坐标,通过Http回传给客户端;
(5)客户端接收到位置坐标,并显示于地图上。
2 系统实现
系统的实现分为客户端的设计、服务器端的设计及定位算法的设计。
2.1 客户端设计
Android客户端的主要功能是扫描周围的WiFi信号,发送定位请求,接收位置信息,同时与服务器端进行通信。Android内置的WiFiManager提供了管理所有WiFi 连接的API:WiFiInfo、WiFiConfiguration、ScanResult。利用WiFiManager可获取周围所有WiFi的MAC地址、信号强度值。地图部分利用Esri提供的移动应用开发包ArcGIS Runtime SDK for Android[7]开发,该插件通过ArcGIS Server REST方式获取地图数据和服务资源。
2.2 服务器端设计
服务器端分为定位服务器、地图服务器和指纹库数据管理3大部分,如图3所示。定位服务负责接收、存储客户端传来的位置信息,调用定位算法进行信号的匹配计算,返回用户位置信息。地图服务负责地图的加载和用户位置的显示。指纹数据库建有用户表和AP信息表,用户表存储用户个人信息,记录用户定位位置和访问时间;AP信息表存储所有AP的MAC地址与平均信号强度值。
用户可以选择向服务器提交位置指纹数据或向服务器请求定位信息。当用户向服务器提交位置指纹数据时,服务器端将强度和MAC地址等信息存入到数据库AP信息表中;当用户请求定位时,服务器读取用户上传的无线信号强度信息,与数据库中指纹信息进行分析匹配,同时调用定位算法,得到用户所在位置的墨卡托坐标值,作为用户位置反馈给客户端。
地图服务器选择ArcGIS Server 10.1作为GIS服务平台。该服务器主要功能:(1)利用ArcGIS Sever Manager发布在ArcMap中绘制的地图,本文发布了两套地图:某实验楼一个楼层的矢量地图和切片地图(9级),用户根据当前所处网络环境来选择;(2)在图层上标注用户位置。
2.3 定位算法
2.3.1 WiFi信号特点和算法选取
基于WiFi的定位通常使用RSSI。定位方法主要有两类:三角算法和位置指纹识别算法[8]。三角算法利用待测目标到至少3个已知参考点的距离信息或角度信息估计目标位置,参考文献[9-10]给出了WiFi信号传播模型;位置指纹识别算法通过采集到的信号特征与数据库中储存的信号特征进行对比实现定位。
射频信号的多径传播和由于定位节点或周围散射体的运动所引入的非线性时变特性是移动通信信道的主要特征,这些特征是造成无线定位误差的主要因素[11]。基于此,本文先通过在实际应用环境中采集大量的无线信号来分析WiFi信号的传播特性:WiFi无线信号在传播时信号强度与距离间的关系及RSSI的概率分布特征。实验环境:校园内某篮球场,AP固定在2.5 m高处。在正对AP 40 m内,以0.5 m为间隔划分80个测量点。实验设备:AP:腾达Tenda W301A;电脑1:联想天逸F41A;电脑2:宏基4560G;手机:小米1 s。
(1)无线信号强度的空间变化
观察距离与信号强度的关系,从距AP 0 m开始,逐渐向外移动手机,在每个测量点上统计信号的强度平均值,如图4、图5所示。
实验表明,收发端之间的距离越小,接收到的信号强度越大;信号强度越弱,数据可靠性越低[11]。正是由于存在这种关系,导致了每个位置检测到的无线信号具有独特性,这也是能够区分每个位置指纹之间差异性的原因[12]。
(2)无线信号强度的时间变化(RSSI的概率分布)
影响无线信号强度的原因很多,如多径、散射、衍射等,这些相互独立的影响因素具有极大的随机性。这些随机的影响因素共同作用构成了对无线信号强度的随机不确定干扰[12]。为了探究这种不确定干扰对无线信号的影响效果,用手机分别在各个测量点上采集了位置指纹数据。
图6、图7分别为6.5 m处(均值=-48.15 dbm,标准差=1.226)和18 m处(均值=-50.85 dbm,标准差=2.477)的200个采样值的处理结果。结果表明,在位置固定的情况下,AP的信号强度在一定范围内波动,长时间对无线信号强度进行采样时,WiFi信号强度的分布符合类正太分布[12]。
通过第二组实验可以看出,无线信号波动分布可视为正态分布,因此本文在采集数据库时,首先去除偏离均值较大的值,然后以该点处的信号强度平均值来代表该位置的无线信号特征。第一组实验中电脑和手机端都表明同一现象,即只有在短距离内WiFi信号衰减规律是明显的,超过4 m这一规律不再适用。这意味着如果要使用三角算法必须将定位范围限制在4 m之内,这无疑将极大地限制系统的使用范围,而且不同环境下的信号传输损耗模型大不相同,建立一个精确的、适合实际应用的损耗模型存在着很大的困难[8]。除此之外,根据参考文献[8]中通过实验得出的重要结论:基于位置指纹算法能够在一定程度上减少多径效应的影响,其定位精度远远高于基于三角形算法的定位精度。所以不管在具体实施上还是定位性能上,其较之于三角形算法的定位都具有较大的优越性。基于以上原因,本文选择基于位置指纹的定位算法。
2.3.2 位置指纹算法
所谓位置指纹识别算法是利用存有实际场地的地理位置所对应的RSSI信号强度的数据库,进行对比分析识别的一种WiFi定位算法。其定位过程分为两个阶段[8]:
⑴离线采样阶段:其目标在于建立一个位置指纹识别数据库。首先,选择合理的参考点分布,确保能为定位阶段的准确位置估计提供足够的信息。然后依次在各个参考点上测量来自不同AP的RSSI值,将相应的MAC地址与参考点的位置信息记录在数据库中,直至遍历区域内所有的参考点。
⑵在线定位阶段:给定数据库后,依据一定的匹配算法将待测点上接收的AP RSSI与数据库中已有数据进行比较,计算位置估计值。常用的匹配算法有NN法、KNN法、神经网络等,本文采用简单的NN算法。假定待测点接收的RSSI观测值为s =[ss1,ss2,…,ssn],数据库中的已有记录为Si =[SS1,SS2,…,SSNi],其中n代表待测点上检测到的不同AP数;i∈[1,NT],NT为数据库中的记录数;Ni代表第i条记录中存储的不同AP数。则NN算法可以表示成下述形式:L=argmin||s-Si||,i∈[1,NT ],其中||s-Si||代表s与Si之间的欧式距离。
3 系统测试与结果分析
3.1 离线采样阶段
在某实验楼五楼(环境布局如图8所示)内,利用楼道内运营商已布置好的WiFi环境,部署了6个采样点(全部为教室),每个区域范围为1 m2,以自定义坐标形式记录测试点的位置。所有AP的高度均为3.2 m,位于两墙中间位置,两AP间距为7 m。测试设备:AP为腾达Tenda W301A;服务器为华硕A43s笔记本;训练设备为小米1s手机。在每个采样点上传200次指定AP的MAC地址和信号强度,去除偏离较大值后将均值记录在数据库中,单点采集时间约为3 min,完成所有位置的信号采集时间为20 min左右。
3.2 在线定位阶段
实验共采集了6个点的位置信息,在每个测试点,以该点所处的墨卡托坐标标记该位置,使用小米1s手机采集10组RSSI数据后发起定位请求,服务器将数据进行定位计算。记录服务器反馈的位置信息,并记录所用时间,如表1所示。每个位置重复定位试验200次,统计定位误差结果如表2所示。
3.3 实验结果分析
实验结果表明,最大定位误差在3.4 m,平均误差在 2.9 m之内;从请求定位到返回位置信息均在200 ms内完成。由于考虑到实时性要求,客户端定位时只采集了10组数据,不足以客观反映该点AP信号的特征;以及划分的指纹区域不够精细造成定位精度不是很理想。此外教室411和415周围没有人员走动,并且周围电脑、打印机等电子设备较少,所以平均误差较小,同时误差标准差小,说明定位的稳定性高;教室409和404内有很多教学仪器,干扰较大;教室407和库房在楼梯处,周围人员走动多,且教室内有多台电脑,干扰最大,误差的标准差较大,定位结果不稳定。
4 结束语
本文主要实现了一个基于WiFi的室内定位系统,为了更好地实现定位,对WiFi信号具有的特性进行了探究,得出了WiFi信号概率分布特点、随距离衰减特点。在此基础上,采用位置指纹算法,划分1 m2的最小区域,以一个点的信号强度平均值作为该点的信号特征。该系统的定位结果表明,利用运营商已布置好的AP,最大定位误差在3.4 m,定位速度较快,且该系统成本低、使用方便,是一种具有可行性的室内定位方法。
室内定位技术一直处于不断完善的过程中,在今后的工作中,将致力于增加实验数据的预处理功能,从而更好地提高定位精度;加入更为丰富的功能,例如导航;研究基于IOS和Windows Phone平台的移动GIS开发等。
参考文献
[1] 秦泗明. 基于位置指纹的WiFi室内定位技术研究[D]. 成都:电子科技大学, 2013.
[2] 何文涛,徐建华,叶甜春. 互相关干扰下的GNSS 弱信号检测算法[J]. 电子学报, 2011,39(2):471-475.
[3] 潘立波. 基于WiFi技术的无线定位算法研究与实现[D]. 杭州:浙江大学, 2013.
[4] 李久刚,唐新明,汪汇兵,等. REST架构的WebGIS技术研究与实现[J]. 测绘科学, 2011,336(3):85-87.
[5] IDC.IDC Worldwide Mobile Phone Tracker[R].FRAMINGHAM, Mass:IDC, November 12, 2013.
[6] 中投顾问. 2014-2018年中国智能手机行业投资分析及前景预测报告[R]. 深圳:深圳市中投咨询顾问有限公司, 2014.
[7] Esri.ArcGIS Resources[EB/OL].[2014-06-01].http://resources.arcgis.com/en/home/.
[8] 卢恒惠,刘兴川,张超,等. 基于三角形与位置指纹识别算法的WiFi定位比较[J]. 移动通信,2010,34(10):72-76.
[9] Serrano O,Canas J M,Matellan V,et al.Robot localization using WiFi signal without intensity map[D]. Spain:University of Girona,2004.
[10] Roberts B,Pahlavan K.Site-specific RSS signature Modeling for WiFi localization[A].Global Telecommunications Conference,2009,GLOBECOM 2009.IEEE, 2009:1-6.
[11] 丁涛. NLOS环境下基于DTV信号的定位算法研究[D]. 南京:东南大学, 2010.
[12] 雷家毅. Android平台基于WiFi的定位算法与系统设计[D].上海:华东理工大学, 2012.