首页 > 文章中心 > 正文

工业机器人控制软件重构方式

工业机器人控制软件重构方式

运动控制模块选用TI公司的OMAPL138双核处理器芯片,它集成了TMS320C674xDSP内核和ARM926EJ-S双核,具有高性能与低功耗的特性。ARM内核完成非实时性的指令解释、轨迹规划、数据管理、任务管理、网络通信等工作,DSP内核由于具有强大计算能力完成插补计算、逆运动学、速度和位置控制、I/O控制等实时任务。位置控制FPGA芯片包含多轴插补、位置PID等电路,采用了ALTERA公司的EP1C3T144芯片,通过加载不同的程序来实现功能重构。为了提高多轴联动插补速度,插补算法采取软插补(粗)+硬插补(精)结合的模式,硬插补基于数字脉冲乘法器来实现。该模块与驱动器的连接接口提供了两种形式:数字脉冲量接口、工业以太网接口,工业以太网接口可兼容多种驱动器的通信协议,目前已实现了Mecha-trolinkIII协议,这是由日本安川公司提出的一种符合EEE802.3u标准的以太网协议,传输速度可达到100Mbps。OMAPL138双核处理器芯片能提供丰富的接口,包括以太网、USB、RS232等接口,通过以太网接口实现运动控制模块与示教模块的通信。

示教模块由OMAPL138双核处理器电路、48个按键和5.7寸640×480彩色TFT组成,按键包括编辑键、手动操作键、示教编程键及功能键组成。为保证功能重构与硬件平台无关,采用Win-dowsCE6.0操作系统。该模块包含的软件功能构件有:文件管理、示教编程、参数设置、参数管理、图形模拟、以太网通信等。I/O模块负责逻辑控制功能,实现机器人与周边设备的协调作业任务。CAN协议是建立在国际标准组织开放系统互连模型之上,协议简单,最高通信速率可达1Mbit/s,直接传输距离高达10km,采取多主线工作方式,高抗电磁干扰性、纠错能力强;同时,CAN接口安装方便、成本低。本论文选用CAN总线作为运动控制器与I/O模板之间的数据通信方式。2)工业以太网通信协议机器人示教模块与运动控制模块的以太网通信功能采用套接字(Sock-et)方式来实现,Socket接口分为两部分:客户端和服务器,这里示教模块作为客户端,运动控制模块作为服务器。本文采用的通信模式采用主从方式,示教模块为主动方,发送机器人运动程序、控制参数和命令字,用来控制机器人的运动动作,而运动控制模块实时地将坐标数据及状态参数上传给示教模块。在开始通信时,将首先进行握手连接。

数据链路层协议定义了命令和数据两类报文形式,命令报文用来控制机器人的运行动作和流程,定义成标准的报文格式;数据报文用来传送机器人的运动程序和参数,数据量比较大,定义成一种扩展报文格式。标准报文格式有7个字节,第1个字节是报文头标识符,用来标识一次通讯的开始,本报文设为“%”。第2个字节是报文类型段,用来标识传输的消息类型和处理模式,定义的消息类型为:命令、数据,并提供了了两种报文处理模式:实时性和非实时性。当需要机器人完成急停处理、复位处理及超程报警等任务时,则传送具有实时性标识的报文;对一般的机器人处理任务,将报文标识为非实时性。报文的长度由第3、4字节标识,最长为65536字节。第5、6字节为数据段,第7个字节用“&”来标识报文尾。当传输的信息类型标识为数据时,使用了一种扩展报文格式,此时数据段长度可以达到2K字节。示教模块按照报文通信协议将需要发送的数据封装起来,再使用传送函数将数据下传给运动控制模块,包括程序、参数、命令字。在数据报文中如果是多个程序指令,则不同指令之间用“\r\n”隔开,如:“%0x004D指令1\r\n指令2\r\n......&”。数据报文中参数按一定次序排列,用“;”隔开,如:“%0x004B参数1;参数2;......&”。示教模块下传、接收的部分数据报文定义。

工业机器人控制软件的重构方法

