周玉轩 杨 絮,2 李艳山 朱一峰,2 段 锦,2
1(长春理工大学电子信息工程学院 吉林 长春 130022)2(长春理工大学空地激光通信技术国防重点学科实验室 吉林 长春 130022)
随着物联网相关技术及产业的发展[1],移动终端与物联网终端的定位需求得到了越来越多的关注,全球定位系统(Global Positioning System,GPS)可以很好地满足终端设备的室外定位需求,但由于GPS在室内环境或者高层建筑密集的地区无法感测到卫星信号,无法满足人们对室内环境下定位的需求。因此,如何准确地获取用户在建筑内或建筑群中的位置信息,成为室内定位方法重点需要解决的问题。相较于众多室内定位方式高费用、低普适度等缺点,基于Wi-Fi信号强度的室内定位方式因在个人家庭、办公室、商场等室内环境中普遍存在,很大程度上降低了室内定位系统的建设成本和部署的难易程度。同时现在各种无线通信设备都具有无线网卡,使得基于Wi-Fi信号强度[2]的室内定位方式具有普及的可能性。基于Wi-Fi信号强度的定位方法[3]主要包括基于测距的定位方法和基于指纹的定位方法。
李华亮等[4]提出了一种离线状态基于核函数特征提取(kernel principal component analysis,KPCA),在线状态基于改进加权k近邻(improved weight k-nearest neighbor,IWKNN)的KPCA-IWKNN算法。该算法能够利用Wi-Fi信号的位置指纹信息确定AP(access point)节点,通过核函数提取的方式比较精确地确定特征指纹信息,在线状态下通过IWKNN算法确定测试的终端具体位置。虽然该算法能够比较精确地确定室内环境中的被测试终端节点二维位置信息,但却不能确定被测试终端节点所在楼宇层数的相关位置信息。
基于上述一系列问题,本文提出了一种KPCA-IWKNN-BFPLN混合式楼宇内定位系统(KPCA-IWKNN-BFPLN Hybrid In-building Position System,KIB HIPS),该系统很好地利用了基于核函数特征提取的方法,通过对于改进的基于楼宇层数位置指纹的相关操作,能够很好地定位被测试终端在室内的三维位置信息。同时,系统由于采用了Hybrid混合式的开发方式,通过对Cordova-NodeJS混合式物联网信息服务系统架构[5]的研究利用能够很好地兼容移动终端与物联网终端的定位服务需求。由于采用了Hybrid混合式跨平台开发方式,本文设计实现的楼宇内定位系统不仅易于部署,还能实现跨平台,非常适合于目前移动终端平台和未来的物联网终端平台的大规模实时室内定位需求。
KPCA是一种改进的基于Wi-Fi信号强度的指纹定位算法,该算法在离线阶段采用一种特征提取的降维方法PCA来确定一个坐标系统的直交变换从而建立一个新的坐标系统。它通过变换数据点的方差并且沿着新的坐标轴使其方差最大化,新建立的坐标系统的坐标轴即主成分。KPCA算法是PCA算法的核函数扩展方法,是一种对PCA传统算法的改进算法。
基于KPCA-IWKNN算法的主要作用是确定楼宇内各终端的二维位置信息,其主要功能有两个:一是基于KPCA下的室内定位训练机的室内指纹算法的训练,利用此训练机训练算法的性能;二是在在线状态下,利用移动或物联网终端所接受到的Wi-Fi信号强度及其类别等指纹信息,通过IWKNN算法判断终端所处的具体位置。
本文研究设计的KIB HIPS是一种基于移动终端、物联网终端的混合式开发技术下实现的楼宇内定位系统,利用Cordova提供的Wi-Fi-Control & 4G-Control模块实现对移动终端在室内WLAN场景下的二维位置(Xi,Yi)信息的确定。移动终端与物联网终端节点在Cordova开发框架的帮助下对Wi-Fi-Control模块提供的Wi-Fi_Signal_Strength方法进行利用,从而能够通过终端节点的Native API接口调用设备无线通信模块(Wi-Fi/4G)实现识别室内场景中的识别并提取基于高斯核函数下的空间位置指纹的信息,从而使混合式开发的移动、物联网终端具备室内对二维位置(Xi,Yi)获取的能力。KPCA算法和IWKNN算法都是利用对WLAN场景下的位置指纹空间的核特征矩阵K空间位置信息的获取,因而在本文的KIBHIPS定位系统中利用KPCA-IWKNN算法进行空间位置指纹的核的提取显得非常必要。
KPCA方法是一种核函数特征提取的方法,为此需要定义一个N×N的核矩阵K:
Kij=φ(Fi)φ(Fj)
(1)
但是此时定义的核特征矩阵并不能满足特征空间数据中心化的条件,需要对Kij进行修正,C为特征空间的协方差矩阵,在对修正后的N×N阶核特征矩阵公式化简后即:
Kc(ij)=Kij-CKij-KijC+CKijC
(2)
KPCA算法优异的性能在于核函数的选取。高斯核函数是模式识别当中比较常用的一种核函数,具有良好的局部特征提取能力。同时基于Cordova框架的终端节点通过Wi-Fi模块的Wi-Fi_Signal_Strength方法可以比较容易获取,在选用高斯核函数的过程中系统可以有效挖掘位置指纹间的非线性关系。在线状态下输入空间为F;离线状态下的输入空间为G。KIB HIPS系统将原始特征位置指纹输入空间F、G转化为特征位置指纹空间,计算公式如下:
(3)
(4)
KPCA方法是KIB HIP实现室内定位的基础,KPCA算法具体步骤如图1所示。
图1 KPCA算法
IWKNN算法在线阶段使用一种改进的加权k近邻算法,可以更好地自主选择近邻数进行位置估计。这对于基于Hybrid混合式开发下利用无线通信模块的相关函数与方法提供了更加简单的获取方式,同样在Wi-Fi-Control模块下调用Wi-Fi_Signal_Strength方法实现对加权k近邻的获取,通过IWKNN算法实现二维位置(Xi,Yi)的估计。
为了表示特征指纹空间下S′与F′的欧式距离的相似度,其计算公式如下:
(5)
在算法1的帮助下得到的经过训练特征位置指纹空间F′和在线特征纹空间S′可用于接下来的IWKNN算法的定位。其具体步骤如图2所示。
图2 IWKNN算法
通过KPCA算法核特征提取出特征指纹空间并训练此指纹空间,为在线状态下IWKNN算法比较精确地定位二维空间位置提供了基础。
本节提出的一种基于固定参考节点(Fixed Reference Point,RP)的楼宇层数预测算法(Based on Fixed RP the Prediction of Layers’ Number,BFPLN)是实现楼宇内三维定位的重要组成部分,BFPLN算法主要功能是根据终端接收到RP所表现出的Wi-Fi信号强度信息结合之前设定的无线路由器接入节点(Access Point,AP)收集的Wi-Fi信号的接收信号强度信息来预测终端所处楼宇层数位置信息。
在BFPLN算法中,主要分为以下两种定位模式:Model_1和Model_2;
(1) Model_1:BFPLN算法根据Wi-Fi-Control模块返回的TSSiWi-Fi_Signal_Strength信号强度的Level_3信号RP节点的IP地址确定被服务终端的楼宇层数位置。
(2) Model_2:BFPLN算法通过比较Wi-Fi-Control模块返回的TSSiWi-Fi_Signal_Strength信号强度的Level_2和Level_1的RP节点集合子集数量的多少,从而用子集数量多的RP节点的IP地址确定被服务终端的楼宇层数位置。
系统可以在一定条件下完成对这两种模式的任意切换,从而使被KIB HIPS服务的移动或物联网终端节点在楼宇层数位置预测的定位效果最佳。其主要工作步骤如图3所示。
图3 BFPLN算法
在Node.js应用服务器开发框架中,存在应用服务器Native原生功能模块,利用Node.js API接口提供的Wi-Fi-Control模块调用MacAddress方法实现对固定终端节点RP Mac地址的获取,进而赋予列矩阵FIXT、FIXT的计算公式如下:
(6)
KIB HIPS根据Mac地址确定楼宇层数位置,通过应用服务器实现对固定参考节点RP的标记,其标记方式是通过标记特殊的IP地址号进而为系统未来切割数据报文格式获取RP节点楼宇层数位置信息做铺垫。TSSi公式如下:
TSSi←Wi-Fi_Control_IPAddress(i=0,1,…,n)
(7)
综合以上三种算法可以在Wi-Fi环境场景下利用AP节点和固定参考节点RP预测被服务终端的楼宇内三维位置信息。这三种算法也将是接下来的KIB HIPS系统的重要组成部分,为系统的主要功能楼宇内定位的实现做铺垫。
KIB HIPS系统由移动或物联网终端(Mobile/IOT terminal)、AP节点、RP节点和KPCA-IWKNN-BFPLN混合式楼宇内定位服务器(KPCA-IWKNN-BFPLN Hybrid In-building Position Server, KIB HIP Server)四部分组成。其系统整体架构如图4所示。KIB HIPS定位系统的相关定位服务主要由KIB HIP Server所组成,被服务终端节点通过链接AP、RP所产生的Wi-Fi位置指纹信息和Cordova框架下Wi-Fi-Control模块提供的相关Wi-Fi_Signal_Strength信息从而访问KIB HIP Server,服务器配合相关算法完成终端的实时定位服务。
图4 定位系统框架
KIB HIPS定位系统的主要任务如下:① 终端在离线状态下链接AP节点通过内置训练学习机器训练数据库中的位置指纹信息;② RP节点通过链接到的被服务的hybrid终端应用上传的Wi-Fi_signal_strength值访问KIB HIP Server,利用其被分发的楼宇层数位置信息结合算法3预测被服务终端楼宇位置;③ 终端在线状态下服务器分为对被服务终端所采集的AP、RP节点的数据进行处理。
为了实现楼宇内定位应用跨平台部署与兼容服务等性能,终端客户端将使用混合式的开发方式[7],本次客户端的开发将利用Cordova框架[8]作为终端混合式开发框架,Cordova是一款开源的移动开发框架[8]。其自身包含了一些列的设备API接口,开发者可以通过JavaScript来调用这些API,从而实现设备的诸多原生功能,本文将主要使用其Wi-Fi功能实现基于Wi-Fi信号强度的室内定位。
对于移动终端的开发,可以基于HTML5设计混合式的移动应用,配合混合式移动应用后台的JavaScript代码并将此混合式移动应用[10]嵌入到移动浏览器框架中,实现移动终端对设备原生功能Wi-Fi的控制,进而实现基于Wi-Fi信号强度的基于KPCA-IWKNN算法的楼宇内定位功能。
对于物联网终端的开发,本文利用了一款Raspberry Pi model 3B开发板作为物联网终端开发的基础平台,Raspberry Pi model 3B是一款基于ARM的微型电脑主板,其系统基于Linux平台,随着Windows 10 IOT的发布,其也可以在Windows系统平台上运行。而2016年2月发布的最新的Raspberry Pi model 3B开发板搭载1.2 GHz的64位四核处理器(ARM Cortex-A53 1.2 GHz 64-bit quad-core ARMv8 CPU),并且增加了一款802.11 b/g/n无线网卡,使得其能够非常好地识别基于Wi-Fi信号强度的空间指纹位置信息,非常适合于本文物联网终端客户端定位系统的开发。图5为移动终端和物联网终端混合式开发方式框架。
图5 移动、物联网终端混合式(Hybrid)开发框架
为了实现系统前后平台的兼容并且为后续系统能够兼容服务移动终端及物联网终端,本文楼宇内定位服务器将采用Node.js设计。
Node.js[11]是基于Chrome V8引擎的JavaScript运行环境,Node.js也是一种JavaScript,无论是在语法上还是各种对象的使用上,与混合式应用后台JavaScript没有明显的区别。这对于前端开发工程人员来讲,不仅可以管理前台终端客户端平台,也可以通过JavaScript涉足于后台定位应用服务器的开发和维护,使得系统开发的人力资源成本降低,也同时降低了开发成本与开发难度。正因其这些优点,非常适合于本文系统兼容移动终端和物联网终端目的的实现。因此,本文将用其作为本文室内定位服务器平台的开发。
本节所设计开发的KCPA-IWNKK-BFPLN混合式楼宇内定位服务器主要功能有以下4点:
(1) 离线状态下配合AP节点实现特征指纹空间数据的训练。
(2) 在线状态下二维空间位置(Xi,Yi)的预测并配合MYSQL模块实现原始特征位置指纹空间的存储与抓取。
(3) 在线状态下配合RP节点楼宇层数位置Zi的预测。
(4) 通过Wi-Fi-Control模块将系统预测生成的终端楼宇内三维位置信息传输给混合式终端节点。
图6所示为本节开发的KPCA-IWKNN-BFPLN混合式楼宇内定位服务器的结构及工作原理框图。
图6 KIB HIP Server应用服务器开发框架
实验仿真测试环境在长理科技大厦B座11-13层的所有房间,测试区域为28.93 m×18.6 m×10.44 m(3层)。实验仿真场景如图7所示。由于实验仿真测试区域较大,为了节约资源,实验环境中的AP节点为45个,每一个偶数编号房间都放置一个AP节点。同时每一个有房间编号的房间都放置一个固定参考节点。由于实验仿真环境中的每个房间都有固定终端,所以实验中每个测试房间中都会选择一台固定终端对其所在楼层标记相应的IP地址。如图7所示为实验仿真场景。11~13楼的布置与此一致。
图7 实验仿真测试场景
实验仿真测试的相关数据均使用笔记本电脑acer T5000的无线网卡获得,实验环境中分布的AP、RP节点WLAN信号覆盖对应的三个楼层的所有房间。为了检测KIB HIPS定位系统的性能,实验中将在测试环境内部署6个测试点(T0-T5),通过采集分析6个测试点的相关数据验证定位系统性能,6个测试点分别是3部基于Android 6.1的HUAWEI Mate10和3部基于iOS9.0的iPhone 6S。
实验中先后实地测试理工科技大厦B座楼中的45个AP信号,通过部署Hybrid混合式开发下的6个测试节点T0-T5,实现AP、RP对MAC地址与标定楼宇层数位置信息的IP地址的分发。
为了验证本文基于Cordova框架开发的KPCA-IWKNN-BFPLN混合式楼宇内定位系统(KIB HIPS)对被服务终端位置预测的有效性,实验将对比R-kNN算法与KPCA-IWKNN-BFPLN算法相关性能指标,并利用Hybrid开发下的混合式终端应用在KIB HIPS定位系统的实测服务下的相关指标与两种算法模拟的相关指标进行对比分析。本次实验周期为5个小时,实验中以acer T5000笔记本电脑为硬件平台利用Linux操作系统配合Node.js搭建的KIB HIP Server将服务于T0-T5这6个被测试节点。
(a) 三种定位方式在(Xi,Yi)方向的定位准确率
(b) BFPLN算法两种模式下在Zi方向预测准确率图8 测试点T0-T5在楼宇内三维位置定位准确率对比
图8为KIB HIPS定位系统服务的测试点T0-T5在楼宇内定位中预测位置准确率的对比图。其中图8(a)为R-kNN算法、KPCA-IWKNN算法和Hybrid开发下的KIB HIPS定位系统在服务T0-T5测试点时所表现出的定位准确率。可以看出R-kNN算法其在预测(Xi,Yi)位置信息时均有着比较好的稳定性,KPCA-IWKNN算法在楼宇内定位的稳定性上表现较差,但在一些被测试节点上KPCA-IWKNN算法的定位准确率比较高,在结合了Hybrid开发相关技术的KIB HIPS定位系统的服务下,被服务终端节点的在定位的准确率和稳定性的表现上明显好了许多。图8(b)为6个测试节点T0-T5在BFPLN算法下楼宇层数位置预测准确率的相关表现。可以明显看出KIB HIPS定位系统在Model_1下对于终端的楼宇层数预测虽然对于一些被服务终端有着比较高的定位准确率,但其稳定性较之Model_2有着明显的不足,因此BFPLN算法在被设计时可以判断被服务终端所链接的AP、RP节点个数。当链接的节点数较少时,KIB HIP Server会根据BFPLN算法自动切换到Model_1;当链接AP、RP节点较多时,KIB HIP Server会切换至Model_2。
表1为KIB HIPS定位系统在服务被测试终端时的定位误差性能表现。可以发现系统利用KPCA-IWKNN算法对于(Xi,Yi)位置的预测情况较为优异,定义一个误差可接受范围θ值,当θ≤3时为系统可接受误差。系统对于(Xi,Yi)二维位置预测的准确率高达0.86。同时KIB HIPS定位系统在预测楼宇层数位置Zi信息时也表现出优异的性能,基于Node.js开发KIB HIP Server结合BFPLN算法,系统对于楼宇层数位置预测精度高达0.73。
表1 被测终端在KIB HIPS定位系统服务下定位误差结果
图9所示为KIB HIPS定位系统的系统吞吐量随系统工作时长的变化情况,系统服务的终端仍然是T0-T5这6个测试点,不难看出,R-kNN算法和KPCA-IWKNN-BFPLN算法在模拟器的仿真下R-kNN算法在实验过程中系统吞吐量达到最大值,而KPCA-IWKNN-BFPLN算法的在系统工作中的稳定性较佳,在基于Cordova框架下配合混合式开发的相关技术后,KIB HIPS定位系统在服务6个终端节点时系统吞吐量增量一直都很稳定,非常适合移动、物联网终端实时的定位需要。
图9 KIB HIPS定位系统吞吐量随系统工作时长变化情况
图10、图11给出了测试点T0-T5定位准确率随被服务测试样本数量变化情况。
(a) R-kNN算法的定位准确率
(b) KPCA-IWKNN算法的定位准确率图10 T0-T5测试点定位准确率随测试样本数量变化情况
图10是T0-T5测试点定位准确率随被服务测试样本数量变化情况,可以看出,在KIB HIPS定位系统的服务下,随着系统在实验过程中接收到的测试样本的增多,被服务终端的定位准确率也在增大。图11中Wi-Fi指纹信号强度训练机在训练原始位置指纹信息的过程中系统稳定性在增强,KIB HIPS定位系统在原始位置指纹的锻炼上有着比较明显的优势,比系统R-kNN和KPCA-IWKNN算法仿真所表现的定位准确率上也有着比较好的优势。
图11 T0-T5测试点定位准确率随测试样本数量变化情况
图12所示为测试点在11th、12th以及13th楼层中,终端在被服务过程中定位准确率随测试样本数量变化情况。
图12 测试点分属11~13th楼层时定位准确率 随测试样本数量变化情况
由图12可以明显看出,最上层楼层13th和最下层楼层11th的被服务测试点由于其自身物理位置决定了其本文所链接的AP节点数量较少,在Model_1下较少的链接AP、RP节点可以实现被服务终端具有较高的定位准确率,相应地其系统稳定性较差;在Model_2下较多的链接AP、RP节点可以实现被服务终端具有较低的定位准确率,相应地其系统稳定性较好。
图13所示为KIB HIPS定位系统的系统功耗随系统工作时长变化情况,实验过程中系统服务T0-T5这6个测试点,相应地KIB HIPS定位系统在提供楼宇内定位服务的同时其系统功耗也在增加。从图中可以发现,较之R-kNN算法,KPCA-IWKNN-BFPLN算法在系统功耗的利用率方面有着其优势,在Cordova框架和Hybrid混合式开发技术的帮助下,利用KPCA-IWKNN-BFPLN算法实现的KIB HIPS定位系统在系统功耗利用率方面有着其自身优势。
图13 KIB HIPS定位系统功耗随系统工作时长变化情况
本文设计并实现了一种混合式的楼宇内定位系统。该系统利用Cordova框架实现了一种移动终端的Hybrid室内定位应用,通过改进内核的Cordova实现了一种物联网终端的Hybrid室内定位应用。基于Node.js框架配合本文提出的混合式楼宇内定位服务器架构。KIB HIPS定位系统以KPCA-IWKNN和BFPLN算法的楼宇内定位算法为基础,首先通过KPCA算法在在线状态下收集终端采集的AP节点特征位置指纹与离线状态下训练学习出的数据库中原始特征位置指纹空间进行匹配。IWKNN算法通过对比数据库中的指纹匹配程度确定系统服务终端的二维位置信息。其次利用RP节点所确定的楼宇层数位置信息,通过终端链接RP节点所采集到的Wi-Fi_Signal_Strength信号强度信息,配合BFPLN算法实现对楼宇层数位置的确定。进而实现终端楼宇内定位的需求。KIB HIPS定位系统能够实现多平台服务、跨平台部署和不同平台兼容服务,配合KPCA-IWKNN算法和BFPLN算法能够满足目前移动终端和未来混合式物联网终端的室内定位需要。