本发明涉及水声通信技术领域,具体是一种水下传感器的网络节点时间同步的方法。
背景技术:
近几年,随着对海洋环境研究的深入,水下传感器网络开始得到广泛的关注。水下传感器网络在海洋军事应用、海底矿产探测、渔业资源调研以及国家安全上起着关键作用。而时间同步是传感器网络协同工作的基础。在传感器网络中,各节点由于携带的晶体振荡器的限制,导致各个节点的本地时钟不统一。对时间敏感的应用,需要不同的节点提供事件发生的时间,例如:目标跟踪,在被追踪的目标运动时,能够被其周围的传感器节点感知并记录相对的方位信息,统一的时间能够保证传感器网络精确的获取运动目标的运动速度和方向。另外,数据融合、功率管理、节点定位、传输调度等功能也需要高精度时间同步。
与无线环境不同,水下声信号传播速度慢。水下节点移动性造成的路径传播时延的误差不能忽略,因此无线传感器节点的同步方法无法直接应用于水下传感器中。同时,水下信道的低带宽特性,也迫切要求降低传感器同步消息发送的次数和频度。
目前解决水下两个节点时间同步问题的方法包括tshl、mu-sync、mobi-sync、d-sync和da-sync等。但现有的同步方法大部分都忽略了节点的运动,不考虑传播时延的时变特性,导致时间同步精度较差。其中da-sync利用了信号的多普勒测量值进行速度的估计,但是实际应用中,信号多普勒测量需要额外的电路,且在水下多径的环境中很难适用。本专利给出的方法,可允许节点在移动的过程中进行高精度的时间同步。
技术实现要素:
本发明的目的在于提供一种能够应用于水下传感器,且允许节点在移动的过程中进行高精度的时间同步的水下传感器时间同步方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种水下传感器时间同步方法,包括以下步骤:
(1)设置卡尔曼滤波模型的初始参数p(0|0)以及状态初始值x(0);
(2)获取观测向量
当待同步节点j与参考点i第k轮数据包交互完成时,待同步节点获取{tj1(k),ti1(k),tj2(k),ti2(k)},并根据这些数值代入观测方程计算出y(k);
(3)估计时钟参数
包括以下步骤:
步骤1:首先选取前一轮即k-1轮数据包交互完所得到的待同步节点的最佳钟面时间作为当前系统变量的预测值,即:
其中,
步骤2:计算系统变量
p(k|k-1)=a(k-1)p(k-1|k-1)a(k-1)t+q(k)
其中,p(k-1|k-1)为第k-1轮数据包交换后的预测误差的后验估计,p(k|k-1)则为第k次系统观测量以及预测误差的后验估计;q(k)表示预测噪声方差;
步骤3:计算卡尔曼滤波增益k(k)
k(k)=p(k|k-1)ht(k)(h(k)p(k|k-1)ht(k)+r(k))-1
步骤4:更新系统状态方程
其中,i代表单位矩阵,
步骤5:更新滤波误差协方差方程
p(k|k)=[i-k(k)]p(k|k-1)
其中,p(k|k)为第k次时间同步交互后的预测误差的后验估计,即滤波误差协方差;
(4)时钟同步
根据步骤(3)计算出的βj(k),
其中,βj=βj(k),
(5)等待下一次信息交互,跳转至步骤(2)。
作为本发明进一步的方案:步骤4中的系统状态方程为
x(k)=a(k)x(k-1)+b(k)+ω(k)
其中状态转移矩阵a(k)为:
a(k)矩阵是根据这四个系统变量βj(k),
作为本发明进一步的方案:步骤(2)中同步节点j与参考点i第k轮数据包交互完成时,待同步节点获取{tj1(k),ti1(k),tj2(k),ti2(k)}的方法包括以下步骤:
一、在tj1(k)时刻,待同步节点j向参考节点i发送同步请求消息,该报文同时携带了节点j发送该数据包的钟面时间tj1(k);
二、参考节点i收到待同步节点j发送的同步请求消息,记录下收到数据包的钟面时刻ti1(k);等待一段时间后,在钟面时刻ti2(k)向待同步节点发送同步响应消息;该报文同时携带了钟面时刻ti1(k)与ti2(k);
三、最后,待同步节点j在钟面时刻tj2(k)接收响应消息并记录下收到数据包的时间戳tj2(k);待同步节点j通过解码响应包可以获取到ti1(k)与ti2(k);
四、依照步骤一、二、三进行第k次(k=1,2,…)同步消息交互完成后,待同步节点j可获取到k组钟面时间{tj1(1),ti1(1),tj2(1),ti2(1)},{tj1(2),ti1(2),tj2(2),ti2(2)},……{tj1(k),ti1(k),tj2(k),ti2(k)}。
作为本发明进一步的方案:步骤4中系统状态方程中的时钟频率偏移βj(l)和累计相位偏差
其中,
作为本发明进一步的方案:所述时钟频率偏移βj(l)和累计相位偏差
在设节点i为参考节点,节点j为待同步节点,设理想时钟为t,节点i的钟面时间为ti,节点j的钟面时间为tj,它们与理想时钟存在以下关系:
ti(t)=t
其中,βj(t)为缓慢变化的时钟频率;
对上式
将节点j的时变时钟偏斜建立为高斯-马尔可夫模型:
βj(l)=βj(l-1)+uj(l)
根据tj(l)和βj(l)的关系得到节点累计相位偏差
与现有技术相比,本发明的有益效果是:本发明能够应用于在水下场景中,待同步的传感器节点与基准传感器节点通过设计的机制交互一系列时间戳信息,并利用卡尔曼滤波,来实现传感器的时钟误差的估计,从而实现两传感器节点的时间同步。
本发明的有益效果是:相比于现有的mu-sync、mobi-sync、d-sync和da-sync等方法,本发明可以进一步提高传感器节点时间同步的精度。
附图说明
图1为水下传感器时间同步方法中的节点结构图。
图2为水下传感器时间同步方法中的两节点双向时间戳交互过程图。
具体实施方式
下面结合具体实施方式对本专利的技术方案作进一步详细地说明。
请参阅图1-2,一种水下传感器时间同步方法,待同步节点的时钟同步方法包括以下步骤:
(1)设置卡尔曼滤波模型的初始参数p(0|0)以及状态初始值x(0)。
在参数初始化时,可以参照实际工程经验中高斯噪声的均值和标准差,声音在水下的传播速度等。p(0|0)是初始化最优系统变量估计的协方差,若在测量值没有获取之前没有可以利用的x的信息,那么p(0|0)的对角线元素应当初始化为较大的值。如果在测量值之前就已经很好的获得了x的信息,那么p(0|0)也可初始化也可设为零。
x(0)的初始化应当充分考虑各个系统变量各自的特性,对于时钟频率偏移βj(0)可设置为1,因为初始时假设时钟频率没有偏斜;初始相位偏差
(2)获取观测向量
当待同步节点j与参考点i第k轮数据包交互完成时,待同步节点可获取{tj1(k),ti1(k),tj2(k),ti2(k)},并根据这些数值代入观测方程中计算出y(k)。
(3)时钟参数的估计
步骤1:首先选取前一轮即k-1轮数据包交互完所得到的待同步节点的最佳钟面时间作为当前系统变量的预测值,即:
其中,
步骤2:计算系统变量
p(k|k-1)=a(k-1)p(k-1|k-1)a(k-1)t+q(k)
其中,p(k-1|k-1)为第k-1轮数据包交换后的预测误差的后验估计,p(k|k-1)则为第k次系统观测量以及预测误差的后验估计。q(k)表示预测噪声方差。
步骤3:计算卡尔曼滤波增益k(k)
k(k)=p(k|k-1)ht(k)(h(k)p(k|k-1)ht(k)+r(k))-1
步骤4:更新系统状态方程
其中,i代表单位矩阵,
步骤5:更新滤波误差协方差方程
p(k|k)=[i-k(k)]p(k|k-1)
其中,p(k|k)为第k次时间同步交互后的预测误差的后验估计,即滤波误差协方差,至此便实现了第k次待同步节点数据包交换后时间同步的卡尔曼滤波的迭代过程。
(4)时钟同步
上一个步骤估计出了βj(k),
其中,βj=βj(k),
(5)等待下一次信息交互,跳转至(2)。
步骤4中的系统状态方程为
其中n为一次同步过程双向时间戳交换次数,βj(k),
假设第k次钟面时间交互距上一次交互的时间为τk,那么根据节点的钟面时间与运动模型,系统的状态方程可以写为:
x(k)=a(k)x(k-1)+b(k)+ω(k)
其中状态转移矩阵a(k)为:
a(k)矩阵是根据这四个系统变量βj(k),
步骤(2)中的观测方程
第k次时间戳交互,得到{tj1(k),ti1(k),tj2(k),ti2(k)},令观测变量
y(k)=h(k)x(k)+v(k)
其中,h(k)为观测矩阵,
v(k)为观测噪声,来源与比特编解码以及中断处理带来的不确定性,服从零均值的高斯分布,即v(k)~n(0,r(k)),r(k)表示观测噪声方差。这里c为水下声音传播速度。
步骤(2)中同步节点j与参考点i第k轮数据包交互完成时,待同步节点可获取{tj1(k),ti1(k),tj2(k),ti2(k)}的方法如下:
两节点双向时间戳交互过程如图2所示,待同步节点j按照一定的时间间隔发起一次同步消息交互,其中第k次(k=1,2,…)同步消息交互过程按照以下步骤进行:
一、在tj1(k)时刻,待同步节点j向参考节点i发送同步请求消息,该报文同时携带了节点j发送该数据包的钟面时间tj1(k)。
二、参考节点i收到待同步节点j发送的同步请求消息,记录下收到数据包的钟面时刻ti1(k)。等待一段时间后,在钟面时刻ti2(k)向待同步节点发送同步响应消息。该报文同时携带了钟面时刻ti1(k)与ti2(k)。
三、最后,待同步节点j在钟面时刻tj2(k)接收响应消息并记录下收到数据包的时间戳tj2(k)。待同步节点j通过解码响应包可以获取到ti1(k)与ti2(k)。
依照以上的步骤,第k次(k=1,2,…)同步消息交互完成后,待同步节点j可获取到k组钟面时间{tj1(1),ti1(1),tj2(1),ti2(1)},{tj1(2),ti1(2),tj2(2),ti2(2)},……{tj1(k),ti1(k),tj2(k),ti2(k)}。
本发明可利用对以上钟面时间数据,通过kalman滤波算法对时钟参量进行最优估计,从而实现高精度的时间同步。
步骤4中系统状态方程中的时钟频率偏移βj(l)和累计相位偏差
水下传感器两节点的钟面时间与运动模型
在设节点i为参考节点,节点j为待同步节点。设理想时钟为t,节点i的钟面时间为ti,节点j的钟面时间为tj。它们与理想时钟存在以下关系:
ti(t)=t
其中,βj(t)为缓慢变化的时钟频率;
对上式
将节点j的时变时钟偏斜建立为高斯-马尔可夫模型:
βj(l)=βj(l-1)+uj(l)
其中,
我们假设参考节点i是完全固定的节点即vi=0,而待同步节点j可能处于运动状态。以节点i的位置作为坐标原点,规定节点j的速度vj的正方向为远离节点i的方向。假设在两次双向交互过程中节点j速度不变,且速度误差为δv,则两次双向交互的速度关系可以表示为:vj(l)=vj(l-1)+δv。设两次双向交互时间间隔为τ0,由于假设匀速引入的距离误差为δd,可得两节点的相对距离为:dij(l)=dij(l-1)+τ0vj(l-1)+δd。
该时间同步算法应用在水下传感器网络节点上,可允许节点在移动的过程中进行高精度的时间同步。所述的水下传感器的通信系统通常由水听器、换能器、基带处理模块、接入控制模块等构成。基带处理模块将接入控制模块下发的数据通过调制,转换为适合于水下传播的信号,并送给换能器发送;同时基带处理模块不断收取水听器的信号,通过解调将成功解码的数据送给接入控制模块。接入控制模块负责通信过程的多址接入,以保障各节点有序地使用传输信道。本专利给出的时间同步算法通常工作于接入控制模块。
上面对本专利的较佳实施方式作了详细说明,但是本专利并不限于上述实施方式,在本领域的普通技术人员所具备的知识范围内,还可以在不脱离本专利宗旨的前提下作出各种变化。