APP下载

基于量子框架的六自由度机器人控制系统研究

2015-05-28董伯麟

组合机床与自动化加工技术 2015年12期
关键词:状态机线程量子

董伯麟,鞠 毅

(合肥工业大学机械与汽车工程学院,合肥 230009)

0 引言

机器人技术是建立在机械、微电子、控制、人工智能技术等基础上的一门高新技术。经过60多年的发展,如今机器人已经成为工厂自动化 (FA)、柔性制造系统(FSM)中必不可少的单元[1-2]。

机器人系统和数控系统一样,是一个行为复杂的系统,当向原有系统中添加新的功能需求、更新或替换已存在的子系统时,其控制逻辑和行为状态将必然发生很大改变[3]。目前机器人系统主要针对机器人硬件结构方面的重构进行了研究,通过将可重构模块化的概念引入到机器人系统设计中,增加其可复用性[4]。在软件上也主要以标准总线为基础,通过总线的易扩展性实现系统的行为重构和功能扩展,但其开放性还很低,还是一个封闭式结构[5]。

本文提出一种基于量子框架的六自由机器人控制系统的设计,在硬件方面将嵌入式平台跟机器人控制系统的设计相结合,大大降低了系统硬件成本并增加了系统的灵活性。同时在机器人控制系统软件设计中引入量子框架的编程思想。量子框架结合面向活动对象的概念,针对操作系统实时性的需求,以事件驱动和活动对象为基础,实现了更高层次上的封装,有效地解决了应用软件与操作系统的耦合问题。在该系统下,模块之间耦合性低、可重构程度高,系统的可靠性更强。

1 基于量子框架的软件架构

量子框架(QF)是一个可移植和可重构的基础软件框架特别适合嵌入式实时系统领域。在软件设计过程中,量子框架可看作系统轻量级软件总线,在这个软件总线上连接多个的活动对象和硬件中断服务程序ISR,量子框架负责事件的存贮、分发,也就是事件驱动,起到信息交换中心的作用。在控制系统设计过程中,可将传统软件的各个模块划分为不同的活动对象,活动对象是一个并发执行、被赋予了轻量级控制各自线程的事件驱动对象。活动对象之间不直接共享资源,它们之间惟一的通信是通过量子框架这个“应用骨架”订阅和发布不同的事件实例进行交换。QF的结构对于任何基于活动对象的框架来说都是典型的。QF的通用结构具有以下特点①QF是采取分层设计,在实时系统多线程的基础上,给活动对象提供事件队列和内存池的服务;②QF是一套相互协作的类,能给活动对象提供基类,从而派生具体的活动对象。并为每个活动对象分配执行线程和事件队列;③基于QF的应用程序通过从活动对象和事件派生子类来扩展框架。应用程序通过量子框架应用程序接口来使用的通信和定时服务,不需要直接访问底层实时系统API[7]。其基础结构如图1所示。

图1 量子框架基础结构

2 活动对象的构建

在构架一个基于QF的控制系统应用最重要的步骤是构建具体的活动对象。和其他的基于活动对象的框架一样,QF也提供了一个基类(QActive)来规划具体的活动对象。它包含了3个基本要素:①是一个有限层次状态机;②有一个事件队列;③有一个执行线程,如图2所示。

图2 活动对象类图

2.1 有限层次状态机

每个具体的活动对象都是一个有限状态机,它间接继承于QHsm基类,使得行为继承模式能够全部并迅速的用于构造活动对象[8]。用户在规划活动对象时,就不需要考虑活动对象的一些附加元素例如事件队列和执行线程等,只需要将重点放在比如内部状态机状态的转换和事件的细化方面来。QF最大的好处之一就是对快速构造可执行模型(活动对象)的支持。框架有助于将构成应用的活动对象快速地放置在一起,然后逐步地细化其内部细节,以保持应用的执行的稳定性。

状态机目前最流行的技术是嵌套的switch语句,使用标量状态变量作为switch第一级中的鉴别器,并在第二级中使用事件信号。用户只需根据活动对象内部状态的转换,规划状态转换路径和状态处理函数,完成活动对象的构建。图3为IO状态机的具体实现的部分代码,其代码如下:

图3 IO状态机的具体实现的部分代码

2.2 执行线程的实现

执行线程具有平台依赖性,在不同的操作系统中,有不同的执行方式和代码。SDOF机器人软件程序通过VS2005软件进行编写,最后烧入到WinCE 6.0平台中去,所以下图4列出了在Win32环境中执行线程的代码,该代码提供了重新将活动的对象的优先级映射到下层操作系统所支持的线程优先级的一个实例。

图4 活动对象执行线程代码