模块化机器人的控制软件都应当具备可剪裁性或多重性,整个体系结构应当能够被重新配置,以满足多种应用领域的需求,具备理想“开放性”概念的控制软件应可被拆分为多个标准部件。为了实现上的方便同时又满足组态的特性,本文提出了一个柔性的软件框架结构。“柔性”与“开放性”这2个概念有不同点,但又具有相同的特性,“开放性”侧重与外部系统通过定义标准的接口相互操作,而“柔性”是指系统能通过改变自身结构以适应外部环境的能力。这种柔性控制系统采用基于构件的组态结构,其软件由三部分组成:嵌入式柔性控制系统开发平台、机器人功能构件库和运动规划与控制算法构件库。嵌入式柔性控制系统开发平台用来实现功能构件封装、系统配置等任务。针对模块化机器人控制系统具有多功能和多对象的特点,控制软件的整体结构流程被设计成前台、后台程序模块,后台模块也称为"背景"程序,主要用来完成控制指令的准备工作和参数管理工作,前台模块是一个循环执行运行的程序,它是整个控制系统的核心。在系统运行过程中采用实时中断服务程序输出,前后台模块相互配合完成机器人控制系统的各项控制和管理任务。功能构件的程序模式由配置脚本文件指定。构件化结构关键是构件的提取,即对可重用对象的提炼概括。通过良好地定义这些对象之间相互通信的接口,可以将这些基本对象或将它们进一步分析以后形成的粒度更小的对象,在开发过程中加以重用。本文建立的构件库由用户层构件库和核心层构件库组成,两者之间通过标准硬件接口进行通信。用户层构件库包括人机界面、示教编程、运动规划、参数管理等非实时构件库。由于用户层使用WindowsCE操作系统,软件模块采用COM构件来实现。核心层构件库包括译码处理、速度控制、位置控制、运动学、逆运动学等机器人作业的实时性任务。由于核心层没有使用操作系统,本文利用功能函数形式实现。各种功能构件按标准接口进行封装,功能构件的接口。

控制模型及算法构件库设计

模块化机器人柔性控制系统的性能很大程度上依赖于控制模型与算法,已开发的模型算法构件包括:指令译码、机器人运动学、逆运动学、速度控制、关节插补、闭环位置控制等。主要由译码处理、直角坐标计算、插补运算、逆运动学、加减速及位置控制等模块组成。图中各参数含义为:(X,Y,Z,U,V,W)表示译码后的坐标数据,Q为坐标系选择标志,F为指令速度,Type为运动方式标志位,(α,β,γ)和(px,py,pz)分别表示机器人末端的位置和姿态,(q1,j,q2,j,…,q6,j)为第j个插补周期的关节坐标。直角坐标计算模块的功能为利用机器人运动学将关节坐标转换为机器人末端的位置和姿态。插补模块的功能是根据轨迹运动方式、轨迹起止坐标及速度等参数,进行关节坐标系或直角坐标系下的插补运算。在直线坐标系下插补计算得到的机器人末端位置和姿态,需利用机器人逆运动学将其转换为相应的关节坐标,从而控制各伺服系统的运动。1)关节轨迹插补构件关节轨迹插补用于计算各个插补周期内的各关节进给量,以保证末端执行器的平滑、稳定运行。关节轨迹插补由2个构件实现,非实时函数structinter_stepjoint_inter_pre(structinter_in*st_end)用于计算单个插补周期内的各关节的进给量,实时函数structRobot_jointslocomotion_joint(structinter_step*q_step,structinter_in*st_end,structRobot_joints*q_BK)用于计算插补周期各关节的坐标值。构件入口参数为结构体型参数structinter_in*st_end,其中包括初始关节坐标Qs(q1,s,q2,s,…,q6,s),目标关节坐标Qe(q1,e,q2,e,…,q6,e)和关节速度F,出口参数为各插补周期关节位置q。2)机器人运动学构件机器人运动学构件用于实现机器人关节坐标系的坐标到机器人末端的位置和姿态之间坐标转换。该构件被封装为structRobot_T6cal_t6(structRobot_joints*q),入口参数为机器人关节坐标(q1,q2,…,q6)(structRobot_joints*q),出口参数为机器人末端的位置和姿态T6(structRo-bot_T6*T6),公共接口参数为机器人的Denavit-Hartenberg(D-H)参数(structDH_para*DH),即关节角(θ1,θ2,…,θ6)、扭转角(α1,α2,…,α6)、连杆长度(a1,a2,…,a6)和连杆偏移量(d1,d2,…,d6)等。计算思路为根据机器人D-H坐标系建立原则,建立连杆坐标系,利用DH连杆参数计算相邻连杆之间的连杆变换矩阵Ai(i=1,2,…,6),用以描述相邻连杆坐标系之间的坐标变换关系。通过各连杆变换矩阵相乘,就可以得到机器人末端的变换矩阵。3)逆运动学构件机器人逆运动学构件用于实现机器人末端的位置和姿态到机器人关节坐标系的坐标之间的映射,从而对机器人末端路径进行规划,达到机器人整体运动的精确控制。该构件被封装为structRobot_jointsrobot_rev(structRobot_T6*T6,structRobot_joints*q_BK),入口参数为机器人末端的位置和姿态T6(structRobot_T6*T6),上一位置的机器人关节坐标(q1,j-1,q2,j-1,…,q6,j-1)(structRobot_joints*q_BK),出口参数为当前位置的机器人关节坐标(q1,j,q2,j,…,q6,j)(structRobot_joints*q),公共接口参数为机器人D-H参数,机器人各关节最小允许坐标(q1,min,q2,min,…,q6,min)(doubleQmin[6])和最大允许坐标(q1,max,q2,max,…,q6,max)(doubleQmax[6])。计算思路为根据机器人末端的变换矩阵,利用解析法求解各关节坐标。由于逆运动学求解存在多解问题,根据机器人动作范围(qi,j∈[qi,min,qi,max],i=1,2,…,6)对其进行判定,去除不可达的解。将当前轨迹点计算出的六关节坐标qi,j与上一位置的关节坐标qi,j-1进行比较,选取Δq=|qi,j-qi,j-1|最小的qi,j值作为所求的关节坐标。4)译码处理构件译码构件的功能是将示教盒下传的各条机器人指令进行译码,译码结果首先放入CS第一级缓存,并根据命令做相应的预处理,如段长计算、圆弧半径处理等,然后经过BS寄存器最后译码到AS执行寄存器,构成三级缓存结构,为最终的指令执行做好准备。我们设计的机器人语言格式如下:语句序列为[<标号>]?<执行句><语句分隔符>|[<标号>]?<注释句><语句分隔符>其中,标号由4位数字构成。执行句为〈定义语句〉<机器人控制语句>〈程序控制语句〉〈输入输出语句〉〈赋值语句〉定义语句为〈位姿定义〉〈坐标系定义〉例如,“MOVJVJ=500S0L-90U0R0B45T0;{关节插补}”为一个执行句。机器人译码处理由词法分析构件、语法分析和代码转换构件来实现。词法分析构件由函数voidAccidenceCheck(char*mem,intmemsize)实现,用于检查机器人程序中不符合词法规则的指令。语法分析和代码转换构件由函数structUnRegInCode2Cs(char*mem,intmemsize)实现,用于根据机器人指令的规则对机器人代码进行逐行检查,将机器人程序各种作业信息提取出来,保存到CS缓冲区中。

