我是靠谱客的博主 开心煎饼,最近开发中收集的这篇文章主要介绍一文详解基于测距的空间定位算法一文详解基于测距的空间定位算法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一文详解基于测距的空间定位算法

文章目录

  • 一文详解基于测距的空间定位算法
    • 0 定位算法分类
      • 0.1 基于测距与非基于测距的定位算法
      • 0.2 集中式与分布式定位算法
      • 0.3 绝对与相对定位算法
      • 0.4 本文内容概述
    • 1 包围盒定位法
      • 1.1 算法原理
      • 1.2 算法性能
    • 2 基于RSSI的定位法
      • 2.1 算法原理
    • 3 基于TOA的定位法
      • 3.1 算法原理
      • 3.2 算法性能
    • 4 基于TDOA的定位法
      • 4.1 算法原理
      • 4.2 算法性能
    • 5 基于AOA的定位法
      • 5.1 算法原理
      • 5.2 算法性能
    • 6 算法优缺点总结

0 定位算法分类

0.1 基于测距与非基于测距的定位算法

(1)基本概念

  • 基于测距的定位算法是通过测量锚节点和未知节点间的角度值或者距离值,来计算位置节点的位置。
  • 非基于测距的算法,是根据网络拓扑结构等信息来计算未知节点的位置,而不是通过测量距离和角度值。

(2)常用算法

  • 常用的基于测距的定位算法有:基于接收信号强度测量法(RSSI)、到达时间测量法(TOA)、到达时间差测量法(TDOA)和到达角度测量法(AOA)。
  • 常用的非基于测距的定位算法有:质心算法、凸规划法、网络多跳路由算法(DV-hop)。

(3)特点

  • 基于测距的定位算法,因为经过距离测量,定位精度好,但是功耗和成本较高;
  • 非基于测距的定位算法,与之相反,其定位的成本和功耗小,易于实现,但是定位精度差。

0.2 集中式与分布式定位算法

(1)基本概念

  • 集中式定位算法,是将未知节点的数据传送给一个节点,在这个节点处进行集中计算,得出每个节点的位置信息,再由此节点将这些信息发送给协调器节点或者上位机,从而使网络中节点位置获得确认。
  • 分布式定位算法,是指计算位置信息的功能分布在每个节点上,由节点根据与其他节点间的信息交互所得到的数据自行计算位置信息。

(2)特点

  • 集中式定位算法定位精度高,可以从全局对定位算法进行控制,由于定位计算集中在一点上进行,所以只需此节点设计为计算能力强,存储量大的节点即可,可以降低其他节点的成本。但是受无线传感器网络传输距离限制,距离中心节点较近的其他节点需要担负起繁重的路由工作,频繁传递信息,增加了节点耗电量,一旦出现电量耗尽,而其所处位置又不便于更换电池,则会导致整个网络的瘫痪。

  • 分布式定位算法,将计算功能分布到每个传感器节点中,减少了中心节点的压力,降低了耗电量,每个节点自行计算,也提高的运算的速度,减少了运算时间,效率得到提升。但是由于每个节点取的信息可能受环境影响会出现偏差,所以计算结果准确性较集中式要低一些

  • 基于测距的定位算法,因为经过距离测量,定位精度好,但是功耗和成本较高;

  • 非基于测距的定位算法,与之相反,其定位的成本和功耗小,易于实现,但是定位精度差。

0.3 绝对与相对定位算法

(1)基本概念

  • 绝对定位算法是指以一个第三方的位置坐标为参考来确定位置信息。如利用经纬度信息,因为经纬度是确定值,且在全球范围内都有唯一表示,所以可以用来作为定位的标准坐标。
  • 相对定位算法则是指利用网络内某个节点作为参考节点,其他节点的位置都以它为坐标进行计算。

(2)特点

  • 绝对定位的优势在于,其能够为网络内节点提供精确的位置信息,不受节点位置移动的影响,适用性较强。
  • 相对定位算法的优点则是方便灵活,易于应用实现,坐标的位置可以根据自己的需要定义,方便设计者自己的理解。

0.4 本文内容概述

