机器人实时远程控制系统及其开发库的设计与实现

发布者:mu22最新更新时间:2006-05-24 来源: 电子技术应用关键字:缓存  模块  校验  字段 手机看文章 扫描二维码
随时随地手机看文章

  近年来,随着无线网络技术的发展和日益成熟,利用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所示,只需从远程控制平台发出启动某高级任务指令给本地控制系统,本地控制系统的高级任务模块调用相应的子模块并以本地实时更新的状态数据和视频数据作为输入数据进行处理,实时发出一系列的指令给机器人,便可完成特定的任务。
  该设计虽然增加了车载计算机的运算负荷,但是由于可以直接在本地实时收到状态数据以及视频数据,既避免了将这些数据发送到远程控制平台以及控制指令发回到本地控制系统所需的网络时延,又降低了网络的不可预测性造成的系统不可靠性,从而加快了系统的控制响应速度,保证了控制的实时性。同时也提高了远程控制平台操作的集成度、机器人的自主性和系统的可靠性。
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协议的基本思想为基础,针对系统的特殊性开发了一套自适应实时视频传输方案。
  如图3所示,本地控制系统将采集的一帧视频数据使用MPEG4或M-JPEG协议进行压缩编码;然后按照一定的大小(一般比MTU稍微小点,因为IP和UDP包头要占用一定的字节数)对编码后的视频数据进行分块,并使用视频数据协议进行数据块的封装;最后使用UDP协议发送到远程控制平台。其中时间戳用于表明这些数据块属于同一视频帧,数据块序号用于表明该数据块在此帧中的位置。
  由于UDP协议的不可靠性会引发包的乱序、重复包以及丢包等情况,所以远程控制平台采用多级缓存池接收视频数据。该缓存池是一个可以容纳0.2s~0.4s视频数据的多级缓存,每一级是一个缓存链表,用于存储具有相同时间戳的所有数据块。
  该多级缓存池的基本算法是:
  (1)当接收到的数据块的时间戳在多级缓存中不存在时:如果该时间戳比缓存中最旧的时间戳要新,则在多级缓存池中插入属于该时间戳的缓存链表,在该链表中加入该数据块,并删除时间戳最旧的数据链表;如果该时间戳比缓存中最旧的时间戳还要旧,就丢弃该数据块。
  (2)当接收到的视频数据块的时间戳在多级缓存中存在时:检查该时间戳对应缓存链表,通过该数据块序号判断该数据块是否存在该时间戳的缓存链表中。若不存在就加入该数据块,否则丢弃。
  (3)当接收到的数据块使得同一时间戳的视频数据完全收到,就将其解码并显示,然后释放包括该时间戳在内的、所有小于该时间戳的缓存链表。
  视频的压缩标准采用MJPEG或者MPEG4。MJPEG属于帧内编码,传输中发生丢帧不会影响其他的帧;而MPEG4属于帧间编码,传输中发生丢帧,特别是关键帧的丢失将严重影响其他帧的完整。所以在实际的系统设计中,如果网络的通信状况很好,则选择MPEG4,因为它的压缩比高;如果网络的通信状况很差,则选择MJPEG,虽然压缩比相对较小,但是发生丢帧时不会影响其他帧。
  在接收视频数据的同时,应根据时间戳和序列等进行视频传输状况统计,主要是丢包及延时统计。根据统计信息,当视频传输状况发生了明显变化时,就发送调节视频质量的命令给本地控制系统:
  (1)当传输的状况变差(如丢包、延时严重等)时就给本地控制系统发送降低视频质量的命令,使其降低视频采集的频率或者提高压缩比率。至于是降低视频采集的频率还是提高压缩比率,将根据当前机器人的移动速度来决定:当机器人移动较快时,并不需要非常高的画面质量,所以优先采用提高图像压缩比率的方法。当只提高压缩比率效果不明显时,再同时采用降低视频采集频率的方法;当机器人移动速度很慢时如抓取东西时,需要更高的视频清晰度,此时优先采用降低视频采集频率的方法。当只降低视频采集频率效果不明显时,再同时采用提高压缩比率的方法。
  (2)同理,如果传输的状况较好,则可以发送提高视频质量的命令给本地控制系统,根据移动速度决定采取优先提高视频采集的频率或者优先降低压缩比率的方法来提高视频的质量。
4 机器人远程控制系统开发库
4.1 目的与用处
  提供一套使开发者摆脱编程细节的、快速开发的、模块化的、可扩展的机器人远程控制开发库,可以方便研究人员进行软件的开发,降低其在软件编程方面的重复劳动。
4.2 设计原则
  (1)采用面向对象的思想,以C++类进行设计,并将类封装到动态链接库中。
  (2)开发库具有多选择性,使开发库的使用者有多种技术可选,如提供多种视频编码库。
  (3)在类中对多线程进行封装 ,并加入线程的同步,使类具有线程安全性。
  (4)函数中的算法要力求效率高、运算速度快,以减少因为占用过多的计算时间造成的网络时延。
  (5)类中定义的接口应设计完整,不可随便改动,以保证今后升级和扩展时接口的一致性。
  (6)类的代码要多采用基本C/C++标准库函数来开发,而尽量不要使用依靠平台的如MFC库,以方便移植到Linux平台。
