随着当今社会的发展,基于位置的服务变得越来越重要.室外定位技术以全球定位系统为基础,包括美国的GPS定位系统,俄罗斯的GLONASS定位系统以及我国自主研制的北斗卫星导航定位系统,利用这些定位系统可以实现室外全天候的实时定位.然而,卫星信号在室内环境中强度较弱,如果在室内仍采用卫星信号进行定位,定位误差可达几十米甚至上百米,这显然无法满足在室内3 m以内定位精度的需求.考虑到目前室内环境中普遍存在的WLAN信号[,人们开始考虑采用WLAN信号来实现室内定位.

室内定位的研究始于20世纪90年代末,其中也涌现出一批优质的定位系统和定位算法.美国微软研究院于2000年首次提出了基于WLAN的室内定位系统RADAR[,在空旷的室内环境下,定位精度可达2~5 m,但在复杂的室内环境,定位精度并不理想.文献[[(artificial neural network,ANN)、支持向量回归[(support vector regression,SVR),以及核函数[等算法应用于室内定位中,进一步提高了定位精度.虽然上述定位系统和定位算法在室内定位领域都取得了一定的成果,但仍存在定位精度不够理想、定位稳定性较差等问题[.

为了进一步提高定位精度,本文提出了基于核函数和卡尔曼滤波的室内定位方法.首先采用核函数法进行初步定位,针对实时定位过程中用户移动位置不平缓、定位稳定性较差的问题,再利用卡尔曼滤波算法对核函数定位结果作滤波修正,实验结果表明滤波以后定位精度和定位稳定性均有明显改善.

1 Kernel函数定位

设X是定义在n维空间

n中的一个非空集合,Φ为X到内积空间H的非线性映射,即

如果定义在X×X上的函数K满足:∀x,z∈X,都有

则称函数K(x,z)为核函数,其中〈·〉为高维空间H中的内积.核函数可以将低维空间线性不可分的模式映射到高维特征空间,从而在高维特征空间中挖掘出数据间的非线性相关性.

传统的定位算法如K最近邻(K nearest neighbor,KNN)算法[,仅通过度量参考点和测试点间的接收信号强度(received signal strength,RSS)的欧式距离来实现定位,而未考虑到RSS之间可能存在的非线性相关性,虽然定位算法较简单,但定位精度并不理想.

利用核函数可以度量在测试点采集的接入点(access point,AP)的RSS样本向量同每个参考点指纹的相似性,从中找出相似度最高的若干个指纹,再将这若干个指纹的位置坐标进行加权平均即可估算出待定位点的位置坐标.由于高斯核函数平滑性能较好,而且具有能够逼近任意非线性函数的能力,故本文采用高斯核函数进行定位,对应的相似性权重系数为

式中:F(Pi)是一个L×n的矩阵,代表第i个参考点Pi的指纹信息,i=1,2,3,…,L;t为扫描次数,t=1,2,3,…,n;r是一个L×1的矩阵,表示在测试点采集到的来自于L个AP的RSS;σ为核函数的宽度.由式(3)计算得出相似性权重最大的前k个指纹,则待定位点坐标为

相较于KNN算法中取某个AP若干次扫描所得信号强度的平均值,核函数可以充分利用每个参考点上所有的RSS样本信息,在核函数空间中可以较好地捕获信号RSS的非线性相关性,因此可以获得比KNN算法更好的定位效果.

2 Kalman滤波

Kalman滤波

由于在实时定位过程中,一般要求在较短的时间内计算出用户的位置.然而较短的信号采集时间会导致采集到的信号样本偏少,从而定位偏差较大,用户移动位置不平缓.本文提出一种基于Kernel-Kalman(KK)的室内定位方法,首先利用核函数法对待测点进行定位计算,再利用卡尔曼滤波对核函数定位结果作滤波修正,以此进一步减小核函数定位的偏差,提高定位精度.

卡尔曼滤波的预测方程和观测方程分别为

式中:xk为状态向量;zk为观测向量;Φk,k-1为状态转移矩阵;Hk为观测矩阵;Γk-1为系统噪声矩阵;wk-1与mk分别是过程噪声和观测噪声,一般为高斯白噪声,且它们满足

式中:Q与R分别代表过程噪声和观测噪声的方程矩阵;δ为冲激函数.

初始条件为

卡尔曼滤波的时间更新方程为

测量更新方程为

式中,K为滤波增益.

定义用户行走的二维模型如下:

式中:xk,yk分别表示二维平面中移动目标的x方向位移和y方向位移;vkx与vky对应其在x,y方向的运动速度.

3 实验结果与分析

分别利用仿真场景和真实场景将提出的KK算法与Kernel算法以及室内定位中较常用的KNN算法进行对比,通过定位结果的RMSE(均方根误差)、定位误差的CDF(累积分布函数)及定位误差的Std.(标准差)这3个方面的对比来验证本文所提出算法的有效性.

3.1 仿真场景

3.1.1 仿真场景的建立

首先利用Matlab仿真对本文提出的定位方法进行了详细的性能分析.定位区域面积为40 m×40 m,周围共分布12个AP.参考点个数共计1 600个,间距为1 m.按照行走路径选取测试点个数为200个.仿真实验场景如图 1所示(图中未标出行走路径).

图 1图 1 仿真场景示意图

Fig. 1 Simulated scene

对于某一位置Q处,第i个接入点APi在点Q处的信号RSS平均损耗为

式中:dAPi,Q表示接入点APi与采样点位置Q间的距离;P(d0)表示在参考距离d0=1 m处RSS信号传播的路径损耗;α表示路径损耗系数.若以Pt表示接入点的发射功率,则APi在采样位置Q处的信号强度为

仿真实验的基本参数设置[如表 1所示(见下页).

表 1(Table 1)

表 1 基本参数

Tab. 1 Basic Parameters

项目

P(

d

0)/dBm

α

Pt/dBm

41.5

2

15

表 1 基本参数

Tab. 1 Basic Parameters

为了与真实环境相接近,在本仿真实验中测试点所接收到的平均信号强度加入了均值为0,方差为1的高斯白噪声.

3.1.2 仿真实验结果

仿真实验结果如图 2所示(见下页).其中,图 2(a)给出了3种算法定位结果的均方根误差.当选择200个测试点时,KNN,Kernel及KK的RMSE分别为1.21,0.95,0.72 m.核函数法相比于KNN算法定位精度提高了22%,卡尔曼滤波可以进一步将核函数法定位精度提高24%.

图 2图 2 仿真场景下实验结果

Fig. 2 Experiment results in the simulated scene

图 2(b)展示了3种定位算法定位误差的累积概率分布.可以看出核函数法定位性能要明显优于KNN算法,经过卡尔曼滤波进行滤波修正后,可以将核函数法1 m以内定位准确率由69%提高至84%.

定位标准差可以反映定位算法的稳定性,如图 2(c)所示.在定位的稳定性方面,Kernel 算法优于KNN算法.经过卡尔曼滤波以后,核函数的定位稳定性有明显改善,定位标准差由0.476 m降为0.355 m,定位稳定性提高了25%.

3.2 实际场景

3.2.1 实际场景的搭建

图 3为实验真实环境的示意图,位于上海市计量测试技术研究院某实验楼的4楼.实验场景的面积为50 m×20 m,场景内包含13个AP,相邻AP间的距离约为20 m.参考点和测试点均位于走廊及两侧的楼厅.图中黑色圆点代表参考点,红色圆点代表测试点.黑色连线连接各个测试点,表示测试者的行走轨迹,测试者从S点出发,按箭头所示路线行走至D点停止.

图 3图 3 实际场景示意图

Fig. 3 Real scene

本次实验选取了116个参考点,60个测试点.采集设备为一台联想e450笔记本电脑,配置为i5-4210U,8GB DDR3内存,WiFi信号扫描软件为inSSIDer,扫描频率约为1次/s.实验者在参考点的采样时间为180 s,在线测试阶段,每个测试点的采样时间为30 s,即每个测试点读取信号强度约30次.数据处理平台仍采用Matlab,包含数据文件解析、位置指纹库的建立以及在线匹配运算等模块.

3.2.2 实际场景的实验结果

图 4展示了真实场景下的实验结果,从图 4(a)中可以看出,随着测试样本的增多,定位算法的RMSE趋于稳定.当样本个数为60时,KK算法的均方根误差为1.37 m,而核函数法和KNN算法的RSME分别为1.83 m和1.94 m.核函数法的定位误差低于KNN算法.卡尔曼滤波可以将核函数法的定位精度提高25%.

图 4图 4 实际场景下实验结果

Fig. 4 Experiment results in the real scene

图 4(b)给出了KK算法、核函数法以及KNN算法三者的定位误差累积概率分布.以2 m以内定位误差百分比作为评价指标,卡尔曼滤波可以将核函数法定位准确度由75%提高至90%,且由图中可以看出,经过卡尔曼滤波以后,定位的误差可以基本保证在3 m以内.

图 4(c)为实际场景中3种方法定位标准差的对比结果,随着测试样本数的增多,定位标准差趋向于稳定.当测试样本数为60个时,KNN和核函数法的定位标准差分别为1.12 m和1.08 m,而KK算法的定位标准差为0.76 m.相比于KNN定位法,核函数法的定位稳定性改善不够明显,猜想可能的原因是测试点个数较少,且实验场景只包含了走廊和楼厅的空白区域,所以测试数据无法完整地展现定位性能.但可以明显看出,经过卡尔曼滤波以后,核函数法的定位稳定性提高了29%,定位性能有较大的改善.

4 结论

提出了一种基于核函数与卡尔曼滤波结合的室内定位算法,首先采用核函数对待测点作初步定位,再利用卡尔曼滤波对定位结果作滤波处理.核函数可以充分利用参考点的所有RSS样本信息,较好地捕获了信号RSS的非线性模式,能够获得比KNN算法更好的定位性能.针对室内定位中用户移动位置不平缓、定位稳定性较差的问题,卡尔曼滤波可以显著降低定位位置波动,提高定位的稳定性.实验结果表明,在对核函数定位的结果做卡尔曼滤波处理后,均方根误差降低了25%,2 m以内的定位准确度由75%提高到90%,定位稳定性提高了29%.

随着具有WiFi连接功能的智能手机的大量普及,本文提出的算法可以在基于智能移动设备的室内定位系统中广泛运用.未来的工作主要有:a.针对室内WiFi信号波动较大的问题,考虑用卡尔曼滤波对设备采集到的RSS作滤波处理,提高扫描的WiFi信号的稳定性;b.从减少移动设备定位计算量的角度出发,采用K-means聚类及其改进算法对位置指纹库进行聚类分析,从而降低系统的匹配计算量,提高定位系统的响应速率.

python卡尔曼滤波室内定位_基于核函数与卡尔曼滤波的室内定位方法相关推荐

  1. 煤矿,隧道,管廊高精度人员定位_基于UWB技术的TWR一维定位方案介绍

    针对工业/汽车.物流仓储.传统制造业.电力行业.医疗保健.高危化工业.隧道/管廊.建筑工地.公检司法的重点安保区域等高精度人员定位需求,SKYLAB推出了基于UWB技术的定位系统.通过在定位区域内部署 ...

  2. python 图片识别服装_基于树莓派的服装识别系统及方法与流程

    本发明涉及一种基于树莓派的服装识别系统及方法. 背景技术: 随着人们生活水平的不断提高,人们对于服装的需求不再是传统意义上的生活必需品,服装已经成为人们生活中的一种时尚消费品,所以很大一部分的消费者家 ...

  3. python卡尔曼滤波室内定位_基于Unscented卡尔曼滤波的室内定位

    Computer Engineering and Applications 计算机工程与应用 2014 , 50 ( 14 ) 1 引言 无线传感器网络是 21 世纪 21 个最具影响力的技术 之一, ...

  4. python卡尔曼滤波室内定位_基于扩展卡尔曼滤波算法的室内定位跟踪系统

    基于扩展卡尔曼滤波算法的室内定位跟踪系统 凌海波,周先存 [摘 要] 摘要:为了解决无线室内定位系统实时跟踪位置坐标误差较大问题, 提出一种基于扩展卡尔曼滤波 (EKF) 算法的室内定位方法.系统采用 ...

  5. zigbee定位_基于RFID室内定位技术的解决方案,能满足高精度室内定位吗?

    跟着物联网的研讨和无线传感网络技能迅速发展,ZigBee技能作为一种新式的低成本.低功耗.低速率短间隔的无线传感网络技能,它是根据IEEE802.15.4规范开发的无线协议.IEEE802.15.4担 ...

  6. android室内定位+3d,基于Android平台的手机室内定位及导航的设计与实现

    摘要: 随着无线通信网络技术的发展,智能手机逐渐融入到人们的日常生活中.它不仅满足当今人们对于通话短信等基本功能的需求,而且还满足人们对于娱乐.上网.社交等功能的需求.导航功能是现在人们常用的一个功能 ...

  7. python实现实时监控_基于 Python 的交换机实时监控系统的设计与实现

    从高校校园网运维工作实际出发,论文提出了一种基于 Python 语言+SNMP协议的网络交换机监测系统设计思路与实现方法.整个系统系统采用B/S模式,基于轻量级的web开发框架web.py实现.后端采 ...

  8. 两个点 定位_基于双天线的北斗定位系统设计与实现

    前期实际北斗模块定位误差统计分析中得出了北斗模块的定位误差分布服从正态分布,根据北斗模块定位误差分布的规律,利用在同一块电路板上的双天线模块接收北斗定位信号,将定位信息传给TMS320F28335DS ...

  9. 用python做炒股软件-python程序源码_基于python的炒股软件

    股票模拟交易系统设计与实现 不但能够进行界面的设计,还可以实现各个窗口的关联,通过WPF实现和其余窗口的关联,而且WPF中的类不但能够和其中一个窗口进行关联,还可以跟许多功能操作接口,WPF在对窗口对 ...

最新文章

  1. 移植 Python 量化交易 TA-Lib 库到函数计算
  2. 人工智能AI实战100讲(十)-一文读懂推荐系统负采样
  3. linux学习第四周作业练习
  4. EXCEL 制作万年历
  5. elk日志收集系统 linux_ELK 日志分析系统
  6. 【财务篇】如何群发工资条?
  7. c++笔试题(带答案)值得我们一看
  8. 计算机网络计算题:时延
  9. nginx 配置网站通用的伪静态代码
  10. 华为微型计算机,8英寸华为平板M5青春版今日发布
  11. Charles抓包(数据)
  12. 解决Google和kaggle注册问题以及GitHub上项目的学习
  13. Matlab数据统计与分析(四)——参数估计
  14. 计算机图形学:二维图形的几何变换(算法原理及代码实现)
  15. Play with Neutron IPv6 (by quqi99)
  16. 欢乐颂之鸿蒙系统,《欢乐颂》:赵启平那么看不起曲筱绡,为何还爱她入骨?...
  17. CV_AA未声明的标识符问题
  18. 做的最简单的APP-计数器
  19. RegionServer 宕机恢复流程
  20. 《道德经》第二十一章

热门文章

  1. Openface 入门
  2. FIR数字滤波器的FPGA实现(一)-FIR滤波器基本原理
  3. 坚石诚信ETz201应用于ASP.NET项目中
  4. SQL SERVER: 行转列
  5. 使用hardhat将合约部署到ganache
  6. 示教器重定位下机器人动作_PDPS机器人虚拟调试——PS篇 第二十课 atc爪手安装与卸载...
  7. Java 调用 Apache POI 往 Excel 插入图片
  8. 1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议
  9. 个人网站使用github登录
  10. 组态王bitset用法_组态王教程(基础入门篇).pdf