[发明专利]一种多节点协作无人机自组网分簇拓扑重构方法有效
申请号: | 202110273557.2 | 申请日: | 2021-03-06 |
公开(公告)号: | CN113271643B | 公开(公告)日: | 2023-05-09 |
发明(设计)人: | 雷磊;王睿;范兼睿;王玉;赵楠;蔡圣所;张莉涓 | 申请(专利权)人: | 南京航空航天大学 |
主分类号: | H04W40/10 | 分类号: | H04W40/10;H04W40/12;H04W40/24;H04W40/32 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 210016*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 节点 协作 无人机 组网 拓扑 方法 | ||
1.一种多节点协作无人机自组网分簇拓扑重构方法,所采用的步骤是:
步骤1:采用最小ID号分簇方法进行快速分簇,分簇完成后簇首增大发射功率与邻居簇首进行通信并交换彼此信息;所述采用最小ID号分簇方法进行快速分簇,具体包括:
为防止冲突,节点首先随机退避一段时间,随后发送簇首竞选帧;发送完毕后,节点将簇首竞选帧中的发送节点ID号设为自身当前簇首,并设置定时器等待WF_CLUSTER时间,等待该段时间是考虑到网络中有ID号更小的节点存在且竞选簇首的情况;如果该定时器超时,则说明该节点的一跳邻居范围内没有ID号更小的节点了,则该节点成功竞选成为簇首,退避一段时间后向周围所有节点发送簇首广播帧,告知其他节点自身的位置和速度信息;
若该节点在之前收到了其他节点广播的簇首竞选帧,则会比较收到的簇首竞选帧中的节点ID号与自身ID号的大小,如果接收到的簇首竞选帧中的ID号更小,则将该簇首竞选帧的发送节点设为自身的簇首,重新设置定时器等待WF_CLUSTER时间,进入同样的等待过程,当定时器超时后,节点加入以该节点为簇首的簇;
同样的,对于在退避阶段准备发送簇首竞选帧的节点,如果在退避完成之前就收到了其他节点广播的簇首竞选帧,首先会挂起自身的定时器,随后判断帧头部字段中的节点ID号是否比自身要小,如果更小,则取消定时器,并将该簇首竞选帧发送节点设置为簇首,设置定时器等待WF_CLUSTER时间;如果自身的节点ID号更小,则会忽略该簇首竞选帧,继续进行退避参与竞选簇首;
在初始化阶段采用最小ID号分簇方法完成初步分簇之后,簇首周期性向簇内节点发送簇首广播帧,簇首广播帧内携带发送节点号、帧类型、簇首位置与速度信息;簇首与簇内节点的运动方法采用领航者一跟随者法,簇首以区域中的目的地点为目标,受到来自目的地点的导航力的作用而移动,簇内节点在建簇完成后,从收到的簇首广播帧中获得簇首的速度矢量,将自身的速度大小、方向保持与簇首一致,一起向目标位置移动并执行任务;
步骤2:根据运动的无人机自组网中节点的速度相似度、节点间平均距离、平均链路维持时间、无人机节点剩余能量计算每个无人机节点的权值,进行簇的维护,具体方法为:
在初始化分簇完成后,随着网络的运行与信息的交换,网络中的节点将会了解自身与邻居节点的距离、邻居节点的速度、方向信息;在后续的分簇维护过程中,将利用加权分簇的思想,综合考虑节点的速度相似度与邻居节点的平均距离、平均通信链路维持时间、节点的剩余能量,对每个节点计算自身的权值Wi:
其中WV,WD,WT,WP分别为节点速度相似度、与邻居节点的平均距离、平均通信链路维持时间、节点剩余能量的权值系数,且满足WV+WD+WT+WP=1,具体大小根据实际情况进行取值;Vi为节点的速度相似度,Di为与邻居节点平均距离的度,Ti为平均通信链路维持时间,Pi为节点的剩余能量;接下来对公式(1)中的节点速度相似度、与邻居节点的平均距离、平均通信链路维持时间进行理论推导;
对于节点i的速度相似度Vi,设节点i与邻居节点j的速度标量分别为vi与vj,vi和vj与水平轴的夹角分别为θi与θj,则节点i与节点j在水平轴,即x轴上的速度分量差为:
vijx=vicosθi-vjcosθj (2)
节点i与节点j在纵轴,即y轴上的速度分量差为:
vijy=visinθi-vjsinθj (3)
假设节点i有N个邻居节点,则节点i与周围邻居节点在x轴上的平均速度差为:
节点i与周围邻居节点在y轴上的平均速度差为:
则节点i与周围邻居节点的平均速度差为:
根据上述平均速度差,可以分别求出节点i与周围邻居节点在x轴与y轴上平均速度差的方差与标准差;节点i与周围邻居节点在x轴上的平均速度差的标准差为:
节点i与周围邻居节点在y轴上的平均速度差的标准差为:
根据所求的节点i与周围邻居节点的平均速度差的标准差,将节点i与周围邻居节点的速度相似度Vi定义为:
其中σi表示为节点i与周围邻居节点在x轴与y轴方向速度差的方差的平均值的开方,即:
对于节点i与邻居节点平均距离的度Di,可以求出节点i与周围邻居节点的平均距离为:
其中,dij为节点i与邻居节点j的距离;
根据节点i与周围邻居节点的平均距离可求得距离的标准差,即:
根据节点i与周围邻居节点的平均距离及距离的标准差,将节点i与邻居节点平均距离的度Di定义为:
接下来求节点i与周围邻居节点的平均链路通信维持时间;先求单条链路通信维持时间,节点i与其一邻居节点j,设节点i所在位置为I(xi,yi,zi),节点j所在位置为J(xj,yj,zj),节点i的通信半径为R,节点j与节点i的相对速度为vji,vji的大小可由公式(2)与(3)求得,即:
则节点i与节点j的链路生存时间可以表示为:
其中,k为斜率,且k=vjiy/vjix,vjiy=-vijy,vjix=-vijx;
根据所求的Tij即可求出节点i与周围邻居节点的平均通信链路生存时间为:
将所求的值Vi、Di、Ti和Pi代入公式(1),每个节点即可计算出自身的权值Wi;在后续簇维护过程中,簇首会收集簇内成员节点的权值,每一个簇首选举周期如果簇首没有失效,则会周期性地按照权值大小更新簇首,以保持簇的稳定性;如果簇首失效,则簇内节点会设定退避计时器进行退避,退避完成后首先发送一次入簇请求帧,随后设置定时器等待WF_CLUSTER_RTJ时间,如果定时器超时,则表明节点一跳范围内没有簇首,节点开始竞选簇首;
为提高网络覆盖率,在分簇完成后,竞选成为簇首的节点在发送数据帧时会增大发射功率,增大发射功率的值根据网络拓扑需要设定,簇内成员节点依旧采用默认发射功率;
步骤3:采用基于邻域内邻接矩阵的网络中关键节点判断方法,分布式地判断网络中是否有关键节点失效,具体方法为:
设节点i的邻居节点集合Nmax(i)={n1,n2,...,nj|d(i,nj)<r(i),1≤i≤M,1≤j≤N};其中M表示网络总节点数,N表示节点i的邻居节点数,nj表示第j个邻居节点,d(i,nj)表示节点i与邻居节点nj的距离,r(i)表示节点i的通信半径;设节点i的一个邻域节点为u,建立集合X(u)=Φ,遍历Nmax(i)中除i与u之外的节点nj,将aui=1,即节点u与节点i可达时对应的节点nj加入集合X(u);随后对X(u)进行判断,如果X(u)为空集,即说明节点u与节点i的其他邻居节点都不连通,如果节点v失效,会造成网络的分割;随后按照此流程对集合Nmax(i)中的其他节点做如上的操作,判断节点i是否为关键节点;按照上述流程,即可以求出节点i的邻域内邻接矩阵,若邻域内接矩阵中有一行全为0,则节点i是关键节点;
根据图论的思想,网络中的簇首即可以根据两跳邻居节点信息结合有向图与邻域内邻接矩阵分布式地判断出自身是否为关键节点;具体步骤如下:
网络中的簇首周期性地发送簇首广播帧,簇首广播帧中携带节点位置、速度、邻居节点信息;
一跳范围内的其它节点接收到该簇首广播帧后,首先判断自身是否为簇内成员节点或者其它簇首,若满足条件则接收该簇首广播帧;簇内成员节点更新簇首有效时间与位置、速度信息,随后丢弃该簇首广播帧以释放内存空间;接收该簇首广播帧的其它簇首根据该簇首广播帧中节点携带的邻居节点表与关键节点判断位信息更新自身的邻接矩阵,并将该节点信息存入自身维护的邻居节点数据表中,当节点更新邻接矩阵与信息完毕后,同样会丢弃掉该簇首广播帧;
随后,在接收簇首自身发送簇首广播帧时,会启动关键节点判断流程,如果邻域内邻接矩阵中存在有一行全为0的情况,即说明该节点为关键节点,将簇首广播帧头部的关键节点标志位信息置为1,随后向周围邻居簇首进行广播;全网簇首都按照这样的流程不断更新周围簇首与自身的信息,从而可以实现分布式的全网关键簇首判断;
若失效的簇首范围内还有其他在该簇首失效前维护的簇内成员节点,则簇内成员也会通过簇首失效检测机制检测到簇首失效;簇内成员的簇首失效检测机制具体包括:
簇内成员节点在每一次接收到簇首广播帧后会根据接收时间设定一个定时器,定时器超时的时间为当前时间加上簇首失效检测时间间隔,当定时器超时即可判定簇首已经失效,随后根据失效簇首信息与所计算的权值进行新簇首的选举与调整;如果在该定时器超时前收到了新的簇首广播帧,则表明簇首依然有效,节点更新本地维护的簇首信息,并取消之前的定时器,设置新的定时器,继续等待下一个簇首广播帧;
步骤4:在分簇方法与关键节点判断方法的基础上,针对网络遭受敌方攻击而出现拓扑损坏的问题,采用两阶段拓扑修复策略进行拓扑修复,具体方法为:
如果失效簇首范围内存在原簇内成员,则簇内成员节点会通过簇首失效检测机制发现该簇首失效,随后通过所述快速分簇的方法产生一个新的簇首,完成拓扑修复,竞选成功的簇首会广播簇首修复告知帧,告知周围的簇首原簇首失效的情况已被修复,并且根据原簇首的位置与速度信息进行位置的调整;周围簇首收到该簇首修复告知帧后即知道原失效节点被修复,不会启动第二阶段拓扑修复过程;
当簇内节点检测到簇首失效后会启动簇内修复流程,进入二次竞选簇首阶段,选举出一个权值最小的节点作为新的簇首,完成拓扑的修复;节点首先设置定时器,随机退避一段时间,如果定时器超时,即顺利完成退避,则节点将自身计算的权值添加到帧头部,广播簇首竞选帧,发送完毕后,节点将自身节点ID号设为当前簇首,随后设置定时器等待WF_CLUSTER时间,如果在定时器超时前未收到其它簇首竞选帧,则节点判定自身竞选簇首成功,随后计算原簇首未失效情况下当前时刻的位置,并进行调整;如果节点在退避完成前收到了其它节点的簇首竞选帧,则会首先查看该簇首竞选帧中携带的权值数值,并与自身进行比较,如果该簇首竞选帧中权值比自身要大,则节点将该簇首竞选帧中携带的源节点地址设为自身的簇首地址,重新设置定时器等待WF_CLUSTER时间;否则节点将判断权值是否相等,如果权值相等,则进一步比较节点ID号,如果收到的簇首竞选帧中的ID号更小,则将簇首竞选帧中的源节点地址设置为自身的簇首地址,重新设置定时器等待WF_CLUSTER时间,相反,如果自身的ID号更小,则继续进行退避;如果权值不相等,则显然只有自身权值更大这一种情况,节点会丢弃该簇首竞选帧,继续进行退避;如果经历了这一阶段后节点将簇首更改为收到的簇首竞选帧中的源节点并进入等待WF_CLUSTER状态,则如果定时器超时则重新分簇成功,簇首为新收到的簇首竞选帧中的源节点;如果在定时器超时前又收到了新的簇首竞选帧,则重新对簇首竞选帧中的权值进行判断,如果簇首竞选帧中的权值大于当前节点维护的簇首的权值,则节点将该簇首竞选帧的源节点更新为簇首,重新设置定时器等待WF_CLUSTER时间;否则按照上述流程,如果权值相等但自身节点号更小或者权值不相等即自身权值更大,则丢弃收到的簇首竞选帧,继续等待之前的定时器超时完成分簇;否则就将该簇首竞选帧的源节点更新为簇首,重新设置定时器等待WF_CLUSTER时间,在定时器超时前未收到新的簇首竞选帧则判定自身入簇成功;
当新的簇首产生后,会广播簇首修复告知帧,告知周围的簇首原失效簇已被修复,同时簇首会根据失效簇首的位置与速度信息进行位置的调整;
周围簇首在原簇首失效后会设置定时器等待WF_FirstStage_Reconstruction时间,如果该定时器超时前收到该失效簇首的簇首修复告知帧,则更新新的簇首信息后丢弃该帧;如果该定时器超时且并没有收到簇首修复告知帧,即表明关键簇整体失效,启动第二阶段拓扑修复流程,即簇间移动控制拓扑修复方案;
当簇首检测到邻居簇首失效,并且在WF_FirstStage_Reconstruction时间后仍未收到新簇首修复告知帧,则首先统计失效簇首的邻居簇首数量,随后根据失效簇首邻居节点数量与自身簇内成员数量计算协作修复概率,根据该概率发送拓扑修复请求帧,请求簇内成员节点进行拓扑修复;簇内成员节点收到该拓扑修复请求帧后,会随机退避一段时间并向簇首回复修复应答帧,在修复应答帧中包括了成员节点当前的位置信息;簇首根据簇内成员节点的位置信息与剩余能量综合选择一个节点进行拓扑修复,并向该节点回复修复确认帧,该节点收到后即知道自身将承担修复任务,随机开始拓扑修复进程;
簇内节点接收到应答确认帧,得知自身被选择参与失效关键簇首修复,即进入簇内成员节点移动修复过程;对于修复节点来说,首先需要确定失效簇首的位置,即如果关键簇首未失效时应运动到的位置,修复节点可以从修复请求帧中获取失效关键簇首失效前的位置,用历史位置来推测当前位置,也可以通过关键簇首失效前的速度、方向信息对当前时刻的预期位置进行计算,为了获得较为准确的失效关键簇首位置,修复节点采用卡尔曼滤波法对这两种估计结果进行加权计算随后在虚拟力作用下向确定位置进行移动;
当修复节点获得较为准确的失效关键簇首位置之后,便会在虚拟力的作用下向着该位置移动,假设目的地点位置坐标为D(xd,yd,zd),修复节点i坐标为I(xi,yi,zi),则修复节点受到的吸引力可表示为:
其中Ma为常数,表示吸引力系数,的方向与节点i到目的位置的方向相同,且大小与节点i和目的位置之间的距离正相关;在修复节点向目的位置移动的过程中,还可能因为与周围节点距离过近而受到排斥力,设某一时刻节点i的邻居节点的个数为N,假设其中一个邻居节点为j,坐标为J(xj,yj,zj),则节点i受到节点j的排斥力为:
其中Mr为常数,表示排斥力系数,dsense表示无人机与障碍物之间的检测距离,的方向与节点i到邻居节点的方向相反,且大小与节点i到邻居节点之间的距离正相关;结合修复无人机受到的来自障碍物与边界的排斥力,无人机i受到的合力可以表示为:
其中O为无人机节点i附近的障碍物与边界的集合;在按照上述流程计算出合力后,进一步判断计算值是否为0,若为0则对节点施加随机扰动让节点跳出当前状态;若计算出的值不为0,则继续比较当前矢量方向与之前的方向是否相反,若相反,则修复节点会出现往复移动的情况,同样需要施加一次随机扰动力;若不相反,则节点按照合力的方向进行移动,直至移动到待修复范围内,完成拓扑修复任务;综上,修复节点受到的合力可表示为:
修复节点的运动方程可表示为:
其中Pi(t)表示t时刻节点坐标,Pi(t+Δt)表示t+Δt时刻节点坐标,表示当前时刻前进方向;
当修复节点到达修复位置后,为了防止有其它节点已经提前到达修复位置并且建簇成功,会首先广播一次入簇请求帧,随后设置定时器等待WF_Cluster_RTJ时间,定时器超时后即表明修复节点邻居范围内没有已存在的簇,随后进入竞选簇首流程,广播一次簇首竞选帧并设置定时器等待WF_Cluster时间,定时器超时后即表明建簇成功,发送簇首广播帧告知周围邻居簇首,拓扑修复完成;如果修复节点在定时器超时前收到了其它簇首回复的入簇应答帧,则表明已经有其它簇派出的修复节点到达了失效簇首位置,并且成功建簇,修复节点加入该簇,成为簇内成员节点;
随后,簇内成员节点之间采取基于虚拟力导向的控制方法自主地实现局部拓扑的优化,节点受到来自簇内其它成员节点之间的吸引力与排斥力、与障碍物和边界之间的避障力、与新簇首之间的吸引力;修复节点i所受的合力可以表示为:
其中N表示节点i的邻居节总个数,O表示障碍物指示位置与边界的集合,表示节点受到簇首的吸引力;节点可由公式(22)计算出自身受力大小与方向,从而可以实现动态的分布式的拓扑优化;簇内成员节点在该虚拟力的作用下进入平衡状态后,根据簇首广播帧中的速度信息调整自身的速度,与簇首保持一致,继续向目标位置移动。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京航空航天大学,未经南京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110273557.2/1.html,转载请声明来源钻瓜专利网。