基于RSSI参数动态修正的ZigBee室内定位算法

2024-03-05 08:20李世宝丛玉杰
计算机与现代化 2024年1期
关键词:信标信号强度卡尔曼滤波

李世宝,丛玉杰

(中国石油大学(华东)海洋与空间信息学院,山东 青岛 266580)

0 引 言

随着无线传感网络技术(Wireless sensor Network,WSN)的发展,定位服务(Location Based Services,LBS)由于它的社会价值以及商业价值受到了广泛关注。对于室外获取地理位置信息,全球卫星定位系统(GPS)和北斗卫星导航系统(BDS)以其高定位精度为人们所熟知,并且是目前比较成熟的室外定位技术。然而在室内环境下,由于非视距(NLOS)等因素的影响,卫星信号受到较大的影响,不能满足用户对高精度定位的要求,所以不能用于室内定位中。室内定位技术目前不很成熟,所以寻找一种有效的室内定位技术方案成为了目前定位服务领域的一个关键技术。WSN 技术已经成为室内定位重要的支撑[1]。ZigBee 作为新兴的WSN 技术,因其网络协议简单并且灵活,传感器之间彼此通信具有成本低、功耗低的特点,能很好地满足室内定位的客观需求。

基于ZigBee 在室内进行定位的方法可分为基于测距的定位算法和无需测距的定位算法。基于测距的算法包括三边测量法、三角测量法和最大似然定位算法。常见的距离测量方法有TOA、TDOA、AOA 和RSSI[2]。非基于距离的算法与基于距离的算法不同,它们不考虑参考节点和移动节点之间的距离和角度,而是根据网络连接等信息来计算移动节点的位置。其中,基于RSSI 的测距定位技术就是利用无线电波信号在传播过程中会出现损耗的特性来测量节点间的距离的。信号强度和距离d之间有一定的相关性,该关系可用无线信号的路径损耗参数模型来描述,RSSI 定位技术只需节点具备无线收发器即可。这种定位方法在不需要加设额外硬件设备的情况下容易获取,因其成本低且易获得的特点成为主流定位方法,但容易受到环境影响产生定位误差。本文讨论和分析的室内定位方法是基于ZigBee 平台的接收信号强度(Received Signal Strength Indicator,RSSI)的定位算法。

已有研究表明:在没有环境修正的情况下进行RSSI 对数路径损耗模型定位,可能会产生150%的定位误差[3]。由上可知,使用RSSI 固定传播模型来描述信号强度与距离的关系会引起较大误差。因此,构建基于RSSI 的动态修正对数路径损耗模型是提高室内定位精度的关键。

1 相关研究

文献[4]为了获得每个RSSI 值的权值,使用了中位数法以及最短距离法,并对RSSI值进行修正,一定程度上抑制了RSSI 值随环境改变带来的波动,但是在计算复杂度方面结果不理想。文献[5]采用比值法消除RSSI 定位模型中路径损耗因子对发射功率的影响,计算节点坐标使用了搜索算法。文献[6]用分布粒子群算法获得未知节点的坐标并提出一种优选锚节点的算法,用来达到减少节点定位误差的目的,但未考虑环境变化会对RSSI 定位产生的影响。文献[7]的算法用RSSI 高斯滤波、修正权重值、使用极大似然估计、引入距离误差因子等方法减少误差,但环境因素对模型本身产生的影响没有被考虑。文献[8]利用邻近信标点作为差分参考点,并且引入定位误差因子α来修正未知点的定位,降低了环境因素对于RSSI 定位的影响,但没有考虑不存在邻近信标时的情况。文献[9]根据实测环境得到2 组实测值(RSSIA,dA)、(RSSIB,dB)进行模型参数调整的算法提高了定位精度。文献[10]为了求出当前环境中的信号强度A以及路径损耗参数n,采用了线性回归方法,然后根据2 种滤波方式分别处理,选择更好的一种滤波方式来提高定位精度。文献[11]提出一种改进的三角质心定位算法,经过线性插值滤波和卡尔曼滤波改进,通过在环境中测量得出信号强度A、路径损耗参数n从而获取模型参数。文献[9~11]为了减小定位误差从实测环境中测得模型参数信号强度A、路径损耗参数n,但环境不停变化,使用固定参数定位会产生较大误差,即使是相同环境中相同距离,也会因为同一环境中的不同位置、非视距、干涉衍射和多途效应等因素使信号强度A、路径损耗参数n不同。文献[12]为了加强了算法对环境的自适应性,设置了阈值剔除受障碍物影响的参考节点,但是仅仅剔除阈值外的点并不能有很大的提升。文献[13]为了改变信标节点与未知节点之间的距离,引入环境因子改变网络部署区域大小,提出一了种基于定向天线测距的分布式定位算法,提高了环境自适应性,有效地降低了由环境改变带来的定位误差问题,但是未考虑由于传输有延迟导致的环境变化引起的定位不准的问题。