本文主要介绍无线传感器网络中常见的几种基于测距的定位算法:
① 包围盒定位法 (Bounding-box Method);
② 基于接收信号强度(Received Signal Strength Indication, RSSI)定位法;
③ 基于到达时间(Time Of Arrival, TOA)定位法;
④ 基于到达时间差(Time Difference Of Arrival, TDOA)定位法;
⑤ 基于到达角度(Angle Of Arrival, AOA)定位法。

1 包围盒定位法

1.1 算法原理

**包围盒定位法(Bounding-box Method)**计算成本低,在无线传感器网络中的应用也比较早,但是其定位误差较大。通过计算节点之间的距离,绘制出矩形区域,将矩形区域中心作为未知节点的位置

如图所示, A A A C C C 是锚节点,位置已知。 B B B 是未知节点,即待测节点。根据节点间的通信,可以测得 B B B A A A C C C 的距离,分别记做 d A B d_{AB} dAB d C B d_{CB} dCB。以 A A A 为顶点, d A B d_{AB} dAB为边长做正方形。同理,以 C C C 为顶点, d C B d_{CB} dCB 为边长做正方形。此时,两个正方形就会出现重叠的区域,如图中阴影部分所示。在此矩形区域对角线,对角线的交点即为 B B B 位置的估计值。

1.2 算法性能

由图可以看出,包围盒定位算法对锚节点的位置摆放有一定的要求:
锚节点分布在未知节点的两侧,则最后估计值和实际坐标间的距离误差会小很多,定位效果较好;
锚节点分布在未知节点的同侧,会导致未知节点的实际位置距矩形区域对角线交点过远,误差增大。
实际应用时,可以根据需要多设置几个锚节点,这样可以增加定位的准确性。包围盒定位算法的计算复杂度与锚节点个数成正比,两者为线性关系,所以该算法成本低,理解简单,易于实现,在实际生产中,对定位精度要求不高的情况下用这种方法是很理想的。

2 基于RSSI的定位法

2.1 算法原理

RSSI(receive signal strength indicator)即为接收信号强度指示。无线信号在传播过程中,信号强度会随传播距离的增大而减小。根据这一特点,人们对两者之间的关系进行了研究,发现接收信强度和传播距离间有如下关系:
P = P 0 − 10 n p log ⁡ 10 ( d d 0 ) P = {P_0} - 10{n_p}{log _{10}}left( {frac{d}{{{d_0}}}} right) P=P010nplog10(d0d)
式中, P P P 表示接收信号强度值(RSSI),单位为 d B m dBm dBm,即一个节点发送信号后,另一个节点接收到该信号时的信号强度; d d d 表示发送信号的节点和接收信号的节点之间的距离。 P 0 P_0 P0 是一个参考值,表示接收节点接收到的与其某一固定距离 d 0 d_0 d0 的节点发送的信号强度值(RSSI值),单位也是 d B m dBm dBm ,一般 d 0 d_0 d0 的值都是取 1m; n p n_p np 为路径损耗指数,信号在信道传播过程中会有所衰减,衰减的情况与具体的环境相关,下表为路径损耗指数 n p n_p np 的典型值。

环境 n p n_p np
自由空间2
遮蔽的城市空间2.7~5
视距1.6~1.8
有阻挡空间4~6

A A A 为信号传播了 1m 后的参考信号强度,则上面的无线信号传输模型可以改写为:
P = A − 10 n p log ⁡ 10 ( d ) P = A - 10{n_p}{log _{10}}left( d right) P=A10nplog10(d)
由上式可以看出接收信号强度 RSSI 的取值和信号传播距离 d d d 之间的关系,两者的关系受参数 A A A 和路径损耗指数 n p n_p np 的影响,若 A A A n p n_p np 的值确定, P P P 可以通过测量得到,则可以根据此公式计算出 d d d 的值。

基于接收信号强度 RSSI 的定位算法,就是通过接收信号强度(RSSI 值)来计算节点之间的距离的方法。参考节点通过接收未知节点的 RSSI 值,就可计算出未知节点与参考节点间的距离大小,由于参考节点的坐标是已知的,则可以根据欧式坐标系中已知点的坐标求两点间距离的公式计算出未知节点的坐标。

