RSS

远程控制系统及设计之机器人02

来源:网络 作者:佚名 时间:2008-07-27 Tag:远程控制系统   设计   机器人   点击:

3.5 应用层协议的设计

    根据实时性要求,包的大小应尽可能小,以减少带宽的占用,所以整套应用层传输协议的设计应该力求简洁。以下的协议都是建立在UDP传输协议之上。

    (1)命令包协议

     |包头|时间戳|序列号|命令|参数类型|参数|校验和|包尾|

    (2)状态包协议

     |包头|时间戳|序列号|状态数据块|校验和|包尾|

    (3)心跳包协议

     |包头||时间戳|序列号|校验和|包尾|

    (4)视频数据协议

     |包头|时间戳|序列号|同一时间戳数据块数量|数据块序号|数据块|校验和|包尾|

    在以上协议中:时间戳用于实时性检查;序列号用于丢包的检测和统计;校验和用于检查包的完整性。

    以上所设计的协议具有可扩展性,可根据设计要求增减字段。例如当需要考虑信息传输的安全性,可加入加密字段;当不考虑延时,可删除时间戳字段等。

    3.6 自适应实时视频传输方案

    

    

    图3 自适应实时视频传输方案

    现有的远程视频监控系统多采用RTP/RTCP协议(实时传输协议),它是因特网上针对多媒体数据流的一种传输协议。RTP是一种封装协议,用于对多媒体数据块进行封装,然后用下层传输协议(如UDP)进行传输。RTCP封装的是发送端或者接收端的统计报表。发送多媒体数据的端将根据接收到的RTCP反馈信息调整视频数据传输质量。

    但是针对本机器人远程控制系统,该协议并不完全合适。由于该远程控制系统是一对一的传输模式,只传输视频数据而无其他多媒体数据流,所以具有特殊性。而RTP协议具有一般性,它的很多字段并不适合该系统。例如关于数据源的同步以及关于组播的部分,由于不断发送RTCP包将占用有限的网络带宽,不如直接在远程控制平台进行丢包统计并在视频质量明显变化时发送调节视频质量的命令给本地控制系统。根据这一思路,本系统以RTP协议的基本思想为基础,针对系统的特殊性开发了一套自适应实时视频传输方案。

    如图3所示,本地控制系统将采集的一帧视频数据使用MPEG4或M-JPEG协议进行压缩编码;然后按照一定的大小(一般比MTU稍微小点,因为IP和UDP包头要占用一定的字节数)对编码后的视频数据进行分块,并使用视频数据协议进行数据块的封装;最后使用UDP协议发送到远程控制平台。其中时间戳用于表明这些数据块属于同一视频帧,数据块序号用于表明该数据块在此帧中的位置。

    由于UDP协议的不可靠性会引发包的乱序、重复包以及丢包等情况,所以远程控制平台采用多级缓存池接收视频数据。该缓存池是一个可以容纳0.2s~0.4s视频数据的多级缓存,每一级是一个缓存链表,用于存储具有相同时间戳的所有数据块。

    该多级缓存池的基本算法是:

    (1)当接收到的数据块的时间戳在多级缓存中不存在时:如果该时间戳比缓存中最旧的时间戳要新,则在多级缓存池中插入属于该时间戳的缓存链表,在该链表中加入该数据块,并删除时间戳最旧的数据链表;如果该时间戳比缓存中最旧的时间戳还要旧,就丢弃该数据块。

    (2)当接收到的视频数据块的时间戳在多级缓存中存在时:检查该时间戳对应缓存链表,通过该数据块序号判断该数据块是否存在该时间戳的缓存链表中。若不存在就加入该数据块,否则丢弃。

    (3)当接收到的数据块使得同一时间戳的视频数据完全收到,就将其解码并显示,然后释放包括该时间戳在内的、所有小于该时间戳的缓存链表。

    视频的压缩标准采用MJPEG或者MPEG4。MJPEG属于帧内编码,传输中发生丢帧不会影响其他的帧;而MPEG4属于帧间编码,传输中发生丢帧,特别是关键帧的丢失将严重影响其他帧的完整。所以在实际的系统设计中,如果网络的通信状况很好,则选择MPEG4,因为它的压缩比高;如果网络的通信状况很差,则选择MJPEG,虽然压缩比相对较小,但是发生丢帧时不会影响其他帧。

    在接收视频数据的同时,应根据时间戳和序列等进行视频传输状况统计,主要是丢包及延时统计。根据统计信息,当视频传输状况发生了明显变化时,就发送调节视频质量的命令给本地控制系统:


1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.


最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
合作站点