党小超, 马平川, 郝占军
(1.西北师范大学 计算机科学与工程学院,甘肃 兰州 730070;2.甘肃省物联网工程研究中心,甘肃 兰州 730070)
无线局域网(wireless local area network,WLAN)指纹定位由于部署广泛,成本低廉,操作简便成为室内定位方法的主流[1]。文献[2]利用接收信号强度指示(received signal strength indication,RSSI)的指纹定位方法结合去噪技术,文献[3]利用主成分分析(principal component analysis,PCA)算法对RSSI信号进行降维,提取RSSI中的主要特征,文献[4]通过用移动端采集的来自各个AP的RSSI信号建立指纹库,利用K最近邻((K-nearest neighbor,KNN)算法,通过最小二乘法找到K个与测试指纹最接近的,通过加权平均得到位置。但是清华大学杨铮与刘云浩教授[5]指出由于RSSI信号的易受多径效应的影响,有时收到的信号是多径信号的叠加,导致了定位的不可估量。
基于信道状态信息(channel state information,CSI)的指纹定位进入人们视线[6],CSI与RSSI相比具有更好的鲁棒性,受到多径效应的干扰更少,所以具有更高的定位精度。
本文提出了一种改进的基于CSI的室内定位方法,经过实验证明:该方法精度高于其他算法。
在现有的通信系统中,正交频分复用(orthogonal frequency division multiplexing,OFDM)技术是应用最广泛的一种多载波传输方案。通过对现有的普通商用Wi-Fi设备添加兼容IEEE 802.11n的无线网卡,可以获取无线信号发射端和接收端之间的CSI,它提供了多个子载波上的信号幅度和相位两方面的信息。作为RSSI的升级版本,CSI包含更为详细和准确的多径传播信息[9]。在OFDM传输系统中,每个信道状态的频域模型可以表示为Y=HX+N,其中,Y与X分别为接收和发送信号向量,H为信道信息矩阵,N为加性高斯白噪声。各个子载波的CSI可以表示为CSI=Y/X。
假设在OFDM传播过程中的子载波数为N,则CSI矩阵H可以表示为H=[H0,H1,…,Hi,…,HN-1]T,i∈[0,N-1]。定义第i个子载波的CSI为Hi=|Hi|ej(∠Hi)。其中,Hi和∠Hi分别表示第i个子载波的振幅和相位。
传统KNN算法定位准确率低,定位时间慢。为了解决这个问题本文采用基于高斯核函数的KNN算法来弥补这种不足。径向基函数(radial basis function,RBF)-KNN定位算法主要分为2个阶段[7]:离线训练阶段和在线定位阶段,如图1所示。
图1 定位流程
建立指纹库和位置与指纹的匹配模型:离线阶段将采集的测试点CSI信号进行预处理并利用RBF-KNN算法在指纹库进行搜索,结合置信度水平得到定位的位置,下面将详细介绍一下本算法。
收集测试点CSI信号,ξnew={csinew}卡尔曼滤波处理后,收集到的信号可以用矩阵表示
(1)
取其中的一维矩阵{csi11csi12…csi1p},并将其与数据库中的每一个点的第一维向量进行比较,常用的比较方法有欧氏距离法、余弦相似度法、皮尔逊系数法以及核函数法。为了比较的方便与准确本文选用了核函数法,并定义了一个基于核函数的权重公式
(2)
式中φ()为测量指纹和指纹库指纹相似程度的核函数,在这里使用高斯核函数[7]定义相似度公式
(3)
式中σ为使用双交叉验证方法估计得到的融合权重参数。然后,通过混合核函数计算在线指纹测量和指纹数据之间的相似性,并且指纹参考点的指标Q(p)与查询指纹最相似。将测量CSI信号与指纹库中的信号进行比较,得到相似度,将相似度按照从大到小的顺序排列,并选取其中的前K个(K的具体取值将在后续实验讨论)进行加权,估计目标位置
x1=wn1·pn1(x)+wn2·pn2(x)+…+wnk·pnk(x)
(4)
y1=wn1·pn1(y)+wn2·pn2(y)+…+wnk·pnk(y)
(5)
这是一条线路的定位结果,按照相同的方法得出其他5条链路的定位结果以及每条链路的定位权重如式(2),并使用置信度比较进行最后定位估计。
本实验采用定制的安装了Openwrt的TL-WDR4310路由器作为发射端,一台安装有Atheros 9380网卡的台式电脑作为接收器,CPU型号为Intel Core i3—4150,操作系统为 Ubuntu10.04LTS,且内核和无线网卡驱动经过特殊配置。实验场地选择9 m×6 m 的办公区域,部署了25个正方形区域,每个正方形区域为0.8 m×0.8 m,接收机与发射机相距4.5 m,天线高度为1.2 m,其平面图及详细区域划分布局如图2所示。
图2 实验室平面
Atheros网卡中有2个接收天线,TL-WDR4310有3个发射天线,这就相当于有6条通信链路,每条链路上有56个子载波。在一个参考点测量200次CSI作为指纹库原始数据进行处理,在测量点取80个CSI进行处理和匹配。
KNN中的K值是算法中的重要参数,将K值从1~10依次取值,分别测试不同取值的定位误差和定位时间,结果如图3所示。
图3 不同K值定位结果
由实验结果分析k=5是一个临界点,当k<5时,k近邻算法的选择范围增大,更多的正确样本进入了选择范围,降低了误差;当k>5时,说明到达了一个临界,不会因为样本的增多而提高定位精度,反而因为样本选择过多,增加了计算时间,所以本文经过实验,将K值定为5,可以有效缩小查找范围,而传统的KNN定位算法需要比较每一个指纹信息,所以定位时间大大延长。
本文采用距离误差作为性能指标,采用均方根误差(root-mean-square error,RMSE)评估,并以此为依据进行评估。假定未知移动设备的位置(Ai,Bi)和用户的实际位置(Ai,Bi)为了比较,实施了三种现有的方法,包括DeepFi[8],Native Bayes和FIFS[9]。 在实验中,这些方案使用相同的测量数据集,以保证结果的可靠性。 图4为四个系统的定位累计分布误差。
图4 定位累积误差比较
在误差小于1 m时,本系统定位准确率处于中等,但在大于1 m时,本文的定位精度远高于其他算法,这是由于本文的方法使用新的核函数作为相似度度量,并使用置信度综合多条线路的定位结果。
本文使用了基于CSI的定位方法,使用卡尔曼滤波对原始信号就行了预处理,结合改进的加权KNN算法与置信度方法进行室内定位.将常用算法与本算法进行对比,实验中证明:本算法在一定误差内,精度优于其他对比算法。下一步将对动态人员定位及轨迹追踪进行研究。