机器人控制系统中主要任务有实时监控、位置控制、IO信号处理、译码、插补、界面显示等任务。实时监控是紧迫性任务,当机器人运行出现异常和故障时,应该立即启动报警,并采取自动保护措施,因此,伺服监控任务具有最高优先级。位置控制是关键性任务,位置控制的精度直接影响机器人的工作精度,运动控制的性能好坏影响机器人动力学特性和寿命,它的优先级仅次于伺服监控任务。I/O信号处理主要任务是面板和开关量信号的传递和处理,也要求一定的实时性,所以它的优先级次于位置控制。译码任务主要是处理代码数据文件,不是关键性紧迫任务,只有在译码方式执行时才要求具有实时性[9]。显示任务实现控制系统和用户交互,非关键非紧迫任务,优先级可以安排较低。根据上述分析,数控系统中优先级按照高到低安排如下:伺服监控任务,位置控制任务,IO信号处理,插补任务,译码任务,显示模块,各个活动对象的优先级的可以根据实际情况可调。

2.3 事件队列

事件队列是活动的对象的基本成分,因为它保证了每个活动对象使用RTC形式处理每个事件。事件队列可看作是一个提供外部接口的外壳。它将事件注入活动对象中,并同时保护在RTC处理过程中保护内部状态,使得相应的活动对象看起来易于接受事件,并提供了保护内部状态机的缓冲空间,防止事件爆发产生带来的破坏。在各自的线程中执行的活动对象能自由地彼此抢占,因而达到更好的响应特性和对CPU的高效率利用。

2.4 出版-订阅模型

QF是一个事件驱动框架,应用程序可以创建事件实例,放到事件池中,并分发事件到相应注册了这个事件的活动对象(AO)中。应用程序可以注册特定的事件,当有事件发生时,QF就会分发事件到AO中。应用程序是由多个AO组成,每个AO可以认为是一个任务。把硬件中断程序也当作AO看待,只是优先级比较高[9]。

活动对象之间通过异步事件交换进行通信。QF使用了出版-订阅交互模型来进行活动对象之间事件和信息的交互与传递。可以把QF理解为软件总线。在这个软件总线上连接着很多的活动对象和中断服务程序ISR,QF负责事件的存贮、分发,也就是事件驱动。图5显示了QF中出版-订阅模型的运行机制,其中事件的分发有两种分发方式。①直接分发事件:一个AO直接分发事件到另一个AO,就是直接投递事件。这种方式分发事件的AO要知道目标AO。使用void QActive_postFIFO(QActive*me,QEvent const*e)函数分发事件。②P/S分发事件:利用量子框架中的AO订阅事件表,以P/S(Publish-Subscribe出版-订阅)方式分发事件,也就是P/S投递事件。这种方式分发事件活动对象之间不需要知道目标对象,QF通过查找活动对象订阅事件表就知道把事件分发到什么地方,使得活动对象之间具有松耦合性,从而易于系统模块之间的可重组。

图5 出版-订阅模型运行机制

2.5 量子框架的运行

图6展示了在Win32下QF应用中的main()结构。在典型地初始化框架和启动各个活动对象之后,main()进入一个for永久循环,周期性地调用QF::tick()始终节拍,提供任务级的事件管理机制。

图6 QF应用下main结构

3 SDOF机器人控制系统的具体实现

3.1 SDOF机器人系统的硬件结构

SDOF-ROBOT是以WindowsCE6.0为软件平台的嵌入式数控系统,机器人控制系统采用ARM+运动控制卡结构,组成该数控系统的硬件结构如图7所示。系统采用主从式多CPU结构[10],ARM工业主板具有主CPU,通过PC/104总线分别与六轴运动控制卡及PC/104数据采集卡相连。上位机采用Windows CE嵌入式系统进行系统管理等弱实时任务的调度,下位机采用运动控制卡调度以运动控制为主的强实时控制任务。

图7 SDOF-ROBOT硬件结构

3.2 SDOF机器人系统的软件实现

SDOF-ROBOT系统包括IO活动对象、Decode活动对象、InterP活动对象、HMI活动对象等。活动对象的具体实现最重要的是状态图,通过在量子框架特有的建模工具(QM)中规划每个活动对象的简要状态图,其具体实现如下:

IO活动对象:主要检测I/O信号,管理示教盒的按键输入响应。该活动对象的状态机分为空闲和工作两个子状态,其简化状态图如图8所示。首先状态机进入空闲状态,在空闲状态下,I0活动对象不断检查是否有键按下或者信号的输入。当有信号输入时,状态机从空闲状态转换到工作状态,在工作状态中会创建一个该按键或信号的事件,并将该事件出版到QF中,由QF将该事件分发给其他活动对象。

图8 IO活动对象状态图

Decode活动对象:主要对程序进行编译和预处理,并将编译后的程序以事件实例的方式出版给插补活动对象。Decode活动对象接受从量子框架传来的事件实例(包含有加工代码信息),直接进入译码子状态,它分段完成译码工作,并将数据存入译码缓冲区;接着进入速度处理状态,从译码缓冲区取出数据,进行速度预处理计算,形成按指令类型及长度分成的多个指令段,并以事件实例的形式出版给量子框架,由框架把该事件实例传送给插补活动对象,进行插补计算。在分发指令状态机中,需订阅运动控制卡指令处理完成事件、运动控制卡指令等待事件,其简化状态图如图9所示。

图9 Decode活动对象状态图