根据 RSSI 值与传播距离间的关系,可以利用 R S S I 1 RSSI_1 RSSI1 R S S I 2 RSSI_2 RSSI2 R S S I 3 RSSI_3 RSSI3 分别求出对应的点 M M M A A A B B B C C C 的距离 d A M d_{AM} dAM d B M d_{BM} dBM d C M d_{CM} dCM,则可根据距离公式得到以下方程组
( x 1 − x ) 2 + ( y 1 − y ) 2 = d A M ( x 2 − x ) 2 + ( y 2 − y ) 2 = d B M ( x 3 − x ) 2 + ( y 3 − y ) 2 = d C M begin{aligned} sqrt {{{left( {{x_1} - x} right)}^2} + {{left( {{y_1} - y} right)}^2}} = {d_{AM}} \ sqrt {{{left( {{x_2} - x} right)}^2} + {{left( {{y_2} - y} right)}^2}} = {d_{BM}} \ sqrt {{{left( {{x_3} - x} right)}^2} + {{left( {{y_3} - y} right)}^2}} = {d_{CM}} end{aligned} (x1x)2+(y1y)2 =dAM(x2x)2+(y2y)2 =dBM(x3x)2+(y3y)2 =dCM
解上述方程组就可求得 ( x , y ) left(x,yright) (x,y),即点 M M M 的坐标,从而实现对未知点 M M M 的定位。

###2.2 算法性能
基于 RSSI 的定位算法实现起来较为简单,不需要增加系统的额外硬件配置,也没有过多的数据传输的交互,所以对降低节点的成本和功耗较为有利。该定位算法也是目前被很多硬件厂商所采用一种定位算法,诸多 ZigBee 芯片中都有存储 RSSI 值的寄存器,所以这种方法应用前景较为广泛。采用基于 RSSI 的定位算法的关键,是要获得准确的 RSSI 值。虽然这种方法简便易行,成本低,功耗小,但是由于受到环境因素的影响,RSSI 值的测量往往会出现较大的误差。在信号传播过程中,信号强度会受到障碍物的影响而导致其被削弱。有时因为使用的无线收发装置的影响,也会出现测的 RSSI 值不稳定的情况。可见基于 RSSI 值的定位算法的抗干扰性是影响其推广的主要问题。 在实际应用中,可以通过选取合适的模型,选用多种减小误差的办法来减小环境因素对 RSSI 测量结果的影响,从而能够得出更加精确的结果。

3 基于TOA的定位法

3.1 算法原理

TOA(Time Of Arrive)即到达时间。基于 TOA 的定位算法,主要是利用信号的到达时间来测量节点间的距离。无线信号的传播速度是一定的,根据节点发送信号到接收节点时传播时间的长短可以确定节点间的距离。利用这种原理就可以对未知节点进行定位。基于 TOA 的定位算法的原理如下图所示。

图中,点 M M M 为未知节点,点 A A A B B B C C C 为参考节点(锚节点)。点 M M M 的坐标为 ( x , y ) (x, y) (x,y),点 A A A B B B C C C 的坐标分别为 ( x 1 , y 1 ) (x1,y1) (x1,y1) ( x 2 , y 2 ) (x2,y2) (x2,y2) ( x 3 , y 3 ) (x3,y3) (x3,y3) T 0 T_0 T0 时刻,未知节点 M M M 向参考节点 A A A B B B C C C 发送数据包,点 A A A 接收到数据包的时间为 T 1 T_1 T1,点 B B B 接收到数据包的时间为 T 2 T_2 T2,点 C C C 接收到数据包的时间为 T 3 T_3 T3。电磁波在空气中的传播速度记为 v v v,设点 M M M 到点 A A A B B B C C C 的距离分别为 d 1 d_1 d1 d 2 d_2 d2 d 3 d_3 d3,根据距离、速度和时间之间的关系,可得到下式。

d 1 = v ( T 1 − T 0 ) d 2 = v ( T 2 − T 0 ) d 3 = v ( T 3 − T 0 ) begin{aligned} {d_1} = vleft( {{T_1} - {T_0}} right) \ {d_2} = vleft( {{T_2} - {T_0}} right) \ {d_3} = vleft( {{T_3} - {T_0}} right) end{aligned} d1=v(T1T0)d2=v(T2T0)d3=v(T3T0)

