近年来,随着无线网络技术的发展和日益成熟,利用WLAN和LAN的混和组网,使基于网络的机器人远程控制成为一个热门的研究领域。
本文设计了一套移动机器人远程控制系统。该系统可用于如时延网络环境下控制系统的稳定性理论、实时控制系统的网络通信协议、基于事件驱动方式的网络系统控制策略、目标识别技术等方面的研究。
1硬件环境
被控的机器人采用了美国ActivmediaRobotICs公司的P3-DX多功能智能移动机器人。它配备了车载计算机(装有无线网卡、视频采集卡)、带抓手的5自由度手臂、水平转动/倾斜摄像头及4组共16个声纳。
在实验室内搭建了无线网络环境,无线路由器通过其广域连接端口连接到校园网,并能通过校园网访问Internet,从而构成了一个广域网系统。机器人通过其车载计算机上的无线网卡与实验室内的无线局域网互联,从网络的任何节点都可以远程控制机器人。
2机器人实时远程控制系统的设计
本机器人远程控制系统以实时性及可靠性为前提进行设计。
2。1基本结构
如图1所示,整个远程控制系统由远程控制平台、本地控制系统两部分组成。整套软件系统建立在Windows2000上。
图1系统结构图
图2系统的数据流程图
如图2左半部分所示,整个远程控制平台分为控制区和状态反馈区。在控制区,用户通过图形化控制接口触发指令发送模块中的相应指令,并按照命令包的协议进行封包(根据所设计的通信协议,可以选择是否进行加密和压缩),通过网络发送给本地控制系统。
状态反馈区负责接收从本地控制系统实时发送过来的机器人状态反馈信息和视频数据并显示。
2。3本地控制系统
如图2右半部分所示,整个本地控制系统分为控制执行区和反馈发送区。
在控制执行区,当收到命令包并解包后,可以选择进行命令包的实时性检查,然后通过指令转发模块将指令转发:如果是基本的控制指令则直接通过ARIA接口发送给机器人;如果是高级任务指令则转发给高级任务模块,调用高级任务模块中对应的子模块进行控制,由它发送一系列的命令给机器人。
在反馈发送区,系统定时接收从串口发来的机器人状态数据并打包发送给远程控制平台,同时采集现场的视频数据,并进行压缩编码,然后根据视频数据包的协议打包发送到远程控制平台。此外状态和视频数据将作为高级任务模块的输入数据来源。图2中的心跳包用于处理通信异常断开的情况。
3关键技术
3。1采用UDP协议
TCP协议提供了可靠的数据传输,但是其拥塞控制、数据校验、重传机制的网络开销很大,不适合实时通信,所以选择开销很小的UDP协议来传输数据。
UDP协议是无连接的数据传输协议并且无重传机制,会发生丢包、收到重复包、乱序等情况。而对于数据精确性要求不高的状态数据以及视频数据,丢包的影响不大。因为会不断收到新的包,丢失的个别包会有新的包来覆盖,所以只需在远程控制系统的通信部分自行处理乱序及重复包的问题,而对于丢包的问题一般不作处理。
但对于命令包这种需要精确收发的数据,可在程序的开发中加入丢包重发和超时丢弃的处理。
当然,如果开发的是对于实时性要求不高的事件型控制命令的传输,不希望发生指令的丢失也可以直接采用TCP协议。TCP的重传机制正好适合这种情况。
3。2使用非阻塞套接字结合多线程进行通信
整个系统的通信部分采用WinsockAPI进行开发,摒弃了其他远程控制系统中多采用的阻塞字加多线程的编程模式,而使用了非阻塞套接字并采用了异步事件选择I/O模型。这是因为非阻塞套接字能更好地在非占先的Windows环境下工作,而阻塞套接字在性能上要差一些。基于整个系统的实时性要求,采用了非阻塞的套接字。
由于状态数据和视频数据的收发量大而且频繁,所以仍需采用多线程技术将数据的收发放到子线程中,否则将影响主线程的运行。
3。3本地控制系统中的高级任务模块的作用
位于本地控制系统中的高级任务模块使得本地控制系统具有自动避障、目标识别、自主漫游等高级任务的决策能力。这一设计的实质是将属于远程控制的复杂控制功能下放到本地控制系统实现。如图2所示,只需从远程控制平台发出启动某高级任务指令给本地控制系统,本地控制系统的高级任务模块调用相应的子模块并以本地实时更新的状态数据和视频数据作为输入数据进行处理,实时发出一系列的指令给机器人,便可完成特定的任务。
该设计虽然增加了车载计算机的运算负荷,但是由于可以直接在本地实时收到状态数据以及视频数据,既避免了将这些数据发送到远程控制平台以及控制指令发回到本地控制系统所需的网络时延,又降低了网络的不可预测性造成的系统不可靠性,从而加快了系统的控制响应速度,保证了控制的实时性。同时也提高了远程控制平台操作的集成度、机器人的自主性和系统的可靠性。
3。4心跳包的使用
图2中的心跳包用于处理通信异常断开的情况,例如突然断电、网络中断等。心跳包是一个非常小的数据包,包里只包含时间戳、包的序号等信息,并使用UDP协议传输。远程控制平台每隔一定的时间(如1分钟)就向本地控制系统发送一个心跳包。当本地控制系统收到该包,只需简单地将该包发回来以表明它收到了这个包。
如果远程控制平台在超过一定的时间(如3分钟)没有收到已发送的心跳包的回包,就可以认为本地控制系统和远程控制平台已经异常断开,从而停止发送心跳包,并立即启动紧急处理模块,执行如操作人员发出警报、重新建立网络连接或者重新启动远程控制平台等应急功能。
如果本地控制系统在一定的时间(如3分钟)内都没有收到从远程控制平台发来的心跳包,就可以认为本地控制系统已经与远程控制平台异常断开,从而立即启动本地控制系统中的紧急处理模块,由该模块发出如停止机器人或启动自主控制程序的指令给机器人。同时如果网络未断,将恢复监听网络上的连接请求,以等待建立新的连接。
通过使用心跳包使系统的应急处理能力得到提高,从而提升了整个系统的可靠性。
3。5应用层协议的设计
根据实时性要求,包的大小应尽可能小,以减少带宽的占用,所以整套应用层传输协议的设计应该力求简洁。以下的协议都是建立在UDP传输协议之上。
(1)命令包协议
|包头|时间戳|序列号|命令|参数类型|参数|校验和|包尾|
(2)状态包协议
|包头|时间戳|序列号|状态数据块|校验和|包尾|
(3)心跳包协议
|包头||时间戳|序列号|校验和|包尾|
(4)视频数据协议
|包头|时间戳|序列号|同一时间戳数据块数量|数据块序号|数据块|校验和|包尾|
在以上协议中:时间戳用于实时性检查;序列号用于丢包的检测和统计;校验和用于检查包的完整性。
以上所设计的协议具有可扩展性,可根据设计要求增减字段。例如当需要考虑信息传输的安全性,可加入加密字段;当不考虑延时,可删除时间戳字段等。
3。6自适应实时视频传输方案
图3自适应实时视频传输方案
现有的远程视频监控系统多采用RTP/RTCP协议(实时传输协议),它是因特网上针对多媒体数据流的一种传输协议。RTP是一种封装协议,用于对多媒体数据块进行封装,然后用下层传输协议(如UDP)进行传输。RTCP封装的是发送端或者接收端的统计报表。发送多媒体数据的端将根据接收到的RTCP反馈信息调整视频数据传输质量。
但是针对本机器人远程控制系统,该协议并不完全合适。由于该远程控制系统是一对一的传输模式,只传输视频数据而无其他多媒体数据流,所以具有特殊性。而RTP协议具有一般性,它的很多字段并不适合该系统。例如关于数据源的同步以及关于组播的部分,由于不断发送RTCP包将占用有限的网络带宽,不如直接在远程控制平台进行丢包统计并在视频质量明显变化时发送调节视频质量的命令给本地控制系统。根据这一思路,本系统以RTP协议的基本思想为基础,针对系统的特殊性开发了一套自适应实时视频传输方案。