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

文章目录

  • 一文详解基于测距的空间定位算法
    • 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=P0​−10np​log10​(d0​d​)
式中, 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=A−10np​log10​(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} (x1​−x)2+(y1​−y)2 ​=dAM​(x2​−x)2+(y2​−y)2 ​=dBM​(x3​−x)2+(y3​−y)2 ​=dCM​​
解上述方程组就可求得 ( x , y ) \left(x,y\right) (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} = v\left( {{T_1} - {T_0}} \right) \\ {d_2} = v\left( {{T_2} - {T_0}} \right) \\ {d_3} = v\left( {{T_3} - {T_0}} \right) \end{aligned} d1​=v(T1​−T0​)d2​=v(T2​−T0​)d3​=v(T3​−T0​)​

由两点间的距离公式,可以得到
( 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} (x1​−x)2+(y1​−y)2 ​=d1​(x2​−x)2+(y2​−y)2 ​=d2​(x3​−x)2+(y3​−y)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}} = v\left( {{T_1} - {T_0}} \right) \\ \sqrt {{{\left( {{x_2} - x} \right)}^2} + {{\left( {{y_2} - y} \right)}^2}} = v\left( {{T_2} - {T_0}} \right) \\ \sqrt {{{\left( {{x_3} - x} \right)}^2} + {{\left( {{y_3} - y} \right)}^2}} = v\left( {{T_3} - {T_0}} \right) \end{aligned} (x1​−x)2+(y1​−y)2 ​=v(T1​−T0​)(x2​−x)2+(y2​−y)2 ​=v(T2​−T0​)(x3​−x)2+(y3​−y)2 ​=v(T3​−T0​)​
求解上式即可得到未知节点 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​=(x−X1​)2+(y−Y1​)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​=(x−Xi​)2+(y−Yi​)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​=di​−d1​=(x−Xi​)2+(y−Yi​)2 ​−(x−X1​)2+(y−Y1​)2 ​
式中,v为电磁波在自由空间中的传播速度, T i 1 T_{i1} Ti1​为未知节点发送的信号到达第 i i i 个参考节点与发送信号到达第 1 个参考节点的时间差, d i d_i di​为第 i i i 个参考节点到未知节点之间的距离。由此就可以得到 N − 1 N-1 N−1 个双曲线方程组成的非线性方程组。一般来说,用传统解方程组的办法求解上面的非线性方程组是非常复杂的,可对它们进行线性化处理:

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​=(x−Xi​)2+(y−Yi​)2=Xi2​+Yi2​−2Xi​x−2Yi​y+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​=Ki​−2Xi​x−2Yi​y+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​+2di1​d1​
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} Ki​−2Xi​x−2Yi​y+x2+y2=di12​+(K1​−2X1​x−2Y1​y+x2+y2)+2di1​d1​

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​(Ki​−K1​−di12​)=(Xi​−X1​)x+(Yi​−Y1​)y+di1​d1​

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​]=(Xi​−X1​)x+(Yi​−Y1​)y+di1​d1​
将 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=2\pi-2\angle ADC ∠AO1​C=2π−2∠ADC。据此可以得到如下方程组:
( 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} (xo1​−x1​)2+(yo1​−y1​)2(xo1​−x3​)2+(yo1​−y3​)2(x1​−x3​)2+(y1​−y3​)2​=R12​=R12​=2R12​−2R12​cos2(2∠AO1​C​)​
通过解上述方程组,可得到圆 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的定位法

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

