发明内容
本发明的目的在于提供一种保证为全网添加虚拟信标节点的同时,提高定位的能量有效性与定位精度的基于双移动信标的自适应密度感知定位方法。
本发明的目的是这样实现的:
一种双移动信标自适应密度感知定位方法,包括如下步骤:
(1)网络初始化:
部署无线传感器网络节点后,相对静止的两个信标节点进行自身位置的初始化,信标节点广播消息、收集邻居节点信息的同时,分为主信标节点和从信标节点,主信标节点用于决策移动方向和计算移动步长,从信标节点用于根据主信标节点位置计算移动的下一个位置;
(2)统计局部邻居节点信息:
信标节点广播携带自身位置信息的数据包,收集邻居节点反馈的节点信息数据,统计邻居节点的密度和信标需求信息;
(3)决策下一步信标移动方向:
若初始化后信标节点移动方向未改变,信标节点沿初始化方向移动,直到初始化方向上信标节点感知边缘的网络节点的信标需求参数为零,则信标节点的移动方向改为按顺时针选择的下一个方向;若初始化后信标节点移动方向改变,则信标节点根据不同方向上统计的邻居节点密度和信标需求信息,分别计算东南西北四个方向上邻居节点的信标需求参数,依次对上一移动方向、当前移动方向、下一移动方向和相反移动方向信标节点感知边缘网络节点的信标需求参数进行考察,将第一个信标需求参数不为零的方向作为下一个信标节点的移动方向;若四个方向上的信标需求均为零,信标节点移动路径回溯至上一位置,重新执行步骤(2),若信标节点连续可回溯路径次数达到最大可回溯次数,则进程结束,信标停止移动;
(4)计算信标移动步长:
主信标节点根据上一步决策的移动方向上所统计的邻居节点密度和信标需求信息,计算该方向上邻居节点的信标移动感知参数即网络节点密度参数和信标需求参数,计算主信标节点的移动长度;
(5)移动信标节点:
主信标节点根据步骤(3)和步骤(4)得出的移动方向和移动步长进行移动,重新执行步骤(2)。
所述收集邻居节点反馈的节点信息数据的步骤为:
(1)主信标节点广播包含自身位置信息的数据包MSG_B,开启定时器并等待西、北两个方向上邻居节点的回馈消息MSG_N_REPLY以及从信标节点回馈消息MSG_B_REPLY直到定时器到期;
(2)从信标节点收到主信标发来的MSG_B包,根据主信标位置和预先设定的信标节点相对距离矢量,计算从信标节点位置坐标并移动到此位置,在移动后的新位置广播自身位置信息数据包MSG_B,开启定时器并等待东、南两个方向上邻居节点的回馈消息MSG_N_REPLY直到定时器到期,定时器到期后就将带有收集到的东、南两个方向上的邻居节点信息的消息MSG_B_REPLY发送给主信标节点;
(3)邻居节点收到MSG_B包,返回MSG_N_REPLY消息给信标节点,开启定时器,定时器到期检查邻居表中各邻居节点状态,将未发送MSG_N_REPLY消息的邻居节点信息封装成MSG_N_REPLY包发给信标节点。
所述信标移动感知参数为D=(D_beacout-D_beacin)+φ(D_beacin-D_beacout),其中D_beacin为信标节点感知范围内节点的加权平均信标参考度和D_beacout为信标节点感知边缘节点的加权平均信标参考度,D_connin为信标节点感知范围内节点的平均连通度,D_connout分别表示信标节点感知边缘节点的平均连通度,φ为权重参数, n为信标节点感知范围内节点个数,m为信标节点感知边缘节点个数,Bi(i=0,1,2)为信标感知范围内信标参考度为i的网络节点个数,Bi’(i=0,1,2,3)为信标感知边缘的信标参考度为i的网络节点个数。λ0、λ1、λ2为权重参数,Ni为信标感知范围内第i个网络节点的连通度和Ni’为信标感知边缘的第i个网络节点的连通度。
所述的主信标节点和从信标节点,在移动过程中保持相对静止,两信标的连线与水平线沿逆时针夹角为30度,主信标节点携带全向天线,以及向西和向北两个方向上的定向天线,从信标节点携带全向天线,以及向东和向南两个方向上的定向天线,两个信标节点使用全向天线发送自身位置信息,使用定向天线接收各方向上邻居节点的回馈消息,主信标节点用于收集西、北两个方向邻居节点信息,从信标节点用于收集东、南两个方向邻居节点信息,发送给主信标节点进行计算,得到移动方向和移动步长,从信标节点通过主信标节点移动后发出的位置信息来计算和修正与主信标节点的相对位置。
所述移动步长为信标移动感知参数与基础步长的乘积。
所述主信标节点和从信标节点在工作固定周期后互换角色。
本发明的有益效果在于:
与现有方法相比,本发明提出的自适应密度感知定位方法,以双信标移动方式降低了未知节点定位中信标参考节点的共线度,信标以具有一定规律的螺旋式路径遍历整个网络,具有较少的交叉路径和重复路径,节省了信标节点的能量开销。
具体实施方式
下面结合附图及实验对本发明做进一步描述。
技术问题
本发明针对现有基于动态移动信标方法中严重的能量损耗以及不能保证未知节点获得稳定的低共线度信标节点的缺陷,提出了一种基于双移动信标的自适应密度感知定位方法,保证为全网添加虚拟信标节点的同时,保证信标节点移动路径具有低重叠率和重复率,提高定位的能量有效性,保证未知节点获得的定位参考信标节点具有低共线率,从而提高定位精度。
技术方案
本发明的实现方案如下:
针对信标节点共线问题,本发明利用双移动信标节点的方式进行解决,即采用两个可移动信标节点在网络中以相对静止的方式进行移动,并且移动信标节点对的连线与水平夹角成30度,如图1所示。针对信标节点能量有效性问题,为了减少重叠路径,本发明利用动态螺旋式路径使信标节点从网络边缘逐渐向网络中心进行移动,移动过程中对不同方向上的节点密度和信标需求进行感知,从而对路径中的网络“空洞”和障碍进行绕行,为了减少重复路径,对路径回溯次数进行了限制。此外本发明对现有方法的密度感知参数进行了改进,以信标感知范围内(1跳邻居节点)和感知边缘节点(2跳邻居节点)的差值作为感知参数,并将密度和信标需求参数结合在一起,更加体现了影响信标移动的实际因素的综合作用。
本发明的具体实现过程包括以下几个步骤:
步骤一:网络初始化
无线传感器网络节点部署后,双信标节点进行自身位置的初始化。其中双信标节点根据角色不同分别称为主信标节点和从信标节点,除了广播消息和收集邻居信息,主从信标区别主要在于:主信标负责决策移动方向和计算移动步长,从信标节点负责根据主信标节点位置计算移动的下一个位置。
步骤二:统计局部邻居节点信息
信标节点广播携带自身位置信息的数据包,收集邻居节点反馈的节点信息数据,最终统计邻居节点的密度和信标需求。
步骤三:决策下一步信标移动方向
若初始化后信标移动方向未改变过则沿初始化方向移动,否则信标节点根据不同方向上统计的邻居节点密度和信标需求信息,分别计算东南西北四个方向上邻居节点的信标需求参数,依次对上一移动方向、当前移动方向、下一移动方向上和相反移动方向上的感知边缘节点的信标需求参数进行考察,将第一个信标需求参数不为零的方向作为下一个信标节点的移动方向。若四个方向上的信标需求均为零,信标节点移动路径回溯至上一位置,并返回第二步,若信标节点连续可回溯路径次数达到最大可回溯次数,则算法结束。
步骤四:计算信标移动步长
主信标节点根据上一步决策的移动方向上所统计的邻居信息,根据感知参数计算公式计算得出的该方向上的邻居节点的信标移动感知参数(包括密度参数和信标需求参数),并计算出主信标节点下一步在该方向上的移动长度。
步骤五:信标节点移动
主信标节点根据步骤三和步骤四得出的移动方向和移动步长进行移动,返回步骤二。
上述步骤一中的双信标节点的主信标节点和从信标节点的特征如下:主信标节点携带全向天线,以及向西和向北两个方向上的定向天线,从信标节点携带全向天线,以及向东和向南两个方向上的定向天线。如图2所示,信标节点使用全向天线发送自身位置信息,使用定向天线接收各方向上未知节点的回馈消息。主信标节点负责收集西、北两个方向邻居节点信息,从信标节点负责收集东、南两个方向邻居信息,然后将信息发送给主信标节点进行计算,最后从信标节点通过主信标节点移动后发出的位置信息来计算和修正与主信标节点的相对位置。为了保证能量消耗的均衡性,主从信标节点可在不同定位周期中互换角色。
上述步骤一所述的网络初始化中信标节点位置初始化方法如下:无线传感器网络随机部署后,主信标节点广播自身位置,从信标节点收到主信标节点位置信息后,向其靠拢,双信标节点最终位置相距为通信半径R长度,并且其连线与平面坐标系水平方向逆时针夹角为30°。
需要说明的是,通常信标节点的通信半径是普通节点通信半径的几倍到几十倍,而即使移动信标节点在网络中最初位置是随机的,一般信标节点对会被同时布撒,在没有较强的外界因素影响下,信标节点对在最初布置后彼此可成为直接感知对象,因此,为了节省能量开销,主信标节点可先发送探测信息,若从信标节点为主信标节点的直接邻居节点,则普通节点可不必全网广播主信标节点的位置信息,若从信标节点不在其感知范围内,再采取全网广播方式。
局部邻居节点信息统计的邻居信息收集过程如下:1)主信标节点广播包含自身位置信息的数据包MSG_B,开启定时器并等待西、北两个方向上普通邻居节点的回馈消息MSG_N_REPLY以及从信标节点回馈消息MSG_B_REPLY直到定时器到期。2)从信标节点收到主信标发来的MSG_B包,根据主信标位置和预先设定的双信标节点相对距离矢量,计算从信标节点位置坐标并移动到此位置,在移动后的新位置广播自身位置信息数据包MSG_B,开启定时器并等待东、南两个方向上普通邻居节点的回馈消息MSG_N_REPLY直到定时器到期,定时器到期后就将带有收集到的东、南两个方向上的普通邻居节点信息的消息MSG_B_REPLY发送给主信标节点。3)普通节点收到MSG_B包,返回MSG_N_REPLY消息给信标节点,开启定时器,定时器到期检查邻居表中各邻居状态,将未发送MSG_N_REPLY消息的邻居信息封装成MSG_N_REPLY包发给信标节点。
本发明中信标节点和普通节点定义如下:
1)主信标节点:Bpri(Bid,RB,Dir,Loc,Blocat,Ninfo,Timer,Mov)。其中Bid为主信标节点广播的虚拟信标ID号;RB为主信标节的通信半径;Dir∈{E,S,W,N}为信标节点上一步的移动方向;Loc(x,y)为主信标节点当前的位置坐标;Blocat={Loc1,Loc2,…,Loci,…}记录信标节点移动路径上广播信标信息的所有位置,其中Loci(x,y)表示信标节点在无线传感器网络中第i次广播的自身位置坐标;Ninfo(NE,NS,NW,NN)为主信标节点当前感知范围内,在东南西北四个方向上普通节点反馈的邻居节点信息,其中NE和NS由从信标节点获得,其中Ndir(N1,N2,…,Ni,…),dir∈{E,S,W,N}为某一方向上的主信标节点当前感知的邻居普通节点集合,其中Ni(Nid,Bnum,Nnum)可以为主信标节点感知范围内的普通节点,或者为主信标节点的感知边缘邻居节点,Nid为该节点ID号,Bnum为信标参考度,Nnum为该节点的连通度;Timer为定时器,每次广播位置信息后就启动定时器,定时器到期则停止等待回馈消息;Mov为主信标节点下一步将要移动的距离,由信标节点移动步长计算公式计算得出。
2)从信标节点:Bsub(Bid,RB,Dist,Loc,Locnext,Ninfo,Timer)。Bid为从信标节点广播的虚拟信标ID号;RB为从信标的通信半径;Dist为主从信标节点的相对位置距离;Loc(x,y)为从信标节点当前的位置坐标;Locnext(x,y)为从信标节点下一步将要移动的坐标位置,根据主信标节点最新广播的位置信息计算得出;Ninfo(NE,NS)为主信标节点当前感知范围内,在东南两个方向上普通节点反馈节点信息集合;Timer为定时器。
3)普通网络节点:无线传感器网络中待定位的未知节点称为普通网络节点。普通节点每次收到新的虚拟信标节位置信息后,就统计其邻居节点收到信标节点的情况,并将统计结果回馈给信标节点,普通网络节点表示为N(Nid,RN,Nneigh,Loc,Bneigh,Bnum,Nnum,Bnew,Timer)。其中Nid为网络节点ID号;RN为网络节点的通信半径;Nneigh={N1,N2,…,Ni,…}为当前节点的直接感知邻居节点(即一跳邻居节点)集合,Ni(Nid,Bnum,Nnum,Sign)为其中一个邻居节点,包含节点号Nid,该邻居节点的信标参考度Bnum和信标参考度Nnum,Sign为标志位,用来记录一个信标感知周期内邻居节点回馈消息情况;Loc(x,y)为该网络节点定位后的位置坐标;Bneigh={B1,B2,…,Bi,…}为网络节点感知到的虚拟信标节点集合,Bi(Bid,Bloc)为其中一个感知虚拟信标节点,Bid为收到的虚拟信标ID号,Bloc(x,y)为虚拟信标节点位置坐标;Bnum为信标参考度;Nnum为该节点的连通度;Bnew(Bid,Bloc)为网络节点最新感知到的虚拟信标节点;Timer为定时器。
本发明步骤二中邻居信息收集过程中几种数据包主要消息字段如下:
1)信标节点广播位置的消息MSG_B(SIGN,Bid,LocX,LocY),其中SIGN为标志位,用来区分消息类型,信标节点消息的标志位为0。主信标节点广播的参考信息消息格式中包含虚拟信标节点号Bid,当前位置坐标LocX、LocY。
2)从信标节点发送给主信标节点东、南方向节点分布情况的回馈消息MSG_B_REPLY(SIGN,Bid,NE,NS),其中标志位SIGN为1,从信标节点回馈消息包含信标号Bid,东、南方向节点分布信息NE、NS。
3)普通节点发送给邻居节点的消息MSG_N(SIGN,Nid,Nnum,Bnum),其中标志位SIGN为2,普通节点消息包含普通节点号Nid,节点连通度Nnum,信标参考度Bnum。
4)普通节点的回馈消息MSG_N_REPLY(SIGN,Nid,Bnewid,Nnum,Bnum),其中标志位SIGN为3,普通节点回馈消息包含普通节点号Nid,最新感知的信标节点号Bnewid,节点连通度Nnum,信标参考度Bnum。
步骤三和步骤四中对所述的感知参数描述为:在邻居节点信息统计阶段,信标节点对四个方向的感知范围内和感知边缘的邻居节点分别统计平均节点连通度(即节点密度)和具有信标参考度为0、1、2以及3或3个以上的邻居节点数目。其中网络节点已经收到的虚拟信标节点参考信息的个数称为该节点当前的信标参考度。图3为信标感知范围内和感知边缘节点示意图,其中感知边缘节点为信标节点感知范围中普通节点的邻居节点,但不是信标节点的直接感知邻居节点。信标节点分别对各个方向感知内部和感知边缘节点统计后的信息进行加权计算,各方向的感知参数即为各方向上感知边缘节点与感知内部节点的加权计算结果之差。
感知参数计算公式如下:
公式(1)中D为主移动信标节点根据当前所在位置周围的节点情况计算的密度感知参数,D_beac
in和D_beac
out分别表示信标节点感知内部和感知边缘的节点的加权平均信标参考度,若某方向上D_beac
out为零,则说明该移动方向上已经没有节点或是该移动方向上的节点都已获得3个或3个以上信标节点信息。D_conn
in和D_conn
out分别表示信标节点感知内部和感知边缘的节点的平均连通度,
为权重参数,表示网络密度对移动步长的影响程度。
D_beacin和D_beacout的计算公式如下:
公式(2)和(3)中,n表示信标感知范围内的节点个数,m表示信标感知边缘的节点个数。Bi(i=0,1,2)表示信标感知范围内信标参考度为i的网络节点个数,Bi’(i=0,1,2,3)表示信标感知边缘的信标参考度为i的网络节点个数。λ0、λ1、λ2为权重参数,表示虚拟信标节点的需求程度对移动步长的影响程度。
D_connin和D_connout的计算公式如下:
公式(4)和(5)中,Ni和Ni’分别表示信标感知范围内和感知边缘的第i个网络节点的连通度。
上述步骤四中对所述的移动步长计算方法描述为:移动步长为感知参数与基础步长的乘机,根据双信标节点相对静止倾斜30度角的特点,并结合感知参数计算的特点,确定基础步长为信标节点的半径R,信标节点第i次移动的步长计算公式为:Movi=(D+1)·R。
本发明的自适应密度感知定位方法流程图如图4所示。
检测实例
本发明选取动态移动信标定位方法中两个具有代表性的信标路径规划方法作为对比实验:动态希尔伯特曲线(Dynamic Hilbert Curve)算法和虚拟力轨迹(Virtual Force Trajectory)算法。
本发明的实施场景如下:
分别将数量为200、300、400、500、700、900、1100、1400、1700、2000的无线传感器节点随机部署在区域大小为100*100的区域内,对每种节点数量的场景均进行50次随机部署,将三种算法分别在每个场景中进行实验。最终每种算法取50次测试结果的平均值作为对应节点数量的最终测试结果进行分析。实验中假设所有节点通信范围为圆形,其中信标通信半径R=15,未知节点通信半径r=10。
本发明的参数设定:λ
0=0.5,λ
1=0.3,λ
2=0.1,
主信标节点初始位置坐标(50,50)。
Virtual_force参数设定:λ0=0.3,λ1=0.1,信标初始位置坐标(50,50)。
需要说明的是,虽然信标节点的部署也应该是随机的,但由于信标初始化位置对算法执行性能有一定的影响,因此为了初始化条件统一,方便实验对比,实施过程中需预先设定信标节点的位置。
其中每个场景中本发明的实施步骤如下:
步骤一:网络初始化
随机部署传感器节点,初始化信标节点位置。
步骤二:统计局部邻居节点信息
信标节点收集邻居节点反馈的节点信息数据,最终统计邻居节点的密度和信标需求。
步骤三:决策信标移动方向
信标节点根据不同方向上统计的邻居节点密度和信标需求信息,分别计算东南西北四个方向上邻居节点的信标需求参数,依次对上一移动方向、当前移动方向、下一移动方向上和相反移动方向上的信标需求参数进行考察,将第一个信标需求参数不为零的方向作为下一个信标节点的移动方向。若四个方向上的信标需求均为零,信标节点移动路径回溯至上一位置,并返回第二步,若信标节点连续可回溯路径次数达到最大可回溯次数,则算法结束。
步骤四:计算信标移动步长
信标节点根据上一步决策的移动方向上所统计的邻居信息,根据感知参数计算公式计算得出的该方向上的邻居节点的信标移动感知参数(包括密度参数和信标需求参数),计算出信标节点下一步在该方向上的移动长度。
步骤五:信标节点移动
主信标节点根据步骤三和步骤四得出的移动方向和移动步长进行移动,返回步骤二。
(2)实验及分析
图5分别为在带有“空洞”的随机部署无线传感器网络中本发明以及DYNAMIC HIBERT和VIRTUAL FORCE算法的移动信标移动轨迹图。
为了验证本发明对于随机部署无线传感器网络定位的有效性,采用基于移动信标的定位方法中通常使用的评价参数与已有算法进行对比:
1)虚拟信标个数:虚拟信标个数也称移动信标节点在无线传感器网络中广播自身位置消息的次数。该参数体现了节点通信次数,因此虚拟信标个数与网络节点能量消耗程度成正比。
2)信标覆盖度:在无线传感器网络中,收到虚拟信标消息的普通网络节点占普通网络节点总数的百分比。信标覆盖度越高说明移动信标遍历网络节点越全面,算法性能越好。
3)定位覆盖率:在无线传感器网络中,收到3个或3个以上虚拟信标的普通网络节点数占普通网络节点总数的百分比。未知节点至少获得3个信标位置信息才能完成自身的位置估计,该参数体现了节点的定位成功率。
4)信标共线度:A(xa,ya),B(xb,yb),C(xc,yc)为未知节点P获得信标信息中的三个信标坐标,则信标共线度line_degree说明了A、B、C节点的共线程度,可通过以下公式计算得出:
line_degree=max(cos∠BAC,cos∠ABC,cos∠ACB) (6)
公式(6)中,根据三角形内角和可知最小内角度数范围在0°~60°之间,因此line_degree取值在0.5~1。可知信标节点共线度越高,未知节点定位效果越差,反之定位效果越好,其中共线度为0.5表示A、B、C三点组成正三角形,此时对于未知节点P来说定位效果最好,共线度为1表示A、B、C三点共线,此时未知节点P定位效果最差。
5)信标移动路径长度:所有移动信标节点在网络中每次移动步长的总和。移动路径长度从另一个角度体现了信标节点能量消耗程度。移动路径越短则算法性能越好。
以下是实验结果分析:
图6为随机部署wsn中随节点数量增加,三种算法的虚拟信标个数变化情况。可以看出随着网络密度增加,本发明和虚拟力轨迹算法的虚拟信标个数缓慢增长,且本发明的虚拟信标数小于虚拟力虚拟信标个数的1/3,动态希尔伯特轨迹的虚拟信标个数在较稀疏网络中最少,在较密度网络中迅速提升。综合来看本发明和虚拟力轨迹算法在网络中添加的虚拟信标个数较稳定,动态希尔伯特轨迹虚拟信标个数受网络密度影响波动较大,在较稀疏网络中希尔伯特轨迹算法信标耗能最小,在密集网络中本发明的信标耗能最小。
图7和图8分别为三种算法在不同密度的随机网络中信标覆盖度和定位覆盖率的变化情况。从图中可以看出,除了动态希尔伯特轨迹在及其稀疏的网络下信标覆盖度较低,三种算法的信标覆盖度均接近100%。虚拟力算法可达到在不同密度网络情况下定位覆盖率均接近100%,本发明定位覆盖率在95%以上,且在密集网络可达到100%,动态希尔伯特算法在较非密集定位覆盖率较低,随着网络密度阶段性增加定位覆盖率快速提升,在密集网络中也可达到100%定位覆盖率。综合来看,在随机网络中本发明和虚拟力的定位覆盖率较高且较稳定,虚拟力算法定位覆盖性能最好。
图9为三种算法在不同密度的随机网络中平均最低信标共线度变化情况。可以看出,本发明和虚拟力算法的节点平均最低信标共线度随网络节点密度增加下降非常缓慢,并且本发明的平均最低信标共线度低于虚拟力算法,动态希尔伯特轨迹随网络密度阶段性增加,平均信标共线度迅速下降。已知信标节点共线度越低,未知节点定位效果越好,综合来看本发明和虚拟力算法平均定位效果最佳,并且本发明优于虚拟力轨迹,动态希尔伯特在密集网络中定位效果最好。
图10为三种算法在不同密度的随机网络中信标移动路径总长度变化情况。可以看出,随着网络密度的增加,本发明的信标移动路径长度几乎没有变化,虚拟力轨迹的信标移动总路径长度增长缓慢,动态希尔伯特轨迹的信标移动路径长度随着网络密度增加呈阶段性成倍增长。其中虚拟力轨迹的信标移动路径最长,近似为本发明算法的2倍。综合来看在任何网络密度情况下虚拟力轨迹的信标移动路径均最长,本发明的信标移动路径长度适中且较稳定,动态希尔伯特轨迹信标移动路径在较稀疏网络中优于本发明,在密集网络中本发明的信标移动路径长度最短。
从以上对比可以看出,本发明在稀疏和密集网络中同样非常稳定,其在定位性能方面表现较好,虽然相比虚拟力算法定位性能相对较低,但本发明的信标覆盖度及定位覆盖率均能达到95%以上,并且在密集网络中近似达到100%,此外本发明的信标共线度在稀疏网络中最优,在密集网络中也保持稳定,在信标能耗方面本发明在密集网络中表现最佳,在稀疏网络中适中。从整体看本发明在定位性能及信标能耗方面都很稳定,其没有以能耗为代价追求极高的定位性能,但在定位性能上依然保持良好,该算法可在能耗和定位性能上保持平衡,且综合性能较好。