由两点间的距离公式,可以得到
( x 1 − x ) 2 + ( y 1 − y ) 2 = d 1 ( x 2 − x ) 2 + ( y 2 − y ) 2 = d 2 ( x 3 − x ) 2 + ( y 3 − y ) 2 = d 3 begin{aligned} sqrt {{{left( {{x_1} - x} right)}^2} + {{left( {{y_1} - y} right)}^2}} = {d_1} \ sqrt {{{left( {{x_2} - x} right)}^2} + {{left( {{y_2} - y} right)}^2}} = {d_2} \ sqrt {{{left( {{x_3} - x} right)}^2} + {{left( {{y_3} - y} right)}^2}} = {d_3} end{aligned} (x1x)2+(y1y)2 =d1(x2x)2+(y2y)2 =d2(x3x)2+(y3y)2 =d3
将上上式代入上式可得方程组:
( x 1 − x ) 2 + ( y 1 − y ) 2 = v ( T 1 − T 0 ) ( x 2 − x ) 2 + ( y 2 − y ) 2 = v ( T 2 − T 0 ) ( x 3 − x ) 2 + ( y 3 − y ) 2 = v ( T 3 − T 0 ) begin{aligned} sqrt {{{left( {{x_1} - x} right)}^2} + {{left( {{y_1} - y} right)}^2}} = vleft( {{T_1} - {T_0}} right) \ sqrt {{{left( {{x_2} - x} right)}^2} + {{left( {{y_2} - y} right)}^2}} = vleft( {{T_2} - {T_0}} right) \ sqrt {{{left( {{x_3} - x} right)}^2} + {{left( {{y_3} - y} right)}^2}} = vleft( {{T_3} - {T_0}} right) end{aligned} (x1x)2+(y1y)2 =v(T1T0)(x2x)2+(y2y)2 =v(T2T0)(x3x)2+(y3y)2 =v(T3T0)
求解上式即可得到未知节点 M M M 的坐标 ( x , y ) (x,y) (x,y)

3.2 算法性能

由以上原理可以看出,基于 TOA 的定位算法,要求两个节点之间有精确的时间同步,关键是要确定发送和接收信号的准确时间。还有一种测量时间的方法,可以对时间同步的要求降低一些,就测量信号的往返时间,用这种方式,只需要发送节点时钟同步即可,与接收节点无关,避免了时钟步对系统的高要求。无线传感器网络中,时钟同步是一个重要领域。全球定位系统(GPS)采用的定位算法就是基于 TOA 的。GPS 系统能够做到精确的时钟同步,但是成本高、造价贵,且系统耗电量过大。在小型无线传感器网络或小型商用网络中不太适用。

基于 RSSI 和基于 TOA 的定位算法,在得到测量值后都是要转化为距离的计算。如果不考虑其获取距离的方式,两种方法使用的原理都是三边定位法。在二维平面坐标系中,参考节点坐标已知,未节点与参考节点间的距离可以通过测量得到,再三个不在同一直线上的参考节点的信息,就可以得未知节点的坐标。如下图所示,点 A、B、C 为参考节点,点 D 为未知节点,分别以参考节点为圆心,以参考节点到未知节点的距离为半径作圆,三个圆会交于一点,这个点就是未知节点的位置。

4 基于TDOA的定位法

4.1 算法原理

TDOA 算法,即基于测距的信号到达时间差算法(Time Different Of Arrive) 。在网络中,各参考节点距离未知节点的距离是不同的。当参考节点向未知节点发射信号时,因为距离的差异,未知节点接到信号的时间也不同,也就形成了时间差。根据时间差,再结合电磁波的传播速度,就可以计算出距离的差值,从而可以判断出未知节点的位置。

