本发明涉及一种水下传感器网络中基于auv位置预测的数据收集方法,属于无线传感器网络数据采集技术领域。
背景技术:
随着世界各国陆续将经济开发的目光转向海洋,水下传感器网络(uwsn,underwaterwirelesssensornetworks)已经成为了新的研究热点。水下传感器网络在海洋数据采集、污染监测、海洋勘探、灾难预警、辅助导航、战场监视和矿产探测等方面显现出重要作用。而数据采集是水下传感器网络的基本应用之一。人们通过在感兴趣环境中部署大量传感器节点,对各种兴趣数据进行采集,如温度、湿度、声音、图像、视频等,大数据量的采集,如图像、视频数据的采集,给数据采集方案的设计带来了一定的挑战。同时,水下的严酷环境,比如说数据传输率低,传播延时大,节点充电困难等导致陆地上已经发展成熟的路由协议,数据收集算法不适用与水下传感器网络。因此,如何在采集大量兴趣数据的同时,实现网络的能量消耗均衡、能量高效,延长网络使用寿命成为一个极具挑战数据采集设计问题。
目前,行业内对使用auv水下数据收集的相关研究也取得了一定的进展。seokhoonyoon等人在2012年的《sensors》上发表的文章“anauv-aidedunderwaterroutingprotocolforunderwateracousticsensornetworks”提出了一种使用auv辅助的水下传感器网络的路由协议。网络中有一个auv从网关节点处进行数据收集,有网关节点进行普通节点的数据收集。使用长距离低速率通信用于控制包通信,控制包通信用于选择网关节点。节点之间的通信使用中距离的通信。auv与sink之间的通信使用短距离的高速通信。普通节点根据邻居节点的剩余能量与距离网关的距离选择下一跳节点,节点数据发送到网关节点后网关进行数据聚合然后发送到sink节点。这种方法有效地减小了节点的能量消耗,但是auv巡游距离过长会导致延迟增大。
yuh-shyanchen等人在2013年的《ieeesensorsjournal》上发表的文章“mobicastroutingprotocolforunderwatersensornetworks”提出了一种使用auv进行数据收集的地理位置路由协议。auv按照某个轨迹巡游网络进行数据收集。在auv到达节点附近前,节点处于休眠状态,当auv到达某个区域时,会本区域内的节点会唤醒下个收集区域内的节点。这样有效地减少了节点的能耗,但是由于auv要巡游全网,网络的时延会比较长。
nadeemjavaid等人在2015年的《sensors》上发表的文章“anefficientdata-gatheringroutingprotocolforunderwaterwirelesssensornetworks”提出了一种使用auv辅助的节能的路由协议。auv按照预先定义的圆形轨迹在网络的中部巡游,auv在移动的同时会广播hello包,收到hello包的节点计算自己与auv的rssi,具有最大rssi的节点成为网关节点,其他节点根据自己与网关节点的rssi构建数据传输树,数据由其他节点传输到网关节点再由网关节点传输到auv。这种方式避免了多跳造成的高能量消耗,但是auv轨迹固定会造成热区问题。
jawaadullahkhan等人在2015年的《sensors》上发表的文章“adistributeddata-gatheringprotocolusingauvinunderwatersensornetworks”提出了一种使用auv辅助的分布式数据收集协议。该协议的网络模型是水下锚定网络,节点被锚定在某一个深度,auv在一个比节点浅的深度上巡游。首先使用泰森多边形法将网络分隔为多个簇,在每个区域内有一个簇头,簇头将本簇分为多个次级簇,然后在每个次级簇中选择一个路径节点pn,普通节点的数据会发送给路径节点。auv先与簇头通信,获得路径节点的信息,然后遍历路径节点收集数据。这种方式均衡了网络间的能量消耗,但是扩展性差。
mariamakbar等人在2016年的《sensors》上发表的文章“efficientdatagatheringin3dlinearunderwaterwirelesssensornetworksusingsinkmobility”提出了一种水下传感器网络中使用auv进行数据收集的方法。该方法将网络分成4个长方体,有一个长方体中使用auv进行数据收集,另外三个长方体中各有一个通讯节点(cn),其他节点将数据发送给本区域内cn,cn将数据发送给auv。本方法减小了节点的能量消耗,但是节点与auv的通信范围都是有限的,因此本方法不适用大规模的网络。
综上,目前水下传感器网络中数据收集普遍存在的问题是:
1.网关节点的选取需要与节点与auv进行控制包的交换,通信带来了较大的能量开销。
2.auv轨迹固定造成了轨迹附近节点能量消耗较快,会造成热区问题,影响网络的性能。
3.auv巡游路径过长,造成网络的端到端时延较大。
技术实现要素:
本发明所要解决的技术问题是克服现有技术的缺陷,提供一种水下传感器网络中基于auv位置预测的数据收集方法。通过让auv按照预定的轨迹在网络中运行,使得节点可以通过预测auv的位置计算是否在auv的收集区域之内,然后选择合适的数据转发方式减小了网络的能量消耗。
为解决上述技术问题,本发明提供一种水下传感器网络中基于auv位置预测的数据收集方法,包括以下步骤:
1)构建水下传感器网络模型,所述水下传感器网络模型是一个l·w·h的三维区域,网络中包括一个sink节点,一个auv以及多个传感器节点,sink节点位于表层的中心位置,auv按照预定的螺旋轨迹在网络中运行,传感器节点可根据定位算法得到自己的位置,节点知道网络的参数;在网络的三维区域内,以sink节点为原点,x轴正方向水平向右,z轴正方向垂直向下建立三维柱坐标系;
2)进行网络初始化,具体为,sink节点将auv的移动参数对全网进行广播,直接收到sink节点数据的节点将自己标记为直接送达节点,直接送达节点的数据将直接转发给sink节点,节点在收到auv的移动参数之后通过auv的移动参数计算自己在当前沉浮周期内是否在auv的收集区域内,在auv收集区域内的节点称为网关节点,然后节点广播一个控制包;
3)构建邻居表,在节点需要发送信息的时候根据邻居表贪婪地选择下一跳的邻居节点,在节点收到邻居节点广播的控制包以后,将邻居节点id,邻居节点坐标记录在邻居表中,如果节点的能量下降到一定的阈值,则告知邻居节点在邻居表中将它删除;
4)进行数据转发,当节点有数据需要发送时,节点先检查自己是否为直接送达节点,如果是,则直接将数据转发给sink节点;如果节点不是直接送达节点,则检查节点是否为网关节点,如果节点是网关节点,则等待auv到达本节点的安全距离之内后将数据发送给auv;如果节点既不是直接送达节点,又不是网关节点,则计算auv到达本深度时auv所处的位置,在邻居表中选择一个距这个位置最近的节点作为下一跳邻居节点,然后将数据发送到该邻居节点;邻居节点在收到数据后继续执行数据转发工作;
5)调整auv轨迹,在上浮到水面后,auv移动一个固定的相位,由于auv的移动参数中包括了auv轨迹调整的时间,因此节点根据当前时间可计算出沉浮周期开始的时间,沉浮周期结束的时间,相位调整结束的时间。
前述的步骤1)中,网络的参数包括:auv圆周运动的角速度ω,auv圆周运动的径长ρ,auv圆周运动的初始相位
前述的步骤2)中,auv的移动参数包括:auv圆周运动的角速度ω,auv圆周运动的径长ρ,auv圆周运动的初始相位
前述的步骤2)中,节点广播的控制包的内容包括auv的移动参数,节点id,节点坐标。
前述的步骤2)中,节点计算自己在当前沉浮周期内是否在auv的收集区域内的方法为:
首先,计算当前沉浮周期auv的坐标,auv在当前沉浮周期中的坐标为
通过
其次,计算安全距离d,计算式为:
其中,r为节点与auv的通信半径,tsafe为安全时间;
最后,计算auv与节点距离为d,
假设节点坐标为(r,θ,z),
如果auv下潜,则auv与节点距离为d的计算式为:
ld对t求导可得:
令
如果auv上浮,则auv与节点距离为d的计算式为:
ld对t求导可得:
令
前述的步骤3)中,贪婪地选择下一跳的邻居节点的方法是,遍历邻居表中的所有节点,计算邻居节点与上一步中计算出来的auv的位置的距离,假设邻居节点的坐标为(rn,θn,hn),则节点与auv的距离dn为:
其中,h为auv的深度;
然后将邻居节点按照ln排序,选择dn最小的节点作为下一跳邻居节点。
前述的步骤4)中,计算auv到达本深度时auv所处的位置的方法是:
假设节点的深度为h,则auv到达本深度的时间th为:
则auv到达本深度时所处的位置为
前述的步骤5)中,在auv开始轨迹调整时,正在发送数据的节点继续发送数据,直到数据发送完成,接收节点暂时缓存数据,等待auv轨迹调整完成后重启数据转发过程;有数据需要发送还没有发送的节点不启动发送过程,而是等待auv轨迹调整完成后重启数据转发过程。
本发明所达到的有益效果为:
本发明使用预定轨迹的auv收集网络中的数据,减小了控制包的数目,减少了数据转发的跳数,降低了网络的能量消耗,延长了网络的生存时间。
本发明支持auv巡游网络进行数据收集,降低了节点的能量消耗,auv在巡游网络的时候不需要广播控制包,降低了通信开销。
附图说明
图1是本发明的水下传感器网络模型示意图;
图2是安全距离的计算图示;
图3是sink节点的工作流程图;
图4是除sink节点与auv以外的其他节点的工作流程图;
图5是非网关节点数据转发的示意图。
具体实施方式
下面对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
本发明的水下传感器网络中基于auv位置预测的数据收集方法,首先,构建水下传感器网络模型,如图1所示,网络模型是一个l·w·h的三维区域,网络中包括一个sink节点,一个auv以及多个传感器节点,sink节点位于表层的中心位置,auv按照预定的螺旋轨迹在网络中运行,这个螺旋轨迹可以分解成水平方向上的圆周运动与垂直方向的匀速直线运动,传感器节点可以根据定位算法得到自己的位置,因此可以假设节点坐标已知。节点知道网络的参数(l,m,h)。在网络的三维区域内,以sink节点为原点,x轴正方向水平向右,z轴正方向垂直向下建立三维柱坐标系。网络参数包括:auv圆周运动的角速度ω,auv圆周运动的径长ρ(即auv柱坐标的极径),auv圆周运动的初始相位
在每一个沉浮周期结束后,节点计算下一沉浮周期的初始相位
在本发明中只讨论一个沉浮周期的网络情况,其他沉浮周期同理。另外,需要选择合适的参数使得auv到达底部时的相位与初始相位一致,这样可以使得auv在一个沉浮周期以后回到初始点。根据这个约束,可以求得
本发明的数据收集方法,具体包括:网络初始化阶段,邻居表构建阶段,数据转发阶段与auv轨迹调整阶段。
网络初始化阶段具体为:网络初始化阶段的目的是将auv的移动参数进行全网通知。sink节点将auv的移动参数对全网进行广播,auv的移动参数包括:auv圆周运动的角速度ω,auv圆周运动的径长ρ(即auv柱坐标的极径),auv圆周运动的初始相位
该阶段,节点计算自己在当前沉浮周期内是否在auv的收集区域内的方法为,首先计算当前沉浮周期auv的坐标,auv在当前沉浮周期中的坐标为
通过
然后,节点根据当前沉浮周期auv的坐标(这个坐标实际上是关于时间t的参数方程)计算自己是否在auv的收集区域内。计算方法为:
首先需要计算安全距离d,图2位安全距离的计算图示,假设auv以直线运动,直线运动的速度为ω·ρ。考虑最坏的情况,即auv与节点距离小于等于通信半径r的时间正好是安全时间tsafe的情况。节点与auv距离第一次等于r和第二次等于r之间的距离就是auv与节点距离小于等于r的在安全时间内走过的距离,这个距离等于ω·ρ·tsafe。根据勾股定理,安全距离d为:
节点计算自己是否在auv的收集区域内的方法是,在auv下潜的情况下,auv的坐标为
ld对t求导可得:
令
在auv上浮的情况下,auv的坐标为
ld对t求导可得:
邻居表构建阶段主要是为了保存邻居节点的信息,在节点需要发送信息的时候根据邻居表贪婪地选择下一跳的邻居节点。在节点收到邻居节点广播的控制包以后,将邻居节点id,邻居节点坐标记录在邻居表中。如果节点的能量下降到一定的阈值,则告知邻居节点在邻居表中将它删除。
邻居表构建阶段,贪婪选择下一跳邻居节点的方法是,遍历邻居表中的所有节点,计算邻居节点与上一步中计算出来的auv的位置的距离,假设邻居节点的坐标为(rn,θn,hn),则节点与auv的距离dn为:
数据转发阶段主要是数据的转发。当节点有数据需要发送时,节点先检查自己是否为直接送达节点,如果是,则直接将数据转发给sink节点。如果节点不是直接送达节点,则检查节点是否为网关节点,如果节点是网关节点,则等待auv到达本节点的安全距离之内后将数据发送给auv。如果节点既不是直接送达节点,又不是网关节点,则计算auv到达本深度时auv所处的位置,在邻居表中选择一个距这个位置最近的节点作为下一跳邻居节点,然后将数据发送到该邻居节点。邻居节点在收到数据后按上述过程重新执行数据转发工作。
数据转发阶段,计算auv到达本深度时所处的位置的方法是:
假设节点的深度为h,则auv到达本深度的时间th为:
auv轨迹调整阶段是在auv完成一个沉浮周期后移动一个相位的过程。轨迹调整的目的是防止auv轨迹固定带来的热区问题。在上浮到水面后,auv移动一个固定的相位。由于auv的移动参数中包括了auv轨迹调整的时间,因此节点根据当前时间可以计算出沉浮周期开始的时间,沉浮周期结束的时间,相位调整结束的时间。在auv开始轨迹调整时,正在发送数据的节点继续发送数据,直到数据发送完成,接收节点暂时缓存数据,等待auv轨迹调整完成后重启数据转发过程。有数据需要发送还没有发送的节点不启动发送过程,而是等待auv轨迹调整完成后重启数据转发过程。
图3为sink节点的工作流程图,具体包括以下步骤:
301)广播auv的移动参数,auv的移动参数包括:auv圆周运动的角速度ω,auv圆周运动的径长ρ(即auv柱坐标的极径),auv圆周运动的初始相位
302)接收来自auv与直接送达节点的数据。
303)如果网络生命周期没有结束,则继续执行302),否则结束。
图4是除sink节点与auv以外的其他节点的工作流程图,具体包括以下步骤:
401)节点接收到auv的移动参数后,判断是来自sink节点还是普通节点。如果是sink节点,执行402),否则执行403);
402)将自己标记为直接送达节点;
403)广播auv的移动参数,节点id,节点坐标,构建邻居表;
404)接收数据,转发数据;
405)如果节点为直接送达节点,则执行406),否则执行407)。
406)直接将数据发送到sink,执行410)。
407)判断自己是否为网关节点(即节点是否在auv的收集区域内),如果是,执行408),否则执行409);
408)等待auv到达本节点的安全距离之内后将数据发送给auv,执行410);
409)选择最优邻居节点作为下一跳数据转发节点;
410)如果网络生命周期结束,则结束,否则执行404)。
节点在接收到数据以后,会执行405)之后的工作,直到数据到达sink节点或者auv。
图5是非网关节点数据转发的示意图。当非网关节点有数据需要发送时,节点首先计算auv到达本深度的位置,计算auv到达本深度的位置的方法是,假设节点的深度为h,则auv到达本深度的时间th为:
本发明使用预定轨迹的auv收集网络中的数据,减小了控制包的数目,减少了数据转发的跳数,降低了网络的能量消耗,延长了网络的生存时间。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。