付东翔 李菲菲 傅迎华 胡春燕 尹钟 刘丽
摘 要:为了使智能本科专业的嵌入式系统教学能够与主流的机器人操作系统ROS紧密结合,适应当前机器人技术发展的最新应用,突出本专业嵌入式系统课程的专业特色,介绍课程的理论教学内容选择、实验内容及安排,说明本课程对后续本专业其他课程、课程设计等的支撑作用,强调对大学生教学实践比赛的有利推动作用。
关键词:智能科学与技术;嵌入式系统;课程设计
0 引 言
智能科学与技术本科专业培养工作和内容是人工智能、机器人、计算机等交叉学科内容的教学。专业内容涉及机器人技术、各类智能技术与系统、新一代的人机系统技术等。嵌入式系统是计算机、自动化、电气等本科专业的核心专业课程之一,其内容是在微机原理、单片机技术和C语言程序设计等课程基础上更高层次的专业知识[1-4]。
当前信息技术的飞速发展,尤其工业机器人技术不断渗透、应用到各个生产和社会生活领域。面对机器人技术的发展和应用,智能专业的培养计划和课程内容应该包括和不断扩大机器人相关领域的知识。目前与嵌入式系统课程有关的机器人领域的主流关键技术之一是ROS机器人操作系统[5]。ROS是开源、基于Ubuntu系统的机器人操作系统,提供类似操作系统所提供的功能,包含硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间的消息传递、程序发行包管理等[6]。现在越来越多的机器人厂商尝试使用ROS,包括占据最多工业市场份额的机器人四大家族和各种流行的研究型机器人。
1 教学内容
1.1 目标定位
随着目前机器人技术的不断发展和应用,本课程的目标定位:熟悉ARM Cortex-A内核处理器的硬件结构和功能,熟悉和掌握ROS机器人操作系统的体系结构、任务间通信机制、功能包设计方法;强化学生在ROS系统下的应用设计能力,为后续专业课程教学实践奠定工作基础。
1.2 内容调整
原有课程内容:①硬件系统,STM32的32位的ARM Cortex-M3内核的控制器;②嵌入式操作系统,?C/OS-II操作系统。
现有课程内容:①硬件系统,TI的32位的ARM Cortex-A8处理器;②嵌入式操作系统,基于Ubuntu的ROS操作系統。
基于以上内容,教学理论和实验内容调整前后对比见表1、表2。
2 理论教学与实验教学
嵌入式系统教学是在理论基础上强调实践性。理论教学分为两大部分:①ARM Cortex-A8内核处理器硬件结构和功能,硬件设备树Device Tree机制;②ROS操作系统原理和运行架构;节点、消息、主题、服务等基本概念;节点、主题以及消息等相互之间的关系、节点之间消息传递机制。实验教学是理论教学的实践,让学生认识和动手实践理论的内容。
2.1 理论教学内容
(1)处理器硬件内容:以ARM Cortex-A8内核处理器为重点,以TI(德州仪器)公司Sitara Processors系列中的AM3359为对象,对Cortex-A8内核处理器的硬件片内资源和功能予以介绍;Ubuntu操作系统下的硬件操作和驱动基于设备树文件实现。
以设备树Device Tree机制及其规范为主要内容展开。
①设备树(Device Tree)基本概念及作用:设备树是一种描述硬件资源的数据结构,作用是将硬件外设与相应的驱动程序直接进行绑定,系统启动时加载设备树文件并配置各种硬件资源,通过bootloader(启动程序)将硬件资源传给操作系统内核,使得内核和硬件资源描述相对独立,其基本数据结构如下:
{ #address-cells = <1>; // 子节点中reg属性中address值;
#size-cells = <1>; // 子节点中reg属性中size值;
chosen { }; // 描述由系统指定的runtime parameter ;
aliases { }; // 定义别名;
memory { device_type = "memory"; reg = <0 0>; }; // 设备类型,起始地址和大小;
};
②设备树的组成和使用:设备树包含DTC(device tree compiler),DTS(device tree source)和DTB(device tree blob)。
DTS文件:是一种ASCII文本对Device Tree的描述,放置在ROS内核的/arch/arm/boot/dts目录下,一个DTS文件对应一个ARM的硬件资源。
DTSI文件:硬件系统中每个子系统都有一个DTS文件。这些文件会有许多共同部分,为减少代码的冗余,设备树将这些共同部分保存在DTSI文件中,供不同的DTS使用。
③设备树中DTS文件的基本语法与举例:根据设备树的基本概念,给出TI的AM3359处理器的ADC外设的DTS文件格式,AM3359的ADC部分有8个通道,其控制器寄存器ADC_TSC_SS, 地址为 0x44E0_D000,部分文件代码如下:
#address-cells = <1>;
#size-cells = <1>;
tscadc {
compatible = "ti,ti-tscadc";
reg = <0x44e0d000 0x1000>;
interrupt-parent = <&intc>;
interrupts = <16>;
ti,hwmods = "adc_tsc";
status = "okay";endprint
adc {
ti,adc-channels = <0 1 2 3 4 5 6 7>;
};
};
通过上述ADC部分DTS文件举例说明硬件外设在文件中的描述,对其他GPIO、PWM、定时器等不同系统外设,其DTS文件形式类同。每个DTS文件共同的部分代码存放于DTSI文件中。通过这种举例,强调DT设备树机制的优点:操作系统内核中不再充斥着与硬件有关的代码,操作系统因此瘦身和精简,操作系统与硬件无关性得到实现。
(2)操作系统主要内容:ROS系统框架及其内部运行机制, ROS系统下任务之间的通信机制和概念:节点(node)、消息(message)、主题(topic)、服务(service),它们之间消息订阅和发布如图1所示。
①节点。节点就是执行运算任务的进程,一个系统是由很多节点组成的,节点也被称之为“软件模块”。
② 消息。节点之间是通过传送消息进行通讯的。每一个消息都是一个严格的数据结构,不但支持标准的数据类型如整型、浮点型、布尔型等,也支持数组类型。消息可以包含任意的嵌套结构和数组,类似于C语言的结构structs。
③主题。消息以一种发布(publish)/ 订阅(subscribe)的方式传递。一个节点可以在一个给定的主题中发布消息,一个节点对某个主题关注与订阅特定类型的数据,可能同时有多个节点发布或者订阅同一个主题的消息。如图1所示,Master为节点管理器。
④服务。基于主题(topic)的发布/订阅模型的广播通讯方式范围过大,为简化节点间的通信,在ROS中,用一个字符串和一对严格规范的消息定义:一个用于请求,一个用于回应。类似于 web服务器是由URIs定义的,同时带有完整定义类型的请求和回复文档,称为一个服务,如图1所示。
2.2 实验教学内容
将理论内容以实践形式呈现给学生,嵌入式系统课程实验中Cortex-A内核的MPU(处理器)与原来的MUC(控制器)级硬件系统实验不同在于:①片内外设GPIO、A/D等硬件控制通过DTS设备树文件配置和驱动,而Cortex-M内核控制器硬件资源相对简单,硬件功能的配置通过控制库函数调用实现;②软件系统:ROS系统的原理和程序框架;功能包开发步骤;节点、消息、服务等通信机制与?C/OS-II系统差别很大。
因此,本课程实验基于上述内容展开,分为3部分内容。
①ROS系统程序框架与功能包设计实验:程序框架:在ROS中,所有的软件都是以ROS包或功能包形式存在的,ROS包是用于实现特定功能的相关文件的集合,包括可执行文件和其他支持文件;实验内容:功能包的创建、编辑和编译运行。该实验让学生熟悉ROS功能包的开发环境和过程。
②设备树(Device Tree)文件创建和程序运行实验:实验主要包括GPIO、ADC等外设控制的DTS文件、DTSI文件的编写和编译;通过上位机终端发送命令加载DTBO文件。控制LED、ADC等外设的工作。通过该实验使得学生能够认识和掌握硬件外设的DTS驱动文件格式和编写。
③ROS系统下节点间通信实验:利用ROS系统下的“海龟仿真运动”程序包(turtlesim)进行任务节点通信和运行实验。该实验通过创建两个节点,一个节点控制“海龟”的运动,另外一个节点捕捉键盘事件,同时发送命令消息。通过该实验,让学生认识和理解ROS节点之间消息传递的通信机制。
3 本课程与其他智能专业课程、课程设计与本科创新实践
基于ROS的嵌入式系统教学内容为本专业其他智能专业课程如自然语言理解、智能检测技术与系统、自主移动机器人技术、专业课程设计等奠定了较好的硬件和软件基础。
首先,在嵌入式系统内容的学习中,学生已经能够熟悉ARM Cortex-A8处理器的硬件功能和结构,以及ROS系统下任务以节点形式运行、节点间的通信机制和功能包的开发。为后续课程和实践比赛奠定了一个软硬件实验共享平台:自然语言处理课程上的语言包、自主移动机器人技术的定位算法、智能检测技术与系统的传感器硬件检测与软件数据处理等都能够在这个平台上实验和运行;学生在专业课程设计中可以设计、集成一个机器人系统功能:以本课程的实验环境,实现传感器检测、语音处理、自主定位等机器人系统常用的功能。
其次,通过本课程内容的学习,为学生申请和完成本校和上海市的大学生创新项目奠定了工作基础。本专业学生近年来连续获得多项上海市大学生创新项目和我校本科创新项目,如2017年上海市大学生创新项目“基于Ubuntu系统的机器人仿真平台设计”(SH2017035)等。
最后,为本专业学生参加各类全国大学生智能大赛奠定了较好的硬件、软件基础,如“华为杯全国大学生智能大赛”“华为杯电子设计大赛”等。同时也将为本专业学生参加此类比赛培育众多参赛队员。图2(a)(b)为硬件实验设备。
4 结 语
面向应用的智能专业嵌入式系统教学以ARM Cortex-A8内核的处理器为硬件对象,以ROS操作系统为软件平台,围绕着处理器的硬件设备树结构及其语法格式,ROS系统基于节点通信的程序运行机制等两个方面展开内容,使得学生能够理解面向机器人操作系统的硬件组成和功能原理,能够充分理解、熟悉和掌握ROS机器人操作系统框架和程序运行机制。
课程内容安排为本专业其他相關课程、后续课程设计、创新实践和大学生教学实践比赛奠定一个开发、实验共享平台,ROS系统的开放性能够让学生开发自己的算法包,如自然语言理解、智能信息处理、机器人移动技术等课程的算法可以在这个平台上调试和运行验证,使得嵌入式系统该门课程更好地支撑后续专业课程算法实验,进而为专业课程设计奠定了硬件、软件基础。
在目前机器人技术应用逐渐进入工业自动化领域和各个生活领域并且已经开始取代一些人类重复性工作的大趋势下,通过对ROS系统的熟悉和掌握,将使得智能科学与技术的专业学生专业应用能力更具有针对性和专业性。
参考文献:
[1] 孙红, 蒋念平, 陈玮, 等. 智能科学与技术专业理论教学与工程实践的融合[D]. 上海:上海理工大学, 2012.
[2] 卡莫尔(印度). Embedded Systems: Architecture, Programming and Design[M].贾建斌, 李化, 译. 北京: 清华大学出版社, 2010.
[3] 张俊, 陈飞, 冯士刚. 大连海事大学“智能科学与技术”本科专业建设实践[J]. 计算机教育, 2012(18): 22-27.
[4] 王万森. 适应智能化应用发展趋势, 培养创新型智能科技人才[J]. 计算机教育, 2013(19): 37-39.
[5] 奥凯恩·杰森(美)机器人操作系统浅析[M]. 肖军浩, 译. 北京: 国防工业出版社, 2015.
[6] 恩里克·费尔南德斯(西). ROS机器人程序设计(原书第二版)[M]. 北京: 机械工业出版社, 2016.
[7] 马丽梅. Ubuntu Linux操作系统与实验教程[M]. 北京: 清华大学出版社, 2014.
(编辑:郭田珍)endprint