发明内容
针对上述现有技术存在的问题,本发明提供基于RSSI测距的节水灌溉监测网络定位方法,该方法充分考虑RSSI测距误差以及锚节点数量等对定位精度的影响,能取得良好的定位效果,能够满足网络环境恶劣和定位成本受限的大型农田灌溉区土壤墒情监测系统的定位需求,该方法与普通的LS基本定位算法相比具有更高的定位精度和更低的计算复杂度。
为了实现上述目的,本发明提供一种基于RSSI测距的节水灌溉监测网络定位方法,包括以下步骤:
步骤一:利用信号传播建模迅速获得监测节点的距离信息;
采用对数-常态分布模型,RSSI值表示为
PR(d)=P+G-PL(d) (1)
其中,P和G分别是发射功率和天线增益,PL(d)为经过距离d后的路径损耗,因有
其中,PL(d0)是信号经过参考距离d0时的功率损耗,n为路径损耗指数,d0为参考距离,一般取为1m,故有
其中,PR(d0)为距离d0处的接收信号强度,Xσ为平均值为0、标准差为4~10的高斯随机噪声,监测节点测得的PR(d)值越大,说明距离越近,由PR(d)偏差产生的误差越小,无线信号经过参考距离d0后的路径损耗PL(d0)表示为
式中,Gt和Gr分别为发射天线增益和接收天线增益,单位为dBi;L是系统损耗系数;λ是RF无线信号波长,单位为m,则PR(d0)可由下式计算
PR(d0)=P+G-PL(d0) (4)
设定待定位的监测节点在无线监测区域内均匀随机部署,节点均拥有相同的通信半径,而且通信范围可以表示为一个规则圆形区域,由式(2),若d0=1m,则有
PR(d)=PR(1)-10nlgd+Xσ (5)
若在监测节点通信范围内均匀随机部署了足够多的节点,则根据PR(d)与距离d成反比的关系,可以假设最小的接收信号强度PRmin所对应最大的距离为dmax,则有
PRmin=PR(1)-10nlgdmax+Xσ (6)
故有
其中,dmax在此认为是通信半径r;
在未知节点获得的多个RSSI值中,取最小的RSSI值即为PRmin,对应dmax=r,即可获得未知节点到锚点的d值;
步骤二:通过比较锚节点间测量距离与实际距离的差值,获得各锚节点的相对误差系数,以便用来校正监测节点与其通信范围内锚节点间的测量距离;
设锚节点为Ai(xi,yi),i=1,2,…,n,其中n为参与校正计算的锚节点个数;A0(x0,y0)为待校正的锚节点,A0(x0,y0)到Ai(xi,yi)的实际距离分别为ri,i=1,2,…,n通过PR(d)测量得到的距离分别为di,i=1,2,…,n;
RSSI测距相对误差记为
则锚节点Ai(xi,yi)处的加权测距相对误差校正系数为
μw反映了锚节点的RSSI测量误差,在此考虑到不同PR(d)所占的权重,监测节点间距离越大,由PR(d)的偏差所引起的距离误差越大,则考虑对校正系数的权重就越小;
则锚节点校正距离表达式为
式中,dui是传感器节点和锚节点Ri之间的测量距离,单位为m;是传感器节点和锚节点Ri之间的修正距离,单位为m;μw为锚节点Ri的加权测距相对误差校正系数;
步骤三:利用测距加权质心定位算法计算出监测节的坐标;
设定未知位置的监测节点B1收到其通信范围内的3个锚节点A1,A2和A3的RSSI值依次记为RSSI1,RSSI2和RSSI3,并已经得到节点B1监测区域下的路径损耗指数n,考虑RSSI值信息与测距加权因素,则未知位置监测节点B1的坐标(x,y)计算公式可以表示为为:
其中,d1,d2和d3分别为B到节点A1,A2和A3的测量距离,a1,a2和a3分别为与对应的测距成反比的加权系数,有
k为加权调节系数,实际应用时,通过控制k值可以调节加权校正的程度,使得定位系统能够达到最佳状态,得到最佳的定位效果;另外,再考虑选锚节点时的角度信息,形成加权,可进一步节约计算资源,减少定位误差;对于种锚节点组合中的每个组合,设其置信度为CDABC(i),有
其中,αA,αB和αC为三个锚点所组成三角形的三个内角,而
αmax=max{αA,αB,αC}
αmin=min{αA,αB,αC}
则加权后节点M的坐标计算公式为:
步骤四:监测节点的坐标校正;
设网路中有锚节点记为A0(x0,y0),假设其位置未知,其他锚节点记为Ai(xi,yi),其中i=1,2,…,n,利用Ai(xi,yi)到A0(x0,y0)的距离,可以由本文的加权定位算法计算出A0的位置Ac0(xc0,yc0),与其实际坐标进行比较,即可获得坐标误差,则锚节点A0(x0,y0)的坐标误差为
ex0=x0-xc0 (15)
ey0=y0-yc0 (16)
写成第i个锚节点坐标误差标准形式为
exi=xi-xci (17)
eyi=yi-yci (18)
因此,监测区域加权坐标误差为
式中:N为参与网络定位误差计算的锚节点个数;为第i个锚节点的校正距离;
监测区域加权坐标误差ewx和ewy为锚节点坐标误差的加权平均值,反映了系统的区域定位能力,所以,定位系统中未知节点通过区域定位误差系数校正后的坐标为
x=xc+ewx (21)
y=yc+ewy (22)
式中xc,yc为未知节点用加权质心定位算法计算出的坐标值。
所述步骤一中的PRmin的值的获得可以通过搜索方法获得,即在待定位监测节点所收到的所有RSSI值,以及其邻居节点所收到的所有RSSI值之后,放在一起,从大到小排序,取最小的一个RSSI值即为PRmin。
与现有技术相比,该方法充分考虑RSSI测距误差以及锚节点数量等对定位精度的影响,可以取得较好的定位效果,能够满足网络环境恶劣和定位成本受限的大型农田灌区土壤墒情监测系统的定位需求。该算法的特点是计算量小,没有增加额外的通信开销,减少了RF信号建模中随机噪声的不良影响,因而提高了监测节点的定位精度。将该方法与普通LS基本定位算法进行比较,两种算法的定位误差均值分别为2.1425m和2.9251m,定位算法平均运行时间分别为0.2372s和1.2163s,表明该方法具有更高的定位精度和更低的计算复杂度。该方法基于农田自动节水灌溉监测系统的实际需求,以及针对节水灌溉监测节点定位的实际需求,能便于随时了解农田灌区环境土壤的墒情状况,能明显地提高生产质量。
具体实施方式
下面对本发明作进一步说明。
一种基于RSSI测距的节水灌溉监测网络定位方法,包括以下步骤:
步骤一:利用信号传播建模迅速获得监测节点的距离信息;
使用节水灌溉监测系统的土壤环境中,内部各种土壤土质不同以及其他生物密集,且存在分布不均情况,导致多径、绕射及障碍物遮挡,使得RF无线信号传播模型变得复杂。监测节点自身能够提供RSSI的测量,无需额外添加硬件设备。无线信号传播的路径损耗对RSSI测量精度影响较大,采用对数-常态分布模型,RSSI值表示为
PR(d)=P+G-PL(d) (1)
其中,P和G分别是发射功率和天线增益,PL(d)为经过距离d后的路径损耗,因有
其中,PL(d0)是信号经过参考距离d0时的功率损耗,n为路径损耗指数,d0为参考距离,一般取为1m,故有
其中,PR(d0)为距离d0处的接收信号强度,Xσ为平均值为0、标准差为4~10的高斯随机噪声,监测节点测得的PR(d)值越大,说明距离越近,由PR(d)偏差产生的误差越小,无线信号经过参考距离d0后的路径损耗PL(d0)表示为
式中,Gt和Gr分别为发射天线增益和接收天线增益,单位为dBi;L是系统损耗系数;λ是RF无线信号波长,单位为m,则PR(d0)可由下式计算
PR(d0)=P+G-PL(d0) (4)
设定待定位的监测节点在无线监测区域内均匀随机部署,节点均拥有相同的通信半径,而且通信范围可以表示为一个规则圆形区域,由式(2),若d0=1m,则有
PR(d)=PR(1)-10nlgd+Xσ (5)
若在监测节点通信范围内均匀随机部署了足够多的节点,则根据PR(d)与距离d成反比的关系,可以假设最小的接收信号强度PRmin所对应最大的距离为dmax,则有
PRmin=PR(1)-10nlgdmax+Xσ (6)
故有
其中,dmax在此认为是通信半径r;
在未知节点获得的多个RSSI值中,取最小的RSSI值即为PRmin,对应dmax=r,即可获得未知节点到锚点的d值;PRmin的值的获得可以通过搜索方法获得,即在待定位监测节点所收到的所有RSSI值,以及其邻居节点所收到的所有RSSI值之后,放在一起,从大到小排序,取最小的一个RSSI值即为PRmin。
步骤二:通过比较锚节点间测量距离与实际距离的差值,获得各锚节点的相对误差系数,以便用来校正监测节点与其通信范围内锚节点间的测量距离;
为了取得RSSI值测量误差信息,考虑位置已知的锚节点情况,通过测量网络中的位置已知的锚节点PR(d)值,运用RF信号衰减建模计算出测量距离值,然后根据锚节点实际坐标计算出锚节点间的实际距离,将测量距离和实际距离进行比较,从而获得锚节点PR(d)测量值的测量误差,在对未知监测节点测距时,考虑到这个PR(d)值测量误差,则可以降低监测网络中各种随机因素对RSSI测距结果的不良影响;
考虑二维情况,设锚节点为Ai(xi,yi),i=1,2,…,n,其中n为参与校正计算的锚节点个数;A0(x0,y0)为待校正的锚节点,A0(x0,y0)到Ai(xi,yi)的实际距离分别为ri,i=1,2,…,n通过PR(d)测量得到的距离分别为di,i=1,2,…,n;
RSSI测距相对误差记为
则锚节点Ai(xi,yi)处的加权测距相对误差校正系数为
μw反映了锚节点的RSSI测量误差,在此考虑到不同PR(d)所占的权重,监测节点间距离越大,由PR(d)的偏差所引起的距离误差越大,则考虑对校正系数的权重就越小;
则锚节点校正距离表达式为
式中,dui是传感器节点和锚节点Ri之间的测量距离,单位为m;是传感器节点和锚节点Ri之间的修正距离,单位为m;μw为锚节点Ri的加权测距相对误差校正系数。
步骤三:利用测距加权质心定位算法计算出监测节的坐标;
由前面的RF信号传播建模可知,RSSI值越大,则监测节点间的距离越近,反之则越远;距离锚节点越近,所测得的RSSI值导致的测距精度越高,即可信度越高,而当距离大于某一阈值后,由RSSI值引起的测距误差会加大,此时的RSSI值的可信度就降低了,因此提出基于RSSI测距加权的质心定位算法是比较合理的;
该算法通过加权系数大小来实现各锚节点对质心坐标的权重,RSSI值越大,则节点间的距离越小,此时的RSSI值的可信度越高,对质心坐标的权重影响也越大,因此选取适当的加权系数就可以进行RSSI加权计算,从而提高定位精度;
设定未知位置的监测节点B1收到其通信范围内的3个锚节点A1,A2和A3的RSSI值依次记为RSSI1,RSSI2和RSSI3,并已经得到节点B1监测区域下的路径损耗指数n,考虑RSSI值信息与测距加权因素,则未知位置监测节点B1的坐标(x,y)计算公式可以表示为为:
其中,d1,d2和d3分别为B到节点A1,A2和A3的测量距离,a1,a2和a3分别为与对应的测距成反比的加权系数,有
k为加权调节系数,实际应用时,通过控制k值可以调节加权校正的程度,使得定位系统能够达到最佳状态,得到最佳的定位效果;该算法的特点是计算量小,没有增加额外的通信开销,减少了RF信号建模中随机噪声的不良影响,因而提高了监测节点的定位精度;另外,再考虑选锚节点时的角度信息,形成加权,可进一步节约计算资源,减少定位误差;对于种锚节点组合中的每个组合,设其置信度为CDABC(i),有
其中,αA,αB和αC为三个锚点所组成三角形的三个内角,而
αmax=max{αA,αB,αC}
αmin=min{αA,αB,αC}
则加权后节点M的坐标计算公式为:
步骤四:监测节点的坐标校正;
测距校正系数μw能够提高锚节点RSSI测距的精度,但对监测网络中因测量设备和突发状况等各种随机因素所引起的坐标误差却无能为力,因此还应该充分利用锚节点的已知位置信息对节点定位坐标进行校正,以便进一步提高定位精度;定位坐标校正所要考虑到因素是,假设锚节点位置未知,利用本文所提定综合加权质心定位算法计算出锚节点坐标,通过与锚节点实际坐标求差值,即获得了锚节点坐标误差信息;在进行监测节点定位时,还应该考虑这样的坐标误差信息,从而才能够进一步减少监测网络中各种随机因素对定位精度的影响;
设网路中有锚节点记为A0(x0,y0),假设其位置未知,其他锚节点记为Ai(xi,yi),其中i=1,2,…,n,利用Ai(xi,yi)到A0(x0,y0)的距离,可以由本文的加权定位算法计算出A0的位置Ac0(xc0,yc0),与其实际坐标进行比较,即可获得坐标误差,则锚节点A0(x0,y0)的坐标误差为
ex0=x0-xc0 (15)
ey0=y0-yc0 (16)
写成第i个锚节点坐标误差标准形式为
exi=xi-xci (17)
eyi=yi-yci (18)
因此,监测区域加权坐标误差为
式中:N为参与网络定位误差计算的锚节点个数;为第i个锚节点的校正距离;
监测区域加权坐标误差ewx和ewy为锚节点坐标误差的加权平均值,反映了系统的区域定位能力,所以,定位系统中未知节点通过区域定位误差系数校正后的坐标为
x=xc+ewx (21)
y=yc+ewy (22)
式中xc,yc为未知节点用加权质心定位算法计算出的坐标值。
实验仿真验证:
实验研究及其分析过程中,为了体现传感器节点以锚节点数量和密度及通信半径对定位误差的影响,在定位算法执行过程中,将节点的平均定位误差作为主要的评价标准。
定义网络中节点i的定位误差为Eai,即
其中,i=1,2,…,N,N为网络中未知节点数目,通信半径为R。其中pi=[xci yci]T为节点i的最终估计位置,zi=[xi yi]T为节点i的真实位置。
则网络中节点的平均定位误差为Ea,即
平均定位误差Ea越小,定位精度越高。
仿真环境设置,选用Matlab作为仿真测试平台。仿真环境设置为100m×100m的矩形区域。本文选用对数正态模型作为节点间的RF通信测距模型,其表达式如式(2)所示。在距离观测模型中,RSSI值和距离d分别是模型的输入和输出。实际监测环境中的各种随机干扰导致了一定的测距误差。为了模拟随机测距误差,将由监测节点实际坐标计算出来的节点间距离叠加上标准差为σf的高斯噪声,以此作为RF传播通信模型中RSSI输入用于仿真模拟。标准差σf的表达式如式(25)所示:
其中,R表示监测节点的最大通信半径,Ri表示监测节点通的信距离,μi表示测距误差,则控制μi的取值就可以模拟不同的测距误差进行仿真实验。
结果中算法A代表本文算法,算法B表示最小二乘(LS)定位算法,算法C表示普通质心定位算法。仿真对比分析3种算法在不同测距误差、不同锚节点数目以及不同节点通信半径下的定位精度。
测试距离测量误差对定位精度的影响:设置锚节点数量为n=20个,节点数量为400个。仿真得到如表1所示结果。
表1:
由上述数据可知,测距误差对算法C的影响较大,当距离测量误差的方差较大时,定位精度下降较多。算法B受到测距误差的影响较小,相比之下,本文所提算法A很好地抑制了测距误差,因此获得了较高的定位精度。
当测距误差的方差时,B算法的定位精度约为0.23,C算法的定位精度约为0.26;当测距误差的方差增加时,三种算法的定位精度均开始下降,但是算法A的定位精度一直高于其他两种算法。原因是当测距误差的方差时,定位误差主要由测距误差所引构成,采用了测距校正之后,节点定位精度有了比较大的提高,当测距误差的方差增加时,测距误差的方差对定位精度有明显的消弱作用。算法A的测距校正起到了抑制误差的作用,使得对定位精度得到了显著的改善。
测试锚节点数目对定位精度的影响:设置仿真实验环境:100个节点随机分布在100m×100m区域内,节点的通信半径为40m。得到如表2所示结果。
表2:
由上述数据可知,算法B及算法C在锚节点数目不大时的定位误差较大。分析原因主要是当锚节点数目较小时,网络中能够用来计算距离及位置的信息减少,未知节点与锚节点间的距离误差变大。由于A算法利用了多个锚节点的校正系数对测量距离进行校正,所以能够减少由锚节点数目较少引起的定位误差。
测试节点通信半径与定位精度的关系:设置仿真实验环境:100个节点随机分布在100m×100m区域内,锚节点数量为n=10个。得到如表3所示结果。
表3:
由上述数据可以看出,随着节点通信半径的增加,定位精度也在逐渐增加。因为节点通信距离越大时,未知节点与锚节点间的信息量增加,所以未知节点到锚节点的距离误差减少,同时,由于节点通信距离增大,未知节点周围的锚节点也开始增多,所以未知节点可以利用更多的锚节点距离来校正自身到锚节点的距离。因此,随着节点通信距离的增大,定位精度会逐渐提高。由此可知,在同等网络条件下,A算法的定位精度高于其他两种算法。
实验结果及分析:为了用实验验证本文所提算法的定位效果,在教学大楼的实验室的20m×20m区域内,利用CC2530节点构建小型无线传感器网络实验系统。该系统设置有6个锚节点,均匀部署于测试区域内部,另外人工选位置部署10个未知节点和1个汇聚节点。节点通信距离为15m,节点距离地面高度约为0.5m,每20s传输一次数据,实验中取50次测试的均值作为实验结果。
在部署设置待定位节点的具体位置后,认为是未知节点,进行测量、定位。根据实验数据,得到测距定位结果如表4所示。
表4:
| 待定位节点编号 |
节点实际位置 |
测量后定位位置 |
两位置间距离 |
定位误差Eai |
| 01 |
(3.0,3.0) |
(4.5,3.9) |
1.75 |
0.12 |
| 02 |
(3.0,9.0) |
(3.6,7.7) |
1.43 |
0.10 |
| 03 |
(3.0,12.0) |
(5.1,11.7) |
2.12 |
0.14 |
| 04 |
(6.0,6.0) |
(6.6,7.8) |
1.90 |
0.13 |
| 05 |
(6.0,9.0) |
(7.4,10.2) |
1.84 |
0.12 |
| 06 |
(9.0,6.0) |
(8.5,7.6) |
1.68 |
0.11 |
| 07 |
(9.0,9.0) |
(10.4,9.7) |
1.57 |
0.10 |
| 08 |
(12.0,3.0) |
(11.3,3.9) |
1.14 |
0.08 |
| 09 |
(12.0,9.0) |
(10.8,9.5) |
1.21 |
0.08 |
| 10 |
(15.0,9.0) |
(12.2,10.2) |
3.04 |
0.20 |
由表4可知,实际监测环境中算法A的定位误差为0.20,最小定位误差为0.08,均值为0.118。经比较,在同等条件下,仿真实验得到的定位误差均值为0.102,可以看出,A算法的实际定位结果略低于仿真结果。分析原因是实际环境的RF信号受到室内墙体、桌椅和电器设备等遮挡影响,由此引起的信号传播损耗和多径降低了RSSI的测量精度,因而增加了定位误差,而仿真中却没有考虑这些干扰因素。总之在实验中,算法A基本达到了预期的定位精度要求,也验证其在实验测试中的可行性。
利用本文提出的定位算法对16组测试数据进行分析,设定高斯随机变量为Xσ(0,10),100个节点随机分布在100m×100m区域内,节点的通信半径为40m,锚节数目n=20。为了减少网络随机分布带来的误差,下面所得定位数据均为相同参数条件下,仿真100次所得到数据的平均值,测试数据的定位误差如表5所示。
表5:
分析:上述数据中定位误差Eai的最大值为0.35,最小值为0.19,由于6个锚节点均匀部署于实验室测试区域中,整体定位效果较好,只是区域边缘的定位误差稍微偏大。如果在实验室测试区域边缘部署较多的锚节点,定位效果会有所改善。
仿真试验表明,该算法计算量和通信开销较小,能够有效抑制高斯噪声,其定位精度能够满足大多数节水灌溉监测系统的应用要求,获得了网络监测节点比较精确的坐标位置信息。本文算法与普通LS定位算法进行比较,两种算法的定位误差均值分别为2.1425m和2.9251m,而算法平均运行时间分别为0.2372s和1.2163s,能够说明该算法在定位精度和计算量方面均具有更大的优势。