插补活动对象:管理运动控制卡插补工作,其简化状态图如图10所示。在插补空闲状态,状态机接收到INTERP_EVT事件后进行插补工作状态,系统根据直线、圆弧插补算法以及预处理信息,计算出每个插补周期Ts内向各轴电机应该发送的脉冲数,完成插补工作后向位置控制活动对象发送事件,控制伺服电机运行。

图10 插补活动对象状态图

HMI活动对象:主要负责界面显示,参数设置,程序编辑等,并对整个机器人系统的运行进行监控。在机器人系统开始运行后,会进入Idle伪状态,系统完成一些初始化操作如调用Gui显示函数等。根据特定的按键事件,进入不同的工作状态。例如在自动运行状态,会首先进入程序代码输入子状态,并在终端显示自动运行界面,等待加工代码输入。状态图如图11所示。

图11 HMI活动对象状态图

六自由度机器人活动对象的规划与数控机床具有相似之处,但机器人跟数控机床不同在于机器人具有示教-再现的功能,相对于数控机床更为复杂化,根据机器人运行过程的特性和状态,可以将机器人控制系统的再现-示教功能划分在手动模式中,当机器人进入手动模式后,按下示教按钮,可手动进行示教,方便操作。

3.3 SODF机器人软硬件平台

根据在QM建模工具所规划的机器人状态图,开发机器人控制系统软件。SODF机器人为工业机器人,其用途主要是用于车床自动上下工件,从而节省劳动力并加快工作效率。图12~图14为机器人的软硬件平台实物图,正在测试运行。

图12 机器人控制器和示教盒

图13 机器人自动回原点界面图

图14 机器人自动运行界面图

4 结束语

本文通过将面向活动对象的设计方法应用到机器人系统的开发中,构建一种可重用的基于量子框架的控制系统软件框架,测试表明:

①运行过程中各个活动对象之间通过量子框架进行事件和信息的交换,系统中的各模块之间是松耦合的关系。在需要增加新的模块时,只需考虑修改原有的活是否满足新功能,如果满足不了,增加新的活动对象,修改状态图和事件处理方式即可,无需对整个系统的重新编写,实现真正意义上的可重构。

②QF特有的QM建模工具使得规划活动对象状态图时更加便捷和清晰。同时量子框架提供完整的框架基础代码,具有自动代码生成综合功能,避免程序设计过程中大量文档的编写和重复,并提供了控制系统的可移植性。

③量子框架使用RTC(Run To Complete)形式处理事件,排除了内部的并发问题,大大降低了系统运行过程中出现竞争、死锁和不确定等问题的概率,提高了系统的可靠性和安全性。

[1]毕胜.国内外工业机器人的发展现状[J].机械工程师,2008(7):5-8.

[2]胡贵钱.我国机器人技术获得突飞猛进发展[J].世界科学技术,1998(2):22-24.

[3]CHITOS ,WASHBURNJ ,WANGS ,et al.Specifying reconfigurable control flow for open architecture controller[J].Proceedings 1998 Japan-USA Symposium on Flexible Automation ,1998 ,7(2):659 -666.

[4]刘思宁,陈勇,张文俊.模块机器人及计算机辅助设计[J].机器人,1999,1(6):16 -21.

[5]王太勇,李波,万淑敏,等.基于现场总线的可重构数控系统的研究[J].计算机集成制造系统,2006,10(12):1662-1667.

[6]时良仁.基于DSP的机械手开放式运动控制器设计[J].齐齐哈尔大学学报(自然科学版),2011,27(3):14-16.

[7]Miro Samek.嵌入式系统的微模块化程序设计—实用状态图C/C++实现[M].北京:北京航空航天大学出版社,2004.

[8]李霞,王永章,梁宏斌,等.有限状态机在开放式数控系统中的应用[J].计算机集成制造系统 -CIMS,2005,11(3):428- 432.

[9]杨凡.嵌入式数控软件平台关键技术研究[D].武汉:华中科技大学,2007.

[10]朱华炳,罗祖平,董伯麟,等.面向活动对象的可重构数控系统软件设计[J].中国机械工程,2012,24(6):781 -786.

[11]Liandong Pan,Xinhan Huang.Implementation of a PC-based Robot Controller with Open Architecture.[C]Proceedings of the 2004 IEEE International Conference on Robotics and Biomimetics,Shenyang,China,August 2004,22-26.

[12]Douglass BP.State machines and statecharts.Proceedings of embedded systems conference[C].San Francisco,2001.

[13]李洪斌,张承瑞.基于量子框架的开放式汽车电控系统体系结构[J].吉林大学学报(工学版),2006,36(2):168-171.

猜你喜欢

状态机线程量子
《量子电子学报》征稿简则
《量子电子学报》征稿简则
基于C#线程实验探究
决定未来的量子计算
基于国产化环境的线程池模型研究与实现
基于有限状态机的交会对接飞行任务规划方法
线程池调度对服务器性能影响的研究*
新量子通信线路保障网络安全
基于Spring StateMachine的有限状态机应用研究
基于反熔丝FPGA的有限状态机加固设计