由双曲线的定义(与平面上两个定点的距离之差的绝对值为定值的点的轨迹)可知,未知节点和两个参考节点间的关系符合双曲线方程的条件。取不同的两个参考节点时,就会形成不同的双曲线方程,未知节点必定在这些双曲线的交点上。通过求解双曲线方程组,就可以得出交点的值,也就是未知节点的坐标。
使用 TDOA 算法时,不需要未知节点和参考节点间进行同步,但是需要参考节点间的时间同步,相较于 TOA 算法可以简化定位计算的复杂度。其定位原理如下图所示。A、B、C、D 都是参考节点,O 是未知节点,选取 A、B 为一组,C、D 为一组,分别作为双曲线的两个焦点,点 O 在这两个双曲线的一支上,两个双曲线的交于一点,这一点就是点 O 的位置。

假设有 N 个参考节点,参考节点和未知节点都在同一平面内。如下图所示

N 个参考节点的坐标分别为 ( X 1 , Y 1 ) (X_1,Y_1) (X1,Y1) ( X 2 , Y 2 ) (X_2,Y_2) (X2,Y2) 、… ( X N , Y N ) (X_N,Y_N) (XN,YN),N 是自然数。未知节点的坐标为 ( x , y ) (x,y) (x,y)。未知节点分别向这些参考节点发送信号,参考节点接收数据,各个参考节点接收到信号的时间 t 1 t_1 t1 t 2 t_2 t2 t N t_N tN,其中 N N N为自然数。

设参考节点 1 距离未知节点距离最近,显然节点 1 会第一个接收到信号。则可以据此表示出未知节
点与节点1之间的距离:
d 1 = ( x − X 1 ) 2 + ( y − Y 1 ) 2 {d_1} = sqrt {{{left( {x - {X_1}} right)}^2} + {{left( {y - {Y_1}} right)}^2}} d1=(xX1)2+(yY1)2
其中 d 1 d_1 d1 是参考节点 1 与未知节点间的距离。由此可以推出,当参考节点为 i i i 时,其与未知节点间的关系可以表示成如下关系式:
d i = ( x − X i ) 2 + ( y − Y i ) 2 {d_i} = sqrt {{{left( {x - {X_i}} right)}^2} + {{left( {y - {Y_i}} right)}^2}} di=(xXi)2+(yYi)2
未知节点与第 i i i 个参考节点的距离 d i d_i di 和未知节点与第 1 个参考节点的距离 d 1 d_1 d1 的差值表示成 d i 1 d_{i1} di1,则有:
d i 1 = v T i 1 = d i − d 1 = ( x − X i ) 2 + ( y − Y i ) 2 − ( x − X 1 ) 2 + ( y − Y 1 ) 2 {d_{i1}} = v{T_{i1}} = {d_i} - {d_1} = sqrt {{{left( {x - {X_i}} right)}^2} + {{left( {y - {Y_i}} right)}^2}} - sqrt {{{left( {x - {X_1}} right)}^2} + {{left( {y - {Y_1}} right)}^2}} di1=vTi1=did1=(xXi)2+(yYi)2 (xX1)2+(yY1)2
式中,v为电磁波在自由空间中的传播速度, T i 1 T_{i1} Ti1为未知节点发送的信号到达第 i i i 个参考节点与发送信号到达第 1 个参考节点的时间差, d i d_i di为第 i i i 个参考节点到未知节点之间的距离。由此就可以得到 N − 1 N-1 N1 个双曲线方程组成的非线性方程组。一般来说,用传统解方程组的办法求解上面的非线性方程组是非常复杂的,可对它们进行线性化处理:

