背景技术
近年来,随着微电机系统、无线通信和数字电子技术的发展,无线传感器网络(WSN,wireless sensor networks)的应用也日趋广泛,数据采集是其基本应用之一。人们通过在感兴趣环境中部署大量传感器节点,对各种兴趣数据进行采集,如温度、湿度、声音、图像、视频等,大数据量的采集,如图像、视频数据的采集,给数据采集方案的设计带来了一定的挑战。传统的移动Sink位置固定的采集方式,存在漏斗效应、通信开销大、通信约束等限制,不能很好的满足应用的需求。因此,如何在采集大量兴趣数据的同时,实现网络的能量消耗均衡、能量高效,延长网络使用寿命成为一个极具挑战数据采集设计问题。
目前,行业内对通过移动Sink对无线传感器网络进行数据采集的相关研究也取得了一定的进展,E.M.Saad等人在2008年的《The Fourth InternationalConference on Wireless and Mobile Communications》上发表的文章“A DataGathering Algorithm for a Mobile Sink in Large-Scale Sensor Networks”,该算法先将传感器节点分簇,再将相距不超过两跳的簇头聚类为一个群,将群的中心作为移动Sink必须遍历的位置(Path-Point);采用蜂群算法(Bees Algorithm)规划遍历Path-Point的最佳路径,从而使得目标函数F最小;移动Sink每到达一个群中心,该群的所有簇头节点以一跳的方式直接向移动Sink路由数据包;Sink通过遍历所有Path-Point采集整个网络的数据。由于簇头以一跳的方式直接与Sink通信,移动Sink每到达一个新的Path-Point均需进行广播告知该群的簇头向Sink报告数据,带来较大的能量开销;虽然在目标函数中将节点内存溢出加以考虑,但由于移动Sink以较低速度移动且只有局部的传感器节点可以向Sink报告数据包,节点内存溢出的状况依然没有得到较好的解决。
Yinying Yang等人在2011年的《IEEE-International Conference on RecentTrends in Information Technology》上发表文章“Improving Energy Efficiency andReliability using multiple mobile sinks and hierarchical clustering in Wireless SensorNetworks”,分簇大小随着与BS的距离的增大而逐渐增大,通过减小BS周围的簇的大小,减轻BS附近的簇头感知数据的负担;采用移动Sink进行数据采集,使得在移动Sink周围的节点或簇,直接将数据给附近的Sink而不必通过多跳方式将数据传给基站,从而进一步减少节点的能量消耗。该算法将静态基站和移动Sink结合进行数据采集,虽然簇大小随着距离基站位置变化的分簇机制可以在一定程度上缓解“漏斗效应”,但基站周围的节点依然还是网络中的hot-spots,且只有距离移动Sink一跳的簇头节点与Sink间直接通信,移动Sink只能在网络中的局部发挥作用。
YiShi和Y.Thomas Hou在2012年的《IEEE/ACM TRANSACTIONS ONNETWORKING》上发表文章“Some Fundamental Results on Base StationMovement Problem for Wireless Sensor Networks”,该文献主要解决的是如何利用移动BS来延长网络生存期问题。BS的位置是时间相关的,多跳的数据流路由也是时间和空间相关的,为了简化问题,将BS位置的确定所涉及的时域问题转换到空域进行解决,并证明BS移动进行数据采集的状况下的无穷多采集点可以转换成有限个驻留点进行数据的采集;提出(1-e)近似算法,将感知区域进行划分,对各个区域移动Sink驻留的时间进行计算,得到接近网络最优生存期的生存时间为最大生存时间的(1-e)倍,e为一个任意给定的很小的数;对于特定分区后的网络,BS在某区域的驻留时间上有很大的差异性。该文献为移动Sink在各个区域的驻留时间的确定提供理论指导,但是计算复杂且当整个网络分区数目变化时,需要重新计算所有区域的驻留时间。
Jun Luo和Jean-Pierre Hubaux在2005年的《IEEE INFOCOM》上发表文章“Joint Mobility and Routing for Lifetime Elongation in Wireless Sensor Networks”,该文章对移动Sink进行数据采集的一些基本问题进行理论证明,指出越靠近网络中心的节点能量消耗越大,且圆形网络中移动Sink的最佳移动轨迹是沿网络的边缘移动,这样可以缓解网络中心节点的负载压力,但该移动策略限制了网络规模的大小,比较适合小规模的网络应用;对于大规模网络应用,移动Sink可以在距离网络边缘R-r的圆形轨迹上采集数据,距离圆心小于r的节点按照最短路径将数据路由给Sink,距离圆心大于r的节点沿弧线将数据包路由到Sink所在直径处再沿直径所在方向向Sink继续路有数据包,从而均衡网络中节点的能量消耗。但是该协议所要求节点的接收到的数据包与发出的数据包时刻保持均衡的条件在实际应用时难以满足。
郭剑等人在2012年《通信学报》上发表文章“基于移动Sink的无线传感器网络数据采集方案”,提出TDD算法、分配机制、OMWFS算法和DTSP算法。该算法以减少节点缓存溢出为目的对引入MS解决网络热点(hot-spots)问题进行算法设计,将网络分成一跳的簇,由MS遍历DH进行数据采集;在移动轨迹确定时,均衡内存溢出时间和移动距离两个因素选择权值最小的DH作为下一目标位置。由于遍历一跳簇头方式进行数据采集对于大规模网络,延时问题不会因为算法对移动路径长度的考虑就能很好的解决,因此该算法不适用于大规模网络;且分配算法带来的通信和计算开销限制了参与内存共享的节点的数目。
综上,目前无线传感器网络数据采集时普遍存在的问题是:
1、大多数基于分簇拓扑的移动Sink数据采集协议,要求Sink每到一个数据采集点向周围一跳的邻居节点或簇头广播一次自己的位置信息,广播带来了较大的能量开销;
2、基于分簇拓扑的协议,簇头均直接与移动Sink进行通信,该类协议不适用于大规模网络;
3、网络中只有特定区域的节点可以向Sink传输数据包,且移动Sink以较低速度在网络中移动,数据传输延时较大;传感器节点由于硬件限制,可能存在内存溢出导致数据包丢失的风险。
发明内容
为解决现有技术的不足,本发明的目的在于解决现有移动Sink进行数据采集技术中存在的不足,提出了基于移动Sink位置可预测的无线传感器网络数据采集方法,其中,节点基于同移动Sink间维护的时钟的松散时间同步,计算移动Sink在预定轨迹上的位置并向该位置的Sink路由数据包;移动Sink根据每个象限采集到的数据包的比例信息不断调整更新在各个象限驻点上的驻留时间,采集全网的感知数据包。
为了实现上述目标,本发明采用如下的技术方案:
基于移动Sink位置可预测的无线传感器网络数据采集方法,包括:
基于HEED算法进行周期性网络分簇的传感器节点,根据接收到的广播包中参数计算移动Sink节点在网络中的坐标信息并向移动Sink所在位置,进行数据包的路由;
移动Sink根据各个象限历史数据信息,调整移动Sink在四个象限预定轨迹上的驻点处的驻留时间,进行数据采集;
其中,所述广播包为:移动Sink节点进入网络中,向网络中的所有节点广播HELLO包,HELLO包包括网络参数和同步时间起始时间t0;
所述网络参数包括:移动Sink节点进行数据采集的起始位置信息S(x,y)、Sink运行速度V、Sink在矩形轨迹上的驻点数n、在各个象限的驻点的驻留时间Ts(i,1)、水平移动长度ι、垂直移动宽度ω、与原点偏移因子C(p,q)和区域原点O的位置信息;其中,ι=α*L,ω=β*W,α、β分别为Sink移动轨迹水平参量因子和垂直参量因子;L、W分别为传感器网络的长和宽;p为水平偏移因子,q为垂直偏移因子,以及
所述历史数据信息为:Sink根据接收到的来自簇头节点的数据中的ID统计出来自四个象限的数据量所占整个数据的比重PData1、PData2、PData3、PData4,并计算第k圈和第k-1圈,即相邻两圈之间各个象限数据所占整个网络比例的变化程度Pchange,调整移动Sink第k+1圈在四个象限预定轨迹上的驻点驻留的时间Ts(i,k+1)。
进一步地,所述计算移动Sink节点在网络中的坐标信息具体为:
移动Sink的移动速度为V,两个驻点之间时间步长为Tstep,将移动轨迹映射为一线性模型;以一轮数据采集的起点作为参考点,t时刻CH距离a位置的长度d(t)。当前圈中Sink的移动时间为
根据计算所得Tp判断出移动Sink所在的象限信息,并根据t时刻CH距离a位置的长度d(t)确定移动Sink在网络中的位置;簇头节点依据最短路径原则选择下一跳节点,当前CH根据自己的时钟判断Sink所处的网络位置,选择下一跳CH转发数据包,直到数据包沿着该路径被路由到移动Sink,移动Sink对来自CH的感知数据进行采集。
进一步地,所述移动Sink对来自CH的感知数据进行采集过程为:移动Sink的数据采集包括数据预采集、常规的数据采集和通告结束数据采集三个阶段。更进一步地,所述数据预采集、常规的数据采集和通告结束数据采集具体为:
1)数据预采集阶段:移动Sink节点开始一轮新的数据采集和相关信息广播的过程,移动Sink节点维护一个时钟,Sink进入数据采集起始点,向网络广播HELLO包进行时间同步和网络参数的广播,完成全网节点和移动Sink之间的松散时间同步;
2)常规数据采阶段:是介于数据预采集和预告结束数据采集之间的数据采集过程。这个过程中,由Sink对Ts(i,k)进行不断地调整更新,均衡网络的能量消耗;
一圈数据采集后,Sink根据所采集数据中的节点位置信息统计出各个象限所产生的数据占整个数据的比重PData1、PData2、PData3、PData4,由于节点部署的随机性、事件发生的不确定性等因素的影响,使得各个象限数据产生量有很大的随机性,CH间通过多跳的方式进行数据传输,故当象限i产生数据而Sink位于j象限,则CH必须经过多跳的传输才能到达Sink,为了减少这种因CH间转发带来的数据传输的能量消耗,根据历史数据对Ts(i,k)不断地调整,使网络中节点的能量消耗更加均匀以延长网络的使用寿命;
3)通告结束数据采集阶段:除了进行常规的数据采集外,Sink向全网广播一个本轮数据采集结束的广播包,进行广播的时间为这一圈的开始时刻,广播包包含:Sink还将在网络中的数据采集时间Tbl,收到该广播包的节点进行完本次数据传输后,将后续接收到的数据缓存不发给Sink,准备进行下一轮数据采集。
更进一步地,所述根据历史数据对Ts(i,k)不断地调整具体为:
1)事件发生区域的传感器节点向所在簇的簇头报告监测区域的感知数据,簇头节点将来自簇内节点的数据包进行融合,得到一个头部包含两位的簇头象限信息的数据包,象限信息由簇头根据自己的位置信息loc(xi,yi)相对区域原点O位置信息计算获得,象限i∈{1、2、3、4},只进行数据包转发的簇头的象限信息不会被添加到数据包中,即数据包中只添加源节点所在簇的簇头的象限信息,其他簇头只负责将该数据包路由至移动Sink即可,簇头间通过多跳向移动Sink进行数据包路由,簇头间通过多跳方式向移动Sink进行数据路由时,采用逐跳确认机制来确保数据的接收率;
2)一轮Sink数据采集中,第k+1圈的驻留时间调整参考数据为第k圈的数据量所占的总比重以及第k、k-1圈各个象限数据包产生量的变化程度Pchange(k,k-1),其中k≥1;Sink根据接收到的数据中的ID统计出来自四个象限的数据量所占整个数据的比重PData1、PData2、PData3、PData4;用Pchange(k,k-1)来代表相邻两圈之间各个象限数据所占整个网络比例的变化程度,当Pchange(k,k-1)超过一定阈值Th时,表示第k圈各个象限采集到的数据与上一圈相比,变动较大,此时,移动Sink向全网广播一个数据包,该包包含本圈的Sink在四个象限驻点上分别驻留时间Ts(i,k+1),如果Pchange(k,k-1)不大于阈值Th,Sink维持上一圈的驻留时间进行数据采集;
3)首次接收到该广播包时传感器节点缓存下Sink的驻留时间Ts(i,k+1);
4)Sink根据本圈的驻留时间Ts(i,k+1)继续进行数据采集。
此外,所述采用逐跳确认机制具体为:
当前节点CH1将所在簇的感知数据路由给下一跳节点CH2或者Sink后,CH2向CH1返回一个确认消息ACK,如果在Т时间内,CH1未成功收到来自CH2的ACK,则认为数据传输失败,CH1将缓存数据进行备份,随机等待一段时间后重传;发送Re次后,如果还未接收到来自下一跳节点确认消息,则丢弃该数据包。
本发明的有益之处在于:本发明实现了在网络松散时间同步下,传感器节点预测移动Sink的位置信息,且簇头间通过多跳向移动Sink路由感知数据,移动Sink可以采集来自整个网络的数据包;移动Sink可以调整在不同象限的驻留时间,均衡了整个网络节点的能量消耗,延长了网络的使用寿命。
具体实施方式
以下结合附图和具体实施例对本发明作具体的介绍。
本发明通过传感器节点和移动Sink间的松散时间同步,传感器节点可以根据自己的时钟和已知的网络参数计算出移动Sink在网络中的位置;根据所述位置信息,全网簇头节点以多跳方式向当前Sink所在位置路由数据包;移动Sink根据采集数据的历史信息不断调整在每个象限驻点上的驻留时间,提供了基于移动Sink位置可预测的无线传感器网络数据采集方法。
下面结合附图对本发明作更进一步的说明。
图1所示为一种分簇传感器网络的网络模型,包括移动Sink节点、簇头节点和簇内节点。网络大小为W*L的矩形区域,通过一个移动Sink节点进行数据采集,网络内随机部署普通传感器节点,这些节点地理位置信息已知,除了Sink外其他节点不可移动。Sink节点可以按较低速度匀速移动,移动速度为V。区域中心记为原点O(0,0),以原点为中心,形成的一个αL*βW的矩形作为移动Sink的理想移动轨迹。移动Sink在网络中进行数据采集的位置称为驻点,驻点总个数n是4的整数倍。将区域划分成四个象限,移动轨迹与坐标轴的交点按照右手法则划规到各个象限。
如图2所示为移动Sink进行数据采集的流程图,具体包括如下步骤:
201)移动Sink进入网络中的数据采集起始点a;
202)移动Sink进行数据预采集;
203)移动Sink进行常规数据采集;
204)移动Sink进行通告结束数据采集;
205)一轮数据采集结束,移动Sink离开网络;
所述步骤202)中,移动Sink进行数据预采集。数据预采集是移动Sink节点开始一轮新的数据采集和相关信息广播的过程。移动Sink节点维护一个时钟,Sink进入数据采集起始点,向网络广播HELLO包进行时间同步和网络参数的广播,完成全网节点和移动Sink之间的松散时间同步;HELLO包包括网络参数和同步时间起始时间t0;所述网络参数包括移动Sink节点进行数据采集的起始位置信息S(x,y)、Sink运行速度V、Sink在矩形轨迹上的驻点数n、在各个象限的驻点的驻留时间Ts(i,1)、水平移动长度ι(ι=α*L)、垂直移动宽度ω(ω=β*W)、与原点偏移因子C(p,q)和区域原点O的位置信息;其中,α、β分别为Sink移动轨迹水平参量因子和垂直参量因子;p为水平偏移因子,q为垂直偏移因子,且
所述步骤203)中,移动Sink进行常规的数据采集:常规数据采是介于数据预采集和预告结束数据采集之间的数据采集过程。这个过程中,由Sink对Ts(i,k)进行不断地调整更新,均衡网络的能量消耗。一圈数据采集后,Sink根据所采集数据中的节点位置信息统计出各个象限所产生的数据占整个数据的比重PData1、PData2、PData3、PData4。由于节点部署的随机性、事件发生的不确定性等因素的影响,使得各个象限数据产生量有很大的随机性。CH间通过多跳的方式进行数据传输,故当象限i产生数据而Sink位于j象限,则CH必须经过多跳的传输才能到达Sink,为了减少这种因CH间转发带来的数据传输的能量消耗,根据历史数据对Ts(i,k)不断地调整,使网络中节点的能量消耗更加均匀以延长网络的使用寿命。
其中所述根据历史数据对Ts(i,k)不断地调整,具体步骤如下:
1)事件发生区域的传感器节点向所在簇的簇头报告监测区域的感知数据,簇头节点将来自簇内节点的数据包进行融合,得到一个头部包含两位的簇头象限信息的数据包,象限信息由簇头根据自己的位置信息loc(xi,yi)相对区域原点O位置信息计算获得,象限i∈{1、2、3、4},只进行数据包转发的簇头的象限信息不会被添加到数据包中,即数据包中只添加源节点所在簇的簇头的象限信息,其他簇头只负责将该数据包路由至移动Sink即可,簇头间通过多跳向移动Sink进行数据包路由,簇头间通过多跳方式向移动Sink进行数据路由时,采用逐跳确认机制来确保数据的接收率;
2)一轮Sink数据采集中,第k+1圈的驻留时间调整参考第k圈的数据量所占的总比重(k>=1)以及第k、k-1圈各个象限数据包产生量的变化程度Pchange(k,k-1)。Sink根据接收到的数据中的ID统计出来自四个象限的数据量所占整个数据的比重Pdata(1,k)、Pdata(2,k)、Pdata(3,k)、Pdata(4,k),当Pchange(k,k-1)超过阈值时,将对应象限的驻留时间调整为Ts(i,k+1)=4*Pdata(i,k)*Ts;
用Pchange(k,k-1)来代表相邻两圈之间各个象限数据所占整个网络比例的变化程度,当Pchange(k,k-1)超过一定阈值Th时,表示第K+1圈各个象限采集到的数据与上一圈相比,变动较大,此时,移动Sink向全网广播一个数据包,该包包含本圈的Sink在四个象限驻点上分别驻留时间Ts(i,k+1),如果Pchange(k,k-1)不大于阈值Th,Sink维持上一圈的驻留时间进行数据采集;
3)首次接收到该广播包时传感器节点缓存下Sink的驻留时间Ts(i,k+1);
4)Sink根据本圈的驻留时间Ts(i,k+1)继续进行数据采集;
所述步骤204)中,移动Sink进行通告结束数据采集。通告结束数据采集阶段,除了进行常规的数据采集外,Sink向全网广播一个本轮数据采集结束的广播包,进行广播的时间为这一圈的开始时刻,广播包包含:Sink还将在网络中的数据采集时间Tbl,收到该广播包的节点进行完本次数据传输后,将后续接收到的数据缓存不发给Sink,准备进行下一轮数据采集,并有
其中,Ts为一轮起始阶段的各象限驻点驻留时间,
且Sink在数据预采集时广播包中的Ts(i,k)均相等,即起始阶段Ts(1,1)=Ts(2,1)=Ts(3,1)=Ts(4,1)=Ts;
如图3所述为本发明中将移动Sink移动轨迹映射图。为了确定任意时刻移动Sink在网络中的位置,本发明中将移动Sink的轨迹映射为一线性模型,移动Sink的移动速度为V,两个驻点之间时间步长为Tstep,
将移动轨迹映射为一条直线。以一轮数据采集的起点作为参考点,t时刻CH距离a位置的长度d(t)。当前圈中Sink的移动时间为
根据计算所得Tp判断出移动Sink所在的象限信息,以及移动Sink距离数据采集起始点的距离d(t),可以确定移动Sink在网络中的位置;
1)如果 则
若 则
否则
2)如果 则
若 则
否则
3)如果 则
若
否则
4)如果
则
若 则
否则
如图4所示为本发明中簇头节点的工作流程图,完成时间同步后,CH依据最短路径原则选择下一跳CH,向Sink所在位置进行数据报告,即当CH产生待传输数据时,将所有邻居簇的CH节点中距离移动Sink最近的簇头选作自己的下一跳节点。当前CH根据自己的时钟判断Sink所处的网络位置,选择下一跳CH节点,进行数据包的路由。具体过程为:
400)簇头接收簇内节点的数据包并等待源自Sink的HELLO包
401)簇头节点转发HELLO包;
402)簇头检查是否有发送给Sink的数据包,如果有,则执行403);否则,继续执行402)
403)判断簇头与Sink当前位置间的距离是否小于r,如果是,则执行步骤404);否则执行步骤409);
404)判断当前时钟是否满足t0+k(Tstep+Ts(i,k))<t<t0+k(Tstep+Ts(i,k))+Ts(i,k),如果是,则执行405);否则,执行步骤408);
405)簇头向移动Sink转发数据包;
406)检查在T时间内,是否收到Next-Hop的ACK消息,如果是,则执行步骤414),否则,执行步骤407);
407)随机等待一段时间,转步骤403);
408)等待一段时间Tw1=t0+(k+1)*(Tstep+Ts(i,k))-t,转步骤403);
409)向下一跳簇头转发数据包;
410)检查在T时间内,是否收到Next-Hop的ACK消息,如果是,则执行步骤411),否则,执行步骤412);
411)删除本地缓存数据,转403);
412)判断当前簇头转发数据包的次数是否大于Re,如果是,则执行步骤414);否则,执行步骤413);
413)随机等待一段时间,转步骤411);
414)删除本地缓存数据;
本发明通过移动Sink在数据预采集阶段广播HELLO包,告知传感器节点网络参数和同步时间起始时间t0,使得节点和移动Sink间实现松散时间同步;传感器节点根据自己的时钟判断Sink当前的位置,并通过簇头节点间以多跳的方式,将数据按照最短路径路由至Sink,避免移动Sink不断广播自己位置信息,从而减少能量开销;当Sink在两个驻点之间进行移动时,传感器节点仍可以继续向目标位置路由数据,从而降低数据采集延时和节点内存溢出的状况;此外,通过统计历史数据信息并计算相邻两圈之间各个象限数据所占整个网络比例的变化程度Pchange不断调整Ts(i,k),均衡了节点间的能量消耗,使得整个无线传感器网络的使用寿命得到延长。
以上显示和描述了本发明的基本原理、主要特征和优点。本行业的技术人员应该了解,上述实施例不以任何形式限制本发明,凡采用等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围内。