摘 要:
根据现代工业机器人发展的趋势和需求,本文提出了一种模块化机器人控制系统的设计方法,并且给出了具体实现。本文阐述了该设计的基本思想和原则,提出了实现模块化设计的中间层架构设计方法。本文后按照双通道机器人给出具体业务模块的详细内容描述。本文提出的机器人架构已经编码用于实际的工业机器人,经过实践验证,该设计具有鲁棒性强,柔性化程度高,可灵活配置,可动态扩展等优点。
关键词:
上世纪七十到九十年代,由于电子技术等的约束,工业控制系统还是以单片机等为主,整个软件系统的规模不大。但是随着计算机软硬件技术、物联网技术等的快速发展,越来越多的工业控制系统都转向了基于计算机操作系统的体系架构
对于机器人控制系统,柔性通常指如下一些方面:
系统的模块应该能够按照不同层次进行分布部署,例如,按照线程、按照进程、按照网络等方式。同时,系统按照不同层次部署时,不同的模块应该共享相同的通讯架构接口。
系统的业务应当已模块的方式组织,这样可以大化的重用已经实现的业务内容。
可配置性是指可以对控制系统进行多方面的配置,通常包含如下内容:系统结构配置,也就是模块之间的耦合关系;系统功能配置,也就是选择配置系统功能(算法)。
可移植性通常指应用的硬件无关、操作系统无关性,通过提供硬件抽象和操作系统的封装,使得应用程序无需关注设备的底层。
每一个软件工程项目都是持续演进的,依赖于完善的文档、单元测试框架和一致性的设计理念,使得软件可以得以在初代开发人员离开后由后续开发人员延续开发。
综合以上特性,本文给出了一种模块化机器人控制系统的内涵和架构,并给出了模块化的设计细节。
模块化设计需要解决一系列的问题,包括但不限于:
各模块如何划分功能;模块化是如何实现柔性的;模块间消息传递的粒度如何划分。
模块化的设计在不同的领域软件中有不同的定义,通常认为模块化架构的定义就是:模块是向系统其他模块提供广义的服务的一个组件。对于机器人控制系统,模块化主要有三个层面的意义:
模块可以被替换,也就是一个模块可以被提供相同服务的其他模块替换。
模块可以扩展,也就是一个模块的设计应该可以实现各种特定的应用。
模块设计不变,很多模块可以共享相同的设计方法。
针对以上模块化设计的要点,设计时需要考虑如下的一些关键问题:
从软件层面,架构设计和功能业务的开发是分离的,架构设计只进行软件框架的工作,而功能业务开发部分负责使用架构设计的框架进行业务功能的系统开发。
机制和策略分离是软件工程的重要设计理念。两者的本质区别就是如何实现一个功能和如何使用一个功能的区别。通常软件开发应当在设计阶段尽可能的面向机制编程,而不要过渡的关注策略细节,否则会导致软件在柔性和可维护性上发生问题。
数据流指一个模块与其他模块产生的交互数据,执行控制是模块内执行业务流。本条原则不是指数据流不能影响模块内业务执行,而是指不能由数据流来主导模块内的业务模型,这通常指:模块间的通讯不应影响执行控制;模块可能被重新配置。
模块化架构的服务通常应当封装操作系统的实现细节,这样让开发者无需关注过多的操作系统底层实现。
提高软件产品质量、缩短开发周期、降低开发成本是软件开发人员的迫切要求,软件产品的模块化和可复用性是满足这一要求的唯一方法
模块中间层系统提供标准化的创建模块方法。同时,模块中间层可以为模块指定操作系统相关的一些基本操作,例如创建线程、终止线程等。
类型系统中间层为系统提供了构建结构化数据表示的方法,并且提供了若干种将类型数据转换为主流数据串行化框架(JSON、OpcUa)的方式。类型系统是下述服务中间层、参数中间层等的基础。
服务中间层系统为模块间提供标准的服务调用机制,当模块处于不同的层次时,例如,网络间或者同一进程中的不同线程,调用服务不用关注其背后的技术实现,服务中间层已经按照表1所示进行实现。
参数中间层为模块参数修改、读写提供了标准方法,这样,所有模块可以共享同一套参数机制。
模块加载框架是终实现应用程序的重要框架、模块加载框架可以设置哪些模块需要加载、以何种方式加载,不同模块之间的数据交互方式,模块参数加载的方式等。
基于上述中间层,完成模块化机器人控制系统的框架(中间件)部分。系统总体中间层设计思路如图1所示。
由图中所示,系统的日志系统、参数系统、数据类型系统提供统一服务,且模块的运行控制标准化,模块间数据流和服务也采用统一的机制。
本部以双通道机器人(一个控制器同时控制两个独立的机械臂,同时机械臂之间存在数据交互)控制为例,描述了机器人业务架构构成。系统总体框架如图2所示。
图中每个矩形框均为一个模块,红线内为实时系统部分,紫色模块均为通讯模块。Group1和Group2中的为单独每个通道需要部署的模块,这部分代码实现可重用。
按照该结构可以实现代码高可重用的双通道机器人控制系统,系统柔性高,可扩展性强。
以下描述主要模块的功能。
总线模块提供总线设备数据读写的驱动服务。如前所述,模块化使得相似功能的模块只要提供相同的服务,则可以相互代替,针对机器人硬件总线选择不同,还可以灵活的使用例如CanOpen总线模块来代替Ethercat模块。
该模块提供如下服务:
·总线拓扑结构查询服务。
·总线数据读写服务。
·总线错误诊断服务。
关节控制模块是系统控制关节运动的模块,提供各种和关节相关的服务:
·关节控制设置服务,包括关节驱动模式、关节伺服上下使能等。
·关节状态查询服务,包括关节驱动状态、驱动错误等数据读取。
·关节运动控制服务,包括各种单关节运动、多关节同步运动、工作空间运动等服务。
可以看到针对双通道,该关节组控制模块共用同一套代码,只需部署参数调整即可适配不同的机械臂硬件
IO控制模块是系统控制外部IO的模块,提供如下服务:
·获取模拟量和数字量输入。
·设置模拟量和数字量输出。
安全控制器实现负责监控机器人的安全状态,确保机器人的安全性。主要参考标准为ISO12100、ISO10218-1、ISO10218-2
本模块通过一系列的参数配置,设置机器人的结构类型、DH参数、关节限位等信息。
·获取机器人结构类型。
·获取机器人DH参数。
·获取机器人关节限位信息。
工业机器人通常通过示教编程方式进行操作
·执行机器人程序。
·停止机器人程度。
·单步执行机器人程序。
工业机器人通过安装在机械臂末端的末端执行器执行任务,对于末端执行器,有包括末端执行器运动学转换、质量、重心位置、惯量矩阵等一系列数据通过参数进行配置。提供如下服务:
·末端执行器运动学标定服务。
·末端执行器动力学标定服务。
实现机器人控制系统的对外API,机器人示教器和外部第三方程序通过这些API和机器人系统交互数据。
·OpcUa模块,负责提供系统的OpcUa标准通讯协议。
·SoftPLC模块,负责提供系统的软PLC业务。
系统还包括其它各种业务模块,由于模块化的设计,后续还可以添加例如针对码垛、打磨、焊接等各种工艺模块。
现代机器人控制系统对柔性、模块化提出了诸多需求、根据软件工程的基本原理和机器人控制系统的特征,本文给出了一种模块化的机器人控制系统的设计方法和思路并进行了实现。实现分为两个部分,首先设计实现模块化机器人控制系统的中间层框架,然后基于中间层框架开发了业务系统。目前该系统已经作为产品实际使用,实际使用证明该架构和系统柔性高、鲁棒性强,是一种可以用于机器人控制系统的设计。
[1]付永红,熊飞丽.基于WINDOWS下CNC系统软件模块化设计的研究[J].机电工程, 2000, 17(6):42-44.
[2]曹军威,范玉顺.柔性软件系统的概念,方法与实践[J].计算机科学, 1999, 26(2):74-77.
文章转自中国知网,如有侵权,联系删除
地址:青岛市西海岸新区海滨工业园香海路168号
手机:13806390681 服务热线:0532-86131102
邮箱:qdhengchangkeji@163.com
鲁ICP备18013584号