机器人控制系统现场实验与结果分析

利用本文提出的嵌入式柔性控制系统开发平台,在某种型号关节机器人上进行了应用实验。该关节机器人技术指标为:6个运动轴,重复定位精度为0.1mm,各关节最大运行速度是S轴(回旋)为45°/s、L轴(下臂)为45°/s、U轴(上臂)为30°/s、R轴(手腕横摆)为60°/s、B轴(手腕俯仰)为60°/s、T轴(手腕回转)为120°/s,最大负载为3kg。机器人控制系统硬件由六轴运动控制模块、示教模块和IO模块构成,控制软件包括人机界面、示教编程、参数设置、插补计算、译码处理、速度控制、位置控制、运动学、逆运动学等功能,为机器人控制系统软件编写了配置文件,给出组件间的拓扑结构。不带机器人本体时轨迹位置最大误差为0.08mm,姿态最大误差为0.2°,带本体时轨迹位置最大误差为0.1mm,姿态最大误差为0.6°。该型号机器人轨迹位置理论值允许误差为0.1mm,因此可以满足该型号机器人控制精度要求。机器人控制系统经过长时间运行,结果表明采用嵌入式柔性控制系统可增加机器人系统的开放性和可扩展性,软硬件配置方便,控制系统可靠性高。

结语

针对模块化机器人对控制系统的实际需求,本文提出一种柔性的控制系统结构,它可解决基于嵌入式系统的机器人控制功能重构问题,而以往的模块化机器人控制系统的研究主要是基于PC平台的。该机器人控制系统的软硬件功能模块被抽取成标准构件,为满足机器人对控制系统计算能力和小型化的要求,硬件模块采用了双核处理器并利用现场总线标准接口实现之间的通信。机器人控制软件采用了基于构件的组态结构,它由柔性嵌入式控制系统开发平台、机器人功能构件库和运动规划与控制算法构件库三部分组成,所有软件模块都按标准接口进行封装。所开发的控制系统在六关节模块工业机器人上进行了应用,现场实验表明该系统性能稳定可靠,能适应模块化机器人的机械结构和作业任务的变化需求,可使开发周期大大缩短。

作者:曹建福汪霖单位:西安交通大学机械制造系统工程国家重点实验室