(1)根据位置计算过程中是否测量节点间的角度或距离信息,可将定位算法分为两类:基于测距的和无需测距的。基于测距的算法中未知节点测量与相邻信标节点之间的距离或相对方位角。典型的测距算法主要有四种:基于信号到达时间((time of arrival,TOA) 、信号到达时间差(time difference of arrival, TDOA)、基于信号角度(angle ofarrival, AOA)和信号接收强度(received signal strength indicator,RSS)的方法。
TOA测距算法需要测量水声信号在声源节点和接收节点传输过程中经历的时间,传输时间与传输速度相乘即可计算出声源节点和接收节点间的距离。但是、TOA测距算法严格要求网络中的时间同步,在水下复杂的信道中很难做到这一点,当节点间距离较短时,计算出的距离误差也相对较高。
TDOA测距算法的核心思想与TOA类似,区别在于TDOA算法中节点是根据两种不同频率信号到达的时间差和它们的传输速度来计算声源节点和接收节点间的距离。TDOA的定位精度较高,目前很大一部分水下定位算法中均采用TDOA来获取声源节点和接收节点间的距离。
在AOA测距算法中,未知节点通过获取与三个邻居锚节点标来进行位置计算。但是此算法硬件成本高,计算过程复杂,因素的干扰,因此不适合应用于能量受限的复杂水下环境中。
RSSI测距算法是将信号强度在传输路径中的衰减转变为距离。由于信号在传播路径中,强度值会随着距离的增大而减小,所以只要得到信号强度与距离这两者的函数关系,节点就能将接收到的信号强度转变为与发射节点间的距离。这种测距方法依赖于己知的信道衰落模型,而且随着环境的变化会产生较大的误差,并且由于无线电波在水下衰减严重,并不适合应用于水下无线传感器网络中。
无需测距的算法不需要获取节点间的角度或距离信息就可以计算节点坐标,比较典型的有质心算法和DV-hop算法。无需测距算法相比于基于测距的定位误差大,但对节点的硬件要求较低,受环境因素影响较小,从而更适合于能量受到限制的水下无线传感器网络。
(2)根据节点定位过程在何处完成可以将定位算法分为分布式和集中式两种类型,在集中式定位算法中节点将信息发送到汇聚节点集中处理,而分布式定位算法中是由每
个未知节点获取信息独立计算自身位置。集中式算法中汇聚节点具有很强的计算和存储能力,能够提高定位精度,缺点是某些汇聚节点由于有庞大的通信和计算开销,能量消
耗大容易死亡,从而中断网络中节点的信息交换,导致无法完成定位,因此一般适合应用在规模较小的网络中。而分布式定位算法将大量的通信和计算开销分布于每个节点
上,能较好的适用于大规模的网络中。DV-hop就是其中一种典型的分布式定位算法。
(3)根据网络中两个节点间信息传输所需的跳数不同,将定位算法分为单跳和多跳算法。单跳算法中未知节点与信标节点之间只有一跳距离,而多跳算法中它们之间的
距离大于一跳。单跳定位算法中需要较密集的信标节点分布,会增加网络成本,所以大多数应用中通常采用多跳定位算法。