李潤成
摘要:樂高M(jìn)INDSTORMS EV3機(jī)器人產(chǎn)品被廣泛用于開展STEAM和創(chuàng)客教育,然而該產(chǎn)品的電子模塊數(shù)量相對較少,目前雖有教育者制作新的電子模塊,但因為沒有對應(yīng)的程序模塊,難以用于教學(xué)。因此,本文首先介紹了EV3編程軟件和開發(fā)軟件,然后剖析程序模塊的組成內(nèi)容,最后對每一要素給出具體實現(xiàn)方法。
關(guān)鍵詞:樂高;EV3;程序模塊;創(chuàng)客教育
中圖分類號:G40-057 文獻(xiàn)標(biāo)識碼:B 論文編號:1674-2117(2018)20-0073-04
前言
樂高的MINDSTORMS EV3機(jī)器人自2013年上市后大受歡迎,其采用官方提供的直觀的圖形化編程語言,大大降低了使用者的門檻。EV3機(jī)器人相對DFRobot、Makeblock等其他機(jī)器人教育產(chǎn)品而言,其成熟的積木搭建系統(tǒng)能輕松制作各種復(fù)雜機(jī)械結(jié)構(gòu),然而它的傳感器等電子模塊種類少,不利于更全面的教學(xué)應(yīng)用。筆者通過剖析MINDSTORMS EV3編程軟件程序模塊研究其內(nèi)容,總結(jié)出該軟件程序模塊的開發(fā)制作方法,希望能為廣大教育工作者針對EV3機(jī)器人定制的電子硬件模塊進(jìn)行程序模塊開發(fā)提供借鑒。
MINDSTORMS EV3軟件簡介
MINDSTORMS EV3軟件是圖形化的編程環(huán)境,包含EV3機(jī)器人程序需要的所有工具,該軟件基于National Instruments的WebUI Builder開發(fā),軟件界面如圖1所示。EV3軟件中含有多類程序模塊,這些模塊有的是控制電機(jī)的,有的是采集傳感器數(shù)據(jù)的,還有一些是有其他用途的。編程的過程就是在屏幕上拖拽模塊,把它們相互連接起來,再更改模塊的設(shè)置。[1]該軟件還具有很好的擴(kuò)展性,提供了程序模塊導(dǎo)入工具,通過該工具可以管理程序模塊和導(dǎo)入模塊。軟件中的每一個圖形模塊內(nèi)部有對應(yīng)的VIX文件,下載運行程序時,程序模塊先轉(zhuǎn)化成內(nèi)部的VIX文件再運行。
MINDSTORMS EV3 DEVELOPER軟件簡介
MINDSTORMS EV3 DEVELOPER是樂高專門為MINDSTORMS EV3開發(fā)者進(jìn)行軟件模塊開發(fā)而提供的開發(fā)環(huán)境。MINDSTORMS EV3 DEVELOPER相對MINDSTORMS EV3具有更多高級功能,如程序模塊內(nèi)部的VIX文件編輯和制作。VIX文件采用圖形編程語言完成,把各個圖形塊按照邏輯連接起來實現(xiàn)各種運算和功能。
MINDSTORMS EV3程序模塊剖析
EV3程序模塊導(dǎo)入到軟件前是以文件形式存在的,文件后綴為.ev3b,把后綴改為.zip解壓后得到根目錄文件夾,文件夾內(nèi)包含help、images、VIs、strings四個子文件夾和blocks.xml文件。help文件夾存放各國語言命名的文件夾和對應(yīng)的HTML文件,用于在軟件查看幫助時顯示不同語言的幫助內(nèi)容。Images文件夾存放程序模塊各種模式和在不同區(qū)域顯示的圖像文件。strings文件夾內(nèi)有各國語言命名的文件夾和對應(yīng)的blocks.xml文件,該文件用于定義用戶操作程序模塊時查看模塊的上下文幫助及模塊上的文字說明。VIs文件夾存放程序模塊不同模式下對應(yīng)的VIX文件,即模塊對應(yīng)的程序內(nèi)容。根目錄blocks.xml用于定義程序模塊的內(nèi)部名稱、程序模塊的參數(shù)屬性、模塊不同模式的顯示圖片內(nèi)容以及各模塊對應(yīng)的VIX文件。
MINDSTORMS EV3程序模塊制作
對于一個新的程序模塊,help文件夾內(nèi)的幫助內(nèi)容并不是必須的,它不影響程序模塊的正常使用功能,本文僅對根目錄blocks.xml文件,images、VIs、strings文件夾內(nèi)容進(jìn)行介紹。
1.根目錄blocks.xml
根目錄blocks.xml定義了模塊的類別(執(zhí)行器類、傳感器類等)、模塊的功能模式以及不同模式對應(yīng)的VIX程序文件。模塊根據(jù)功能不同分為測量模式、比較模式等,具體什么功能模式由開發(fā)者自己定義。該文件還定義了不同模式下的顯示圖像和VIX中的參數(shù)的類型、范圍等。以一個新開發(fā)的觸摸開關(guān)程序模塊為例,該模塊的根目錄blocks.xml內(nèi)容如圖2所示。
(1)EditorDefinitions根元素。該元素是MINDSTORM EV3程序模塊根目錄blocks.xml文件的規(guī)范,文件必須含有該元素作為開頭。
(2)PolyGroups和PolyGroup元素。PolyGroups元素定義程序模塊組的內(nèi)容。ModuleName屬性定義程序模塊組名稱,ModuleVersion屬性定義程序模塊組版本。PolyGroups元素內(nèi)可以包含多個PolyGroup元素,每個PolyGroup對應(yīng)一個程序模塊,若有多個新的程序模塊同時創(chuàng)建,可以把它們都放在一個PolyGroups定義。若block.xml文件內(nèi)容有嚴(yán)重錯誤則在使用模塊導(dǎo)入向?qū)Чぞ邔?dǎo)入時無法顯示任何內(nèi)容。PolyGroup元素設(shè)定每個程序模塊的內(nèi)容。Name屬性用于定義程序模塊組下的單個程序模塊名稱,該名稱可以和PolyGroups的ModuleName屬性不一致。BlockFamily屬性定義模塊屬于傳感器類、執(zhí)行器類或其他類別。定義屬性時應(yīng)根據(jù)模塊的功能選擇不同的類別,程序模塊會出現(xiàn)在對應(yīng)類別選擇面板中。
(3)Parameter元素。該元素用于設(shè)定程序模塊不同模式下VIX文件公共參數(shù)的屬性,屬性包含其數(shù)據(jù)類型、默認(rèn)值、數(shù)據(jù)范圍和方向等。本文例子中的觸摸開關(guān)模塊有三個公共參數(shù),分別為Port、State和Result。Port對應(yīng)的CompilerDirectives、Direction、DefaultValue屬性分別定義了端口是輸入口、方向為輸入以及默認(rèn)值是1.3。State參數(shù)對應(yīng)的Identification、Direction、DataType屬性分別定義了該參數(shù)顯示的圖像、數(shù)據(jù)方向為輸出以及類型為布爾型,其設(shè)定效果如圖3所示。Result參數(shù)的定義方法和前兩個參數(shù)一樣。
(4)Hardware元素。該部分內(nèi)容只適用于傳感器功能的程序模塊,其他類別的程序模塊不需要該部分內(nèi)容。EV3PlotColor元素為軟件數(shù)據(jù)記錄模式下線條的顯示顏色。EV3AutoID元素用于軟件對傳感器種類的識別,第三方開發(fā)的傳感器模塊可以使用-1和官方的傳感器進(jìn)行區(qū)分,由于舉例的觸摸開關(guān)模塊為傳感器,因此Direction元素指定方向為輸入。DefaultPort元素確定模塊拖拽到編程界面時的默認(rèn)端口,1.3表示為3號端口。
(5)Block元素。該元素用于定義程序模塊每個模式對應(yīng)的VIX文件、模式特有的參數(shù)和在一些參數(shù)改變時顯示的圖像。對于一個傳感器模塊,通??梢栽O(shè)定為三種模式,即測量模式、比較模式和更改模式,對于每個模式最重要的內(nèi)容就是內(nèi)部的VIX文件。
(6)Mode元素。該元素定義程序塊模式,注意該模式名稱與images文件夾中對應(yīng)的模式顯示圖像關(guān)聯(lián),否則對應(yīng)模式的圖像以及模塊的上下文幫助不顯示。Reference Type屬性定義VIX使用的函數(shù)庫,對于第三方程序模塊函數(shù)庫為“VIlib”,Name屬性選擇對應(yīng)模式的VIX。ParameterReference元素列出VIX使用的實際參數(shù)名稱,這些參數(shù)必須已經(jīng)在PolyGroup中進(jìn)行了定義。PalttteInfo元素設(shè)定默認(rèn)模式和模塊在選擇面板中的位置,含有該內(nèi)容的模式會成為默認(rèn)模式,即程序模塊拖拽到界面時顯示的模式。Weight屬性確定模塊出現(xiàn)在選擇面板從左到右的位置。BlockInterface元素內(nèi)容可設(shè)為Measure、Compare、Change三者之一,設(shè)定值與模塊的模式對應(yīng)一致。HardwareModeInfo元素定義傳感器在數(shù)據(jù)記錄模式下的內(nèi)容。Name屬性設(shè)定為所需名稱,ID屬性標(biāo)記傳感器的類型,如果傳感器模塊為數(shù)字型的,可設(shè)為0,Range為數(shù)據(jù)范圍,數(shù)字型傳感器設(shè)為0,1。Unit為單位,數(shù)字型傳感器無單位,設(shè)為空。上述為測量模式的Block元素內(nèi)容介紹,另外的比較和更改模式的定義方法和測量模式一樣,只是它們不需定義HardwareModeInfo元素的相關(guān)內(nèi)容。
2.images文件夾
Images文件夾存放程序模塊的圖像文件,以新建的觸摸開關(guān)模塊為例,其圖像文件如圖4所示。對于新程序模塊,需要設(shè)定其在選擇面板、編程面板和在端口查看硬件列表的顯示圖像。圖像的名稱要根據(jù)程序模塊的模式,以及所在面板按照一定命名方式設(shè)置,否則圖像不能顯示。
(1)選擇面板圖像。命名方式為PolyGroup_
(2)編程面板圖像。命名方式為PolyGroup_
(3)程序模塊模式圖像。命名方式為PolyGroup_
(4)端口查看硬件圖像。命名方式為PolyGroup_
3.VIs文件夾
VIs文件夾存放程序模塊不同模式下的VIX文件。VIs目錄中有PBR和NXT兩個文件夾,一般只需在PBR文件夾中放入VIX文件即可,NXT文件夾可為空。觸摸開關(guān)程序模塊測量模式、比較模式和更改模式三種模式的VIX文件分別為TouchSValue.vix、TouchSCompare.vix和TouchSChange.vix。雙擊程序模塊便進(jìn)入程序模塊的VIX編輯界面。VIX文件的制作通過圖形編程語言完成,該語言和LabVIEW使用的圖形化編程語言一樣。測量模式TouchSValue.vix內(nèi)容如圖5所示。PBrickConvertInput和PBrickInputRead為軟件內(nèi)部庫函數(shù),直接調(diào)用即可,軟件自帶的庫函數(shù)都會以帶問號的圖形塊顯示。
4.strings文件夾
Strings文件夾中放有不同國家語言文件夾,其中有對應(yīng)的blocks.xml文件,該blocks.xml與根目錄的blocks.xml非同一文件,該文件主要提供程序模塊的可見名稱、上下文幫助和幫助URL,簡體中文的blocks.xml應(yīng)放在命名為zh-Hans的文件夾。以新創(chuàng)建的觸摸開關(guān)程序模塊為例,其內(nèi)容如圖6所示。該文件內(nèi)容主要對PolyGroups、PolyGroup、Parameter和Block這四元素進(jìn)行設(shè)定。注意此處Parameter和Block的內(nèi)容是分別對多個程序模塊的參數(shù)和多個模式進(jìn)行定義,它們的設(shè)定方法都相同,因此僅對其中一個Parameter元素和Block元素進(jìn)行介紹。
(1)EditorStrings根元素。與根目錄blocks.xml文件相似,該元素是MINDSTORM EV3程序模塊strings中block.xml開發(fā)的規(guī)范格式,文件必須含有該元素作為開頭。
(2)PolyGroups元素。ModuleName屬性要與根目錄的blocks.xml中的PolyGroups ModuleName屬性一致,否則兩個block.xml文件內(nèi)容無法關(guān)聯(lián),程序模塊文字內(nèi)容無法顯示。
(3)PolyGroup元素。Name屬性也需與根目錄的blocks.xml中的PolyGroup元素Name屬性一致,DisplayName和DisplayNamePrefix均設(shè)為顯示的名稱。
(4)Parameter元素。該部分定義參數(shù)的顯示名稱和描述,Name屬性設(shè)為參數(shù)名,DisplayName為參數(shù)顯示的文字,Description為參數(shù)的描述內(nèi)容,設(shè)定不同參數(shù)時只需修改對應(yīng)的文字內(nèi)容。
(5)Block元素。該元素的Mode屬性要和根目錄的blocks.xml中的Mode屬性一致,DisplayName為模式顯示的文字,Description為模式的描述,對于不同模式,只需修改對應(yīng)的文字描述內(nèi)容。
結(jié)語
MINDSTORMS EV3機(jī)器人是一款優(yōu)秀的教育產(chǎn)品,其直觀易用的編程軟件界面和成熟的積木結(jié)構(gòu)搭建體系深受大家喜愛,但是它的局限性在于電子模塊數(shù)量不足和對應(yīng)程序模塊缺乏。廣大教育工作者可弘揚創(chuàng)客精神,開發(fā)新的電子硬件模塊以及相應(yīng)的程序模塊,進(jìn)一步發(fā)掘它的潛力和豐富它的教學(xué)內(nèi)容,使學(xué)生創(chuàng)作出具有更多新功能的EV3機(jī)器人。
參考文獻(xiàn):
[1](美)Terry Griffin.樂高機(jī)器人EV3程序設(shè)計藝術(shù)[M].韋皓文,等,譯.北京:人民郵電出版社,2016.
[2]潘一佩.面向教育機(jī)器人的圖形化編程模塊設(shè)計及優(yōu)化[D].廣州:華南理工大學(xué),2017.