|
|
| | -文章搜索 - 最新文章 - | |
机器人实时远程控制系统及其开发库的设计与实现 |
| 发布时间:2006年6月6日 点击次数:829 |
| 来源: 作者:陈洋 陆宇平 |
近年来,随着无线网络技术的发展和日益成熟,利用WLAN和LAN的混和组网,使基于网络的机器人远程控制成为一个热门的研究领域。 ![]() 图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所示,只需从远程控制平台发出启动某高级任务指令给本地控制系统,本地控制系统的高级任务模块调用相应的子模块并以本地实时更新的状态数据和视频数据作为输入数据进行处理,实时发出一系列的指令给机器人,便可完成特定的任务。 该设计虽然增加了车载计算机的运算负荷,但是由于可以直接在本地实时收到状态数据以及视频数据,既避免了将这些数据发送到远程控制平台以及控制指令发回到本地控制系统所需的网络时延,又降低了网络的不可预测性造成的系统不可靠性,从而加快了系统的控制响应速度,保证了控制的实时性。同时也提高了远程控制平台操作的集成度、机器人的自主性和系统的可靠性。 3.4 心跳包的使用 图2中的心跳包用于处理通信异常断开的情况,例如突然断电、网络中断等。心跳包是一个非常小的数据包,包里只包含时间戳、包的序号等信息,并使用UDP协议传输。远程控制平台每隔一定的时间(如1分钟)就向本地控制系统发送一个心跳包。当本地控制系统收到该包,只需简单地将该包发回来以表明它收到了这个包。 如果远程控制平台在超过一定的时间(如3分钟)没有收到已发送的心跳包的回包,就可以认为本地控制系统和远程控制平台已经异常断开,从而停止发送心跳包,并立即启动紧急处理模块,执行如操作人员发出警报、重新建立网络连接或者重新启动远程控制平台等应急功能。 如果本地控制系统在一定的时间(如3分钟)内都没有收到从远程控制平台发来的心跳包,就可以认为本地控制系统已经与远程控制平台异常断开,从而立即启动本地控制系统中的紧急处理模块,由该模块发出如停止机器人或启动自主控制程序的指令给机器人。同时如果网络未断,将恢复监听网络上的连接请求,以等待建立新的连接。 通过使用心跳包使系统的应急处理能力得到提高,从而提升了整个系统的可靠性。 3.5 应用层协议的设计 根据实时性要求,包的大小应尽可能小,以减少带宽的占用,所以整套应用层传输协议的设计应该力求简洁。以下的协议都是建立在UDP传输协议之上。 (1)命令包协议 |包头|时间戳|序列号|命令|参数类型|参数|校验和|包尾| (2)状态包协议 |包头|时间戳|序列号|状态数据块|校验和|包尾| (3)心跳包协议 |包头||时间戳|序列号|校验和|包尾| (4)视频数据协议 |包头|时间戳|序列号|同一时间戳数据块数量|数据块序号|数据块|校验和|包尾| 在以上协议中:时间戳用于实时性检查;序列号用于丢包的检测和统计;校验和用于检查包的完整性。 以上所设计的协议具有可扩展性,可根据设计要求增减字段。例如当需要考虑信息传输的安全性,可加入加密字段;当不考虑延时,可删除时间戳字段等。 3.6 自适应实时视频传输方案 ![]() 图3 自适应实时视频传输方案
![]() 图4 开发库的类层次图 ![]() 图5 远程控制平台
|
|
|
|
|
[自动控制] 相关文章: MT8880在智能通讯预警系统中的技术应用简介:
利用公用电话网进行远程控制家用电器和拨号报警,主要解决的问题是如何利用电话线传递控制信息以及如何对信息进行处理、加工。使用Modem与计算机的结合,可以实现控制信息的传送问题,而且控制信息可以非常复杂和丰富,但必须在控制方和被控方设置一台计算机Modem,费用较高。如果在被控制方操作简单,只需较少命令即可实现控制的情况下,直接使用电话机上的双音多频信号或其组合,就足够对远程被控制方进行有效的控制。 1 系统原理与组成 电话远程控制系统主要完成的功能是对电话双音多频(DTMF,double tone multiple frequency)信...... 英特尔2007年将停产386 昔日宿将宝刀未老
戴尔宣布联手AMD 英特尔紧急调降CPU价格
Tundra推出Tsi109主桥可与飞思卡尔处理器配套
AMD回收3000块服务器芯片 Opteron异常高温
基于TMS320VC33-150的声探测系统设计
DDS在函数发生器应用中的优点
Silicon Laboratories扩大小型混合信号微控制器产品线
基于PCI总线和DSP的步进电机运动控制卡的设计和实现
Supertex发布了宽泛输入电压范围的PWM风扇速度控制器IC |
|
|
|