精华内容
下载资源
问答
  • 首先分析了水声环境传感器网络节点定位技术的特点;此基础上分类介绍了距离无关定位算法和距离相关定位算法,其中重点阐述和分析了距离相关算法的测距技术、基于固定锚节点算法和基于移动锚节点算法;最后总结...
  • 本文主要分析无线传感器网络的节点定位技术,研究已有的定位算法,并根据现有算法提出一种改进的分布式的节点定位算法。该算法使用RSSI方法测距,无需增加新的硬件设备,通过分布式的算法来提高效率降低能耗,利用多...
  • 本文主要分析无线传感器网络的节点定位技术,研究已有的定位算法,并根据现有算法提出一种改进的分布式的节点定位算法。该算法使用RSSI方法测距,无需增加新的硬件设备,通过分布式的算法来提高效率降低能耗,利用多...
  • 利用无线信号强度实现了煤矿...仿真结果表明,所提出的算法可以有效地提高无线传感器节点定位精度,如路径损耗标准偏差分别为4和6,滚动平均次数为10时,定位精度的相对误差分别从0.21和0.35左右下降到0.18和0.29左右.
  • 传感器节点,监测对象,监测者是WSN的三个要素,具有规模大,自组织,低功耗,低成本等特点 博士经典论文
  • 基于TDOA的无线传感器网络节点定位技术研究
  • 无线传感器网络节点定位技术

    千次阅读 2018-12-21 14:21:26
    无线传感器网络节点定位技术  无线传感器网络节点定位技术 本文转载,原文链接://www.cnblogs.com/dolphin0520/archive/2013/05/03/3056789.html  无线传感器网络的许多应用要求节点知道...

    无线传感器网络中的节点定位技术

                        无线传感器网络中的节点定位技术

    本文转载,原文链接://www.cnblogs.com/dolphin0520/archive/2013/05/03/3056789.html

      无线传感器网络的许多应用要求节点知道自身的位置信息,才能向用户提供有用的检测服务。没有节点位置信息的监测数据在很多场合下是没有意义的。比如,对于森林火灾检测、天然气管道监测等应用,当有事件发生时,人们关心的一个首要问题就是事件发生在哪里,此时如果只知道发生了火灾却不知道火灾具体的发生地点,这种监测没有任何实质的意义,因此节点的位置信息对于很多场合是至关重要的。

      在许多场合下,传感器节点被随机部署在某个区域,节点事先无法知道自身的位置,因此需要在部署后通过定位技术来获取自身的位置信息。目前最常见的定位技术就是GPS(Global Positioning System)了,它能够通过卫星对节点进行定位,并且能够达到比较高的精度。因此要想对传感器节点进行定位,最容易想到的方法就是给每个节点配备一个GPS接收器,但是这种方法不适用于传感器网络,主要原因有以下几点:

      1)GPS接收器通常能耗高,而对于无线传感器网络中的节点来说,一般能耗很有限,给每个节点配备一个GPS接收器会大大缩短网络寿命;

      2)GPS接收器成本比较高,给无线传感器网络中的每个节点配备一个GPS接收器,需要投入很大成本,尤其对于大规模的无线传感器网络来说不是很适合;

      因此有必要研究适合无线传感器网络的定位技术。下面分两个部分来介绍节点定位的相关研究:1)节点定位的基本概念;2)节点定位的基本思路;3)常见算法。

    一.节点定位的基本概念

      无线传感器网络中的节点定位是指传感器节点根据网络中少数已知节点的位置信息,通过一定的定位技术确定网络中其他节点的位置信息的过程。

      在无线传感器网络中节点通常可以分为信标节点(beacon node or anchor node)和未知节点(unknown node),其中信标节点也称为锚节点或者参考点,未知节点也称为普通节点。信标节点是位置信息已知的节点,未知节点是未知信息未知的节点。信标节点一般所占比例很小,通常通过手工配置或者配备GPS接收器来获取自身的位置信息。

      除此之外还有一种节点称为邻居节点(neighbor node),邻居节点是指传感器节点通信半径内的其他节点。

      以下是几个常用术语:

    • 到达时间(Time of Arrvial,TOA),信号从一个节点传播到另一个节点所需时间
    • 到达时间差(Time Diffrential of Arrival,TDOA),不同传播速度的信号从一个节点到达另一个基点所需要的时间之差
    • 到达角度(Angle of Arrival,AOA),节点接收到的信号相对于自身轴线的角度
    • 接收信号强度(Received Sinnal Strength,RSS),节点接收到无限信号强度的大小,也有称Received Sinnal Strength Indicator(RRSI),两个意思基本是一样的
    • 视距关系(Light of Sight,LOS),两个节点之间没有障碍物,能够直接通信
    • 非视距关系(Non Light of Sight,NLOS),两个节点之间有障碍物,不能直接通信
    • 跳数(Hop Count),两个节点之间的跳段之和

    二.节点定位技术的基本思路

      节点定位的基本思路主要有两种:

      1.基于测距(Range-based):假设在传感器网络中某些节点位置信息已知,通过某些手段来估算其他节点的位置信息。在这里面通常有两个步骤:

    • 测距
    • 位置估算

      因为要通过信标节点得到未知节点的位置信息,必须先确定信标节点到未知节点的距离,才能得到未知节点的位置信息。举个例子说明一下:

      

      假如信标节点A位置已知为(x1,y1),节点M位置未知,要想求得M的位置,最简单的想法:假设B位置为(x,y),A到B的距离为d1,则有

      d12=(x-x12+(y-y12

      显然只根据一个方程这样是无法求得x和y的值,假若有两个信标节点呢?

      

      这样一来的话又多了一个方程:d22=(x-x22+(y-y22,此时可以解得方程组得到x和y,但是此时x和y是有两组解的,无法唯一确定x和y的值,因此需要考虑再假如一个信标节点:

      这样一来的话就可以唯一确定x和y的值了,最基本的定位思想就是这样。这里举的例子是采用距离,还可以采用角度。

      一般情况最少需要知道未知节点和信标节点的三组距离或角度值,然后再通过位置估算方法确定位置。

      通常测距的方法有4种:

      1)基于到达时间(TOA)的测距

      这种方法是根据已知信号的传播速度及信号在发送节点和接收节点之间的传播时间来估算距离,这种方法要求能够非常精确地获取发送节点和接收节点之间的传播时延,这个是比较困难的,难度很大,不太适合无线传感器网络。

      2)基于到达时间差(TDOA)的测距

      这种方法中发送节点同时发送两种不同传播速度的信号、接收节点根据两种信号到达的时间差和他们的传播速度来计算距离。假若两种信号的传宝速度为v1和v2,到达时间分别为t1和t2,发送节点到接收节点的距离为d,则有:

      t1-t2=d/v1-d/v2

      可得d=(t1-t2)v1v2/(v2-v1)

      3)基于到达角度(AOA)的测距

      这种方法根据接收信号到达时候与自身轴线的角度来计算,这种方法对硬件成本要求很高,要求配备天线阵列,不太适合无线传感器网络

      4)基于接收信号强度(RSS)的测距

      信号在传播过程中会有衰减,无线信号的发射功率和接收功率存在某种映射关系,因此可以利用关系这个来估算距离,

     

      在获得了距离之后,就可以来估算位置了,常用的位置估算方法有下面两种:

      1)三边测量法

      上面举的例子中的位置估算方法就是三边测量法,此处不再赘述。

      至于某些文献上提到的三角测量法个人觉得跟三边测量法是一回事,就不再介绍了。

      3)最大似然估计法

      已知n个节点的坐标为(x1,y1),(x2,y2)......(xn,yn),它们到未知节点M的距离分别为d1,d2......dn,则有:

      (x-x12+(y-y12=d12

      (x-x22+(y-y22=d22

      ......

      (x-xn2+(y-yn2=dn2

      依次用第一个方程减去最后一个方程,可得:

      x12-xn2+y12-yn2+dn2-d12=2x(x1-xn)+2y(y1-yn)

      ......

      xn-12-xn2+yn-12+dn2-dn-12=2x(xn-1-xn)+2y(yn-1-yn)

      则可以表示成 AX = B

      其中A = B=X =(x,y)T

      2.无需测距(range-free)

      无需测距的方法一般是利用网络连通性或者拓扑结构来估算距离,再利用三边测量法或者极大似然估计来估算位置。

    三.常见算法

      1.基于测距(range-based)

      1)AHLos 算法 

      该算法是基于到达时间差的测距,信标节点首先向邻居节点以两种射频信号来广播消息,然后邻居节点根据到达时间差来估算距离,在接收到三个信标节点的消息之后,则根据三边测量法估算位置,邻居节点确定自己的位置之后转变为信标节点,也向邻近节点广播消息重复上述过程直至所有节点定位完成。

      2)RADAR算法

      该算法是基于RSS的测距,而基于RSS测距该算法有两种模型:经验模型和信号传播模型

      先说一下经验模型:

      

      在经验模型中,节点被分散在一定的区域内,并且保证所有的未知节点能够与信标节点直接通信,如图所示。然后事先在该区域内采集一些位置进行RSS强度测试,并以(x,y,RSS)的形式记录到数据库中。当进行定位时,未知节点同数据库中的数据进行比对,选择差值最小的三个或者三个以上点作为估算位置,然后再采用三边测量法或者下文的质心法来估算位置。

      信号传播模型:

      信号传播模型主要有两种模型:自由空间模型和shadowing模型

      自由空间模型假定信号发射功率和信号接收功率存在确定的映射关系: 

      

      其中PR是接收处的功率,PS是发射处的功率,d是发射点距接收点的距离,α是传播因子,视环境而定。

      shadowing模型:

      

      其中P(d)是未知节点处的信号强度或者信号发射功率,P(d0)是距信标节点或者基站d0处的信号发射功率(其中d0是参考距离,一般取1m),n是衰减因子,由于实际环境中存在噪声,所以引入了ß,比如在室内传播,会有墙壁或者门这些障碍物,就需要计算ß。

      2.无需测距(range-free)

      无需测距的定位算法不需要直接测量节点之间的距离或者角度,而是根据网络的连通性来实现位置估计得,典型的无需测距的算法主要有以下几种:

      1)质心算法

      质心算法基于两个假设条件:射频信号的传播遵循理想的圆球模型;节点的通信半径相同且不会改变。

      该算法利用了计算几何中质心的思想,假设n边形的顶点坐标分别为(x1,y1)......(xn,yn),设其质心坐标为(x,y),则有

      x=(x1+x2....+xn)/ n

      y=(y1+y2+....+yn)/ n

      算法核心思想为:信标节点周期性地广播包含自身位置信息的消息,在时间t内未知节点收到来自信标节点i的消息数目为Nr(i,t),而时间t内信标节点i发出的消息数目为Ns(i,t),那么未知节点和信标节点的连通指标为:

      C=Nr(i,t)/ Ns(i,t)

      如果C大于设定的阈值,则认为未知节点处于信标节点i的覆盖区域内,即与信标节点i连通。这样对于每个未知节点都可以选出与其连通的所有信标节点,然后把这些信标节点的质心作为该未知节点的坐标。

      质心算法是一种完全基于网络连通性的定位算法,其计算和实施难度都比较小,但是算法精度不高,并且通常要求信标节点具有较高的密度。

      2)DV-HOP(Distance Vector-Hop)算法

      DV-HOP算法是为了避免对节点距离直接测量而提出的一种基于矢量路由的非测距定位算法。该算法的核心思想是通过距离矢量路由方法获取未知节点与信标节点之间的最小跳数,并计算每跳的平均距离,然后以每跳的平均距离与最小跳数的乘积作为未知节点与信标节点的估算距离,再使用三边测量法估算未知节点的坐标位置。举个例子:

      

      A、B、C为信标节点,M为未知节点,A到B和C的距离分别为40m和100m,而A到B和C的最小跳数分别为2和5,则A的平均跳距为:

      (40+100)/ (2+5)=20m,同理可以得到B和C的平均跳数为24m和22.5m,则可以计算M距离三个信标节点的距离分别为:

      3*20m,2*24m,3*22.5m,然后就可以利用三边测量法估算出M的坐标。这种方法实现比较简单,但是精度较差,不适合稀疏的以及拓扑不规则的网络。

      3)APIT算法

      APIT算法的基本思想同质心算法的思想类似,它利用由信标节点组成的三角形覆盖重叠区域来确定未知节点的位置。在APIT算法中,未知节点首先在其邻居节点中收集信标节点的信息。然后任意选取3个信标节点,判断自己是否在这3个信标节点组成的三角形区域内,然后不断这样循环选取3个信标节点进行判断,这样,未知节点可以确定多个包含自己的三角形区域,这些三角形区域的重叠部分是一个多边形,它确定了更小的包含未知节点的区域,然后以这个多边形区域的质心作为未知节点的坐标。

      4)MAP算法

      MAP(Mobile Anchor Point)是一种基于移动信标节点的非测距定位算法,也有称为MAN(Mobile Anchor Node)。其基本思想是利用可移动的信标节点在监测区域中移动并周期性的广播其当前的位置信息,然后可以确定两条以未知节点为圆心的弦,这两条弦的垂直平分线的交点就是圆心。

      

      如图所示,S为未知节点,M为移动的信标节点,在T1时刻M移动到S的通信范围之内,然后在T5时刻移出S的通信范围,这样就可以确定了两条弦  T1T5,在T12时刻M又重新移动到S的通信范围之内,然后又在T15时刻移出S的通信范围,这样又可以确定一条弦T12T15,这两条弦的垂直平分线的交点即为圆心S的坐标,然后以圆心坐标作为未知节点S的位置。

      该算法有与其他非测距定位算法相比有较高的精确度,但是缺点是移动节点是必须要有足够能量支持其在监测区域内移动,并且当未知节点的位置发生变化时,该算法有比较大的误差。

      5)Amorphous算法

      Amorphous算法与DV-HOP算法类似,其分为三个阶段:

      第一阶段:计算未知节点与每个信标节点之间的最小跳数

      第二阶段:假设网络中的节点通信半径相同,并且每跳的平均距离等于节点的通信半径,计算未知节点到每个信标节点的距离

      第三阶段:采用三边测量法或者最大似然估计法估算未知节点的位置

      6)凸规划定位算法

      凸规划定位算法的核心思想是:如果两个节点能够直接进行通信,则它们之间的距离必定小于节点的通信半径。

      

      如图所示,黑色实心点为信标节点,白色空心点为未知节点,假若未知节点能与信标节点通信,则其必在以信标节点为圆心、通信半径为半径的圆内,这样的话,多个这样的圆的相交区域必然包含了未知节点,然后以相交区域构成的矩形的质心作为未知节点的坐标。

      7)Ring-Overlapping算法

      

      该算法利用交叠环的思想进行定位,比如S为未知节点,A、B、C为信标节点,若A发出射频信号,而S处的信号强度RSS小于B处的信号强度而大于C处的信号强度,则S必在以A-B为内半径、A-C为外半径的环形区域内,类似地分别可以得到以B、C为中心的环形区域,而S必在这些环形区域的交叠区域内,然后以交叠区域的质心作为S的坐标。

       以上算法都是有信标节点的定位算法,曾有人提出了一些没有信标节点的定位算法如SPA(Self-positioning Algorithm)算法,这种算法主要是建立全局坐标系来估算未知节点的位置,但是这种算法复杂度非常高,不适合用于大规模网络,也有人提出针对SPA算法的改进算法,如SDGPSN(Scalable and Distributed GPS free Positioning for Sensor Networks)算法。

      还有一部分人提出了一些其他的算法,比如AFL(Anchor-Free Distributed Localization in Sensor Networks)算法,其利用的是局部估算方法。还有人提出了基于分簇的定位算法(Using Clustering Information for Sensor Network Localization)。

      定位算法暂时就介绍这么多了,相关深入内容将在后面继续讲解。

    作者:海子
             
    本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    展开全文
  • 基于RSSI的无线传感器网络节点定位技术
  • 无线传感器网络下采用Zigbee无线通信协议技术以及相应的定位技术组建网络。对基于Zigbee模块CC2430的定位节点进行了简单的介绍,以传感器网络节点和网关节点为主线,同时采用相关定位技术介绍无线传感器网络、Zigbee...
  • 无线传感器网络井下的应用提高了煤矿生产自动化和...现提出CC2430上采用实现简单的RSSI定位方法,并结合神经网络优化的节点定位算法。通过MATLAB实验仿真结果表明,此方法提高了井下无线传感器网络节点定位的精度。
  • 一种基于遗传算法的无线传感器网络节点定位技术研究
  • 研究了无线传感器节点定位问题,三边测量法定位基础上提出了一种基于RSSI的灵活的节点定位机制(FTL)。其基本思想是采用三个普通信标节点,利用节点间的协作形成未知节点存在的有效误差区域,通过一跳及两跳邻居...
  • 摘 要: 首先介绍无线传感器网络定位技术的相关术语、评价标准等基本概念及定位算法的分类方法; 重点从基于测距和非测距两个方面介绍无线传感器网络的主要定位方法, 并研究和分析若干新型无线传感器网络定位方法,...
  • 一种无需测距的无线传感器网络节点定位技术研究
  • 如何对传感器网络节点进行快速、精确的定位,已成为WSN系统急需解决的问题。为此,提出了一种基于RSSI距离比的MDS定位算法。该算法巧用RSSI距离比,结合Euclidean测距技术计算节点间距离矩阵,运用MDS算法建立相应的...
  • 摘 要: 首先介绍无线传感器网络定位技术的相关术语、评价标准等基本概念及定位算法的分类方法; 重点从基于测距和非测距两个方面介绍无线传感器网络的主要定位方法, 并研究和分析若干新型无线传感器网络定位方法,...
  • 使用STM32W108无线节点完成基于接收信号强度指示(RSSI:Received SignalStrength Indication)的N次三边质心加权定位,对移动节点实时进行定位,并将定位结果发送到汇集中心。图15.1为定位实验的实际场景,所有...

    使用STM32W108无线节点完成基于接收信号强度指示(RSSIReceived SignalStrength Indication)N次三边质心加权定位,对移动中的节点实时进行定位,并将定位结果发送到汇集中心。图15.1为定位实验的实际场景,所有实验在室内完成,共使用9个节点,1个移动节点,8个信标节点。

    15.1. 定位实际场景

     

     

    基于第10章介绍的SimpleMac协议栈,对程序进行删减更改,下面给出更改部分代码:

    文件solar-system.c相关内容:

    函数processRxPacket()

    /**************************************************************************

    功能描述:对接收的数据包进行解析解码处理,并根据不同类型的数据包执行不同的操作,数据包信息通过数据包回调函数保存在结构体变量rxData

    输入参数:无

    输出参数:无

    ***************************************************************************/

    void  processRxPacket(void)

    {

    ……

      //检查确定数据包帧类型,代码中只用到了FT_DATA类型

      switch(rxData.packet[1]&0x7) {

        case FT_DATA:

           RX_DETAILS(printf("FT_DATA\r\n");)

          packetType = (FT_DATA<<4);

          break;

        case FT_MAC_COMMAND:

          RX_DETAILS(printf("FT_MAC_COMMAND\r\n");)

          packetType = (FT_MAC_COMMAND<<4);

          break;

        default:

          RX_DETAILS(printf("Unknown frame  type\r\n");)

          goto stopProcessing;

      };

     

      //判断数据包中是否有PAN ID信息

      if((rxData.packet[1]&0x40)!=0x40) {

        pktHasSrcPanId=TRUE;

        srcAddrOffset = 2;

      }

     

      //四种不同的地址类型

      switch(rxData.packet[2]) {

       ……

      }

     

      RX_DETAILS(

        if(pktHasSrcPanId) {

          printf("src pan =  0x%04X\r\n", srcPanId);

        }

      )

     

      //判断数据包长度是否满足足够的长度保存负载类型

      if(rxData.packet[0]<payloadStart) {

        RX_DETAILS(printf("Length byte too  short\r\n");)

        goto stopProcessing;

      }

     

      //通过帧类型及负载类型计算数据包类型

      packetType |=  (rxData.packet[payloadStart]<<0);

      RX_DETAILS(printf("packet type =  0x%02X\r\n", packetType);)

     

      //不同的数据包类型执行不同的操作

      switch(packetType) {

        case (GENERIC_DATA_PACKET): //普通类型数据包,Sun节点和Planet节点都会收到

           RX_DETAILS(printf("GENERIC_DATA_PACKET\r\n");)     

      

          printf("%d\n",  rxData.rssi);//RSSI输出

          break;

    ……

        default:

          RX_DETAILS(printf("Unknown payload  type\r\n");)

          goto stopProcessing;

      }

    stopProcessing:

      rxData.packetBeingProcessed = FALSE;

    }

     

    函数joinCmd()

    /**************************************************************************

    功能描述:Planet广播搜索Sun节点,完成加入网络

    输入参数:无

    输出参数:无

    *************************************************************************/

    void  joinCmd(void)

    {

    ……

    #ifdef  PLANET_ROLE

          autoSendRate = 1; //设置节点向Sun节点发送数据包频率,加快频率,用于计算RSSI

          halSetLed(LED_D4); //点亮LED4

    #endif

      ……

    }

     

     

    本文出自《STM32W108嵌入式无线传感器网络》邱铁,夏锋,周玉编著.清华大学出版社,20145

    展开全文
  • 很多无线传感器网络应用,没有节点位置信息的监测信息往往毫无意义。当监测到事件发生时,关心的一个重要问题就是该事件发生的位置,如森林火灾监测,天然气管道泄漏监测等。这些事件的发生,首先需要知道的就是...
  • 无线传感器网络节点定位技术  无线传感器网络的许多应用要求节点知道自身的位置信息,才能向用户提供有用的检测服务。没有节点位置信息的监测数据很多场合下是没有意义的。比如,对于森林火灾检测、天然气...

    原文:http://www.cnblogs.com/dolphin0520/archive/2013/05/03/3056789.html

    无线传感器网络中的节点定位技术

      无线传感器网络的许多应用要求节点知道自身的位置信息,才能向用户提供有用的检测服务。没有节点位置信息的监测数据在很多场合下是没有意义的。比如,对于森林火灾检测、天然气管道监测等应用,当有事件发生时,人们关心的一个首要问题就是事件发生在哪里,此时如果只知道发生了火灾却不知道火灾具体的发生地点,这种监测没有任何实质的意义,因此节点的位置信息对于很多场合是至关重要的。

      在许多场合下,传感器节点被随机部署在某个区域,节点事先无法知道自身的位置,因此需要在部署后通过定位技术来获取自身的位置信息。目前最常见的定位技术就是GPS(Global Positioning System)了,它能够通过卫星对节点进行定位,并且能够达到比较高的精度。因此要想对传感器节点进行定位,最容易想到的方法就是给每个节点配备一个GPS接收器,但是这种方法不适用于传感器网络,主要原因有以下几点:

      1)GPS接收器通常能耗高,而对于无线传感器网络中的节点来说,一般能耗很有限,给每个节点配备一个GPS接收器会大大缩短网络寿命;

      2)GPS接收器成本比较高,给无线传感器网络中的每个节点配备一个GPS接收器,需要投入很大成本,尤其对于大规模的无线传感器网络来说不是很适合;

      因此有必要研究适合无线传感器网络的定位技术。下面分两个部分来介绍节点定位的相关研究:1)节点定位的基本概念;2)节点定位的基本思路;3)常见算法。

    一.节点定位的基本概念

      无线传感器网络中的节点定位是指传感器节点根据网络中少数已知节点的位置信息,通过一定的定位技术确定网络中其他节点的位置信息的过程。

      在无线传感器网络中节点通常可以分为信标节点(beacon node or anchor node)和未知节点(unknown node),其中信标节点也称为锚节点或者参考点,未知节点也称为普通节点。信标节点是位置信息已知的节点,未知节点是未知信息未知的节点。信标节点一般所占比例很小,通常通过手工配置或者配备GPS接收器来获取自身的位置信息。

      除此之外还有一种节点称为邻居节点(neighbor node),邻居节点是指传感器节点通信半径内的其他节点。

      以下是几个常用术语:

    • 到达时间(Time of Arrvial,TOA),信号从一个节点传播到另一个节点所需时间
    • 到达时间差(Time Diffrential of Arrival,TDOA),不同传播速度的信号从一个节点到达另一个基点所需要的时间之差
    • 到达角度(Angle of Arrival,AOA),节点接收到的信号相对于自身轴线的角度
    • 接收信号强度(Received Sinnal Strength,RSS),节点接收到无限信号强度的大小,也有称Received Sinnal Strength Indicator(RRSI),两个意思基本是一样的
    • 视距关系(Light of Sight,LOS),两个节点之间没有障碍物,能够直接通信
    • 非视距关系(Non Light of Sight,NLOS),两个节点之间有障碍物,不能直接通信
    • 跳数(Hop Count),两个节点之间的跳段之和

    二.节点定位技术的基本思路

      节点定位的基本思路主要有两种:

      1.基于测距(Range-based):假设在传感器网络中某些节点位置信息已知,通过某些手段来估算其他节点的位置信息。在这里面通常有两个步骤:

    • 测距
    • 位置估算

      因为要通过信标节点得到未知节点的位置信息,必须先确定信标节点到未知节点的距离,才能得到未知节点的位置信息。举个例子说明一下:

      

      假如信标节点A位置已知为(x1,y1),节点M位置未知,要想求得M的位置,最简单的想法:假设B位置为(x,y),A到B的距离为d1,则有

      d12=(x-x12+(y-y12

      显然只根据一个方程这样是无法求得x和y的值,假若有两个信标节点呢?

      

      这样一来的话又多了一个方程:d22=(x-x22+(y-y22,此时可以解得方程组得到x和y,但是此时x和y是有两组解的,无法唯一确定x和y的值,因此需要考虑再假如一个信标节点:

      这样一来的话就可以唯一确定x和y的值了,最基本的定位思想就是这样。这里举的例子是采用距离,还可以采用角度。

      一般情况最少需要知道未知节点和信标节点的三组距离或角度值,然后再通过位置估算方法确定位置。

      通常测距的方法有4种:

      1)基于到达时间(TOA)的测距

      这种方法是根据已知信号的传播速度及信号在发送节点和接收节点之间的传播时间来估算距离,这种方法要求能够非常精确地获取发送节点和接收节点之间的传播时延,这个是比较困难的,难度很大,不太适合无线传感器网络。

      2)基于到达时间差(TDOA)的测距

      这种方法中发送节点同时发送两种不同传播速度的信号、接收节点根据两种信号到达的时间差和他们的传播速度来计算距离。假若两种信号的传宝速度为v1和v2,到达时间分别为t1和t2,发送节点到接收节点的距离为d,则有:

      t1-t2=d/v1-d/v2

      可得d=(t1-t2)v1v2/(v2-v1)

      3)基于到达角度(AOA)的测距

      这种方法根据接收信号到达时候与自身轴线的角度来计算,这种方法对硬件成本要求很高,要求配备天线阵列,不太适合无线传感器网络

      4)基于接收信号强度(RSS)的测距

      信号在传播过程中会有衰减,无线信号的发射功率和接收功率存在某种映射关系,因此可以利用关系这个来估算距离,

     

      在获得了距离之后,就可以来估算位置了,常用的位置估算方法有下面两种:

      1)三边测量法

      上面举的例子中的位置估算方法就是三边测量法,此处不再赘述。

      至于某些文献上提到的三角测量法个人觉得跟三边测量法是一回事,就不再介绍了。

      3)最大似然估计法

      已知n个节点的坐标为(x1,y1),(x2,y2)......(xn,yn),它们到未知节点M的距离分别为d1,d2......dn,则有:

      (x-x12+(y-y12=d12

      (x-x22+(y-y22=d22

      ......

      (x-xn2+(y-yn2=dn2

      依次用第一个方程减去最后一个方程,可得:

      x12-xn2+y12-yn2+dn2-d12=2x(x1-xn)+2y(y1-yn)

      ......

      xn-12-xn2+yn-12+dn2-dn-12=2x(xn-1-xn)+2y(yn-1-yn)

      则可以表示成 AX = B

      其中A = B=X =(x,y)T

      2.无需测距(range-free)

      无需测距的方法一般是利用网络连通性或者拓扑结构来估算距离,再利用三边测量法或者极大似然估计来估算位置。

    三.常见算法

      1.基于测距(range-based)

      1)AHLos 算法 

      该算法是基于到达时间差的测距,信标节点首先向邻居节点以两种射频信号来广播消息,然后邻居节点根据到达时间差来估算距离,在接收到三个信标节点的消息之后,则根据三边测量法估算位置,邻居节点确定自己的位置之后转变为信标节点,也向邻近节点广播消息重复上述过程直至所有节点定位完成。

      2)RADAR算法

      该算法是基于RSS的测距,而基于RSS测距该算法有两种模型:经验模型和信号传播模型

      先说一下经验模型:

      

      在经验模型中,节点被分散在一定的区域内,并且保证所有的未知节点能够与信标节点直接通信,如图所示。然后事先在该区域内采集一些位置进行RSS强度测试,并以(x,y,RSS)的形式记录到数据库中。当进行定位时,未知节点同数据库中的数据进行比对,选择差值最小的三个或者三个以上点作为估算位置,然后再采用三边测量法或者下文的质心法来估算位置。

      信号传播模型:

      信号传播模型主要有两种模型:自由空间模型和shadowing模型

      自由空间模型假定信号发射功率和信号接收功率存在确定的映射关系: 

      

      其中PR是接收处的功率,PS是发射处的功率,d是发射点距接收点的距离,α是传播因子,视环境而定。

      shadowing模型:

      

      其中P(d)是未知节点处的信号强度或者信号发射功率,P(d0)是距信标节点或者基站d0处的信号发射功率(其中d0是参考距离,一般取1m),n是衰减因子,由于实际环境中存在噪声,所以引入了ß,比如在室内传播,会有墙壁或者门这些障碍物,就需要计算ß。

      2.无需测距(range-free)

      无需测距的定位算法不需要直接测量节点之间的距离或者角度,而是根据网络的连通性来实现位置估计得,典型的无需测距的算法主要有以下几种:

      1)质心算法

      质心算法基于两个假设条件:射频信号的传播遵循理想的圆球模型;节点的通信半径相同且不会改变。

      该算法利用了计算几何中质心的思想,假设n边形的顶点坐标分别为(x1,y1)......(xn,yn),设其质心坐标为(x,y),则有

      x=(x1+x2....+xn)/ n

      y=(y1+y2+....+yn)/ n

      算法核心思想为:信标节点周期性地广播包含自身位置信息的消息,在时间t内未知节点收到来自信标节点i的消息数目为Nr(i,t),而时间t内信标节点i发出的消息数目为Ns(i,t),那么未知节点和信标节点的连通指标为:

      C=Nr(i,t)/ Ns(i,t)

      如果C大于设定的阈值,则认为未知节点处于信标节点i的覆盖区域内,即与信标节点i连通。这样对于每个未知节点都可以选出与其连通的所有信标节点,然后把这些信标节点的质心作为该未知节点的坐标。

      质心算法是一种完全基于网络连通性的定位算法,其计算和实施难度都比较小,但是算法精度不高,并且通常要求信标节点具有较高的密度。

      2)DV-HOP(Distance Vector-Hop)算法

      DV-HOP算法是为了避免对节点距离直接测量而提出的一种基于矢量路由的非测距定位算法。该算法的核心思想是通过距离矢量路由方法获取未知节点与信标节点之间的最小跳数,并计算每跳的平均距离,然后以每跳的平均距离与最小跳数的乘积作为未知节点与信标节点的估算距离,再使用三边测量法估算未知节点的坐标位置。举个例子:

      

      A、B、C为信标节点,M为未知节点,A到B和C的距离分别为40m和100m,而A到B和C的最小跳数分别为2和5,则A的平均跳距为:

      (40+100)/ (2+5)=20m,同理可以得到B和C的平均跳数为24m和22.5m,则可以计算M距离三个信标节点的距离分别为:

      3*20m,2*24m,3*22.5m,然后就可以利用三边测量法估算出M的坐标。这种方法实现比较简单,但是精度较差,不适合稀疏的以及拓扑不规则的网络。

      3)APIT算法

      APIT算法的基本思想同质心算法的思想类似,它利用由信标节点组成的三角形覆盖重叠区域来确定未知节点的位置。在APIT算法中,未知节点首先在其邻居节点中收集信标节点的信息。然后任意选取3个信标节点,判断自己是否在这3个信标节点组成的三角形区域内,然后不断这样循环选取3个信标节点进行判断,这样,未知节点可以确定多个包含自己的三角形区域,这些三角形区域的重叠部分是一个多边形,它确定了更小的包含未知节点的区域,然后以这个多边形区域的质心作为未知节点的坐标。

      4)MAP算法

      MAP(Mobile Anchor Point)是一种基于移动信标节点的非测距定位算法,也有称为MAN(Mobile Anchor Node)。其基本思想是利用可移动的信标节点在监测区域中移动并周期性的广播其当前的位置信息,然后可以确定两条以未知节点为圆心的弦,这两条弦的垂直平分线的交点就是圆心。

      

      如图所示,S为未知节点,M为移动的信标节点,在T1时刻M移动到S的通信范围之内,然后在T5时刻移出S的通信范围,这样就可以确定了两条弦  T1T5,在T12时刻M又重新移动到S的通信范围之内,然后又在T15时刻移出S的通信范围,这样又可以确定一条弦T12T15,这两条弦的垂直平分线的交点即为圆心S的坐标,然后以圆心坐标作为未知节点S的位置。

      该算法有与其他非测距定位算法相比有较高的精确度,但是缺点是移动节点是必须要有足够能量支持其在监测区域内移动,并且当未知节点的位置发生变化时,该算法有比较大的误差。

      5)Amorphous算法

      Amorphous算法与DV-HOP算法类似,其分为三个阶段:

      第一阶段:计算未知节点与每个信标节点之间的最小跳数

      第二阶段:假设网络中的节点通信半径相同,并且每跳的平均距离等于节点的通信半径,计算未知节点到每个信标节点的距离

      第三阶段:采用三边测量法或者最大似然估计法估算未知节点的位置

      6)凸规划定位算法

      凸规划定位算法的核心思想是:如果两个节点能够直接进行通信,则它们之间的距离必定小于节点的通信半径。

      

      如图所示,黑色实心点为信标节点,白色空心点为未知节点,假若未知节点能与信标节点通信,则其必在以信标节点为圆心、通信半径为半径的圆内,这样的话,多个这样的圆的相交区域必然包含了未知节点,然后以相交区域构成的矩形的质心作为未知节点的坐标。

      7)Ring-Overlapping算法

      

      该算法利用交叠环的思想进行定位,比如S为未知节点,A、B、C为信标节点,若A发出射频信号,而S处的信号强度RSS小于B处的信号强度而大于C处的信号强度,则S必在以A-B为内半径、A-C为外半径的环形区域内,类似地分别可以得到以B、C为中心的环形区域,而S必在这些环形区域的交叠区域内,然后以交叠区域的质心作为S的坐标。

       以上算法都是有信标节点的定位算法,曾有人提出了一些没有信标节点的定位算法如SPA(Self-positioning Algorithm)算法,这种算法主要是建立全局坐标系来估算未知节点的位置,但是这种算法复杂度非常高,不适合用于大规模网络,也有人提出针对SPA算法的改进算法,如SDGPSN(Scalable and Distributed GPS free Positioning for Sensor Networks)算法。

      还有一部分人提出了一些其他的算法,比如AFL(Anchor-Free Distributed Localization in Sensor Networks)算法,其利用的是局部估算方法。还有人提出了基于分簇的定位算法(Using Clustering Information for Sensor Network Localization)。

      定位算法暂时就介绍这么多了,相关深入内容将在后面继续讲解。

    转载于:https://www.cnblogs.com/rayshen/p/4172233.html

    展开全文
  • 无线传感器网络节点定位算法的Matlab仿真 无线传感器网络节点定位算法的Matlab仿真 无线传感器网络节点定位算法的Matlab仿真 无线传感器网络节点定位算法的Matlab仿真
  • 无线传感器网络移动锚节点定位技术综述,于晶,蒋挺,定位是无线传感器网络的基础,如何降低系统成本的同时得到较高的定位精度是当前研究的一个重点课题。研究表明,引入移动锚节点
  • 将分治法运用到无线传感器网络节点自身定位问题,研究了锚节点位置关系对节点定位的影响,设计了基于分治求精的无线传感器网络节点定位算法(divide-and-conquer and refinement method based localization algorithm...
  • 该文件为Matlab程序:是基于无线传感器网络的节点定位算法程序的实现,其主要技术是通过随机部署信标节点来定位目标,
  • 为了防御欺骗攻击、保障传感器节点定位的有效性和可靠性,分析、总结了欺骗攻击所固有的薄弱环节,此基础上,提出一种检测欺骗攻击的算法。检测节点通过核对与被检测节点之间信号传播时间和所损耗的功率是否相对应,来...
  • 为了提高节点定位精度,解决定位误差较大的问题,提出了基于元胞蝙蝠算法的无线传感器网络节点定位算法,以此来获得更高的定位精度。首先将元胞自动机的思想融入蝙蝠算法,采用了改进的元胞限制竞争选择小生境技术和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,764
精华内容 2,705
关键字:

在传感器节点定位技术中