发明名称 基于分层的移动多跳水声网络动态自定位方法
摘要 本发明提供了一种基于分层的移动多跳水声网络动态自定位方法,涉及水声通信与水声网络技术领域,将普通节点划分成若干层,并依据每层节点的特点,不同层次的节点采用不同自定位算法,普通节点通过与锚节点及其余邻节点进行通信而完成自定位,获得其位置信息,本发明由于采用分层定位机制,扩大了水声网络覆盖及探测范围,可解决多跳移动网络的自定位问题,将网络节点分层后,位于不同层次的节点采用不同的自定位方法,同时使用基于距离与不基于距离信息的自定位方法,保证定位精度的同时大大减小了移动网络自定位过程中的通信开销,更适用于水下环境中。
申请公布号 CN106488526A 申请公布日期 2017.03.08
申请号 CN201611194783.7 申请日期 2016.12.22
申请人 西北工业大学 发明人 申晓红;高婧洁;王海燕;董海涛;张梦娜;梅毫迪
分类号 H04W40/24(2009.01)I;H04W84/18(2009.01)I 主分类号 H04W40/24(2009.01)I
代理机构 西北工业大学专利中心 61204 代理人 金凤
主权项 一种基于分层的移动多跳水声网络动态自定位方法,其特征在于包括下述步骤:步骤1:将锚节点及普通节点布放于水下,并按照节点入水的先后顺序为每个锚节点和普通节点分配一个ID号,锚节点先入水,ID号从1开始,锚节点入水完毕后,普通节点开始入水,普通节点的ID号从锚节点的最后一个编号依次递增;步骤2:锚节点依据锚节点的ID次序依次发送hello分组,所述hello分组内包括该分组的类型、发送该hello分组的锚节点的ID、发送该hello分组的节点的类型、发送该hello分组的时刻和锚节点坐标信息;步骤3:ID为j的普通节点j在t<sub>j</sub>时刻收到三个及三个以上锚节点发送的hello分组,则普通节点j属于网络的第一层,否则该普通节点不属于网络第一层,进入步骤8判断其所在层数;步骤4:步骤3中位于第一层的普通节点j依据<img file="FDA0001187851280000011.GIF" wi="283" he="71" />计算t<sub>j</sub>时刻普通节点j与锚节点i之间的距离<img file="FDA0001187851280000012.GIF" wi="106" he="71" />其中T<sub>proc</sub>表示声信号在水声信道中的传播时延,T<sub>proc</sub>=(t<sub>i</sub>‑t<sub>j</sub>),t<sub>i</sub>,t<sub>j</sub>分别为锚节点的发送信息时刻与普通节点接收信息时刻,v<sub>s</sub>表示声波在水中的传播速度;步骤5:位于第一层的普通节点j依据接收到的所有锚节点在步骤2中发送的hello分组信息,根据式(1)计算出自身坐标作为位置初始值:<maths num="0001"><math><![CDATA[<mrow><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><msub><mi>x</mi><mn>1</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><mi>y</mi><mo>-</mo><msub><mi>y</mi><mn>1</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>=</mo><msup><msub><mi>d</mi><mn>1</mn></msub><mn>2</mn></msup></mrow></mtd></mtr><mtr><mtd><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><msub><mi>x</mi><mn>2</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><mi>y</mi><mo>-</mo><msub><mi>y</mi><mn>2</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>=</mo><msup><msub><mi>d</mi><mn>2</mn></msub><mn>2</mn></msup></mrow></mtd></mtr><mtr><mtd><mn>.....</mn></mtd></mtr><mtr><mtd><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><msub><mi>x</mi><mi>n</mi></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><mi>y</mi><mo>-</mo><msub><mi>y</mi><mi>n</mi></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>=</mo><msup><msub><mi>d</mi><mi>n</mi></msub><mn>2</mn></msup></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001187851280000013.GIF" wi="1326" he="311" /></maths>其中,(x,y)为t<sub>j</sub>时刻普通节点j坐标,(x<sub>1</sub>,y<sub>1</sub>),(x<sub>2</sub>,y<sub>2</sub>),...,(x<sub>n</sub>,y<sub>n</sub>)为普通节点j所有接收到hello分组信息的锚节点的坐标,d<sub>1</sub>,d<sub>2</sub>,...,d<sub>n</sub>分别为普通节点j到接收到hello分组信息的锚节点的距离,n表示所有普通节点j能接收到hello分组信息的锚节点的数量;步骤6:步骤5中计算出普通节点j的位置初始值,依据式(2)预测并更新下一时刻普通节点j运动的位置信息:<maths num="0002"><math><![CDATA[<mrow><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msubsup><mi>P</mi><msub><mi>t</mi><mi>j</mi></msub><mi>j</mi></msubsup><mo>=</mo><mfenced open = "(" close = ")"><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mi>T</mi></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><msubsup><mi>P</mi><mrow><msub><mi>t</mi><mi>j</mi></msub><mo>-</mo><mn>1</mn></mrow><mi>j</mi></msubsup><mo>-</mo><mo>+</mo><msubsup><mi>&omega;</mi><msub><mi>t</mi><mi>j</mi></msub><mi>j</mi></msubsup></mrow></mtd></mtr><mtr><mtd><mrow><msubsup><mi>D</mi><msub><mi>t</mi><mi>j</mi></msub><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msubsup><mo>=</mo><msubsup><mi>Z</mi><msub><mi>t</mi><mi>j</mi></msub><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msubsup><mo>+</mo><msubsup><mi>&delta;</mi><msub><mi>t</mi><mi>j</mi></msub><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msubsup></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001187851280000014.GIF" wi="1214" he="254" /></maths>其中,<img file="FDA0001187851280000021.GIF" wi="59" he="71" />为t<sub>j</sub>时刻普通节点j的位置坐标和速度,<img file="FDA0001187851280000022.GIF" wi="374" he="80" /><img file="FDA0001187851280000023.GIF" wi="123" he="79" />为t<sub>j</sub>时刻普通节点j坐标,<img file="FDA0001187851280000024.GIF" wi="45" he="71" />为t<sub>j</sub>时刻普通节点j的速度,<img file="FDA0001187851280000025.GIF" wi="78" he="71" />为(t<sub>j</sub>‑1)时刻普通节点j的位置坐标和速度,<img file="FDA0001187851280000026.GIF" wi="476" he="78" /><img file="FDA0001187851280000027.GIF" wi="176" he="78" />为t<sub>j</sub>‑1时刻普通节点j坐标,<img file="FDA0001187851280000028.GIF" wi="84" he="71" />为t<sub>j</sub>‑1时刻普通节点j的速度,T为普通节点j的运动状态观测周期,<img file="FDA0001187851280000029.GIF" wi="78" he="78" />为普通节点j与锚节点i之间距离的实际测量值,<img file="FDA00011878512800000210.GIF" wi="75" he="71" />为普通节点j与锚节点i间距离的真实准确值,<img file="FDA00011878512800000211.GIF" wi="59" he="71" />和<img file="FDA00011878512800000212.GIF" wi="70" he="71" />分别表示运动误差与距离测量误差,所有第一层普通节点根据式(2)计算得到第一层普通节点的坐标信息,并将第一层普通节点标注为网络的新锚节点;步骤7:步骤6中得到的新锚节点依据步骤1中标注的ID次序依次向网络发送hello分组,包括该hello分组的类型、新锚节点ID、新锚节点的类型、发送时刻和新锚节点坐标信息,所有还未计算出自身位置坐标的普通节点接收该信息并按照步骤8进行普通节点动态自定位;步骤8:普通节点接收入水时的原锚节点和步骤6中得到的新锚节点的hello分组,若普通节点k在任一t<sub>k</sub>时刻收到三个及三个以上锚节点发送的hello分组,则将普通节点k划分为网络的第二层,k表示普通节点的ID,否则该普通节点不属于网络第二层,进入步骤10划分其层数;步骤9:位于第二层的普通节点k依据接收到的原锚节点与新锚节点的坐标,依据式(1)计算初值,根据式(2)计算得到第二层普通节点k的运动速度,式(2)计算得到的<img file="FDA00011878512800000213.GIF" wi="54" he="71" />变量中选取速度v的最大值,以速度最大值为半径,以根据式(1)计算的每一个第二层普通节点k的坐标初值分别为圆心画圆,在圆内随机抽取样本,再根据抽取样本在下一时刻接收到的锚节点信息与普通节点本身通信距离,通信距离是指普通节点通信可以传输的距离,滤除掉随机抽取样本与下一时刻接收到的锚节点距离小于普通节点本身通信距离的样本数据,并将圆内滤除后的剩余样本求取坐标平均值得到第二层普通节点k的新节点运动位置,至此,每一个位于第二层的普通节点k完成自定位后升级为新锚节点<maths num="0003"><math><![CDATA[<mrow><mi>f</mi><mi>i</mi><mi>l</mi><mi>t</mi><mi>e</mi><mi>r</mi><mrow><mo>(</mo><mi>L</mi><mo>)</mo></mrow><mo>=</mo><mo>&ForAll;</mo><mi>s</mi><mo>&Element;</mo><mi>S</mi><mo>,</mo><mi>d</mi><mrow><mo>(</mo><mi>L</mi><mo>,</mo><mi>s</mi><mo>)</mo></mrow><mo>&le;</mo><mi>r</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA00011878512800000214.GIF" wi="1109" he="71" /></maths>L=(L<sup>1</sup>,L<sup>2</sup>,...,L<sup>N</sup>)为N个采样样本,s为节点k接收到的原锚节点与新锚节点的坐标信息,S表示原锚节点与新锚节点组成的集合,d(L,s)为采样样本与锚节点s的距离,r为已知的所有普通节点的通信距离;步骤10:重复步骤7至步骤9,锚节点发送hello消息分组,其余未知位置坐标的普通节点接收消息包,完成分层,计算所有未知位置坐标的普通节点的位置坐标,并进行升级为新锚节点,直至全网普通节点获得自身位置坐标为止。
地址 710072 陕西省西安市友谊西路127号