时间:2024-05-07
李润成
摘要:乐高MINDSTORMS EV3机器人产品被广泛用于开展STEAM和创客教育,然而该产品的电子模块数量相对较少,目前虽有教育者制作新的电子模块,但因为没有对应的程序模块,难以用于教学。因此,本文首先介绍了EV3编程软件和开发软件,然后剖析程序模块的组成内容,最后对每一要素给出具体实现方法。
关键词:乐高;EV3;程序模块;创客教育
中图分类号:G40-057 文献标识码:B 论文编号:1674-2117(2018)20-0073-04
前言
乐高的MINDSTORMS EV3机器人自2013年上市后大受欢迎,其采用官方提供的直观的图形化编程语言,大大降低了使用者的门槛。EV3机器人相对DFRobot、Makeblock等其他机器人教育产品而言,其成熟的积木搭建系统能轻松制作各种复杂机械结构,然而它的传感器等电子模块种类少,不利于更全面的教学应用。笔者通过剖析MINDSTORMS EV3编程软件程序模块研究其内容,总结出该软件程序模块的开发制作方法,希望能为广大教育工作者针对EV3机器人定制的电子硬件模块进行程序模块开发提供借鉴。
MINDSTORMS EV3软件简介
MINDSTORMS EV3软件是图形化的编程环境,包含EV3机器人程序需要的所有工具,该软件基于National Instruments的WebUI Builder开发,软件界面如图1所示。EV3软件中含有多类程序模块,这些模块有的是控制电机的,有的是采集传感器数据的,还有一些是有其他用途的。编程的过程就是在屏幕上拖拽模块,把它们相互连接起来,再更改模块的设置。[1]该软件还具有很好的扩展性,提供了程序模块导入工具,通过该工具可以管理程序模块和导入模块。软件中的每一个图形模块内部有对应的VIX文件,下载运行程序时,程序模块先转化成内部的VIX文件再运行。
MINDSTORMS EV3 DEVELOPER软件简介
MINDSTORMS EV3 DEVELOPER是乐高专门为MINDSTORMS EV3开发者进行软件模块开发而提供的开发环境。MINDSTORMS EV3 DEVELOPER相对MINDSTORMS EV3具有更多高级功能,如程序模块内部的VIX文件编辑和制作。VIX文件采用图形编程语言完成,把各个图形块按照逻辑连接起来实现各种运算和功能。
MINDSTORMS EV3程序模块剖析
EV3程序模块导入到软件前是以文件形式存在的,文件后缀为.ev3b,把后缀改为.zip解压后得到根目录文件夹,文件夹内包含help、images、VIs、strings四个子文件夹和blocks.xml文件。help文件夹存放各国语言命名的文件夹和对应的HTML文件,用于在软件查看帮助时显示不同语言的帮助内容。Images文件夹存放程序模块各种模式和在不同区域显示的图像文件。strings文件夹内有各国语言命名的文件夹和对应的blocks.xml文件,该文件用于定义用户操作程序模块时查看模块的上下文帮助及模块上的文字说明。VIs文件夹存放程序模块不同模式下对应的VIX文件,即模块对应的程序内容。根目录blocks.xml用于定义程序模块的内部名称、程序模块的参数属性、模块不同模式的显示图片内容以及各模块对应的VIX文件。
MINDSTORMS EV3程序模块制作
对于一个新的程序模块,help文件夹内的帮助内容并不是必须的,它不影响程序模块的正常使用功能,本文仅对根目录blocks.xml文件,images、VIs、strings文件夹内容进行介绍。
1.根目录blocks.xml
根目录blocks.xml定义了模块的类别(执行器类、传感器类等)、模块的功能模式以及不同模式对应的VIX程序文件。模块根据功能不同分为测量模式、比较模式等,具体什么功能模式由开发者自己定义。该文件还定义了不同模式下的显示图像和VIX中的参数的类型、范围等。以一个新开发的触摸开关程序模块为例,该模块的根目录blocks.xml内容如图2所示。
(1)EditorDefinitions根元素。该元素是MINDSTORM EV3程序模块根目录blocks.xml文件的规范,文件必须含有该元素作为开头。
(2)PolyGroups和PolyGroup元素。PolyGroups元素定義程序模块组的内容。ModuleName属性定义程序模块组名称,ModuleVersion属性定义程序模块组版本。PolyGroups元素内可以包含多个PolyGroup元素,每个PolyGroup对应一个程序模块,若有多个新的程序模块同时创建,可以把它们都放在一个PolyGroups定义。若block.xml文件内容有严重错误则在使用模块导入向导工具导入时无法显示任何内容。PolyGroup元素设定每个程序模块的内容。Name属性用于定义程序模块组下的单个程序模块名称,该名称可以和PolyGroups的ModuleName属性不一致。BlockFamily属性定义模块属于传感器类、执行器类或其他类别。定义属性时应根据模块的功能选择不同的类别,程序模块会出现在对应类别选择面板中。
(3)Parameter元素。该元素用于设定程序模块不同模式下VIX文件公共参数的属性,属性包含其数据类型、默认值、数据范围和方向等。本文例子中的触摸开关模块有三个公共参数,分别为Port、State和Result。Port对应的CompilerDirectives、Direction、DefaultValue属性分别定义了端口是输入口、方向为输入以及默认值是1.3。State参数对应的Identification、Direction、DataType属性分别定义了该参数显示的图像、数据方向为输出以及类型为布尔型,其设定效果如图3所示。Result参数的定义方法和前两个参数一样。
(4)Hardware元素。该部分内容只适用于传感器功能的程序模块,其他类别的程序模块不需要该部分内容。EV3PlotColor元素为软件数据记录模式下线条的显示颜色。EV3AutoID元素用于软件对传感器种类的识别,第三方开发的传感器模块可以使用-1和官方的传感器进行区分,由于举例的触摸开关模块为传感器,因此Direction元素指定方向为输入。DefaultPort元素确定模块拖拽到编程界面时的默认端口,1.3表示为3号端口。
(5)Block元素。该元素用于定义程序模块每个模式对应的VIX文件、模式特有的参数和在一些参数改变时显示的图像。对于一个传感器模块,通常可以设定为三种模式,即测量模式、比较模式和更改模式,对于每个模式最重要的内容就是内部的VIX文件。
(6)Mode元素。该元素定义程序块模式,注意该模式名称与images文件夹中对应的模式显示图像关联,否则对应模式的图像以及模块的上下文帮助不显示。Reference Type属性定义VIX使用的函数库,对于第三方程序模块函数库为“VIlib”,Name属性选择对应模式的VIX。ParameterReference元素列出VIX使用的实际参数名称,这些参数必须已经在PolyGroup中进行了定义。PalttteInfo元素设定默认模式和模块在选择面板中的位置,含有该内容的模式会成为默认模式,即程序模块拖拽到界面时显示的模式。Weight属性确定模块出现在选择面板从左到右的位置。BlockInterface元素内容可设为Measure、Compare、Change三者之一,设定值与模块的模式对应一致。HardwareModeInfo元素定义传感器在数据记录模式下的内容。Name属性设定为所需名称,ID属性标记传感器的类型,如果传感器模块为数字型的,可设为0,Range为数据范围,数字型传感器设为0,1。Unit为单位,数字型传感器无单位,设为空。上述为测量模式的Block元素内容介绍,另外的比较和更改模式的定义方法和测量模式一样,只是它们不需定义HardwareModeInfo元素的相关内容。
2.images文件夹
Images文件夹存放程序模块的图像文件,以新建的触摸开关模块为例,其图像文件如图4所示。对于新程序模块,需要设定其在选择面板、编程面板和在端口查看硬件列表的显示图像。图像的名称要根据程序模块的模式,以及所在面板按照一定命名方式设置,否则图像不能显示。
(1)选择面板图像。命名方式为PolyGroup_
_Palette.png,图像大小为20×20。
(2)编程面板图像。命名方式为PolyGroup_
_Diagram.png,图像大小为34×34。
(3)程序模块模式图像。命名方式为PolyGroup_
_Mode_ _Mode_ (4)端口查看硬件图像。命名方式为PolyGroup_ _Category.png。 3.VIs文件夹 VIs文件夹存放程序模块不同模式下的VIX文件。VIs目录中有PBR和NXT两个文件夹,一般只需在PBR文件夹中放入VIX文件即可,NXT文件夹可为空。触摸开关程序模块测量模式、比较模式和更改模式三种模式的VIX文件分别为TouchSValue.vix、TouchSCompare.vix和TouchSChange.vix。双击程序模块便进入程序模块的VIX编辑界面。VIX文件的制作通过图形编程语言完成,该语言和LabVIEW使用的图形化编程语言一样。测量模式TouchSValue.vix内容如图5所示。PBrickConvertInput和PBrickInputRead为软件内部库函数,直接调用即可,软件自带的库函数都会以带问号的图形块显示。 4.strings文件夹 Strings文件夹中放有不同国家语言文件夹,其中有对应的blocks.xml文件,该blocks.xml与根目录的blocks.xml非同一文件,该文件主要提供程序模块的可见名称、上下文帮助和帮助URL,简体中文的blocks.xml应放在命名为zh-Hans的文件夹。以新创建的触摸开关程序模块为例,其内容如图6所示。该文件内容主要对PolyGroups、PolyGroup、Parameter和Block这四元素进行设定。注意此处Parameter和Block的内容是分别对多个程序模块的参数和多个模式进行定义,它们的设定方法都相同,因此仅对其中一个Parameter元素和Block元素进行介绍。 (1)EditorStrings根元素。与根目录blocks.xml文件相似,该元素是MINDSTORM EV3程序模块strings中block.xml开发的规范格式,文件必須含有该元素作为开头。 (2)PolyGroups元素。ModuleName属性要与根目录的blocks.xml中的PolyGroups ModuleName属性一致,否则两个block.xml文件内容无法关联,程序模块文字内容无法显示。 (3)PolyGroup元素。Name属性也需与根目录的blocks.xml中的PolyGroup元素Name属性一致,DisplayName和DisplayNamePrefix均设为显示的名称。 (4)Parameter元素。该部分定义参数的显示名称和描述,Name属性设为参数名,DisplayName为参数显示的文字,Description为参数的描述内容,设定不同参数时只需修改对应的文字内容。 (5)Block元素。该元素的Mode属性要和根目录的blocks.xml中的Mode属性一致,DisplayName为模式显示的文字,Description为模式的描述,对于不同模式,只需修改对应的文字描述内容。 结语 MINDSTORMS EV3机器人是一款优秀的教育产品,其直观易用的编程软件界面和成熟的积木结构搭建体系深受大家喜爱,但是它的局限性在于电子模块数量不足和对应程序模块缺乏。广大教育工作者可弘扬创客精神,开发新的电子硬件模块以及相应的程序模块,进一步发掘它的潜力和丰富它的教学内容,使学生创作出具有更多新功能的EV3机器人。 参考文献: [1](美)Terry Griffin.乐高机器人EV3程序设计艺术[M].韦皓文,等,译.北京:人民邮电出版社,2016. [2]潘一佩.面向教育机器人的图形化编程模块设计及优化[D].广州:华南理工大学,2017.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!