上述文献都没有考虑因环境变化导致信道发生改变带来的定位误差问题。为了解决这一问题,基于ZigBee 技术平台,本文展开基于环境变化的二次修正、动态调整路径损耗模型参数的定位算法研究。主要工作如下:1)为了应对环境变化,对损耗模型中的固定路径损耗参数进行更正,提出一种对数路径损耗模型参数动态修正算法;2)对该算法利用卡尔曼滤波进行二次追踪校正,进一步减少定位误差;3)通过对比实验,验证该算法能减少因环境因素引发的RSSI定位误差问题,提高室内的定位精度。

2 基于RSSI 参数动态修正的ZigBee室内定位算法

首先用高斯滤波对已知信标节点接收到的RSSI值进行预处理,根据加权系数筛选出未知节点所在区域内最佳的3 个信标节点;再利用信标节点的位置信息确定此处具体的路径损耗参数n以及距节点附近的信号强度值A;最后再经过卡尔曼滤波算法对已经得到的定位信息进行二次追踪修正,从而提高定位精度,减少定位误差。

2.1 高斯滤波预处理

在本文算法中,待测节点以T=0.5 s 的时隙发送信号,每发送一次信号将其加入数据集U,共发送300组数据进行高斯滤波预处理。数据集U={RSSI1,RSSI2,RSSI3,…,RSSI300}。

基于高斯混合滤波对数据集U优化处理,选取高概率部分,求其有效值的算术平均,最后对该值进行定位。

本文算法所使用的高斯滤波模型概率密度函数表达式如下[14-18]:

式(1)中,μ为数据集U中RSSI 值的总体均值,单位为dBm;σ为RSSI值的总体方差,单位为dBm;RSSIi为第i次测量得到的RSSI 值;f(x)为RSSI 值的概率,n为RSSI值的个数。高概率发生区为概率大于0.6的范围[19-20](0.6 的取值是工程中的经验值)[14-15],由0.6≤f(RSSIi)≤1可以得出0.15σ+μ≤RSSIi≤3.09σ+μ。

经过高斯滤波后,本文算法将U中[0.15σ+μ,3.09σ+μ]范围内的RSSI 值全部取出,为了得到最终可以用来进行模型修正的RSSI 值,需要再求其几何平均值进一步加强数据的准确性。

假设m个RSSI 值经过高斯滤波后,在[0.15σ+μ,3.09σ+μ]范 围 内 的 数 据 为RSSI(1),RSSI(2),···,RSSI(m),则RSSI最终测量值为:

2.2 RSSI路径损耗参数修正算法

将经过高斯预处理后的RSSIgauss值代入对数距离路径损耗模型,如式(3)所示:

式(3)中,RSSIgauss是经过高斯滤波处理后距离为d的信号强度衰减量;其中RSSI0为附近信标节点RSSI值;n为路径损耗指数,与周围的环境、空气温度和湿度等不定因素有关。路径损耗参数的不确定性会带来较大误差[21-23]。

由式(3)推导可以得到距离d为:

由式(4)可知影响RSSI 定位精度的因素为节点附近的信号强度值A和路径损耗参数n,信号强度值A的值可以通过多次测量节点附近的接收信号强度求加权平均获得,路径损耗参数n的取值随着环境变化而改变[24],与电磁波传播环境有很大的关系。

传统的定位模型通常使用经验值法或者确定法来获得RSSI 定位模型参数A和n,并将其作为整个室内环境的固定参考模型。但实际生活中室内环境复杂,一旦环境中的因素发生变化,信号的传播速度也会随之改变。在室内,不同区域内的环境也不尽相同,即使距离相同在不同环境下也会产生不同的传输损耗,所以在整个网络中使用固定的参数来描述传播模型是不准确的。

具体改进算法如图1 所示,A、B、C为未知节点D所在范围内的3 个已知信标节点,但是所选信标节点可能是在协作定位时由未知节点转化过来的,本身位置信息存在误差,且可能不是信号强度最好的3 个信标节点,所以本文算法引入加权系数,进一步优化路径损耗因子n以及信号强度A。用加权后的路径损耗因子值代替原始路径损耗因子,可以降低因环境因素影响信号强度而对定位结果产生的误差。

图1 中,区域内的3 个已知信标节点两两之间能够互相通信,距离分别是dAB、dAC和dBC。

D点发射信号,A、B和C点接收信号,其接收到的RSSI分别为RB和RC,根据公式(4)建立方程组:

解得A相当于△ABC区域的参数AA和nA;