d i 2 = ( x − X i ) 2 + ( y − Y i ) 2 = X i 2 + Y i 2 − 2 X i x − 2 Y i y + x 2 + y 2 d_i^2 = {left( {x - {X_i}} right)^2} + {left( {y - {Y_i}} right)^2} = X_i^2 + Y_i^2 - 2{X_i}x - 2{Y_i}y + {x^2} + {y^2} di2=(xXi)2+(yYi)2=Xi2+Yi22Xix2Yiy+x2+y2
K i = X i 2 + Y i 2 {K_i} = X_i^2 + Y_i^2 Ki=Xi2+Yi2 ,则:
d i 2 = K i − 2 X i x − 2 Y i y + x 2 + y 2 d_i^2 = {K_i} - 2{X_i}x - 2{Y_i}y + {x^2} + {y^2} di2=Ki2Xix2Yiy+x2+y2
将上式代入 d i = d i 1 + d 1 {d_i} = {d_{i1}} + {d_1} di=di1+d1,有:
d i 2 = ( d i 1 + d 1 ) 2 = d i 1 2 + d 1 2 + 2 d i 1 d 1 d_i^2 = {left( {{d_{i1}} + {d_1}} right)^2} = d_{i1}^2 + d_1^2 + 2{d_{i1}}{d_1} di2=(di1+d1)2=di12+d12+2di1d1
K i − 2 X i x − 2 Y i y + x 2 + y 2 = d i 1 2 + ( K 1 − 2 X 1 x − 2 Y 1 y + x 2 + y 2 ) + 2 d i 1 d 1 {K_i} - 2{X_i}x - 2{Y_i}y + {x^2} + {y^2} = d_{i1}^2 + left( {{K_1} - 2{X_1}x - 2{Y_1}y + {x^2} + {y^2}} right) + 2{d_{i1}}{d_1} Ki2Xix2Yiy+x2+y2=di12+(K12X1x2Y1y+x2+y2)+2di1d1

1 2 ( K i − K 1 − d i 1 2 ) = ( X i − X 1 ) x + ( Y i − Y 1 ) y + d i 1 d 1 frac{1}{2}left( {{K_i} - {K_1} - d_{i1}^2} right) = left( {{X_i} - {X_1}} right)x + left( {{Y_i} - {Y_1}} right)y + {d_{i1}}{d_1} 21(KiK1di12)=(XiX1)x+(YiY1)y+di1d1

1 2 [ ( X i 2 + Y i 2 ) − ( X 1 2 + Y 1 2 ) − d i 1 2 ] = ( X i − X 1 ) x + ( Y i − Y 1 ) y + d i 1 d 1 frac{1}{2}left[ {left( {X_i^2 + Y_i^2} right) - left( {X_1^2 + Y_1^2} right) - d_{i1}^2} right] = left( {{X_i} - {X_1}} right)x + left( {{Y_i} - {Y_1}} right)y + {d_{i1}}{d_1} 21[(Xi2+Yi2)(X12+Y12)di12]=(XiX1)x+(YiY1)y+di1d1
x x x y y y d 1 d_1 d1作为未知数,上式就变成了一个线性方程,可以求解线性方程组得到未知节点的位置估计。

4.2 算法性能

TDOA 定位算法不需要考虑时间同步问题,计算复杂度较低。
实现 TDOA 算法的另一种形式是通过计算不同传输速度的信号到达未知节点的时间来进行定位,这也是 TDOA 算法的一种思路。

5 基于AOA的定位法

5.1 算法原理

AOA 定位算法也就是我们所说的到达角定位算法,即根据信号的传播路径和预设的参考线所构成的相关角度进行定位的。基于 AOA 的定位算法在原理上属于三角定位法

三角定位法主要是利用天线测得未知节点和参考节点之间的角度关系,然后根据参考节点的位置确定出未知节点的位置。AOA 定位算法的原理如下图所示。

