一种自适应处理网络延时抖动的数据同步方法及装置转让专利
申请号 : CN202110602032.9
文献号 : CN113364846B
文献日 : 2022-07-08
发明人 : 高健健 , 华炜 , 李融 , 谢天
申请人 : 之江实验室
摘要 :
权利要求 :
1.一种自适应处理网络延时抖动的数据同步方法,其特征在于包括如下步骤:
S1,服务器S向客户端C发送数据包SP,所述数据包SP包括状态数据e和发送时的服务器时间st;
客户端C将收到的数据包SP存储到数据帧CP中,并设定客户端的初始主动延时时间tdelay;
S2,客户端C维护双向队列DQ,用于存储从服务器S接收到的数据,双向队列DQ的最大长度为m,m>=2;对于接收到的第i个数据包SPi,其中i∈{0,1,...},包括如下步骤:S21,如果i=0,将当前的客户端时间保存到ct0中;
S22,计算服务器时间差dsti=sti‑st0,将dsti和数据包SPi中的状态数据ei存储到数据帧CPi中;
S23,将数据帧CPi塞入双向队列DQ的尾部;如果双向队列DQ的当前长度大于m,则弹出双向队列DQ的头部元素;
S3,客户端C查询当前的客户端时间为cttick,计算当前的客户端时间差dct=cttick‑ct0‑tdelay,在双向队列DQ中查找索引位置j,满足条件dstj
1},根据查找索引j的情况,执行如下处理:
S31,如果找到满足条件的索引位置j,则根据索引位置j,通过插值方法,调整当前的客户端时间cttick对应的状态数据etick;
S32,如果找不到满足条件的索引j,并且dct
S33,如果找不到符合条件的索引j,并且dct>dstm‑1,则通过插值方法,调整当前的客户端时间cttick对应的状态数据etick。
2.根据权利要求1所述的一种自适应处理网络延时抖动的数据同步方法,其特征在于所述S31中,根据索引位置j,计算线性插值系数a=(dct‑dstj)/(dstj+1‑dstj),得到cttick时刻对应的状态数据etick=ej*(1‑a)+ej+1*a。
3.根据权利要求1所述的一种自适应处理网络延时抖动的数据同步方法,其特征在于所述S32中,调整tdelay=tdelay‑(dct‑dst0)。
4.根据权利要求1所述的一种自适应处理网络延时抖动的数据同步方法,其特征在于所述S32中,调整cttick时刻对应的状态数据etick,计算线性插值系数a=(dct–dst0)/(dst1‑dst0),得到当前的客户端时间cttick对应的状态数据etick=e0*(1‑a)+e1*a。
5.根据权利要求1所述的一种自适应处理网络延时抖动的数据同步方法,其特征在于所述S33中,调整当前的客户端时间cttick时刻对应的状态数据etick,计算线性插值系数a=(dct–dstm‑2)/(dstm‑1‑dstm‑2),得到当前的客户端时间cttick对应的状态数据etick=em‑2*(1‑a)+em‑1*a。
6.根据权利要求1所述的一种自适应处理网络延时抖动的数据同步方法,其特征在于所述状态数据e包括一组独立的状态向量s1,s2,…,sn。
7.根据权利要求6所述的一种自适应处理网络延时抖动的数据同步方法,其特征在于所述状态向量包括位置pos=(px,py,pz)和旋转四元数quat=(qx,qy,qz,qw)。
8.根据权利要求1所述的一种自适应处理网络延时抖动的数据同步方法,其特征在于所述S3中的插值方法包括线性插值和非线性插值。
9.根据权利要求1所述方法的一种自适应处理网络延时抖动的数据同步装置,包括服务器S和客户端C,其特征在于所述客户端C包括双向队列DQ和循环调用模块tick,循环调用模块tick包括查询模块、计算模块、索引位置查找模块和插值调整模块,循环调用模块tick在被调用时,通过查询模块得到当前的客户端时间cttick,通过计算模块得到当前的客户端时间差dct,通过索引位置查找模块,找到符合条件的索引位置j时,通过插值调整模块,调整当前的客户端时间cttick对应的状态数据etick;没有找到符合条件的索引位置j,且dct
10.根据权利要求9所述的一种自适应处理网络延时抖动的数据同步装置,其特征在于所述循环调用模块tick,被客户端C的主循环模块调用,根据状态更新情况,进行调用。