标题 | 一种机器人控制系统软件框架 |
范文 | 许志瑜
摘 要 本文主要介绍了一种用于机器人控制系统中应用程序的开发框架DAREE。应用程序中每个Applet构成一个业务控制单元,每个业务单元由组件对象组成,实现基本的控制业务需求。同时该开发框架提供了一系列的基本功能模块,如消息队列、定時器等基础服务,实现应用程序的快速开发。 关键词 DAREE Applet 消息队列 定时器 中图分类号:TP249 文献标识码:A 文章编号:1007-0745(2021)02-0011-02 1 前言 近年来,机器人控制系统要求越来越复杂,为了简化应用程序开发过程,提高应用程序开发效率,提出一种应用程序开发框架DAREE,将控制系统中的业务进行管理和拆分,将系统资源进行统一规划。 2 DAREE DAREE(Distributiion Automation Runtime Execute Environment)为Applet的运行提供一套基本的运行环境,并向应用程序提供一系列服务类库[1],该类库实现了对操作系统服务的封装。同时该框架实现了一套设备抽象层,提高应用程序的可移植性(见图2)。 DAREE建立在Linux操作系统之上,以下是概要性描述: (1)DAREE基于嵌入式Linux,分成内核空间和用户空间; (2)最底层是硬件层,控制系统中的一些外围的器件; (3)内核空间为设备驱动层; (4)用户空间分为三层,PAL、SAL、Applet,基于组件的设计思想; (5)PAL是 Platform Access Layer的缩写,是移植层,操作系统相关; (6)SAL是Shared Access Layer 的缩写,包含一系列的类库; (7)应用程序层,不同的业务只需要开发不同的Applet; (8)3rd表示是第三方开发的组件; (9)用C语言进行设计[2],增强平台兼容性。 2.1 组件对象 组件对象分为静态和动态两种方式,静态组件的代码和框架一起参与编译,动态组件的代码独立编译。两种组件使用上并不区分,动态组件的存在是为了将组件的开发和Applet进行解耦,提高组件对象的灵活性和功能扩展性[3]。 2.2 Applet Applet是DAREE上开发应用程序的最小单位,是一个业务逻辑的功能集合。Applet有stop、Starting、Run、Closing、Terminating这五种状态。见下图: (1)一个Applet开始于StartApplet,将Applet处于Stop状态,并开始创建Applet; (2)创建动作完成后,Applet处于Starting状态,并收到EVT_APP_START事件; (3)Applet处理完EVT_APP_START后,进入Run状态,直到用户调用CloseApplet; (4)Applet进入Closing状态,收到EVT_APP_STOP事件; (5)最后Applet会进入Terminating状态,完成Applet和内部资源的释放,结束Applet。 2.3 消息队列 该应用程序框架采用基于消息驱动的方式运行,Applet通过消息接口类,可以快速实现消息队列功能。用户只需要通过IHandle接口生产消息,并通过Send函数将消息发送出去,系统通过消息中的信息找到该消息的事件处理函数进行处理。 2.4 配置管理 配置管理接口IConfig,用于保存各个模块需要保存的配置信息,该框架提供了统一的配置管理接口IConfig, 并通过文件的形式进行配置信息的保存,系统为各个模块分配了统一的标签,模块通过标签获得私有的配置信息。 2.5 定时器 定时器在Applet开发过程中是一种常用功能,提供了延迟服务和异步处理的功能。Timer的实现是通过生成Message并带上时间参数,加入到IMessageQueue队列中,实现了Timer的延时处理能力。 2.6 异步事件 异步事件Resume是DAREE提供的另一个异步事件处理功能,比如用户需要读取一个大数据量文件,可以通过Resume功能分步进行读取。本框架将Resume异步事件设计在DAREE的主线程空闲时进行操作,避免对主业务功能的影响。 2.7 日志管理 日志管理是“查看我关心的信息”。本系统日志管理通过日志等级和过滤字符完成日志管理,通过LOG_V,LOG_D,LOG_I,LOG_W,LOG_E进行日志的等级输出,并通过过滤字符串进行日志过滤来达到日志控制的目的。 2.8 设备控制接口 本系统由IPort接口实现统一的设备控制,并为数据传输提供了一套通用的接口函数,如Read、Write、GetLastError 等等。通过IPort接口,可以打开一个设备,通过read接口进行设备的读取,通过write进行设备的写入操作,实现对一个设备的控制操作。 2.9 内存管理 本系统实现了一套内存检测机制,当Applet退出时,判断Applet是否有内存泄漏现象,如果有则打印出消息,供工程师进行检查。实现原理是在应用程序分配内存时,给内存打上标记,根据标记信息判断是否有内存泄漏。 3 总结 本文提出了一种用于机器人控制系统中应用程序的开发框架DAREE,该框架以Applet为单位管理业务功能模块,通过DAREE提供的系统接口,可以快速实现消息队列、定时器、异步事件处理、日志管理、内存管理等基础功能。 参考文献: [1] Stanley B. Lippman,Josée Lajoie,Barbara E. Moo著. C++ Primer(中文版 第5版)[M].北京:电子工业出版社, 2013. [2] Stanley,B.,Lippman,侯捷译.深度探索C++对象模型[M].北京:电子工业出版社,2012. [3] 埃里克·伽玛(Erich Gamma).设计模式:可复用面向对象软件的基础[M].北京:机械工业出版社,2019. (合肥科大智能机器人技术有限公司南京分公司,江苏 南京 210000) |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。