上图中,点 A A A B B B C C C都表示坐标已知的参考节点,点 D D D表示是位置节点。参考节点 A A A B B B C C C的坐标分别为: ( x 1 , y 1 ) (x_1,y_1) (x1,y1) ( x 2 , y 2 ) (x_2,y_2) (x2,y2) ( x 3 , y 3 ) (x_3,y_3) (x3,y3),设未知节点 D D D 的坐标为 ( x , y ) (x,y) (x,y)。未知节点 D D D相对于参考节点 A A A B B B C C C的角度分别为 ∠ A D B angle ADB ADB ∠ A D C angle ADC ADC ∠ B D C angle BDC BDC。根据节点 A A A、节点 C C C ∠ A D C angle ADC ADC,可以确定一个弧 A C AC AC在三角形 A B C ABC ABC内部的惟一的圆,点 D D D在这个圆上,该圆即为图中的圆 O 1 O_1 O1。假设圆心 O 1 O_1 O1的坐标为 ( x O 1 , y O 1 ) (x_{O1},y_{O1}) (xO1,yO1),半径为 R 1 R_1 R1,由圆的性质可以得到 ∠ A O 1 C = 2 π − 2 ∠ A D C angle AO_1C=2pi-2angle ADC AO1C=2π2ADC。据此可以得到如下方程组:
( x o 1 − x 1 ) 2 + ( y o 1 − y 1 ) 2 = R 1 2 ( x o 1 − x 3 ) 2 + ( y o 1 − y 3 ) 2 = R 1 2 ( x 1 − x 3 ) 2 + ( y 1 − y 3 ) 2 = 2 R 1 2 − 2 R 1 2 cos ⁡ 2 ( ∠ A O 1 C 2 ) begin{aligned} {left( {{x_{o1}} - {x_1}} right)^2} + {left( {{y_{o1}} - {y_1}} right)^2} &= R_1^2 \ {left( {{x_{o1}} - {x_3}} right)^2} + {left( {{y_{o1}} - {y_3}} right)^2} &= R_1^2 \ {left( {{x_1} - {x_3}} right)^2} + {left( {{y_1} - {y_3}} right)^2} &= 2R_1^2 - 2R_1^2{cos ^2}left( {frac{{angle A{O_1}C}}{2}} right) end{aligned} (xo1x1)2+(yo1y1)2(xo1x3)2+(yo1y3)2(x1x3)2+(y1y3)2=R12=R12=2R122R12cos2(2AO1C)
通过解上述方程组,可得到圆 O 1 O_1 O1 的圆心坐标 ( x o 1 , y o 1 ) (x_{o1},y_{o1}) (xo1,yo1) 和半径 R 1 R_1 R1,同理我们可以求出圆 O 2 O_2 O2 和圆 O 3 O_3 O3 的坐标以及圆 O 2 O_2 O2 和圆 O 3 O_3 O3 的半径 R 2 R_2 R2 R 3 R_3 R3。这样就符合三边定位法的求解条件了,最后利用圆心 O 1 O_1 O1 O 2 O_2 O2 O 3 O_3 O3的坐标和三边定位法就可以确定未知节点 D D D 的坐标。

5.2 算法性能

虽然 ∠ A D B angle ADB ADB ∠ A D C angle ADC ADC ∠ B D C angle BDC BDC 这三个角度可以通过天线测量出来,但是在实际实现过程中,角度参数的取得是一个较为复杂的过程,对节点的体积和功耗的要求也更高,需要增加阵列天线,设置多重接收器等。考虑到无线传感器网络的特点,AOA 定位算法虽然是可行的,但是在实际中使用频率并不高。

6 算法优缺点总结

(1)包围盒定位法

  • ①优点
    计算复杂度与锚节点个数成正比,两者为线性关系,故该算法成本低,理解简单,易于实现。
  • ②缺点
    定位精度不高,尤其是当锚点分布在未知节点同侧时,误差较大。

(2)基于RSSI的定位法

  • ①优点
    实现简单,不需要增加系统的额外硬件配置,也没有过多的数据传输的交互,所以对降低节点的成本和功耗较为有利。
  • ②缺点
    RSSI 值受环境因素影响大,RSSI 值的测量往往会出现较大的误差;且在信号传播过程中,信号强度会受到障碍物的影响而导致其被削弱;有时因为使用的无线收发装置的影响,也会出现测的 RSSI 值不稳定的情况。可见基于 RSSI 值的定位算法的抗干扰性是影响其推广的主要问题。

(3)基于TOA的定位法

  • ①优点
    定位测量方法简单,有较高的定位精度;
  • ②缺点
    要求两个节点(未知节点与参考节点)间有精确的时间同步;

(4)基于TDOA的定位法

  • ①优点
    不需要未知节点和参考节点间进行时间同步;
    计算复杂度低于 TOA 算法;
  • ②缺点
    需要参考节点间的时间同步;
    对硬件的要求较高且信号在传输过程中极易受环境影响,应用的场合也比较单一;

(5)基于AOA的定位法

  • ①优点
    好像没有什么优点;
  • ②缺点
    需要额外的硬件设备如天线阵列或有向天线来支持,实用性差;

最后

以上就是开心煎饼为你收集整理的一文详解基于测距的空间定位算法一文详解基于测距的空间定位算法的全部内容,希望文章能够帮你解决一文详解基于测距的空间定位算法一文详解基于测距的空间定位算法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部