刘斯特,何新霞
(中国石油大学(华东) 新能源学院,山东 青岛 266580)
机械臂作为智能机器人的一个重要组成部分,可以根据上位机下达的指令,模仿人类手臂及手部动作,完成抓握、屈臂、旋转等动作,从而达到控制人员预期的工作效果。一个多自由度机械臂控制系统由上位机、通讯系统、控制系统、电源模块、机械结构(支架、底座、舵机、机械手爪)等诸多模块单元组成,其中上位机的作用是发送控制指令,并对机械臂进行状态监控,通讯系统连接上位机与控制系统,控制系统则负责指令的处理和对机械臂的控制。
应急机器人是针对处理油气场站有毒气体泄漏事故的特种作业机器人,采用履带式车体,具有一个六自由度机械臂,能够通过无线通信模块进行远程控制,并且能够通过传感器和摄像头将机器人周围的环境参数和现场图像传输给上位机控制端,方便操作人员了解机器人的工作环境,从而开展应急处理工作。
当油气场站内部发生气体泄漏事故时,事故现场可能存在各种安全隐患,应急机器人可以代替工作人员进入事故现场,采集现场环境参数(气体浓度、环境图像),让工作人员了解现场情况,并完成启闭气体阀门等应急处理工作,从而尽量避免二次灾害以及人员伤亡[1]。而为了方便机器人进行应急处理工作,一个在工作过程中可以由操作人员远程控制,用来完成快速清障、启闭阀门等工作的机械臂,是应急机器人的一个不可或缺的组成部分。
本文设计一个机械臂无线控制系统,以TI公司的TMS320F28335 DSP为数字信号处理器实现对舵机机械臂的控制,基于高通公司的AR9331 WiFi模块建立无线通信网络,从而搭建了一个DSP—WiFi模块—上位机的线形实验平台[2]。以该实验平台为基础开展机械臂的调试实验,验证机械臂的各项功能满足设计要求。
该系统由5个部分组成:舵机机械臂、电源模块、DSP、WiFi模块、上位机。其中上位机为笔记本电脑,通过调试软件可以向DSP发送控制指令。WiFi模块的控制芯片选型为AR9331芯片,以该芯片为中心搭建的WiFi模块可以通过DSP的串行通信(SCI,serial communication interface)模块与DSP相连,通过无线网卡与上位机相连,从而建立通信网络实现上位机与机械臂的实时通讯。DSP作为核心处理器则是负责接收上位机的控制指令以及依照指令发出脉冲宽度调制(PWM,pulse width modulation)信号控制舵机动作。而机械臂是由6个舵机和金属支架组装而成,是整个系统的动作主体,接收PWM信号后转动相应的角度,使得机械臂能够完成不同的动作。电源模块则为机械臂的6个舵机提供5 V供电。机械臂无线控制系统的原理图如图1所示。
图1 机械臂无线控制系统原理图
TMS320F28335 DSP是TI公司研发的一款适用于数字信号处理运算的微处理器,拥有12路脉宽调制通道PWM,6组脉冲捕获单元CAP,3个SCI串行通信通道,12个可配置外部中断,88个通用数字量输入/输出接口(GPIO,general-purpose input/output),运算能力强大,满足机械臂控制系统的需求,因此选择F28335 DSP作为机械臂无线控制系统的主控制器[3]。
28335 DSP作为主控制器的作用包括2个部分:一是利用SCI模块接收WiFi模块传输过来的控制指令,并对其进行解析;二是通过增强型脉宽调制模块(ePWM,enhanced PWM modules)发出6路独立的PWM控制信号控制舵机动作。
1)SCI模块:
SCI模块的通信方式属于异步串行通信。与并行通信相比,虽然串行通信传输速度较慢,但是串行通信可以同时传输数据信息和控制信息,因此串行通信占用的硬件空间更小,需要的数据线路更少,其传输成本更低,更适合远距离通信;相较于同步通信来说,异步通信中收发双方的设备可以拥有独立的时钟脉冲信号,由各自的时钟实现数据的发送和接收,因此传输数据更加自由、灵活[4]。
SCI是一个双线异步串口,由发送和接收两根信号线组成。F28335内部有3个SCI模块,每个模块各有一个发送器(TX)和接收器(RX),同时SCI模块的发送器和接收器还各有一个16级深度的FIFO队列缓冲[5]。SCI模块框图如图2所示。SCI模块通过接收引脚接收数据,存放在接收移位寄存器中,当DSP准备读取数据时,数据由移位寄存器存入接收数据缓冲寄存器;当DSP准备发送数据时,CPU将数据存入发送数据缓冲寄存器,再将数据转入移位寄存器中,最后将数据移位到发送引脚上,通过发送引脚发送数据。
图2 SCI模块框图
28335 DSP通过SCI模块的串行接口RX可以接收从上位机发出、经由WiFi模块传输的控制指令。
2)ePWM模块:
PWM控制技术就是对脉冲宽度进行调制的技术。由采样控制理论中的重要结论——面积等效原理(冲量相等而形状不同的窄脉冲加载到具有惯性的环节上时,其效果基本相同,冲量即窄脉冲的面积)可得,将原始波形如正弦波,可以用冲量相等的一系列窄脉冲代替,这些窄脉冲幅值相等,宽度按正弦规律变化,这就是PWM波形。而要改变等效输出信号的幅值时,只要按照统一比例系数改变各脉冲宽度即可[6]。
28335 DSP的ePWM模块共有6个PWM单元,每个PWM单元相互独立,互不干扰,但可以通过同步时钟信号将所有单元联系起来。每个PWM单元由两路PWM输出信号组成,分别为ePWMxA和ePWMxB,共12路PWM信号[7]。通过控制DSP输出6路独立的PWM信号就可以控制机械臂上的6个舵机的旋转角度,从而操控机械臂做出各种动作。
舵机是由一个小型的直流电机、一个减速齿轮组、位置反馈电位器和控制电路板(包括一个电压比较器、输入信号和电源)组成的[8]。作为一种位置(角度)伺服驱动器,舵机具有输出精度高,控制简单等特点[9],它的三条输入线分别是5 V电源线VCC、地线GND和控制信号线。
舵机的控制原理如下:控制信号(PWM信号)通过信号线输入,由控制电路板接收该信号,产生一个直流偏置电压,该偏置电压与位置反馈电位器测得的反馈电压比较之后,得到一个差分电压输出,该差分电压经过控制电路板处理后控制直流电机的转动方向和速度,电机转动带动减速齿轮组运转,与齿轮组同轴的舵盘被带动,转动一定角度后停止。
本文中机械臂所采用的舵机是MG995舵机,旋转力矩大(13 kg/cm),响应速度快(0.17 s/60°)。MG995舵机是一种180°舵机,通过信号线输入周期为20 ms、脉宽0.5~2.5 ms的PWM信号,即可调节舵机的旋转角度。其中脉宽1.5 ms的基准信号对应中间位置90°[10]。舵机旋转角度与输入PWM信号脉宽的关系见表1。
表1 舵机旋转角度与PWM脉宽的关系
本文中应急机器人机械臂的主要作用是完成启闭阀门、清理障碍物等工作,因此机械臂必须具有足够的自由度,能够灵活地进行操作。本文采用六自由度机械臂,该机械臂采用仿人手臂结构,大体可以分为大臂、小臂和手部3个部分,大臂通过肩关节与底座相连,通过肘关节与小臂相连,小臂通过腕关节与手部相连。机械臂的硬件组成部分包括机械手爪、金属支架、MG995舵机、底座,由舵机模仿人手臂各个关节,各个关节之间通过U型支架连接,而机械手爪作为手部由舵机控制开、合[11]。舵机通过主控制器DSP的ePWM模块进行控制,调节PWM信号的脉冲宽度,即可调节舵机的旋转角度,从而控制机械臂动作[12]。
机械臂实物图如图3所示,为六自由度机械臂,①~⑥为舵机编号。机械臂总长428 mm,可以抓起重达500 g的物品,其中舵机的反应速度可达0.17 s/60°,考虑到控制指令的无线传输及处理,机械臂可以在0.5 s以内实现各种动作。
图3 机械臂实物图
WiFi技术是一种用来实现电子设备之间数据交换以及接入互联网的无线通信技术。WiFi无线网络包括2种类型的拓扑结构:基础网和自组网。基础网的定义是以无线接入点(AP)为中心,各个站点(STA)之间通过AP进行数据的双向传输;而自组网的定义则是各个STA之间直接通讯,不需要通过AP转发[13]。两种拓扑类型的主要区别在于各个站点之间能否直接进行通讯。
无线控制的优势在于组件网络时免去布线工作,节省了安装成本,简化了网络结构,而且无线控制控制范围广,传输速度快,可以满足系统各个方面的需求。
由于设计需要,本文采用基础网的拓扑结构,将WiFi模块设置为AP无线接入点,将DSP控制器和上位机(电脑)设置为STA站点,从而构建一个无线控制系统。
本文采用高通AR9331 WiFi模块作为DSP与上位机之间的通信模块。AR9331 WiFi模块预置openwrt路由系统,还拥有32 M内存,4M Flash,以及多种外部接口(USB2.0、SCI串口、百兆网口、GPIO),串口频率为9 600,同时该模块符合国际标准的IEEE 802.11b/g/n协议,采用DSSS、OFDM、BPSK、QPSK、CCK和QAM基带调制技术,能自适应路由器等设备的无线热点,最高连接速率可达150 Mbps,可以实现视频传输和指令双向传输功能[14]。因此AR9331 WiFi模块十分适合该无线控制系统,能够建立一个稳定的无线网络,实现舵机机械臂的无线控制。
本文中舵机的电源模块是一个12~3.3/5 V电源转换模块,电源是由3节18 650锂电池组成的电池组,经过电源转换模块进行电压变换后得到舵机需要的5 V直流电压。锂离子电池具有重量轻、容量大、无记忆效应及不含有毒物质等优点,因而得到了普遍应用。锂离子电池的能量密度很高,它的容量是同重量的镍氢电池的1.5~2倍,而且具有很低的自放电率。由锂电池作为供电电源可以为机械臂无线控制系统提供稳定的直流供电电压。
机械臂无线控制系统的软件架构基于TI公司为DSP开发人员提供的集成开发环境——CCS6.0程序开发平台。CCS包含一整套用于开发和调试嵌入式应用的工具,它包含了用于优化的C/C++编译器、源码编译器、项目构建环境、调试器、描述器以及多种其他功能[15]。CCS将集成软件开发环境的框架优点和TI先进的嵌入式调试功能相结合,为嵌入式开发人员提供了一个功能强大的开发环境[16]。
本文中控制系统程序的主要功能包括输出PWM信号、SCI串行通信、对上位机指令进行解析。
1)PWM模块:
首先要对DSP的ePWM模块进行GPIO初始化,让对应的6个GPIO引脚进入PWM模式,并且计数模式选为向上—下计数模式。中央处理器(CPU,central processing unit)的时钟频率默认为150 MHz,因此选择通过设置时基控制寄存器对时钟频率进行48分频,分频后的时钟频率为3.125 MHz[17]。同时舵机PWM控制信号的周期为20 ms,即频率为50 Hz,可以根据公式(1)计算得到时基周期寄存器的值PRD。
(1)
时基周期寄存器的值为31 250,对应PWM控制信号的周期20 ms。此时PWM占空比D可通过计数比较寄存器的值cmp和时基周期寄存器的值PRD计算得到,如公式(2)所示:
(2)
由此可以得到计数比较寄存器的值cmp与PWM信号脉宽的关系见表2。
表2 cmp与PWM脉宽的关系
ePWM模块设置程序的部分程序如下所示:
void Init_ePWM(void)
{
InitEPwm4Gpio();
EPwm4Regs.CMPCTL.all=0;
EPwm4Regs.AQCTLA.all=0x0090;
EPwm4Regs.AQCTLB.all=0x0900;
……
EPwm4Regs.TBCTL.all=0x2B0E;
EPwm4Regs.TBPRD=31250;
EPwm4Regs.CMPA.half.CMPA =cmp;
}
2)SCI模块:
首先初始化GPIO引脚,使其进入SCI模式,然后启用SCI接收中断,对SCI模块进行参数的初始化设置[18]:
①复位SCI模块,使能接收器和发送器以及对应的接收中断和发送中断。
②设置SCI串行通信的数据格式为1位停止位,无奇偶校验位,8位数据位。
③设置串行通信的波特率为9 600。
当上位机发送的控制指令经过WiFi模块传输给DSP时,程序跳转SCI接收中断,通过SCI模块的接收器接收每组控制指令,每组指令包括3个8位整型数据,每次跳转SCI中断就会接收一个8位数据并将该数据赋值给一个数组,3次中断之后该数组内的数据就是完整的控制指令。接收完一组指令后DSP会开始执行指令解析程序,将上位机的控制指令转换为对应的舵机动作。
SCI模块初始化程序如下所示:
void Init_scib(void)
{
ScibRegs.SCICTL1.bit.SWRESET =0;
ScibRegs.SCICCR.all =0x0007;
ScibRegs.SCICTL1.all =0x0003;
ScibRegs.SCICTL2.all =0x0003;
ScibRegs.SCICTL2.bit.TXINTENA = 1;
ScibRegs.SCICTL2.bit.RXBKINTENA =1;
#if (CPU_FRQ_150MHZ)
ScibRegs.SCIHBAUD =0x0001;
ScibRegs.SCILBAUD =0x00E7;
#endif
ScibRegs.SCICTL1.all =0x0023;
}
3)指令解析程序:
当DSP接收到来自上位机的控制指令之后,需要将该指令进行解析。在指令解析程序中,DSP需要根据接收到的指令判断需要动作的舵机编号,并根据给定的旋转角度计算计数比较寄存器的值cmp(对应PWM信号的脉宽),从而输出正确的PWM控制信号驱动舵机[19]。假设给定的旋转角度为x(0~180°),计算cmp的过程如公式(3)所示:
(3)
舵机的旋转角度(0~180°)需要先由上位机转换成十六进制的数据(0x00-0xB4)才能发送。上位机控制指令的格式见表3。
表3 上位机控制指令格式
指令解析程序如下所示(buffer[3]数组为指令数组,负责存放类型位、命令位和数据位指令):
void command(void)
{
if(buffer[0] 0x02)
{
switch(buffer[1])
{
case 0x01:angle[0]=buffer[2];
Servo1(angle[0]);
break;
……
}
}
}
void Servo1(Uint16 x)
{
cmp=(x/180.0)*3124+782;
cmp=(int)cmp;
EPwm1Regs.CMPA.half.CMPA = cmp;
}
TMS320F28335 DSP是机械臂无线控制系统软件的运行主体,当系统启动后,操作人员在上位机端发出控制指令,通过WiFi模块将指令传输给DSP,DSP接收指令后对指令进行解析处理,并对舵机发出PWM控制指令[20]。DSP的程序流程图如图4所示。
图4 程序流程图
面向应急机器人的机械臂无线控制系统实验平台如图5所示,本文基于该实验平台对机械臂进行性能测试。其中,车身为应急机器人本体(履带式结构),作为系统各个模块的载体;电源模块为舵机机械臂提供稳定的5 V电压支持;DSP与6个舵机和WiFi模块相连,通过WiFi模块与上位机沟通,接收控制指令后控制舵机旋转,从而完成不同的动作以进行应急操作。
图5 系统实验平台
在实验调试过程中,首先要设置WiFi网络参数:使用TCP Client模式,将远程主机地址设为192.168.1.1,远程主机端口设为2001,从而建立无线通信网络,实现DSP与上位机的链接。系统上电后,通过上位机发出控制指令,控制机械臂完成清障实验,该实验过程如图6所示。
图6 清障实验过程
实验结果表明,当应急机器人前方出现障碍物时,操作人员可以通过控制机械臂将前方障碍移到侧方,让机器人能继续前进[21],执行下一步操作。在上位机发出控制指令后,机械臂能够无延迟反应(机械臂响应时间在0.5 s以内),做出相应的动作,包括抓握、关节旋转等动作,完成清障任务,同时经过测量,舵机旋转角度的误差在1°以内,满足设计要求。
应急机器人是为了处理油气场站突发有毒气体泄漏事故的特种机器人,其机械臂模块需要帮助机器人在复杂的事故现场环境中顺利前进。本文以TMS320F28335 DSP和AR9331 WiFi模块为核心搭建实验平台,设计了一个机械臂无线控制系统,该系统具有灵敏度高、响应速度块、动作精度高等优点,机械臂可以完成清理障碍等操作,能够满足应急机器人的工作需求。