4.3 开发库CyLib介绍
  图4是依照以上设计原则设计的机器人远程控制系统开发库CyLib的类层次图。该库由4个动态链接库文件组成:CyCore.dll、CyTools.dll、CyRobot.dll、CyGUI.dll。其中基类加阴影显示,其他的为派生类。


图4 开发库的类层次图


图5 远程控制平台


  CyCore.dll封装了应用层数据包协议、远程控制命令、数据传输接口、延时及丢包模拟等。
  CyRobot.dll包含了对机器人编程接口ARIA的封装、控制指令的执行、状态数据的轮询和发送、视频的采集压缩发送以及色彩识别、漫游等智能控制功能等。
  CyTools.dll提供了一系列的工具类用于辅助研究人员的程序开发。其中包含线程进程同步类、时间类、算术类、日志功能、压缩解压缩、加密解密、视频采集等。
  CyGUI.dll提供了图形化显示类,如多功能按钮、地图生成、声纳图形显示等。
5 开发实例
  根据以上的系统结构设计并利用开发库CyLib,开发了一套P3-DX机器人远程控制系统。图5展示了机器人远程控制平台的控制现场。该平台实现了机器人本体、机械臂和摄像头的控制、状态数据的显示、声纳罗盘数据图形化显示、视频监控以及自动漫游、色彩识别等智能控制功能。机器人本地控制系统的软件开发为车载计算机的一个Windows2000常驻服务程序。它实现了命令的解析和中转、智能任务控制的执行、状态及视频数据的采集、打包、发送等功能。
  本机器人远程控制系统开发库目前还不够完善,需要继续改进和扩展。最后介绍的开发实例基本达到了设计的要求,但是部分高级任务如机械臂智能控制、自主控制等尚未完成,需要进一步加以研究和开发。
参考文献
1 Alan FT Winfield.Wireless Video Tele-operation using Inter-net Protocols[R].Intelligent
??Autonomous Systems (Engineering) Laboratory,University of the West of England,Bristol,1999
2 Bruemmer D J,Dudenhoeffer D D,McKay M D et al. Dynamic-Autonomy for Remote Robotic Sensor
??Deployment[R].The Human-System Simulation Laboratory,Idaho National Engineering and
??Environmental Laboratory,2002
3 徐志晖.基于无线网络的远程控制平台[D].南京:南京航空航天大学,2005
4 庄 严,王 伟,恽为民.基于网络的机器人控制技术研究现状与发展[J].机器人,2002;24(3) 
5 刘 轶,范宜洋,张 晗.一种跨平台的机器人网络远程控制系统[J].计算机工程,2004;30(9)

关键字:缓存  模块  校验  字段 引用地址:机器人实时远程控制系统及其开发库的设计与实现

上一篇:基于8051的微控制器在系统编程
下一篇:数字转速计的设计

推荐阅读最新更新时间:2024-03-30 21:21

丰富车门区电子模块功能的电动防眩目后视镜控制器
在新一代汽车外部后视镜中,内置功能的数量大幅增加:侧面回复反射器或转向灯/闪光灯、车门外部灯、除霜器、后视镜折叠和调节等等。除这些功能外,最近又增加了电动防眩目后视镜控制功能:在夜里后车大灯眩光刺眼时非常需要这种防眩目的后视镜。电动防眩目后视镜能够自动变暗,避免反射光照射驾驶员的双眼。电动防眩目 (EC)镜是一种阻容等效负载:控制EC镜需要一个复杂的控制策略。EC镜在透明与颜色最深之间的电压是0V到1.2V;在颜色开始变深时,最大电流在150-250 mA之间。如果使用一个传统的线性控制器,从12V电瓶电压降到1.2V防眩目镜电压,将会损耗太多的电能(大约12-1.2V*0.15A=1.62W);考虑到电磁控制(EMC) 问题,不推
[嵌入式]
基于51单片机蓝牙模块控制风扇运行实现的经验
本次设计实现是在智能手机上,通过蓝牙控制器 软件,控制风扇的开、关、正传、反转。单片机最小系统 模块是整个设计的核心,通过单片机程序控制蓝牙信 息的接收、发送和电机的启动、停止、左转、右转。整个 设计采用两节 4.5 V 电池供电,电机驱动电压为 9 V, 单片机模块和蓝牙模块经过电压转换到 5 V。 对于单片机的选择,设计采用 AT89C51 单片机,工作稳定,使用简单,无需设计复位电路便可工作,还 可以作为开发板使用,程序下载和仿真方面不需要特 定的程序仿真设备,在较短时间内,即可通过单片机 本身的串口实现程序下载,对于程序容量和基本控制 方面,AT89C51 单片机都能满足设计要求 。 电机驱动,采用 L9110 驱
[单片机]
比较/ 捕捉/PWM (CCP)模块
  PIC18F452(有两个ccp)每个CCP(捕捉/ 比较/PWM )模块有一个16位寄存器,它可以用作16位捕捉寄存器、16位比较寄存器或PWM 主/ 从占空比寄存器。除了特殊事件触发器之外,CCP1的操作和CCP2相同。   捕捉/ 比较/PWM 寄存器1(CCPR1)由两个 8 位寄存器组成:CCPR1L (低字节)和 CCPR1H(高字节)。CCP1CON 寄存器控制CCP1 的操作。   捕捉/ 比较/PWM 寄存器2(CCPR2)由两个 8 位寄存器组成:CCPR2L (低字节)和 CCPR2H(高字节)。CCP2CON 寄存器控制CCP2 的操作。 CCP模式-定时器资源:捕捉:Timer1或Ti
