张 奔,卞新高,朱灯林
(1.三江学院机械工程学院,江苏南京210012;2.河海大学机电工程学院,江苏常州213022)
作为机器人的核心部分,控制系统是四足行走机器人正常工作的重要保证,只有通过控制系统的运行才能使得机器本体按照一定的规律运动,从而实现机器人的行走功能。
现有的机器人控制系统结构有:集中式、分布式、分层递阶式3 种[1]。传统的机器人控制系统多采用集中式控制系统,其结构限制了机器人系统的扩展和灵活性。而分布式结构将机器人控制系统分为多个子系统,每个子系统采用一个独立的CPU 来控制,彼此间通过总线交换信息。控制系统模块化,具有扩展性好、实时性较高、可靠性较高等优点;其缺点是控制系统结构较复杂、协调有一定的难度[2]。
本研究所设计的JQRI00 四足行走机器人目标是一个具有一定的负载能力和复杂环境行走的机器人。该机器人执行机构包括机架、腿、关节以及足四部分组成。机架主要负责承载电机、液压系统、电控柜、作业装置等;单腿采用三自由度结构,为胯部、上臂、下臂(包括足)3 部分,机架与胯部、胯部与上臂、上臂与下臂分别采用3 个转动副连接,使足底能够达到一定范围空间内的任意位置;各关节的运动采用液压油缸驱动,每个油缸与另外两个运动臂构成稳定的三角形结构以适应重载运行;每个油缸的运动由电控伺服阀和油缸内同轴安装的位移传感器构成闭环位移和速度控制;足底安装接触力传感器用于腿与地面的接触状态识别[3]。
根据上述功能归类,本研究设计了JQRI00 四足机器人控制系统的总体方案,控制系统结构如图1所示。
图1 控制系统结构
该控制系统由监控、主控制器和子控制器3 个功能模块组成。其中:监控模块对JQRI00 机器人行走过程中的实时状态进行监控;主控制模块对JQRI00 机器人进行路径、步态和位姿规划,并把规划的足底坐标转换成各个关节的控制量;子控制模块对机器人各个关节的伺服阀进行控制,驱动关节运动,包括4 个子控制器,每个子控制器独立控制一条腿[4-5]。
3 个功能模块之间相对独立,完成各自的任务并相互之间进行数据通信。监控模块、主控制器和子控制器使用不同的CPU。目前常用的控制器有PC、DSP、ARM、单片机等。由于行走机器人控制系统要求精度高、实时性强、灵活性高。本研究对主、从两级控制器同时采用基于ARM9 内核AT91SAM9260 微控制器的关节伺服控制器;而监控机主要做数据监控,要求较好的人机交互性,本研究选用一般的PC 实现。各控制器之间通过CAN 总线网络交换数据,其中主控制器将规划好的行走路线、步态位姿信息细分解到各子控制器,控制层通过标准RS232 总线与监控PC 机进行数据交换。
监控模块是人机交互的平台,它一方面负责下达操作者的命令给主控制器模块,另一方面接收主控制器模块返回的监控数据。根据监控机的功能要求,监控机模块功能主要包括两部分:界面设计以及数据收发。本研究选用VC+ +来设计监控程序。
机器人监控程序的设计要根据机器人的运动特征来确定,四足机器人实体模型的运动大体可以分为调试阶段、标定阶段、正常运动阶段、复位阶段。根据这四个阶段把四足机器人的监控界面分为3 个不同的监控界面:标定界面、运行界面、复位界面。3 个工作监控界面由主界面进入,监控程序主界面如图2所示。在标定界面,完成四足机器人的前期调试、四足机器人油缸标定以及四足机器人初始位置的零点标定;在运行界面,考虑可以选择不同的运动状态,监控在各种不同的运动状态下,机器人中各种传感器采样的值以及主控制器做的规划值;复位界面用于监控在机器人恢复到原有状态过程中参数。
图2 监控程序主界面
同时监控机还需要同主控制器通过RS232 接口的无线模块进行通信。该实验通信过程中,监控机把命令通过25 个字节发给主控制器,主控制器收到这25 个字节以后决定机器人的工作方式;另外在主控制器工作过程中,主控制器收集所有机器人工作的状态参数,最终用145 个字节返回给监控机,监控机再把这145 个字节做相应的处理并显示在监控界面上。这里选用MSComm 控件编程,它是Microsoft 公司提供的简化Windows 下串行通信编程的ActiveX 控件,在串口编程时非常方便,不用去了解较为复杂的API 函数,能高效地完成串口通信程序的设计。流程图如图3所示。
主控制器是JQRI00 四足行走机器人中的重要控制部分,它主要完成以下功能:
(1)实现机器人路径、步态和位姿规划算法;
图3 监控模块串口通信程序流程图
(2)与子控制器实时通信,把计算的运动值实时传送给子控制器,从而实现执行机构的运动;
(3)接收子控制器返回的采样值,用于实时的轨迹计算和监控;
(4)接收倾角传感器发送的空间3 个角度的值;
(5)与监控机实时通信,发送所有计算、测量的数值给监控机,并接收监控机发送的控制命令。
子控制器主要用作接收主控制器命令数据,伺服驱动各关节动作,获取机器人运行过程中液压缸位移量、运动方向、通信故障等信息并反馈至主控制器进行处理分析,其功能如下[6]:
(1)油缸驱动DAC 模块用于驱动伺服阀阀芯正向或反向运动,将电信号转换为液压缸伸长或缩短方向的物理位移。
(2)数据采集四足机器人运行过程中,需实时采集各模拟量进行处理分析并对下一微步步态位移、速度参数做出相应调整。本研究中主要有液压缸运动位移量、足端着地点压力等参数。
(3)故障识别运行过程中对各油缸移动的实际位置和足端压力进行判断,确定是否有位置超限和过负荷等故障。
根据以上功能需求分析和硬件电路设计原则,本研究选择了ATMEL 公司基于ARM926EJ-S 内核的工业级32 位ARM9 芯片AT91SAM9260 微控制器,并对外围各个模块电路进行了设计,包括USB 接口、RJ45网口、ISA 接口、UART 接口、CAN 接口、SPI 接口等组成。
由于控制器EM9260 工控模块内嵌Windows CE实时操作系统,它是基于时间片轮转调度的多线程并行工作,为线程设置较高的优先级,将提高控制系统响应实时性。故本研究采用EVC 对系统进行软件开发。Embedded Visual C + +(简称EVC)可用C/C + +语言为Windows CE 开发应用程序。利用EVC 对Windows CE 进行开发类似与平时在PC 上利用VC + +对Windows XP 等操作系统进行应用程序开发[7]。
主控制器要完成步态规划和计算、数据通信等任务,其程序流程简图如图4所示。子控制器接收主控制器发送的实时任务,协调控制12 个伺服阀,其程序流程简图如图5所示。
图4 主控制器程序流程图
四足行走机器人是一个复杂的多控制器控制系统,如前文所提到的:JQRI00 机器人分为监控、主控、子控3 个功能模块。而各个功能模块之间要通过一定的通信方式连接,以实现数据之间的交换。
整个控制系统的通信分为两部分:监控机和主控制器之间主要完成监控数据的交换和控制指令的下达。它们之间的通信属于点对点通信,并且考虑到在工作过程中监控机应该具有一定的灵活性,选用微功率无线数传模块,该模块选用RS232 串口,其中一个无线模块与主控制器的串口连接,另一个与监控机PC的串口连接。
主控制器和4 个子控制器之间要求通信速度快、可靠性强,这里选用CAN 总线作为其通信方式。主控制器在每一个循环周期内主动向4 个子控制器发送运动指令和数据,子控制器在收到主控制器发送的数据以后按照主控制器的命令驱动液压阀工作;同时采集位移传感器和力传感器的值返回主控制器。这里采用Peli-CAN 工作模式下的Standard Frame 格式,速率为125 kbps。CAN 总线上通信帧的格式为:一帧包括11个字节,其中前3 个字节为帧地址,后面8 个字节为帧内容。通信过程中信息帧以多主方式发送,多播方式接收。总线空闲时,任何节点均可收发信息。CAN 通信的地址如表1、表2所示。主控制器向子控制器发送数据的帧地址如表1所示,其中第2 个字节表示主控制器与哪个子控制器通信,而第3 个字节表示是第几帧数据。由表2 可见,主控制器收到子控制器返回的数据帧地址,第2 个字节表示主控制器与哪个子控制器通信,而第3 个字节表示是第几帧数据[8]。
表1 CAN 通信地址(主控器发送)
表2 CAN 通信地址(子控器发送)
JQRI00 四足行走机器人调试平台主要包括两台调试PC。其中一台调试机用于运行监控机软件;另外一台利用无线路由和5 个控制器连接,在EVC 调试状态下运行主控制器和子控制器的程序。另外,利用串口调试助手以及CAN 调试助手辅助监视串口通信和CAN 总线通信时的数据。
为了检测实际运行中的通信效果,本研究对各台控制器间的相互通信进行了试验。试验内容:主控制器顺序向四台子控制器发送3 帧数据,并依次接收各子控制器返回的2 帧数据帧。通信测试中一个主要部分是检测各台子控制器是否仅接收CAN 总线上属于自己的信息帧,屏蔽其他消息,并能正确返回数据。实验波特率设置为250 Kbit/s,标准数据帧传输,经过试验,各台控制器之间数据传输正常,主控制器依次向每台子控制器发送3 帧数据后,都会接收到子控制器返回的2 帧数据信息,经过试验知所编写CAN 通信程序可以实现各台控制器间的数据传输任务。
对机器人的运动控制就是对油缸的运动速度进行控制。要想利用伺服阀驱动油缸速度,必须把油缸的运动速度值转换成对应的DA 值[9-11]。油缸的运动速度由油缸内的液压油流量所决定,要想保证一定的油缸运动速度即要计算液压油流量。双向油缸的运动包括两种状态:正向伸长和逆向缩短。JQRI00 机器人所使用的液压缸其内径为40,液压活塞直径28,由于正向伸长时液压油在整个内径中推动液压缸伸长,而逆向缩短时液压油在缸内径和活塞杆直接推动液压缸缩短,故液压缸正向伸长伺服阀最大流量时,最大运动速度为(最大流量为20 L/min):
而逆向缩短伺服阀最大流量时,最大运动速度为:
相应的液压缸正向伸长时DA 值的计算为:
液压缸逆向缩短时DA 值的计算为:
本研究把DA+和DA-的计算公式放入主控制器的程序中,主控制器直接把相应的DA 值发送给子控制器,子控制器在直接按照该DA 值驱动伺服阀达到液压缸按一定的速度运动的效果。但在后期的实验过程中发现,如果按照这个实际计算的DA 值发送,油缸运动的速度和实际要求并不符合。考虑给DA 的计算公式增加一个参数,让实际速度逼近规划的速度。通过实验,得到DA 的计算公式如下:
液压缸正向伸长时DA 值的计算为:
液压缸逆向缩短时DA 值的计算为:
主控制器程序使用以上的公式计算,所得到的运动速度基本符合要求。主控制器收到子控制器发送上来的位移及力都是AD 采样值(12 位),监控界面所有显示的是从AD 值转变成的实际数值。对于JQRI00机器人的4 条腿12 个油缸来说,由于P、L 缸的最大行程为175 mm,而Q 缸的最大行程为130 mm,故应分开计算:对于P 和L 缸来说:其AD 值、电压值和行程的对应关系可求出理论上实际行程P、L 的运动值为:
相应的调整行程最大值为150 mm,Q 的运动值为:
实验过程中,本研究对AD 采样的值做分析,发现实际运动和采样的值有误差,考虑其传感器分辨率有限,对实际长度值做插补。
本研究针对JQRI00 机器人控制系统进行了设计分析,提出了一种基于PC 和ARM 的四足机器人分布式控制系统设计方法,后期通过在四足机器人原理样机上进行的大量模拟试验表明,本研究论述的机器人分布式控制系统设计方法正确、有效,能够满足四足机器人实时控制的要求。
通过实验,JQRI00 机器人在平地简单环境直行、转弯步态规划的基础上,已近可以进行简单自主行进,但并未对机器人在台阶、斜坡等复杂地形下行走时的复杂步态进行研究。
[1]陈德明.四足仿生机器人运动控制系统的设计与实现[D].西安:西北工业大学机电学院,2007.
[2]樊昌信,曹丽娜.通信原理[M].北京:国防工业出版社,
2006.
[3]张 奔,卞新高,朱灯林.用于抗洪打桩的四足机器人结构设计[J].机电工程,2012,29(11):1259-1263.
[4]陈学东,孙 翔,贾文川.多足步行机器人运动规划与控制[M].武汉:华中科技大学出版社,2006.
[5]张 奔.四足机器人结构设计与运动控制算法研究[D].常州:河海大学机电工程学院,2010.
[6]侯宪伦,李向东,徐 方,等.基于CAN 总线的移动机器人控制系统设计[J].山东科学,2008(1):64-68.
[7]何宗键.Windows CE 嵌入式系统[M].北京:北京航空航天大学出版社,2006.
[8]王红路.四足机器人运动控制系统设计[D].常州:河海大学机电工程学院,2010.
[9]许 勇,孙峰磊.基于扭转振动的多步态移动装置的运动学建模[J].轻工机械,2015,33(1):31-36.
[10]龚勤慧.基于VB 的多关节搬运机器人的设计[J].机械,2013(1):22-24.
[11]殷勇华,卞新高,陆卫丽.液压驱动四足机器人步态规划和运动控制[J].机电工程,2014,31(7):839-843.