引文格式:张加丁,陈崇成,叶晓燕,等.一种智能手机室内位置共享的方法[J].导航定位学报,2019,7(3):17-23.(ZHANG Jiading, CHEN Chongcheng, YE Xiaoyan, et al.An indoor location sharing method for smartphones[J].Journal of Navigation and Positioning,2019,7(3):17-23.)DOI:10.16547/j.cnki.10-1096.20190304.
摘要:针对GPS室内定位精度较低,难以实现准确的室内位置共享的问题,提出一种智能手机室内位置共享的方法,主要包括室内定位和路径规划2个部分:室内定位方法采用行走采集的方式快速构建WiFi指纹数据库,分析3种智能手机获取航向的方法,并采用球面线性插值算法来融合陀螺仪和旋转矢量传感器以获得更为稳定的航向,再将WiFi定位与航迹推算结果进行粒子滤波融合;路径规划方法利用环信即时通讯云作为通讯服务器实现位置共享,并采用Dijkstra算法计算最短路径,为用户提供地图导航。实验结果表明,该方法能够在有效提高室内定位精度的同时,结合室内位置共享和路径规划实现快速准确的室内寻人寻址。
关键词:位置共享;室内定位;粒子滤波;无线保真(WiFi)指纹数据库;行人航迹推算 (PDR);路径规划
0引言
近年来,由于无线局域网和智能移动设备的普及渗透,基于位置的服务(location based services, LBS)越来越成为日常生活、公共安全、商业服务等不可或缺的一部分。位置共享是LBS
的一种基本功能,其目的是将用户当前的位置信息提供给指定的用户,是移动在线社交网络提供的最流行的服务之一[1]。全球定位系统(global positioning system, GPS)定位技术低成本、高精度,是移动设备位置信息的主要来源[2]。用户借助地图应用服务商,如百度地图等,将位置发送给请求位置共享的用户或群组,便可实现用户之间的位置共享[3]。人们大部分时间在室内度过,然而GPS信号受到钢筋混凝土等障碍物的遮挡,无法获取人在建筑物内的准确位置。当人们位于建筑物内时,定位误差较大,因而无法实现准确的位置共享。实现高精度的室内位置共享在紧急救援、室内寻人寻址等方面有着重要的意义。
基于智能手机的室内定位通常利用无线保真(wireless fidelity, WiFi)和传感器来实现。WiFi定位系统的部署因不需要额外的基础设施投资而具有较高的成本效益[4]。WiFi定位通常采用指纹定位算法,定位方法简单,但需要耗费大量的时间和人力成本建立WiFi指纹数据库。智能手机中内置了许多传感器,在运动过程中可解算出设备的速度、姿态等信息,结合行人航迹推算(pedestrian dead reckoning, PDR)算法可实现行人的导航定位。由于制造工艺的限制,智能手机中的传感器精度不高,且室内环境对传感器有干扰作用,使得测量得到的传感器数值存在噪声,给PDR定位带来误差,且误差随着时间不断增大[5]。
单一的定位技术往往无法满足定位稳定性和精度的要求,结合WiFi绝对定位和PDR短时间内精度较高的优点,通过多传感器信息融合方法可以实现传感器间的优势互补,提高定位精度。文献[6]利用WiFi指纹修正人的步长来辅助传感器定位,在WiFi指纹稀疏的区域存在较大偏差。文献[7]采用最小二乘估计剔除较大误差的WiFi指纹,并利用卡尔曼滤波来融合2种定位方法。文献[8]采用1种自适应加权扩展卡尔曼滤波来对WiFi定位和PDR进行松耦合,提高了定位的准确性。但以上方法依然需要花费大量的时间建立WiFi指纹数据库。文献[9]在特定区域采集WiFi信号,通过粒子滤波融合PDR、WiFi定位结果和墙壁信息,减少了WiFi指纹数据库的建库成本;但当初始定位点离特定区域较远时,定位误差较大,给后续定位带来影响。
针对以上问题,本文利用行走采集的方法来快速建立WiFi指纹数据库,改进智能手机传感器融合方法来获得更为稳定的航向。接着通过粒子滤波算法来融合WiFi定位与PDR,提高室内定位的精度。最后利用环信即时通讯云作为通信服务器实现信任用户之间的室内位置共享,并设计和实现路径规划算法,方便用户进行室内寻人寻址。
1 室内定位方法
1.1 WiFi信号指纹定位
WiFi指纹定位分为2个阶段:①离线训练阶段,在室内环境中确定若干参考点,记录所有参考点的位置及接收到的各个无线接入点(access point, AP)的信号强度序列(received signal strength indication, RSSI)形成指纹数据库;②在线定位阶段,将待定位点上实时测量的RSSI与指纹库进行相似度匹配,将相似度最高的参考位置作为估计位置[10]。
1.1.1 WiFi指纹匹配算法
K近邻法(K-nearest neighbors, KNN)是常用的WiFi指纹匹配算法。首先计算定位阶段测量的RSSI与指纹库中指纹集合的欧式距离,再选取
个最小的距离所对应的指纹坐标的平均值作为定位结果。当定位区域较大时,在参考点上无法接收到所有AP的信号,使得位置相近的参考点接收到相同AP的数量多,因此,相同AP的数量在一定程度上反映了参考点之间的空间距离关系。匹配算法需要遍历指纹库中所有的参考点,当指纹数量较大时,匹配算法的效率大大降低。考虑到效率问题,本文引入相同AP数目Nap作为参数。在线定位阶段,预先筛选出符合Nap>g的参考点,g为大于0的自然数,再使用KNN算法估计位置,从而提高定位的效率。
1.1.2 WiFi指纹库构建
传统的指纹采集工作首先在室内环境中划分格网,每个格网确定1个参考点。接着测绘人员在各个参考点上采集信号强度,空间越大,参考点越密集,需要花费的时间就越多。所以,WiFi指纹数据库的构建是个非常耗时的过程[11]。本文依据PDR算法,采用行走采集的方式来快速构建指纹库,即测绘人员手持智能手机沿预定路线在室内环境中行走,在记录轨迹坐标的同时采集RSSI,从而建立试验区指纹库。
1.2 行人航迹推算
行人航位推算是根据行人的运动传感信息对步态进行检测和划分,并对行进距离和方向进行计算来完成自主导航定位。本文利用智能手机中的传感器作为惯性测量单元来确定行人的位置为
1.2.1 步态检测
人的行走是1个连续的周期性过程,随身携带的智能手机中的加速度计数据也呈现周期性变化,因此对加速度曲线周期的识别即是对于人步态的识别[12]。人的行走会导致加速度曲线周期性地呈现波峰波谷状态,传统基于加速度阈值的峰值检测法[13]精度不够高,本文首先设定加速度阈值来剔除抖动、传感器误差,再设定时间阈值来排除转身、起坐等造成的伪波峰。符合以上条件的波峰波谷纳入动态阈值计算,再记录最新几个波峰波谷的差值作为动态阈值并梯度化,若当前波峰波谷差值符合阈值,则记录为1步。
1.2.2 步长估计
利用步频来计算人行走的步长是比较成熟的步长估计算法,由于步长与步频成正相关[14],所以步长
的计算方法[14]为
1.2.3 航向估计
航向是造成PDR定位误差累积的最主要因素[15]。基于智能手机的航向估计通常由加速度计和磁力计制作电子罗盘来获得设备与北方向的夹角,进而得出航向角,或者对陀螺仪采集的角速度进行积分得到转角。磁力计容易受到周围磁场影响,陀螺仪在短时间内精度高,但会随时间产生漂移,二者在实际定位中误差较大。
Android已将陀螺仪数据与来自磁力计、加速度计的测量值进行卡尔曼滤波处理,提供了校准后的陀螺仪与旋转矢量(rotation vector, RV)传感器[16]。校准后的陀螺仪提高了精度和灵敏度,且只存在较小的漂移;RV传感器提供了设备的绝对方向,但存在轻微的延迟和较小的方向校正,当传感器处于校正状态时,需要等待其校正完成。校准后的陀螺仪在短时间内较精确,但长时间内存在一定的漂移;结合RV传感器进行角度校正可以提供更为准确的设备方向。
本文利用四元数球面线性插值(spherical linear interpolation, SLERP)来融合校正后的陀螺仪和RV传感器。四元数是空间中表示物体旋转的1种表示方式,四元数q可表示为
1.3 基于粒子滤波的融合定位
WiFi定位不稳定,但提供绝对定位位置;PDR在短时间内误差较小,但需要设置起点,且存在误差累积。所以,可以结合2种定位方式以提高定位精度。本文将行人的运动状态信息和WiFi定位通过粒子滤波来融合。系统观测值为WiFi指纹定位结果,PDR用于状态更新,系统状态为用户实际位置。
结合WiFi定位和PDR的粒子滤波定位算法如图1所示,PDR作用于定位的2个阶段:①离线阶段,采用行走采集的方式,记录修正后的PDR坐标和WiFi信号,构建WiFi指纹数据库;②在线定位阶段,将PDR定位和WiFi定位结果进行粒子滤波融合,最终得到用户位置。粒子滤波算法具体步骤如下:
2 路径规划方法
实时地理位置共享旨在将当前用户与目标用户的地理位置信息互相传达,明确信息发送者的实时位置,以便于用户之间信息的交流与分享[18]。当前的位置共享应用或系统主要以GPS定位结果作为信息主体,当用户位于建筑物内时,无法获取到对方的准确位置。例如在大型商场或者博物馆内,常常需要花费大量的时间才能找到对方或到达指定地点。实现用户之间的室内位置共享并提供路径规划,能为用户的出行、集会带来便利。
2.1 系统框架
本系统遵循客户机/服务器(client/server, C/S)的架构模式,客户端为Android系统开发的室内定位应用程序(application, APP),集成了带有消息会话功能的软件开发工具包(software development kit, SDK),可发送消息并接收消息。服务端选用环信即时通讯云作为通讯服务器,接收用户请求并将处理结果返回给客户端。服务端的消息回调以超文本传输协议(hypertext transfer protocol, HTTP)的方式实现,消息正文采用JS对象简谱(JavaScript object notation, JSON)格式传输,并做加密签名,保证数据的安全性。用户的身份(identification, ID)、头像、好友列表等个人信息保存在自己的APP后台服务器中,而不是位于第三方平台,保证用户的隐私。用户之间位置共享的实现过程如图2所示。
首先,用户在室内定位APP上注册,后台服务器向通讯服务器发起请求,创建账号。用户创建账号之后,可获得唯一登录ID来登录APP。接着输入对方的ID可添加为信任用户,同时发起位置共享请求的用户可在地图上显示当前定位位置,并将定位消息以JSON格式传输给对方。最后用户可以观察到对方在地图上的位置,实现室内实时地理位置共享。
2.2 路径规划
当室内空间大、道路复杂的时候,为用户提供准确的路径规划能够帮助用户快速到达目的地。Dijkstra算法是解决赋权图的单源最短路径问题的经典算法,本文依据Dijkstra算法为用户提供路径规划。
Dijkstra算法基于1个包含顶点和弧的有向图,在室内地图中,顶点即为道路节点,弧的长度为节点之间的距离。所以,需要预先建立定位区域的导航路网:将地图中所有的拐点、道路终点、进出门口的两侧设为节点;若相邻节点之间的距离大于5 m,则每隔5 m在室内道路上设定1个节点;连接所有相邻节点并标记节点之间的距离即形成到导航路网。
用户开启导航功能时,以距离用户定位位置最近的道路节点为起点,距离目标位置最近的道路节点为终点,Dijkstra算法便能计算得到1条起点到终点的最短路径,结合航向就能够为用户提供路径导航。
3 实验及结果分析
本文的实验场地为福州大学阳光科技大厦8楼,楼中已安装实验所需的数十个WiFi无线路由器。实验所用设备为荣耀6 Plus智能手机,操作系统为Android 6.0。由于本文WiFi指纹数据库依赖PDR算法来建立,所以先进行PDR实验,再进行其它定位实验。
3.1 PDR实验分析
为验证本文步态检测和步长估计的准确性,在长度为50 m直行道路上,实验者手持终端在该路径上进行多次测试,记录实时行走数据。实验结果表明,本文的步态检测与步长算法计算得出的行走距离与实际距离的平均误差为2.2 m,相对精度达95.6 %,稳定性与相对精度均满足PDR运用。
接着在实验楼的环形走廊上测试,比较3种智能手机获取方向的方法和基于SLERP融合的航向估计算法,参数w=0.995,实验结果如3所示。
由于室内环境存在许多磁干扰源,由加速度计和磁力计组合的电子罗盘存在方向不稳定的缺点,输出轨迹不平滑,且偏离真实路径;卡尔曼滤波校正后的陀螺仪与RV传感器获取的方向较为稳定,抖动很小,存在较小的方向偏差,但误差逐渐变大;由SLERP融合算法提供的设备方向误差小于陀螺仪和RV传感器,且依然保持良好的响应性和稳定性。由实验结果分析可知,SLERP融合算法计算得到的航向准确性明显高于其他几种方法。
3.2 WiFi指纹定位实验分析
本实验设计2种指纹数据库构建方案来进行对比:
方案1为行走采集:由于SLERP融合的PDR在短时间能够提供稳定位置估计,所以在较短的行走路程内,PDR的轨迹坐标与行走的实际坐标差距较小。实验中测绘人员手持移动终端沿着实验楼主干道匀速行走,记录行走坐标的同时采集WiFi信号,建立实验区指纹库。首先,从已知起点开始行走采集,当经过拐点时,将当前的PDR坐标修改为拐点的已知坐标;接着依据起点与拐点之间的距离和PDR行走距离等比例修正之前每一个步伐的坐标,这样PDR轨迹将基本与实际行走路径重合,保证指纹库的准确性。
方案2为单点采集:利用传统的单点采集的方式建立指纹数据库,用于比较方案1的精度和可行性,参考点均位于方案1的行走轨迹上,间隔为2 m。
3.3 粒子滤波融合定位实验分析
将PDR、WiFi定位、结合WiFi定位和PDR的粒子滤波融合定位3种方法进行对比实验,其中WiFi指纹库由行走采集的方法来构建。实验中每隔2.5 s获取1次WiFi定位的结果,粒子初始数量为1 500,行走过程保持匀速。
图5为3种定位方法在地图上的定位结果,可以看出:WiFi定位为单点定位,定位结果总体在真实轨迹附近,但存在重复堆积点和回跳点,无法形成连续轨迹;改进航向的PDR在短时间内保持了很好的稳健性,轨迹与真实路径重合度较高,但误差随着行走距离不断增大,这是PDR算法的固有问题;粒子滤波融合定位轨迹与真实路径的重合度最高,定位结果优于PDR和WiFi定位。
3种定位方法的误差对比如表1所示。WiFi定位的最大误差为9.2 m,存在误差较大的定位点;PDR短时间内的误差小于WiFi定位,但误差会不断累积;粒子滤波融合后的定位误差均小于PDR和WiFi定位,且平均误差为3.06 m,比传统指纹构建方法的WiFi定位精度更高。
根据以上关于WiFi、PDR和粒子滤波定位的精度分析做出以下总结:
1)基于粒子滤波的融合定位平均误差和最大误差均小于PDR和WiFi定位,有效地抑制了PDR误差累积的问题,并且提升了定位的稳定性。
2)WiFi定位所需的指纹数据库采用行走采集的方式快速建立,结合WiFi和PDR的粒子滤波融合方法的定位精度优于传统指纹构建方法的WiFi定位精度。实验结果表明本文的方案在保证了室内定位精度的同时,大大减少了数据库构建的人力成本。
3.4 位置共享与导航实验分析
用户B告知用户A当前位于阳光科技大厦8楼北801室,用户A位于大厦1楼大门口,需要快速准确地到达目的地。
首先用户A和B登录后向对方发送位置共享请求,开启实时位置共享功能。用户A手持智能手机从1楼大门进入大楼,乘坐电梯到8楼走出电梯口,终端定位位置为结合WiFi定位和PDR的粒子滤波融合定位结果,此时用户A、B均可在地图上观察到对方的实时位置。接着用户A开启路径导航功能,终端显示从当前位置到用户B所在位置的最短路径,用户A便可根据导航路径快速到达B所在的办公室附近。实验结果如图6所示,其中虚线为导航路径,实线为用户A的行走轨迹。
4 结束语
本文提供了一整套基于智能手机的室内位置共享解决方案,包括2个方面:室内定位方法采用行走采集的方式快速建立WiFi指纹数据库,改进航向估计算法获得更为稳健的设备航向和更为精确的行人导航定位结果,再通过粒子滤波融合WiFi定位和PDR;路径规划方法给出了一种室内实时位置共享和基于Dijkstra算法的路径规划方案,实现用户之间的位置共享和地图导航。实验结果表明,该方案提高了定位精度的同时减少了离线阶段WiFi指纹库的建库成本,并为用户提供了快速的室内寻人寻址方法。在定位过程中用户轨迹存在穿越墙壁、走廊等不合理现象,后续工作可结合地图信息进一步提高定位准确性。