摘 要: 为解决无法在室内使用GPS的问题,设计并实现了基于常用手持设备(如手机、平板电脑)的室内定位系统。系统融合了传统的惯性定位方法和基于WiFi信号强度定位方法,易于搭建,仅需一个包含惯性传感器、电子罗盘、WiFi扫描的手持设备。提出了惯性定位中的路径匹配算法和WiFi信号定位方法中的位置估计算法。经实际测试,系统定位精度小于4 m。
关键词: 室内定位;惯性定位;WiFi信号定位;路径匹配
位置信息在人们的日常生活中扮演着重要的作用。目前全球定位系统GPS是获取室外环境位置信息的最常用方式。但由于卫星信号容易受到各种障碍物遮挡,使GPS卫星定位技术并不适用于室内或高楼林立的场合。目前无线室内定位技术迅速发展,已成为GPS 的有力补充。
本文使用WiFi信号强度、电子罗盘和惯性(加速度)传感器这三个信息来完成室内定位。这三种信息可以轻易地从一个手持设备(如手机、平板电脑)上获取。使用惯性传感器和电子罗盘进行的惯性定位最大的不足在于难以消除累积误差,而现阶段单纯使用WiFi信号强度进行定位则存在分辨率太低以及无法连续定位的缺陷。本系统则融合了惯性定位和以WiFi定位这两种方法以弥补彼此的缺陷。
1 系统原理
系统原理如图1所示。Open Street Map网站能提供类似于Google地图的服务,其最大特点在于允许用户使用XML语言编辑地图,并且生成大小与实际经纬度成比例的PNG格式的地图背景图片[1]。本文使用Josm来编写适用于该网站的XML文件并上传,用户可在远端通过手持设备从该网站上下载XML文件与PNG地图背景。其中,XML文件包含地图信息用于实际定位,PNG图片用于界面显示及用户交互。在手持设备中,惯性传感器可用来判断用户是否运动,电子罗盘可获取移动方向,通过这两个信息以及用户的步长便可实现惯性定位。系统中的WiFi信号用于获取用户当前位置信息以及消除惯性定位中的累积误差。

2 惯性定位
传统的惯性定位系统通过目标的初始位置、运动方向以及运动速度来实现目标的定位[2]。在本文中初始位置通过WiFi信号获得,运动方向通过电子罗盘获得,运动速度通过用户是否运动以及运动的步长来代替。其中步长由用户的身高来估计,而用户是否运动则由惯性传感器来获取。
2.1 运动检测
手持设备中的惯性传感器可分别检测X、Y、Z方向上加速度的大小与持续时间。本文使用Z方向的数值来检测运动,因为其在用户运动时变化最显著,其典型变化值如图2所示。当加速度峰值的持续时间、间隔时间以及峰值大小均达到一定数值时则可认为用户进行了一次移动。通过合理设置这三个数值可消除抖动干扰。通过实验发现,间隔时间>333 ms、持续时间>165 ms、峰值大小>2 m/s2,较为接近实际情况。

2.2 路径匹配算法
在获取用户的当前位置以及目标位置之后,系统通过从Open Street Map上下载的包含地图信息的XML文件计算出最佳路径,并在PNG格式的地图背景图片上绘制出最佳路径。当用户沿着该最佳路径移动时,系统使用路径匹配算法将用户的位置显示在地图背景图片上,并通过判断用户是否移动来实时地更新显示位置。
系统首先根据XML地图信息文件、用户的起始位置和选择的终点位置以及用户的步长来生成一个最佳路径数据结构,该数据结构包含了用户需要移动的期望步数和期望方向。当用户沿着最佳路径移动时,系统通过电子罗盘和惯性传感器获取用户实际的移动步数和方向,如图3所示。根据实际经验,当系统检测到用户移动且方向与最佳方向的夹角<40°时,则直接估算用户位置并显示到地图背景上。但是由于用户的步长是根据用户的身高来估计的,这会导致用户的实际步数和计算出来需要走的步数不一致。本文通过以下方法来解决此问题:当连续检测到多个步长的方向与期望步长方向不一致时,在最佳路径数据结构中向前搜索。若找到多段预期路径,则选步数最长的期望路径与检测路径匹配,此情况表明估计步长过小,期望步数多于实际步数;若无法找到期望路径,则放弃当前的检测路径,此情况表明估计步长过大,实际步数多于期望步数。

