本发明涉及一种远程操控机器人网络延时与机器人实时移动动作同步方法
背景技术:
远程网络操控机器人实现人在异地也能通过图像实时查看机器人所处环境的真实状况,利用机器人能多向移动的特点,只要机器人能到达的地方,通过远程操控并移到目的地,查看用户想看的目标图像。这种方式从技术上解决了定点监控需布置多个探头才能监视多方位的场景的问题,只要一台机器人就可以360度的范围进行监控。同时移动的场景会对图像的时延提出更高的要求,因网络传输时延的存在,会产生操控动作后与传过来图像不同步的状况,如失步时间过长,给用户会造成比较差的使用体验,也增加机器人的不可操控性。如何使操控的动作与回传的图像尽可能同步,是本发明要解决的技术问题。
技术实现要素:
本发明的目的在于提供一种远程操控机器人网络延时与机器人实时移动动作同步方法,使的远程机器人的操控的动作与回传的图像尽可能同步,提高用户的使用体验。
为实现上述目的,本发明的技术方案是:一种远程操控机器人网络延时与机器人实时移动动作同步方法,包括如下步骤,
S1:送出用户初始操控命令,等待视频流,等待中用户如有操作,对用户连续两次操控命令进行识别,若是相同命令,则执行步骤S2;若不是相同命令,则执行步骤S3;
S2:判断两命令间时间间隔是否大于等于视频传输时延,若是,则送出次命令,跳转至步骤S10;否则,丢弃次命令,跳转至步骤S10;
S3:判断两命令间时间间隔是否大于等于视频传输时延,若是,则送出次命令,否则,缓存次命令,同时启动次命令等待发出计时器;
S4:若次命令等待发出时间小于视频传输时延时接收到次新命令,则执行步骤S5,若次命令等待发出时间大于或等于视频传输时延时无论是否接收到次新命令,直接将缓存的次命令发出,并跳转至步骤S10;
S5:判断次新命令是否与次命令相同,若是,丢弃该次新命令;若否,缓存该次新命令,同时启动次新命令等待发出计时器;
S6:若次命令等待发出时间小于视频传输时延时接收到新命令,则执行步骤S8,若次命令等待发出时间大于或等于视频传输时延时无论是否接收到新命令,直接将缓存的次命令发出,并跳转至步骤S10;
S7:若次新命令等待发出时间小于视频传输时延时接收到新命令,则执行步骤S8,若次新命令等待发出时间大于或等于视频传输时延时无论是否接收到新命令,直接将缓存的次新命令发出,并跳转至步骤S10;
S8:判断命令缓存是否到达两个,若已到达两个,丢弃新命令,并跳转至步骤S6;否则,执行步骤S9;
S9:将次新命令命名为次命令,新命令命名为次新命令,并跳转至步骤S5;
S10:重新执行步骤S1。
在本发明一实施例中,所述步骤S9中,若存在的为次命令和新命令,则只需将新命令命名为次新命令;若存在的为次新命令和新命令,则需将次新命令命名为次命令,新命令命名为次新命令。
在本发明一实施例中,所述视频传输时延的获取方式为:由操控客户端发起,在操控命令包中插上特殊时间标签字段并标记该字段有效,机器人接收端收到包后先查看特殊时间标签字段是否有效,如是则提取该字段,同时在机器人返回的视音频包中插入提取的特殊时间标签字段,操控客户端在收到机器人视音频包提取返回的特殊时间标签字段,对照本地时钟计算时间偏移。
在本发明一实施例中,所述特殊时间标签字段含有不断累加的操控客户端发送包序列号,收到返回的包序列号时,需与发出的未确认的包序列号比对, 未对上则丢弃该特殊时间标签字段,对上了则计算时延,同时删除已确认的包序列号。
相较于现有技术,本发明具有以下有益效果:本发明使机器人的操控的动作与回传的图像尽可能同步,并且提高了用户的使用体验,减小了机器人的不可控性。
附图说明
图1为本发明远程操控机器人网络延时与机器人实时移动动作同步方法流程图。
图2为本发明缓存二三级命令处理流程图。
具体实施方式
下面结合附图,对本发明的技术方案进行具体说明。
如图1所示,本发明的一种远程操控机器人网络延时与机器人实时移动动作同步方法,包括如下步骤,
S1:送出用户初始操控命令,等待视频流,等待中用户如有操作,对用户连续两次操控命令进行识别,若是相同命令,则执行步骤S2;若不是相同命令,则执行步骤S3;
S2:判断两命令间时间间隔是否大于等于视频传输时延,若是,则送出次命令,跳转至步骤S10;否则,丢弃次命令,跳转至步骤S10;
S3:判断两命令间时间间隔是否大于等于视频传输时延,若是,则送出次命令,否则,缓存次命令,同时启动次命令等待发出计时器;
S4:若次命令等待发出时间小于视频传输时延时接收到次新命令,则执行步骤S5,若次命令等待发出时间大于或等于视频传输时延时无论是否接收到次新命令,直接将缓存的次命令发出,并跳转至步骤S10;
S5:判断次新命令是否与次命令相同,若是,丢弃该次新命令;若否,缓存该次新命令,同时启动次新命令等待发出计时器;
S6:若次命令等待发出时间小于视频传输时延时接收到新命令,则执行步骤S8,若次命令等待发出时间大于或等于视频传输时延时无论是否接收到新命令,直接将缓存的次命令发出,并跳转至步骤S10;
S7:若次新命令等待发出时间小于视频传输时延时接收到新命令,则执行步骤S8,若次新命令等待发出时间大于或等于视频传输时延时无论是否接收到新命令,直接将缓存的次新命令发出,并跳转至步骤S10;
S8:判断命令缓存是否到达两个,若已到达两个,丢弃新命令,并跳转至步骤S6;否则,执行步骤S9;
S9:将次新命令命名为次命令,新命令命名为次新命令(若存在的为次命令和新命令,则只需将新命令命名为次新命令;若存在的为次新命令和新命令,则需将次新命令命名为次命令,新命令命名为次新命令),并跳转至步骤S5;
S10:重新执行步骤S1。
所述视频传输时延的获取方式为:由操控客户端发起,在操控命令包中插上特殊时间标签字段并标记该字段有效,机器人接收端收到包后先查看特殊时间标签字段是否有效,如是则提取该字段,同时在机器人返回的视音频包中插入提取的特殊时间标签字段,操控客户端在收到机器人视音频包提取返回的特殊时间标签字段,对照本地时钟计算时间偏移。所述特殊时间标签字段含有不断累加的操控客户端发送包序列号,收到返回的包序列号时,需与发出的未确认的包序列号比对, 未对上则丢弃该特殊时间标签字段,对上了则计算时延,同时删除已确认的包序列号。
以下通过具体实施例讲述本发明技术方案。
如图1所示,本发明的一种远程操控机器人网络延时与机器人实时移动动作同步方法,如下:
1、用户操控移动机器人命令延时处理:送出用户初始操控命令,等待视频流,等待中用户如有操作,对用户连续两次操控命令进行识别,如是相同命令,判断两命令间时间间隔,大于等于视频传输时延,则送出次命令,如小于视频传输时延则丢弃次命令。如果不是相同命令,判断两命令间时间间隔,大于等于视频传输时延,则送出次命令,如小于视频传输时延则缓存该命令,等时间间隔大于等于视频传输时延时再送出该命令。
2、缓存次命令处理:缓存次命令同时启动次命令等待计时器,如未等到时间间隔大于等于视频传输时延时,又收到用户的次新操作命令,则次命令与次新命令比较,如相同则丢弃,如果不同缓存次新命令同时启动次新命令等待计时器。当次命令等待计时器大于或等于视频传输时延时,发出缓存的次命令。未等到时间间隔大于等于视频传输时延时,又收到用户操作命令,查看缓存区有几个不同的新命令,如超出两个,丢弃新输入的命令。
3、视频传输时延计时处理:一个命令发出后,视频传输时延计时器置零,重新开始测定视频传输时延。当收到时延应答包时,计算时延时间,覆盖前一个视频传输时延值。
4、实时获取互联网时延方法:获取网络时延由操控客户端发起,在操控命令包中插上特殊时间标签字段并标记该字段有效,机器人接收端收到包后先查看特殊时间标签字段是否有效,如是则提取该字段,同时在机器人返回的视音频包中插入提取的特殊时间标签字段,操控客户端在收到机器人视音频包提取返回的特殊时间标签字段,对照本地时钟计算时间偏移,即一个网络时延获取过程。特殊时间标签字段同时含有不断累加的操控客户端发送包序列号,收到返回的包序列号时,需与发出的未确认的包序列号比对, 未对上则丢弃该时间标签字段,对上了则计算时延,同时删除已确认的包序列号。
本实施例中,采用的数据协议如下:
操控命令包字段格式:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| V | Reserved| PT | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Control command |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| . . . . . . . . . |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
版本(V):2比特 协议版本识别符。
保留(Reserved):6比特 保留后续扩展协议用。
包类型(PT):8比特
长度(Length):16比特以32比特字为单位,包的长度减一,包括头和任何填料。(偏移量1保证零值有效,避免了在扫描包长度时可能发生的无限循环,同时以32比特为单位避免了对以4为倍数的有效性检测。)
包序列号(Sequence Number):32比特 每发送一个操控命令包,序列号增加1。接收方可以依次检测数据包的丢失并恢复数据包序列。
时间标签(Timestamp):32比特 反映操控数据包中的第一个八位组的采样时间。采样时间必须通过时钟及时提供线性无变化增量获取,以支持同步计算
操控命令(Control command):32比特 操控客户端发出的操控命令字段,包括机器人车体各种前后、左右移动等,以及移动的速度、角度等幅值。
视频数据包头字段格式:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| V | Reserved| PT | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Returned sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Returned timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sended sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| . . . . . . . . . |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
版本(V):2比特 协议版本识别符。
保留(Reserved):6比特 保留后续扩展协议用。
包类型(PT):8比特
长度(Length):16比特以32比特字为单位,包的长度减一,包括头和任何填料。(偏移量1保证零值有效,避免了在扫描包长度时可能发生的无限循环,同时以32比特为单位避免了对以4为倍数的有效性检测。)
返回的包序列号(Reterned sequence Number):32比特 返回的机器人端收到操控命令包中提取的包序列号。
返回的时间标签(Returned timestamp):32比特返回的机器人端收到操控命令包中提取的时间标签。
视频数据包序列号(Sended sequence Number):32比特 每发送一个视频数据包,序列号增加1。接收方可以依次检测数据包的丢失并恢复数据包序列。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。