节点的定位是无线传感网应用中的一个重要问题,位置信息的引入使得WSN的输出从单一的{数据}变为{数据,位置}形式,使得使用者可以更有效的获取特定位置和区域而不是特定传感器结点的数据,从而为许多新型应用如基于位置的路由、跟踪、建筑物形变测量等应用打开了途径。
无线传感网节点定位算法实现具备两类输入:已知锚点及其位置信息,结点之间的测量间距。
已知定位信息的节点被称为锚点。未知节点与锚点之间的距离,按照实现方式不同,节点定位算法分为分布式和集中式两类,前者的算法是通过分布式的各个节点实现的;后者的算法是通过一个集中式的节点来实现的。本文采用集中式算法。
无线传感网节点摆放完后就确定了锚点的信息,实现定位的另外一个输入是各个节点距离信息。目前采用的测距方法有:测量无线电信号强度(RSSI),测量无线电信号覆盖关系(Radio CONnectivity),测量普通声波与无线电到达时间差(TDOA),测量超声波信号与无线电到达时间差。
本文采用RSSI方法来进行节点之间的测距,实现简单,模型成熟,比TDOA等方法容易实现。
利用三角定位的原理,分析了定位与锚节点数量的关系,锚节点数量不足时,利用DV-hop算法计算多跳距离。锚点信息足够时则采用二乘法对数据进行处理以获得平均意义上的节点位置。
无线传感网中节点定位与实际节点定位信息存在一定误差,产生误差的原因有两个:无线电信号传播模型的不够准确,节点之间存在障碍物,节点摆放等环境因素影响。针对后者,本文提出了一个方法来预测节点之间是否存在障碍物,来改善节点定位精度。
用C语言进行仿真,验证了考虑障碍物影响后,节点定位精度相比于没有采用障碍物分析时提高了30%左右。
1 定位原理
采用无线信号删减模型进行测距,其数学表达式为(1):
式中:precieve为接收无线信号的强度,psend为无线节点发出信号的强度。
在信号强度删减模型中,其指数a设定为2,忽略干扰,可得矩阵方程:
式中:X∈R2,是未知节点位置,ei∈R2是已知第i个锚点的位置,Zi是接收信号的强度,ai为常数。把式(2)展开可得:
给定第i个锚点信息,X是一个二次未知数,这对解方程有一定难度,把其线性化,第i个方程减掉第1个方程可得:
给定k个锚点,可得k-1个线性方程。
通过上面的k-1个方程组可知,当X有3个变量时,如X表示三维坐标,k=4即k-1=3,可以得到解;k《3时有多解;k>3时无解。当X有2个变量,X代表二维坐标,k=3有解。
在无线传感网节点定位中,以二维定位为例,若未知节点知道3个锚点距离,可定出该节点位置;若仅知道2个或更少锚点信息,可利用算法一定程度上定出位置范围;若锚点距离信息多于3个,可用优化算法来优化定位精度。
本文以二维信息为例说明无线传感网节点定位问题。
2 节点定位系统架构与障碍物分析
无线传感网节点定位系统分为分布式和集中式两种:
分布式算法将计算工作分布到各个节点中,节点的位置估计在本地完成。在非多跳方式中,算法使用的距离参数在节点一跳范围内取得;在多跳方式中,这个参数由节点间协作、多跳取得。
在集中式中,中心计算机负责计算每个节点位置,每个节点把自己的信息都统一发到某一中心节点,由这个中心节点传到一计算机集中处理数据并给这些未知节点定位。见图1。
集中式方法实现容易,考虑全局信息后能优化节点定位。本文采用集中式定位算法。
2.1 集中式定位算法实现
采用集中式算法后,多跳范围的节点与节点距离采用DV-hop算法,即平均每跳距离×跳数的方式。其实现过程如下。
2.1.1 平均每跳距离及锚点到未知节点跳数计算
分为2个阶段,即2次广播过程。
个阶段,每个信标节点采用广播方式将其位置信息传递给其它的信标节点。广播的信息包格式为:{IDi,xi,yi,Hopsi},其中包含了该节点的标识位置坐标IDi以及跳数Hopsi信息。初始Hopsi为1,接收到此数据的每个节点,将此信息记录到一张表中。然后继续向新的邻居节点广播,每广播就将Hopsi加1。当节点接收到一个相同ID的数据包时,便要与原来的Hopsi进行比较,如果新的跳数小于原表中的跳数,就用新的跳数更新表中的跳数信息,意味着找到了一条更短的到达该信标节点的路径。如果新的跳数大于原表中的跳数,就丢弃该数据包,也不再进行转发。
经过阶段的广播过程后,信标节点也获得其它所有信标节点的坐标及跳数距离,而且所有传感器节点都已经得到所有信标节点的坐标和跳数距离。这样,每个信标节点即可用式(8)计算出信标节点i到其他信标节点j的每跳平均间隔距离:
其中j是除i之外的所有其它信标节点。
第二个阶段,每个信标节点将每跳平均距离传送至中心计算机,数据包的格式为:{IDi,Ci},Ci是该信标节点到所有其它信标节点的每跳平均距离。中心计算机就将所有信标节点平均每跳距离相加取平均:
式中:n为所有信标节点的个数。由此得到了全网所有信标节点之间的每跳平均距离。各个节点也得到各个信标节点的跳数。由此可计算出该节点到信标节点的距离:Di=hops×cc。在图2的示例中,节点0和5之间的距离,等于跳数5乘以cc。
2.1.2 节点定位
所有未知节点到锚点的距离算出后即可定位,分为3种情况:
(1) 未知节点与3个锚点距离已算出;
直接采用式(6),式(7)三角定位原理算出该节点位置。
(2) 未知节点与小于3个锚点距离已算出;
若有2个锚点距离算出,取该两点线段中心作为该未知节点位置;若只有一个锚点距离算出,则以该锚点位置作为未知节点位置;若无锚点距离算出,以随机经验值分配该节点位置。
(3) 未知节点与大于3个锚点距离已算出;
利用二乘取这组锚点信息来估算未知节点位置,把式(5)化为式(10):
2.2 误差及障碍物分析
2.2.1 障碍物引起的误差及障碍物预测方法
无线传感网节点估算定位与实际节点位置之间存在误差,产生误差的原因有2个:(1)Rssi方法进行测距时,无线信号删减模型随环境变化有所不同,这种模型不能很好的适应实际情况,在对节点定位时会产生误差;(2)实际环境中,节点与节点之间可能存在障碍物,导致此两节点运用RSSI测距得出的信号强度大大小于无障碍物时的情况。
本文采用RSSI方法来进行节点之间的测距,节点间若存在障碍物,则测出的信号强度与实际节点之间的距离有很大偏差。
用算法预测障碍物的存在位置,把障碍物的影响考虑到节点定位中有助于节点定位精度。
本文提出一种预测障碍物的三角预测法,改进由于节点之间存在障碍物引起的定位误差在a,b,c 3个节点之间预测其中间有无障碍物,测得信号强度:
RSSab(a接收到b信号的强度),RSSac(a接收到c信号的强度),RSSbc(b接收到c信号的强度)。
l1=f(RSSab),a到b的距离;l2=f(RSSac),a到c的距离;l3=f(RSSbc),b到c的距离。
这样可以估算出ab,ac,bc的长度l1,l2,l3。
a,b,c都为一跳邻居节点,相互靠的比较近,满足三角形两边边长之和大于第三边的定理。这里通过计算发现l1>l2+l3,即两边之和小于第三边。则可预测a和b之间可能存在障碍物。
定位算法是一个需要迭代比较复杂的过程,运用障碍物分析会使定位算法程序变得很复杂,一种好的解决方法是取少量可能存在障碍物的邻居节点进行障碍物分析,大多数都无需分析,这样的节点对有以下特征:信号强度低于某一域值。
障碍物导致无线信号信息不可得,这种情况看作锚点与未知节点距离太远无法通信,本文考虑引入障碍物后无线信号强度减弱,仍可得到无线信号。
2.2.2 障碍物分析算法实现
本文的定位基本算法如3.1所述,在3.1的算法中,取得了未知节点到锚点的距离和计算未知之间插入障碍物分析。
步,在取得i点与锚点j距离后,做循环搜索是否有m点同时与i和j点有距离信息,若有则进入障碍物分析,否则退出。
第二步,根据i,j,m三点距离信息,利用3.2.1所述的障碍物分析算法判断i和j之间是否有障碍物。
第三步,如有障碍物,则根据i节点信息作如下处理:(1)若i有3个以上锚点距离信息,则直接丢弃该j锚点的距离信息;(2)若i仅有3个及以下(包括该j节点)锚点距离信息,则i和j的距离取一个经验值代替由于障碍物所得的距离值。
3 仿真结果
采用C语言仿真,按照前面的算法进行仿真。论证引入障碍物分析后定位精度的提高,仿真在50 m×50
m的区域内进行,锚节点为4~16个不等,节点通信距离为10 m,放置忽略厚度的障碍板8块,每块长5
m。比较在有障碍物的情况下一般算法和引入障碍物分析算法后定位的精度。
4 结 论
本文分析了定位算法理论,提出了定位算法需要解决的几个关键问题,提出了一个新的预测障碍物的算法,提高了节点定位的精度。采用C语言,通过仿真结果来论证引进障碍物分析后定位精度的提高。