1系统设计方案
采用基于构件的模块化方法设计机器人控制软件,利用“搭积木”的思想[4],将系统划分为不同的功能模块,各模块之间用开放的通信平台和程序接口连接,通过读取配置文件,将所需的功能集成起来,从而提高软件的可重构性.按照硬件上的拓扑结构,这里将软件分成几个模块,其中数据通信、传感器数据采集与处理、运动控制和外围接口都是基础功能模块,每一个模块都当作一个构件来设计,以代表它们物理上的独立性.所谓构件是一个仅带特定契约接口和显式语境依赖的结构单元,它功能独立,具有规范的接口描述,可以独立部署[5].任务调度模块可以看成一个服务管理器,通过它可以重新组织模块之间的拓扑结构和执行顺序,从而让机器人完成某种特定的任务.
2功能模块设计
2.1主视图模块
主视图模块工作在控制软件的界面层,是对用户开放的看板部分,它集中显示机器人的各种运行信息,包括接收到的任务令,机械手的坐标位置与姿态,加工产品型号及参数、生产速度和各外围设备的运行状态等.将这些信息单独列为一个模块进行设计,符合当前流行的软件设计上的MVC(modelcontrolview)模式.当需要使机器人切换到另外一项工作任务时,由于机器人的基本信息都是类似的,因此只要把涉及到产品和工艺流程的信息换掉即可,这样新的界面层可以通过配置参数重新生成.
2.2参数配置与数据存储模块
参数配置与数据存储模块简称数据模块,它由参数配置模块和数据存储模块两个部分组成.参数配置模块是将机器人系统中所有可设置的参数按照一定的规律集成在一起,构成强大的软件配置功能,它工作在界面层,对用户可见.各模块可以设置的主要参数如表1所示,所有配置信息都用XML(extensiblemarkuplanguage)保存,从表1可以看出:大部分都是通用参数,一般的机器人系统都会用到,只有少量的是针对特定任务的参数,所以可将通用参数和特定参数进行分离,更换任务时只须更换特定参数的配置模型.数据存储模块是将机器人实时状态和加工的产品信息录入数据库系统,以备以后的查验和维护,这里采用SQL语句进行数据库操作.
2.3运动控制模块
运动控制是机器人系统的核心组成部分,它是一个内核模块,不对用户开放.在硬件上,它由执行电机、驱动装置、运动控制器或者运动控制卡组成.软件上可以分为以下几个部分.犪.运动学模型.根据机器人本体的参数,建立DH坐标系,推导出正运动学和逆运动学方程,求逆运动学最优解.犫.底层驱动.对运动控制卡提供的基本指令进行封装,总结出一般的机器人都要用到的功能函数,如板卡的打开与关闭、轴的启动、停止和位置回零等.更换运动控制卡时,只须将控制指令替换即可,不会影响上层功能的调用.犮.控制算法.机器人运行的精度和轨迹由控制算法决定.机械手末端走的路径由任务空间的路径规划决定,一般采用线性插值和圆弧插值来实现.为了在关节空间中形成所需要的轨迹,须将任务空间的路径点通过逆运动学转换成关节的角度值,然后对每个关节拟合一个函数,使之按这个函数的结果进行运动.
2.4数据通信模块
由于一般的机器人控制系统都会用到串口通信和网络通信,因此将它们作为独立的模块进行设计.串口通信简单可靠,采用工业上常见的标准Modbus协议.Modbus是一种请求/应答协议,属于应用层的报文传输协议.网络通信模块包括客户端和服务器两部分,基于TCP/IP协议,利用Socket实现.对于多个客户端连接服务器产生的并发操作,通过多线程实现,由于涉及到多线程对公共数据的访问和修改,因此要用到线程同步和锁的机制.网络通信模块主要完成两个功能.第一个功能是内部模块之间的通信,例如采用运动控制器时,运动控制模块是由第三方软件实现,它和其他模块工作在不同的进程,而进程之间可以通过网络进行通信.第二个功能是完成机器人系统与MES(制造执行系统)的通信,它接受MES的任务令,将设备的各种状态和任务完成信息发送至MES.
2.5传感器数据采集与处理模块
机器人系统的目标位置经常是动态的,须借助传感器来对目标进行辅助定位.这里以六轴点胶机器人控制系统上配备的视觉传感器为例进行介绍.首先,要把机械手坐标系和图像坐标系关联起来,即视觉标定.关联方法为在PCB平面上视觉视野范围内选取5个点,获取5个点的图像坐标;然后操作机械手,让胶嘴依次对准刚才选取的5个点,获取5个点的机械坐标;最后通过计算获得两个坐标系的关联关系.建立完坐标关联关系后,用相机对准PCB板上的Mark点,记录并保存Mark点区域图像参数.如图3所示,这里要采集两个Mark点才能确定PCB板的位置,因为如果只有一个Mark点犃,由于PCB板是一个平面,因此它的位置可能为矩形1,也可能为矩形2.用两个点的话,犃和犅可确定其位置为矩形1,犃和犆可确定其位置为矩形2.完成上述操作之后,机器人首先运动到目标位置附近,启动相机进行图像采集,然后通过图像匹配算法计算出图像中的目标点位置,最后通过将图像坐标转换成机械坐标,即可得到点胶目标点位置.
2.6外围接口模块
机器人系统的外围接口模块是由外围区域控制器PLC、各种开关元件、末端执行器、电机、传送带等组成的机器人工作平台.外围设备由任务确定,不同任务所需设备的类型和数量不一样,故将所有外围设备当作一个模块,由区域控制器PLC进行集中控制,它们的功能通过软件配置和定义,这样可以支持设备在硬件上的热插拔和功能上的重定义.PLC支持IO扩展的功能为软件上的开放式设计提供了基础,新增和删除设备时只须通过参数配置完成.
2.7任务调度模块
此模块是建立在各基础模块和其开放式接口之上的一个组合调度模块,将它作为一个模块进行设计,是为了适应不同的任务要求.它作为服务管理器,首先通过参数配置模块确定需要用到的模块;然后读取各模块的构件描述Xml文件和初始化参数配置Xml文件,获取各构件的接口和属性;最后根据任务要求,描述这些构件之间的调用顺序和通信方式.对于一个不断重复工作的机器人系统来说,任务应该由状态机来实现.所谓状态机,是指将机器人的一系列动作分解出来,按工艺流程把各个动作按先后顺序排列在一起,放在一个while和Switchcase逻辑块里面,让程序循环在各状态之间跳转执行,从而完成特定的工作任务.
3案例分析
将各功能模块按要求组合起来完成六轴点胶机器人系统的控制软件设计.首先,机械手型号为三菱RV12SDS311六轴机械手,它带有专门的运动控制器,运动控制部分由第三方软件RTToolBox2完成,在WindowsXP系统下基于VS2010开发其控制软件,总体结构如图4所示,主控软件与RTToolBox2之间采用TCP/IP通信,运动控制的实时性由底层运动控制器保证.设计六轴点胶机器人系统的控制软件时,主界面、参数配置以及外围接口模块须重新配置参数,任务调度模块通过读取参数配置模块的任务描述文件确定具体任务类型即可,其他模块不用修改.任务调度模块的任务状态机设计如下:首先检测是否有PCB板,若有则传送PCB板至工作位置,并读取上面的条形码上传至MES系统获取任务指令;然后机器人开始采集图像获取需要点胶位置,再运行到目标位置,按照规定轨迹完成点胶任务;最后向MES系统上传任务完成信息,并且本机也保存相应数据.控制软件的任务调度模块设计完成后,须进行参数配置,选择主视徒界面需要显示的参数,定义各IO设备的功能,设置各模块的构件初始化配置参数等,配置完之后,生成配置文件.至此,界面层和任务层设计完成.六轴点胶机器人的案例证明:本开放式机器人控制软件的设计结构是合理的,能够有效简化控制软件的设计流程,提高软件的可重构性.
4结论
按照基于构件的模块化设计思想,设计了开放式机器人控制软件的各个模块.各模块之间耦合性低、通用性好,采用标准的通信协议并提供开放式接口.对于不同的机器人系统来说,一般只须重新设计任务调度模块并对必要的参数进行修改和重新配置,就可以利用这些基本模块快速完成机器人控制软件的开发.若某些机器人须增加新的功能,则可以通过编写新构件和构件描述文件来实现.与传统的机器人控制软件开发模式相比,这种设计方法可以大大提高控制软件的可重构性和开发效率.
作者:彭刚 夏成林 单位:华中科技大学自动化学院