rssi参数获取_rssi定位算法及读取RSSI值程序分享

在区域监测、人员跟踪等无线传感器网络的应用领域,位置信息至关重要,事件发生的位置,人员位置均是传感器网络应用中的重要信息。随着移动通信、无线传感器网络技术的发展,室内环境下基于位置的服务越来越受到人们的关注,室内人员定位成为一个非常活跃的研究领域。

定位算法从定位手段上分为两大类: 基于测距算法(range-based )和无需测距算法range-free);根据部署场 合分为室内定位和室外定位,基于测距算法通过测量节点间的距离或角度,使用三边测量、三角测量或最大似然估计定位法计算节点位置。无需测距定位算法则不需要跳离和角度信息,算法根据网络连通性等信息来实现节点定位。基于测群的定位算法需要测量节点间的距离,RSSI 是测距的基本方去,但RSSI测距易受环境影响

RSSI 取值策略

无线传感器网络中的锚节点可以侦听目标节点发出的多组Blast包,从面得到相应的RSSI值。RSSI取值有3种策略,分别是多数投票策略均值策略和中值策略。

多数投票策略是在测量的多个RSSI值中。随机选择一个。比较此RSSI值与剩余RS5值。得到与自已差距在允许范国内的RSSI值的个数,如果个数超过所有测量值数日的一半,则判定自己的测量值为可用的,否则为不可用。多数投票策略的精确率较高,但是计算量比较大,会消耗节点的大量资源,不适宜用在资源有限的无线传感器网络中。

均值策略是计算测得的所有RSSI值的平均值,以平均值作为测量结果,由于RSSI值受环境影响较大,测最值中可能存在错误值,这些错误值偏离正确值较大时会使均值可信度降低,这样会导致错误的结果。

中值策略很大程度上避免了偏离正确值较大的错误值对测量精度的影响。中值策略采用测量值的中值作为测量结果,这样即使有偏离正确值较大的错误值时,它仍然能得到较为正确的测最结果。

这3种策略都不需要增加额外的通信量。表1比较了3种策略的检测精度、结果错误的概事及时间复杂度。

从表1中可以看出,中值策略精度高,计算量较小,是一种适用于无线传感器网络的较好方法,用这种策略取锚点测量的RSSI值较为准确。

室内人员定位算法

室内环境信号衰减模型

RSSI 值受周围环境的影响较大,具有时变特性,会偏离式(1)所示的模型,根据接收信号强度估计出的距离d 有较大误差,;通过大量数据分析,采用了一个噪声模型,即环境衰减因素模型,从而有效地补偿环境影响带来的误差,如式( 2 )。

RSSI=-(A +10nlgd)-EA F (2)

上式中EAFY(dBm )为环境影响因素,它的值取决于室内环境,是靠大量的数据累积的经验值。EAF(dBm)是一个随机变量,但为了增强实用性,将其固定为一个值。通过大量比较在验证环境下测得的RSSI 值与理想状态下的RSSI 值。得到试验环境EAF(dBm )的大概值为11.9dBm,A 取值45.n 取值3.5。A.n 及EAF(dBm)的值确定后,重新对RSSI 值进行采样,并用最小二乘法对采样值进行拟合。结果如图3 所示。

由图3 曲线的变化趋势可以看出,尽管模型中参数的取值受到环境因素的影晌,但接收信号强度与信号传输距离存在一定的变化关系。到达节点的信号强度与信号传输距离垦现出较为明显地衰减变化趋势,但并非一条平滑的曲线。这表明利用RSSI 进行定位,存在着一定程度的误差;当传输距离较近时,功率衰减较快,而传输距离越远,衰减越慢;当传输距离接近20m 时,信号功率对传输距离的变化表现不再明显。因此,基于RSSI 的定位技术,当传输距离越近。定位越准确,传输距离越远,定位误差越大。

需要指出的是,标定的A.n.EAF(dBm)的值是验证环境对应的参数,如果环境改变的话,A.n.EAF(dBm)的值都需要重新标定,才可精确测量RSSI 值。

算法性能评估

为了验证改进算法的性能,进行了一系列实验。图9为实验环境示意图。实验以TI 的无线传感器网络节点CC2430DB为硬件平台,采用了11个锚节点,1个目标节点。锚节点放置在地板上,其位置如图9所示。经测试,得到两种不同定位算法的定位结果,如表3所示。

由表3 可以看出,改进后的定位算法定位误差在3m 范围内,而未改进算法定位误差为5m。

基于rssi的三点定位算法,是已知三个点的坐标和未知点到这三个点的rssi的信号值,求解未知点的坐标。

首先是将rssi信号转换为距离:

d=10^((ABS(RSSI)-A)/(10*n))

其中d为距离,单位是m。

RSSI为rssi信号强度,为负数。

A为距离探测设备1m时的rssi值的绝对值,最佳范围在45-49之间。

n为环境衰减因子,需要测试矫正,最佳范围在3.25-4.5之间。

在获取未知点到三个点的距离后,剩下的就是求解未知点的坐标。我们都知道两个圆会相交于一个或者两个点(如果相交),那么三个圆如果相交的话,必然会交于一个点(三个探测设备在一条直线上的情况下有可能相交于两个点,这里不考虑),所以我们要求解的未知点便是以三个已知点为圆心,以他们与未知点之间的距离为半径画出的三个圆的交点。那么这个问题就转化为了求三个已知圆的交点,然后如果根据圆的方程:

(x1 – x)^2 + (y1-y)^2 = r1^2

(x2 – x)^2 + (y2-y)^2= r2^2

(x3 – x)^2 + (y3-y)^2= r3^2

求解的话,是非常难求出未知点的坐标的。

这里介绍另一种程序容易实现的计算方法:

一、判断任意两个圆是否相切(内切或外切),这里可以设定一个误差允许值d,也就是

(x1 – x2)^2 + (y1-y2)^2= (r1+r2+d)^2

满足上述公式时就认为两个圆相切,其中d为误差值,可以是正数或者负数。如果两个圆相切的话,那么交点就比较好求解了:

x = x1+ (x2 - x1)*(r1/(r1 + r2));

y = y1 + (y2- y1)*(r1/(r1 + r2));

求解到x和y的坐标后,只需要用第三个圆进行验证,即求出这个点到第三个圆的圆心的距离,再和第三个圆的半径做比较,如果在误差允许范围内,那么就可以认为求得的x,y是三个圆的交点,也就是未知点的坐标。

你可能感兴趣的:(rssi参数获取)