APP下载

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

2021-07-02许志瑜

科海故事博览 2021年4期
关键词:程序开发日志应用程序

许志瑜

(合肥科大智能机器人技术有限公司南京分公司,江苏 南京 210000)

1 前言

近年来,机器人控制系统要求越来越复杂,为了简化应用程序开发过程,提高应用程序开发效率,提出一种应用程序开发框架DAREE,将控制系统中的业务进行管理和拆分,将系统资源进行统一规划。

2 DAREE

DAREE(Distributiion Automation Runtime Execute Environment)为Applet 的运行提供一套基本的运行环境,并向应用程序提供一系列服务类库[1],该类库实现了对操作系统服务的封装。同时该框架实现了一套设备抽象层,提高应用程序的可移植性(见图2)。

图2 DAREE 系统架构图

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 状态迁移图

(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 提供的系统接口,可以快速实现消息队列、定时器、异步事件处理、日志管理、内存管理等基础功能。

猜你喜欢

程序开发日志应用程序
一名老党员的工作日志
浅析大学生在兼职小程序开发中遇到的问题
扶贫日志
APP应用程序开发模式探究
删除Win10中自带的应用程序
雅皮的心情日志
谷歌禁止加密货币应用程序
雅皮的心情日志
基于App inventor 2手机程序开发过程的学习与实——以“喵喵定时器”APP开发为例
三星电子将开设应用程序下载商店