栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > 学术 > 学术期刊 > 科海故事博览

一种机器人控制系统软件框架

一种机器人控制系统软件框架

许志瑜

摘 要 本文主要介绍了一种用于机器人控制系统中应用程序的开发框架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)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/xueshu/516019.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号