3 基于WiFi信号定位
本文采用基于WiFi信号强度的“指纹”匹配定位方法来确定惯性定位导航的初始位置以及消除其累积误差,此方法需要知道各WiFi接入点在地图中参考节点的信号强度RSSI(Received Signal Strength Indicator),参考节点的选取决定了定位精度。实际中某一固定点的WiFi信号强度的概率分布接近于高斯分布,因此,可在参考节点多次测量信号强度并取平均来建立地图的WiFi信号强度指纹库[3-4]。
目前指纹匹配定位方法大多基于贝叶斯估计理论,根据选择不同的似然函数来计算目标位置的后验概率,后验概率最大的即为估计位置。这种方法精确度高,但是计算量大。而本系统所有的计算工作均需要在手持设备上完成,因此本文提出了一种兼顾精确度和计算量的定位算法,其伪码描述如下:
n=0,Sum_L_P=0;
For Each APi:
For Each Lj:
If Object_APi_RSSI∈(Lj_APi_RSSI-σ,
Lj_APi_RSSI+σ);
n=n+1;
Lj_APi_Selected=True;
End If
End For;
For Each Lj:
If Lj_APi_Selected==True;
Sum_Lj_P=Sum_Lj_P+1/n;
End For;
n=0;
End For;
Return Max(Sum_L_P);
这里假设地图上有m个WiFi信号源(AP),信号强度指纹库有n个参考点。Object_APi_RSSI表示当前位置第i(i=1,2,3…m)个信号源的信号强度,Lj_APi_RSSI表示第j(j=1,2,3…n)个参考点中第i个信号源的信号强度。对每个Object_APi_RSSI,在指纹库中依次对比各参考点所对应的信号源,若有n个参考点与Object_APi_RSSI的差值小于一个经验值σ,则将这些参考点的权值Lj_APi_P设为1/n。对所有信号源做如上处理后,选出累加权值Sum_Lj_P最大的参考点为估计位置。如有多个参考点权值一样,则取这几个点的平均为估计位置。
4 两种方法的融合
本文在三个方面将惯性定位法和WiFi定位法进行了融合:
(1)基于WiFi信号的定位法的精确度反比于指纹库中参考点的间隔距离,但是由于WiFi信号强度的类正态分布特性导致其精确度不能无限大。实际中参考点的间隔距离应大于3 m,因此,单纯地使用WiFi信号定位方法会给用户视觉上认为存在延时与不连续,而惯性定位方法能根据惯性传感器的移动检测来实时更新用户位置,同时WiFi信号定位法则为惯性定位法提供用户的起始位置。
(2)惯性定位法需要知道用户的步长,而此参数是靠用户输入身高来确定的。本文虽然在路径匹配算法中对此进行了补偿,但是通过实验发现当用户的行走距离超过50 m时,用户位置和估计位置差会大于5 m。因此,当系统检测到用户的位移超过50 m时,则自动调用WiFi定位法来估计用户当前位置,并将其作为新的起始位置重新启动惯性导航。
(3)本文的路径匹配算法的前提在于用户需要按照系统给出的最佳路径进行移动,否则该算法无效。因此,在路径匹配算法中连续出现20个检测方向与期望方向不匹配时,则认为用户没用按照最佳路径移动,此时则启动WiFi定位法来估计用户当前位置,并将其作为新的起始位置重新启动惯性导航。
本文融合惯性定位法和WiFi定位法设计了一个的室内定位系统,提出了惯性定位方法中的路径匹配算法和WiFi定位方法中的位置估计算法,内部算法兼顾了定位的精确度和算法复杂性。该系统易于实现,并在Android手机上实现了该系统。经多次测试,系统的精确度小于4 m。
参考文献
[1] 陈维克,李文锋,首晰,等.基于RSSI的无线传感器网络加权质心定位算法[J].武汉理工大学学报,2006(2):55-59.
[2] 韩霜,罗海勇,陈颖,等.基于TDOA的超声波室内定位系统的设计与实现[J].传感技术学报,2010,23(3):347-353.
[3] 赵方,马严,罗海勇,等.基于核函数法及马尔可夫链的节点定位技术[C].第三届中国传感器网络学术会议,2009.
[4] 任维政,徐连明,邓中亮,等.基于RSSI的测距差分修正定位算法[J].传感技术学报,2008,21(7):1247-1250.