一文详解基于测距的空间定位算法相关推荐

  1. 一文详解基于先验地图的视觉定位

    作者丨cc.fy@知乎 来源丨https://zhuanlan.zhihu.com/p/460001686 编辑丨3D视觉工坊 问题定义 给定一份高精度地图或环境模型,给定相机(不限于单目,双目,多目 ...

  2. 一文详解8种异常检测算法(附Python代码)

    文章目录 一.异常检测简介 1.1 异常检测适用的场景 1.2 异常检测存在的挑战 二.异常检测方法 2.1 基于聚类的方法 2.2 基于统计的方法 2.3 基于深度的方法 2.4 基于分类模型 2. ...

  3. 【卷积神经网络结构专题】一文详解AlexNet(附代码实现)

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! [导读]本文是卷积神经网络结构系列专题第二篇文章,前面我们已经介绍了第一个真正意义 ...

  4. 一文详解 YOLO 2 与 YOLO 9000 目标检测系统

    一文详解 YOLO 2 与 YOLO 9000 目标检测系统 from 雷锋网 雷锋网 AI 科技评论按:YOLO 是 Joseph Redmon 和 Ali Farhadi 等人于 2015 年提出 ...

  5. 一文详解决策树算法模型

    AI有道 一个有情怀的公众号 上文我们主要介绍了Adaptive Boosting.AdaBoost演算法通过调整每笔资料的权重,得到不同的hypotheses,然后将不同的hypothesis乘以不 ...

  6. OpenCV-Python实战(12)——一文详解AR增强现实

    OpenCV-Python实战(12)--一文详解AR增强现实 0. 前言 1. 增强现实简介 2. 基于无标记的增强现实 2.1 特征检测 2.2 特征匹配 2.3 利用特征匹配和单应性计算以查找对 ...

  7. 一文详解宏基因组组装工具Megahit安装及应用

    要点 Megahit简介 Megahit的基本组装原理 Megahit的安装和使用 Megahit实战 hello,大家好,今天为大家带来关于宏基因组组装工具Megahit的超详细安装及应用教程. 我 ...

  8. 一文详解Pandas

    一文详解Pandas 一.Pandas概述 二.Pandas数据结构 2.1 Series 2.2 DataFrame数据结构 二.数学与统计计算 三.DataFrame的文件操作 3.1 读取文件 ...

  9. OSPFv2原理详解(基于RFC2328)+配置介绍+RFC2328翻译

    个人认为,理解报文就理解了协议.通过报文中的字段可以理解协议在交互过程中相关传递的信息,更加便于理解协议. 虽然路由器自身可以对协议做一些独特的配置,但是报文仍然是协议的核心.例如,OSPF的完全末节 ...

最新文章

  1. 源码-0205-02--聊天布局
  2. “史上最全PyTorch资源汇总“(转载)
  3. Growth Hacking背后,数据分析平台的架构调整
  4. 幽默感七个技巧_如何通过三招,让自己成为一个有幽默感的说话高手?
  5. 塑壳断路器用考虑启动电流么_塑壳式断路器知识
  6. 安卓activity生存周期的onCreate、onRestoreInstanceState、onRestart、onStart、onResume、onPause、onStop、onDestroy
  7. express+mongodb制作简单的文章发布系统(一)之环境的搭建
  8. mysql界面导出数据库有乱码_导出的MYSQL数据库是乱码还可以变回中文吗
  9. 食品品牌最全VI目录 - 塔望食品品牌全案策划VI设计清单
  10. pano2vr 缩略图添加场景名称
  11. 叶展:我在泽熙学到的七堂课
  12. Debian修改桌面系统
  13. python 的魔法函数
  14. 华为交换机端口安全配置
  15. 红外热成像仪原理与用途——TFN TD97 双目手持热像仪红外夜视仪
  16. 1 大奇迹 - 遥感 - 改变世界的技术
  17. 生源第一梯队来自清北,中科院这个研究所不简单
  18. Linux warning
  19. 我的订阅号、网站上线了
  20. 计算机毕业设计 SSM超市收银管理系统 便利店收银管理系统 酒吧收银管理系统 酒店收银系统Java Vue MySQL数据库 远程调试 代码讲解

热门文章

  1. 数据结构与算法(C语言 严蔚敏)一
  2. 内积空间,赋范空间和Hilbert空间
  3. Android开发(17)-通过安卓API的Tabs3实现仿优酷tabhost效果
  4. 稳定性之故障应急处理流程
  5. 什么是泛在电力物联网?如何建设泛在电力物联网?——安科瑞 严新亚
  6. 全国计算机考试满分是多少,计算机三级考试满分多少分
  7. 2021年项城一高理科高考成绩查询,项城一高举行2021年高考壮行大会
  8. 【Android】使用FrameLayout布局实现霓虹灯效果
  9. 这些计算机经典书,如果你没读过不合适
  10. windows系统语言栏无法显示的解决方法