摘 要:为解决多机器人协作的问题,设计了可以让机器人之间基于ZigBee网络进行通信的通信方案。机器人硬件系统中引入了ZigBee节点,多个机器人依赖ZigBee形成一个星型网络,每个机器人可以通过中心节点保持通信。实验结果表明,机器人之间可以可靠地进行通信,能够显著提高机器人的工作效率。
关键词:多机器人; 通信; ZigBee; MG2455
机器人[1]作为人类20世纪最伟大的发明之一,在短短的40年内发生了日新月异的变化。随着社会生产技术的飞速发展,机器人的应用领域也不断扩展,从自动化生产线到海洋资源的探索,乃至太空作业等领域,机器人可谓是无处不在。然而就目前的机器人技术水平而言,单机器人在信息的获取、处理及控制能力等方面都是有限的,对于复杂的工作任务及多变的工作环境,单机器人的能力更显不足。由多个机器人组成的群体系统通过协调、协作来完成单机器人无法或难以完成的工作将是机器人发展的一个趋势。目前的多机器人通信一般采用有线通信的方式,尽管技术成熟、可靠性高,但由于线缆限制了机器人的移动范围和灵活性,没能得到广泛的应用。ZigBee网络技术是基于802.15.4的无线通信协议,具有低成本、低功耗、低传输速率的特点,并支持星型、树状和网状等多种网络拓扑结构。多机器人协作只需要彼此间断性地传递有限的信息,并要尽可能地节省能量。而ZigBee非常适合这种场合的应用。
1 ZigBee技术及优势
1.1 ZigBee简介
ZigBee是一组基于IEEE批准通过的802.15.4无线标准研制开发的,是有关组网、安全和应用软件方面的技术标准。IEEE仅处理低级MAC层和物理层协议,而ZigBee联盟对其网络层协议和API进行了标准化。每个协调器可连接多达255个节点,而由此形成的ZigBee网络对路由传输的数目没有限制。ZigBee联盟还开发了安全层,以保证这种便携设备不会意外泄漏其标识。完整的ZigBee协议套件由高层应用规范、应用层、网络层、数据链路层和物理层组成。网络层以上协议由ZigBee联盟制定,IEEE802.15.4负责物理层和链路层标准。
1.2 ZigBee优势
ZigBee[2]技术是一种新兴的近距离、低复杂度、低功耗、低数据速率、低成本的无线网络技术,它是一种介于无线标记技术和蓝牙之间的技术提案。主要用于近距离无线连接。一般而言,随着通信距离的增大,设备的复杂度、功耗以及系统成本都在增加。相对于现有的各种无线通信技术,ZigBee技术将是最低功耗和最低成本的技术。同时由于ZigBee技术的低数据速率和通信范围较小的特点,也决定了ZigBee技术适合于承载数据流量较小的业务。所以,ZigBee联盟预测的主要应用领域包括工业控制、消费性电子设备、汽车自动化、农业自动化和医用设备控制等。
2 机器人通信系统的设计
2.1 系统结构
多移动机器人通信可以采用ZigBee的星型结构,如图1所示。在这个网络中,充当网络协调器的机器人负责组建网络,管理网络,并对网络的安全负责。它要存储网络内所有节点的设备信息, 包括数据包转发表、设备关联表以及与安全有关的密钥等。其他的普通机器人,使用的ZigBee节点都是RFD设备。当这类机器人受到某些触发时,例如内部定时器时间到了、外部传感器采集完数据、收到协调器要求答复的命令,就会向协调器传送数据。作为网络协调器的机器人可以采用有线的方式和1台PC机相连接,在PC机上存储网络需要的绑定表、路由表和设备信息,减小网络协调器的负担,提高网络的运行效率。
2.2 机器人的硬件设计
机器人的硬件一般包含核心控制器模块、外界数据采集模块、驱动模块以及执行机构。在本设计中加入了无线通信模块,其硬件结构如图2所示。核心控制部分实际上是一个典型的嵌入式系统。处理器采用Atmel公司的AT91RM9200处理器,它是一款工业级的处理器,ARM920T内核,200MIPS的处理速率,外围接口丰富。ZigBee无线通信模块采用韩国RadioPulse公司的MG2455芯片。当机器人的无线接收部分接收到命令或数据时,由MG2455芯片进行相应的处理后传送给高速处理器,由高速处理器来驱动机器人的电机部分,实现相应的操作。当机器人需要向其他机器人或者PC机发送命令或者数据时,就由高速处理器把组织好的数据发送给ZigBee节点,ZigBee节点再把数据组装成帧,从天线发送出去。可以采用1台PC机来实现机器人的监测与控制,把需要耗费时间和运算量的工作转移到PC机上进行,以提高网络的运行效率。AT91RM9200采用串口与ZigBee通信模块连接。当有数据需要传送时,主动方通过串口发出中断由对方CPU来处理传送过来的数据。由于通信的数据量并不是很大并且通信并不很频繁,所以不会影响核心控制部分的正常运行。各种传感器和驱动器作为处理器的外设和系统相连。传感器采集外界环境中的各种信息,例如温度、湿度、亮度。驱动器是各种电机,控制机器人手和足的运动。
2.3 通信模块ZigBee节点的硬件设计
MG2455[3]是韩国RadioPulse公司推出的用来实现嵌入式ZigBee应用的片上系统。它支持2.4 GHz IEEE802.15.4/ZigBee协议,通信距离能够达到300 m。在物理层,它使用直接序列扩频技术和O-QPSK调制技术,具有很强的抗干扰能力。在MAC层,它采用了CSMA-CA机制竞争信道,提高了信道的利用率。MG2455芯片有3种可选的通信速率:250 kb/s供ZigBee使用,500 kb/s和1 Mb/s的通信速率供传递语音和图像使用。在1.5 V的工作电压下,可以达到-98 dBm的接收灵敏度和8 dBm的发射强度。功耗在芯片进入深度睡眠的模式下可以降低到1 ?滋A以下。MG2455芯片的处理速度是标准8051单片机的12倍,具有96 KB的内置Flash和8 KB的数据存储区,1个SPI接口,2个串行接口,2个外部中断,4个A/D转换器,4个定时器,2个PWM,22个普通I/O口。另外,它的体积只有7 mm×7 mm×0.9 mm,外围电路仅需要一些电感、电容和电阻。天线既可以是鞭状天线也可以是陶瓷天线或者PCB天线。这些优点非常适合于机器人通信节点的应用。用MG2455芯片实现的ZigBee节点硬件原理图如图3所示。
3 机器人通信系统的软件设计
3.1 核心控制器的软件设计
核心控制器的控制对象涉及到多个输入部件和输出部件,输入部件主要是各种传感器,输出部件主要是各种伺服电机。所以,CPU处理的任务非常复杂,可以考虑在软件设计方面采用多任务实时操作系统UCOS。设计者分别写出控制传感器和电机的任务,然后把这些任务按照重要性赋予一定的优先级,让操作系统轮流调用这些任务。
3.2 ZigBee节点的软件设计
针对MG2455芯片,RadioPulse公司提供了EVK、MDK和ZDK 3种版本的软件。EVK实现了MG2455芯片的驱动程序,包括无线模块、串口模块、功率控制模块等。MG2455芯片通过中断实现物理层的数据与无线发送缓冲区、无线接收缓冲区的交换。用户可以在这个软件版本的基础上实现各种灵活的上层应用;MDK实现了MAC层的协议,包括CSMA-CA机制、数据请求、节点加入请求和节点离开请求等复杂的原语;ZDK完整地实现了ZigBee协议定义的NWK、APS、AF、ZDO以及安全层。3种版本的机器人的应用强调数据传输的实时性,所以选择EVK版本作为开发上层应用的软件基础。下面主要介绍几个重要的函数:
(1)void ZHAL_CHANNEL_SET(UINT8 chan);//set the channel
void ZHAL_PAN_ID_SET(UINT16 ID); //set the PAN id
void ZHAL_SHORT_ADDR_SET(UINT16 Addr);//set the short address
void ZHAL_TXPOWER_SET(UINT8 PowerLevel); //set the power
void ZHAL_DATARATE_SET(UINT8 Rate);//set the datarate
以上函数设置了节点的通信信道、网络ID、网络地址、发射功率和通信速率参数。
(2) UINT8 ZSYS_SEND_PACKET(UINT16 PANID,UINT16 SrcAddr, UINT16 DstAddr, UINT8 MsgLen, UINT8 *MsgBuff, UINT8 AckReq, UINT8 OobIndex); // send packet
源节点通过这个函数发送信息给目的节点,参数包含了网络ID号、源节点地址、目标地址、发送长度、发送内容的指针,应答标识位和传输速率的选择位。通过应答标识位AckOn参数告诉目的节点是否需要回应消息。传输速率的选择为:如果发送信息成功,则返回值为0。
(3) MAC_PKT* ZSYS_RX_PACKET_GET( );//receive packet
ZSYS_RX_PACKET_CLR( ); //clear receive buffer
源节点通过这个函数在无线接收缓冲区接收信息。当缓冲区中具有信息时,函数会返回指向数据的指针,通过这个指针可以访问信息的源地址、信号强度值以及内容;当没有接收到信息时,函数返回一个空指针。当无线缓冲区的数据得到处理后,调用ZSYS_RX_PACKET_CLR( )函数清空接收缓冲区。
(4) void ZSYS_UART1_PUT_STRING(UINT8 *StrPtr,UINT8 StrLen)//put message to host
UINT8 ZSYS_UART1_GET_STRING(UINT8 *StrPtr,UINT8 StrLen);//get message from host
ZigBee节点通过这2个函数与主控制器芯片AT91RM9200通信。
3.3 上层协议的设计
设计了一个简单的2个机器人协作的应用案例:A机器人用机械手臂从筐中取出1个乒乓球,将其移动到合适的位置;B机器人从墨水瓶里面给笔蘸上墨水,然后在A机器人手臂上的乒乓球上画上一些图案,在画图案的过程中,A机器人会挪动乒乓球的位置。图案画好后,A机器人将画有图案的机器人放到另外1个筐子。针对这个案例,设计了2个机器人之间的通信协议。图4是规定的发送数据的格式,先是1 B的命令前缀,后面是可选的命令参数,主要是坐标信息。
(1) A机器人取到乒乓球后将球移动到合适的位置,通知B机器人可以开始下一步工作。此时,A机器人发送1个命令帧给B机器人,此时只有命令前缀,而没有坐标信息。
(2) B机器人收到信息后,到墨水瓶里面去蘸墨水,通知机器人A要开始绘制图案了。
(3) B机器人会隔一段时间告诉A机器人现在的进度情况,A机器人则根据B机器人的进度,调整乒乓球的位置;此时发送的信息里面除了命令前缀以外,还有坐标信息,这些坐标信息代表了当前任务的进度。
(4) B机器人画图完成,告诉A机器人结束信息,A机器人将乒乓球放回到筐中。
本文分析了机器人通信的特点,结合ZigBee技术及发展现状,提出了基于ZigBee的机器人通信方案,即把短距离通信技术应用到机器人通信中,为机器人嵌入一个无线通信的模块,就像给机器人加上了一双耳朵一样。详细阐述了机器人的通信模块的硬件和软件的设计。目前机器人技术正在大行其道,可以想像在不远的将来,机器人将为人类做各种各样复杂的工作。ZigBeec网络技术未来肯定能在机器人通信领域中占有一席之地。
参考文献
[1] 张海英,刘祚时,林桂娟.群体机器人研究的现状和发展[J]. 电子技术应用,2004,30(2).
[2] 瞿雷,刘胜德,胡咸斌.ZigBee技术及应用.北京:北京航空航天大学出版社,2007.