[单片机]
Maxim发布业界最小电源模块
3月22日,Maxim宣布推出系统级微型IC (“uSLIC”)系列模块,帮助空间严格受限系统的设计者大幅减小方案尺寸并提高效率。MAXM17532和MAXM15462超小尺寸 (2.6mm x 3.0mm x 1.5mm)、集成式DC-DC电源模块是Maxim喜马拉雅电源方案专利组合的一部分,适用于工业、医疗健康、通信和消费市场。凭借这些模块,客户既能充分利用业界开关稳压器的全部优势,又具备线性稳压器(LDO)的小尺寸、设计简便等优势。   随着检测、互联和云计算的迅猛发展,小型化将成为下一个推动人工智能和机器学习等新兴领域的前沿技术。从工业物联网(IIoT)传感器、国防电子和网络基础设施到医疗、消费类产品等下一代系统设
[半导体设计/制造]
LG伊诺特“净水器水龙头灭菌用UV LED 模块”量生产
韩国首尔2017年4月10日电 /美通社/ -- LG伊诺特批量生产UV(ultraviolet rays, 紫外线) LED 模块 ,可对净水器水龙头内部进行完美灭菌。让顾客更加放心地饮用净水器中的水。 自上个月末起,LG 伊诺特坡州营业所开始正式批量生产“净水器水龙头灭菌用UV LED 模块”。在27日上市的LG电子直饮净水器“PuriCare Slim Updown”新型号产品中,已安装本产模块。 净水器水龙头如同自来水水龙头,是出水的部分。在使用净水器时,会有少量的水积聚。此处因空气流入等容易造成细菌繁殖,所以很容易被污染。但是因其内部较窄,很难安装灭菌装置。 LG 伊诺特根据净水器水龙头,开发出虽小但灭菌力卓
[电源管理]
LG伊诺特“净水器水龙头灭菌用UV LED <font color='red'>模块</font>”量生产
moto Z3 Play曝光 迎来5G网络模块新成员
模块化手机自从诞生以来就颇受大家的关注,尤其是在moto推出第一代moto Z的时候,顿时给人一种眼前一亮的感觉。然而随着时间的推移,moto Z系列也将迎来新成员。近日,根据外媒XDA报道,moto Z3 Play有望将于6月6日发布,届时还将发布一款全新的扩展模块,5G网络模块。 moto Z3 Play将搭载5G网络模块(图片引自XDA)   此外,XDA还公布了两张moto Z3 Play的宣传海报,在海报中可以赫然的看到,“Hello moto Z3 with 5G moto mod”也意味着moto Z3 Play的5G网络模块将成为这款手机的最大亮点之一。而靠着5G网络模块,或许也将让这款手机率先支持5G网络。
[手机便携]
STM32F4 ADC模块使用不同DMA模式的区别和对比
这些细节在STM32F4的原厂参考手册中没有说明,只是很简短的列了一下。 我是查看ST前几天刚发布的接口库才最后弄明白的,不敢独享! 1、STM32F4有3个独立的ADC单元,性能强劲,可以独立使用,也可以联合使用它们。 联合使用在参考手册中叫Interleave模式,最大的目的是加倍提升采样速度。 2、采样速度大幅提高以后,就需要使用DMA来配合提取采样结果,从而发挥STM32F4 ADC模块的最大效能。 3、ADC模块使用DMA有4种模式可选,默认模式和模式1没有什么特别之处。 最有意思的是模式2和模式3: 模式2可以选择多达3个ADC模块工作于Interleave模式,ADC速度从单一模块的
[单片机]
STM32F4 ADC<font color='red'>模块</font>使用不同DMA模式的区别和对比
采用内存接液晶显示模块
    摘要: 提出了一种采用内存接口的液晶显示模块。该模块是在现有点阵式液晶显示屏上附加一个MCU(Micro-Controller Unit 微处理器)及相关硬件,利用内存与外部控制器进行接口,从而解决了液晶显示统一接口和显示速度的问题。     关键词: 液晶接口 内存 微处理器 点阵式液晶接口简单,能以点阵或图形方式显示出各种信息,因此在各种电子设计中得到广泛应用。但是,它的接口必须遵循一定的硬件和时序规范,根据不同的液晶驱动器,可能需要发出不同的命令进行控制才能显示数据。而且命令的执行需要耗费一定时间,在系统大量的实时数据的情况下,如果直接控制液晶显示,可能会消耗过多的时间,从而
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新工业控制文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved