在很多无线传感器网络应用中,没有节点位置信息的监测信息往往毫无意义。当监测到事件发生时,关心的一个重要问题就是该事件发生的位置,如森林火灾监测,天然气管道泄漏监测等。这些事件的发生,首先需要知道的就是自身的地理位置信息。定位信息除了用来报告事件发生的地点外,还可用于目标跟踪、目标轨迹预测、协助路由以及网络拓扑管理等。
常见的定位技术如全球定位系统GPS(GlobePositionSystem)是目前应用最广的、最成熟的定位系统,通过卫星的授时和测距来对用户节点进行定位,具有较高的定位精度,实时性较好,抗干扰能量强。但是,使用GPS技术定位只适合于视距通信的场合,即室外无遮挡的环境,用户节点通常能耗高、体积大且成本也较高,还需要固定基础设施等,这不太适合低成本自组织无线传感器网络。另外,机器人领域采用的定位技术也与无线传感器网络的定位技术不同,尽管二者非常相似,节点都具有自组织和移动特性,但是机器人节点数量少,节点能量充足且携带精确的测距设备,这在一般的能量受限的无线传感器网络中很难满足类似的条件。由于资源和能量受限的无线传感器网络对定位的算法和定位技术都提出了较高的要求。因此,无线传感器网络的定位技术或定位算法通常需要具备以下重要特征:
·自组织特性,节点可能随机分布或人工部署;
·能量高效特性,尽量采用低复杂度的定位算法,减少通信开销,延迟网络寿命;
·分布式计算特性,各个节点都计算自己的位置信息;
·鲁棒性,可能监测数据有误差,要求定位算法具有良好的容错性;
·节点位置计算的常用方法。
1.定位的基本方法
(1)三边测量法(Trilateration)
由式(3-14)可以得知节点D的坐标为:
(2)三角测量法(Triangulation)
如图3-33所示,已知A、B、C三个节点的坐标分别为(xa,ya)、(xb,yb)、(xc,yc),节点D相对于节点A、B、C的角度分别为:∠ADB,∠ADC,∠BDC,假设节点D的坐标为(x,y)。对于节点A和C以及∠ADC,如果弧段AC在△ABC内,则唯一能够确定一个圆,设圆心为O1(xO1,yO1),半径为r1,则α=∠AO1C=(2π-2∠ADC),并存在下列公式:
由式(3-15)就能够确定圆心O1的坐标和半径r1。同理,可以确定相应的圆心和半径。最后根据三边测量法,由点D(x,y),O1(xO1,yO1),O2(xO2,yO2),O3(xO3,yO3)确定D点的坐标。
(3)极大似然估计法
极大似然估计法示意图如图3-34所示。
已知1,2,3等n个节点的坐标分别为(x1,y1),(x2,y2),…,(xn,yn)。它们到节点D的距离分别为d1,d2,…,dn,假设D的坐标为(x,y),则有
从式(3-16)中第一个方程开始分别减去最后一个方程得到:
式(3-17)的线性方程表示为:AX=b,其中
利用标准的最小均方误差估计法,可以求得节点D的坐标为:
2.定位算法的分类
(1)基于距离定位和距离无关的定位算法
根据是否需要测量实际节点间的距离将定位算法分为基于距离定位和与距离无关的定位算法。前者需要测量相邻节点间的距离或方位,并利用实际测得距离来计算未知节点的位置。后者是利用节点间的估计距离来计算节点的位置。
(2)递增式定位算法和并发式定位算法
根据节点定位先后次序不同,将定位算法分为递增式定位算法和并发式定位算法。前者通常是从信标节点开始,先对信标节点附近的节点开始定位,依次向外扩展延伸,对各个节点逐次进行定位,这类算法的一个缺陷就是造成定位过程中测量误差的累积,从而影响定位精度。后者是指所有节点同时进行位置的计算。
(3)基于信标节点定位和无信标节点辅助的定位算法
根据定位过程中是否使用信标节点将定位算法分为基于信标节点的定位算法和无信标节点辅助的定位算法。前者以信标节点作为定位中的参考点,各个节点定位后产生整体的绝对坐标系统。后者只需知道节点之间的相对位置,定位过程中无须信标节点的参与辅助,各个节点先以自身作为参考点,然后将邻居节点纳入自己的坐标系统,相邻的坐标系统依次合并转换,最后产生整体的相对坐标系统,从而完成定位任务。
随着无线传感器网络应用和定位技术研究的深入,一些新的定位技术和方法也应运而生,如基于相对部署位置的定位方法、基于绝对的地理信息定位方法以及基于UWB超宽带技术的定位方法等。加上无线传感器网络应用千差万别,没有普遍适应的定位方法和技术。因此,必须根据不同的应用特点和环境状况,选择合适的定位算法和技术,才能满足用户特定的应用需求。
5无线传感器网络同步管理机制
(7)成本和尺寸。同步可能需要特定的硬件,另外,体积的大小也影响同步机制的实现,无线传感器网络节点非常小而且廉价。
(1)RBS(ReferenceBroadcastSynchronization)算法
(2)TPSN算法
(3)Mini-Sync算法和Tiny-Sync算法
(4)LTS算法
第二种多跳LTS算法通过分布式方法实现全网内的同步。每个节点决定自己同步的时问,算法中没有利用树结构。当节点i决定需要同步,它发送一个同步请求给最近的参考节点。然后,所有沿着从参考节点到节点i的路径的节点必须在节点i同步以前已经同步。这个算法的优点就是一些节点可以减少传输负载,因此可以不需要频繁的同步。另一方面,让每个节点决定再同步可以推进成对同步的数量,因为对于每个同步请求,沿着参考节点到再同步发起者的路径的所有节点都需要同步。随着同步需求数量的增加,沿着这个路径的整个同步将导致很大的节点和带宽资源浪费。因此,通过适当的融合算法是十分必要的。当任何节点需要同步时,需要询问相邻节点是否存在未处理的请求。如果存在,这个节点的同步请求将和未处理的请求融合,减少无效请求的传输。