同时,分别可以得到B和C相对△ABC区域的参数值AB、nB、AC、nC。再对得到的参数信息进行加权算法处理,具体步骤如下:

步骤1求得未知节点的路径损耗参数ni和附近信号强度Ai的平均值:

步骤2对于来自3个信标节点的信号强度进行加权处理,如果Amean、nmean与Ai、ni相差较小,给予一个相对大的权值,反之则给予一个相对小的权值,得到权重因子ki、mi。

步骤3得到3 个信标节点修正后的信号强度A'i以及路径损耗参数n'i:

步骤4利用步骤3 得到修正后的A'、n',重复上述步骤,对其余的未知节点进行定位。

由于信标节点A、B、C与未知节点D同在一个相对小的范围,可以近似认为锚节点之间的信号传输环境与锚节点与未知节点信号传输环境相同。因此,可以利用已知信标节点的位置信息加权后得到的路径损耗模型参数数据,来估计该定位区域内节点附近的信号强度值A和路径损耗模型参数n,确定当前环境下的对数路径动态损耗参数传播模型。

2.3 卡尔曼滤波修正算法

动态更新参数定位算法相较于其他定位算法精度较高,但仍存在误差,产生误差的原因主要有2 个方面:时间同步精度和时间延迟问题,这使得上一时刻测得的路径损耗参数已不能满足此刻的需求。

上文的算法已经完成了对定位初步动态修正,接下来采用卡尔曼滤波(Kalman filtering)对路径损耗参数模型进行二次修正,以达到更好的定位效果。

在本文算法中可将其划分为2 个部分:1)预测,只需使用当前的RSSI测量值和前一个周期的RSSI估计值即可实现下一时刻的RSSI取值估计;2)更新,对前面已经估计出的RSSI 取值进行更新,应用于后续的定位中。

离散卡尔曼滤波的预测方程为:

离散卡尔曼滤波的测量更新方程为[25-27]:

上式中各变量含义如表1所示。

表1 式(14)~式(18)中各参数含义

在本文修正算法中,首先将每个基站计算得到的距离参数传递给卡尔曼滤波函数,对数据进行卡尔曼滤波处理。经过卡尔曼滤波处理后,将位置信息汇总至主机站,由主机站上传至上位机进行位置解算。流程设计如图2所示。

图2 再次修正算法设计流程图

2.4 路径损耗模型动态修正算法定位流程

由上述分析可知,未知节点向周围发送信号,在预处理阶段信标节点所接收到的RSSI 值首先经过高斯滤波优化处理后去掉了噪声波动和突变数据,更加平滑;在定位阶段首先通过加权质心算法确定移动节点所在区域,利用该区域内的信标节点估计出当前的信号强度A、路径损耗参数n;二次修正阶段利用卡尔曼滤波进行跟踪修正处理。为了简单说明本文算法,以3个参考节点为例,本文定位步骤如下:

1)初始化信标节点设置。

2)待测未知节点持续向周围发送信号。

3)高斯滤波预处理信标节点接收到的RSSI值。

4)选取经混合高斯滤波后的3 组RSSIgauss数据,同时选取3个信标节点。

5)首先运用加权算法计算出该定位区域内的参数A和n,通过实验得到动态调整因子的值。

6)使用步骤5 得到的参数估算出信标节点到移动节点的距离dDB、dDC和dDA。

7)将上述步骤中估计的距离参数传输给卡尔曼滤波函数。

8)对路径损耗模型参数进行卡尔曼滤波跟踪修正处理。

9)将卡尔曼滤波处理后的数据汇总至总基站。

10)利用上位机进行位置解流。

11)使用传统三边定位算法,结合上述步骤估计移动节点位置信息。

12)当移动节点移动到新的位置时,重复步骤2~步骤11。

3 实验与结果分析

为验证本文算法的定位性能,选用CC2530 芯片作为定位系统的微处理器,使用ZigBee 协议栈,并在IAR 集成环境下实现各类节点的功能编写和流程设计,实时位置信息可以显示在上位机中。以彩椒种植温室为例,在50 m×100 m 的温室内均匀布置9 个传感节点作为实验进行的定位区域,彩椒种植行内固定可以自由调节的传感节点,温室结构如图3、图4 所示,红色圆圈部分即为ZigBee 测距模块。图5 为在本文实验中使用的ZigBee 测距模块,包括中心节点S以及路由节点。

图3 温室结构示意图

图4 实验环境

图5 实验中使用的ZigBee模块

发射器和接收器分别放置在塑料支架上,且支架绝缘与地面垂直,信标发射器放置在温室内侧壁上的不同已知位置。发射器ZigBee 节点采用同频干扰较小的14信道,发射功率固定为4.5 dBm。每个测试点每5 min广播信标,信标包含发送器的位置坐标。

图6 显示了温室内锚钉一天内的温度以及湿度测量结果。可以发现,温度在4 ℃~27 ℃之间变化;湿度在61.7 %rh~99.9 %rh 之间变化。加热和冷却系统以及具有热隔离的壁和窗的存在可以防止温度急剧地变化。温度变化范围约为23 ℃,湿度的变化范围在38.2 %rh。

图6 温室内温度湿度变化

为了显示出环境变化对RSSI 的影响,分别选择在发送器与接收器之间特定距离为5 m,结果如图7所示。

图7 环境变化对RSSI的影响(d=5 m,rh=44% rh=25%)

实验数据表明环境中温度、湿度变化会影响RSSI 值。温度与RSSI 值具有负相关性,当温度升高时,RSSI线性降低;相对湿度与RSSI之间存在强的正相关性,当湿度升高时,RSSI也随之线性升高。

如图8、图9 所示,由于环境在不断变化,在电磁波影响下采样后的RSSI 值波动很大,对比原始采样得到的300 个RSSI 数据经过高斯滤波模型处理后的只剩150个RSSI数据,通过高斯滤波处理之后去掉了噪声波动和突变数据,使得所得RSSIgauss值更平滑,此时RSSI值波动范围已缩小到10 dBm以内。

图8 原始RSSI数据

图9 高斯滤波后的RSSI数据

由上述实验结果可知,高斯滤波预处理有效抑制了信号强度大幅度变化对定位产生的影响,提高了信号强度的稳定性,为下一步提高定位精度打下基础。

相比固定参数路径损耗模型,本文提出的基于RSSI动态修正路径损耗因子算法测量的待测节点的位置更接近于实际位置,其定位误差对比如图10所示。

图10 相对误差结果图

为了进一步降低环境对定位精度的影响,使用卡尔曼滤波算法对定位算法进行二次修正补偿。使用Matlab 软件对本文算法进行了仿真验证其可行性,对比分析了卡尔曼滤波前后的误差变化,如图11所示。

图11 卡尔曼滤波处理前后误差对比图

图11中虚线是经过RSSI固定路径损耗模型修正算法计算出来的位置与实际位置的相对误差,星型线是经过RSSI 路径损耗模型修正算法处理后再经过卡尔曼滤波进行二次修正后的相对误差。从图11 中可以看出,本文所提算法处理后的数据曲线更平滑,误差进一步缩小。由此可说明本文算法可以降低基于RSSI 固定路径损耗模型修正算法因环境变化而产生的定位误差,达到提高定位精度的目的。

空间测试中,首先将未经过改进的固定参数损耗模型的算法程序下载到信标节点以及基站中,此时将上位机界面显示的坐标记录下来,再将本文改进的修正动态参数损耗模型的算法程序下载到信标节点和基站中,其测量结果如表2所示。

表2 定位测试对比

从表2 中可以看出,采用固定损耗参数模型,平均定位误差为0.271 m;采用动态损耗参数模型,平均定位误差为0.144 m,相对误差降低了46.8%,有利于提升定位效果。

4 结束语

为解决信号因环境变化衰减而导致的定位精度不高的问题,本文提出了一种二次修正动态更新路径损耗参数的算法。通过实验分析RSSI 对数路径损耗模型会因环境变化对测距产生误差,进一步影响定位精度。待测节点自身向周围发送信号,本文采用高斯滤波先对数据进行滤波预处理,减少部分突变数据以及波动数据,找到待测节点所在的最佳邻近区域,为下一步提高精度提供基础,利用加权平均计算得到路径损耗参数n以及未知节点附近的信号强度值A,为了修正因时延产生的定位误差,使用卡尔曼滤波对信号进行预测以及二次修正,最后采用三边测量定位算法获得待测节点的位置坐标。本文在温室内进行实验,验证了本文使用基于RSSI 路径损耗参数动态修正的ZigBee室内定位算法相比修正前定位精度显著提高。

猜你喜欢
信标信号强度卡尔曼滤波
光学相干断层成像不同扫描信号强度对视盘RNFL厚度分析的影响
RFID电子信标在车-地联动控制系统中的应用
室内定位信号强度—距离关系模型构建与分析
基于递推更新卡尔曼滤波的磁偶极子目标跟踪
WiFi信号强度空间分辨率的研究分析
基于模糊卡尔曼滤波算法的动力电池SOC估计
基于信标的多Agent系统的移动位置研究
基于扩展卡尔曼滤波的PMSM无位置传感器控制
基于改进接收信号强度指示的四面体模型井下定位研究
无姿态补偿的水下信标绝对位置传递研究