付東翔 李菲菲 傅迎華 胡春燕 尹鐘 劉麗
摘 要:為了使智能本科專(zhuān)業(yè)的嵌入式系統(tǒng)教學(xué)能夠與主流的機(jī)器人操作系統(tǒng)ROS緊密結(jié)合,適應(yīng)當(dāng)前機(jī)器人技術(shù)發(fā)展的最新應(yīng)用,突出本專(zhuān)業(yè)嵌入式系統(tǒng)課程的專(zhuān)業(yè)特色,介紹課程的理論教學(xué)內(nèi)容選擇、實(shí)驗(yàn)內(nèi)容及安排,說(shuō)明本課程對(duì)后續(xù)本專(zhuān)業(yè)其他課程、課程設(shè)計(jì)等的支撐作用,強(qiáng)調(diào)對(duì)大學(xué)生教學(xué)實(shí)踐比賽的有利推動(dòng)作用。
關(guān)鍵詞:智能科學(xué)與技術(shù);嵌入式系統(tǒng);課程設(shè)計(jì)
0 引 言
智能科學(xué)與技術(shù)本科專(zhuān)業(yè)培養(yǎng)工作和內(nèi)容是人工智能、機(jī)器人、計(jì)算機(jī)等交叉學(xué)科內(nèi)容的教學(xué)。專(zhuān)業(yè)內(nèi)容涉及機(jī)器人技術(shù)、各類(lèi)智能技術(shù)與系統(tǒng)、新一代的人機(jī)系統(tǒng)技術(shù)等。嵌入式系統(tǒng)是計(jì)算機(jī)、自動(dòng)化、電氣等本科專(zhuān)業(yè)的核心專(zhuān)業(yè)課程之一,其內(nèi)容是在微機(jī)原理、單片機(jī)技術(shù)和C語(yǔ)言程序設(shè)計(jì)等課程基礎(chǔ)上更高層次的專(zhuān)業(yè)知識(shí)[1-4]。
當(dāng)前信息技術(shù)的飛速發(fā)展,尤其工業(yè)機(jī)器人技術(shù)不斷滲透、應(yīng)用到各個(gè)生產(chǎn)和社會(huì)生活領(lǐng)域。面對(duì)機(jī)器人技術(shù)的發(fā)展和應(yīng)用,智能專(zhuān)業(yè)的培養(yǎng)計(jì)劃和課程內(nèi)容應(yīng)該包括和不斷擴(kuò)大機(jī)器人相關(guān)領(lǐng)域的知識(shí)。目前與嵌入式系統(tǒng)課程有關(guān)的機(jī)器人領(lǐng)域的主流關(guān)鍵技術(shù)之一是ROS機(jī)器人操作系統(tǒng)[5]。ROS是開(kāi)源、基于Ubuntu系統(tǒng)的機(jī)器人操作系統(tǒng),提供類(lèi)似操作系統(tǒng)所提供的功能,包含硬件抽象描述、底層驅(qū)動(dòng)程序管理、共用功能的執(zhí)行、程序間的消息傳遞、程序發(fā)行包管理等[6]?,F(xiàn)在越來(lái)越多的機(jī)器人廠商嘗試使用ROS,包括占據(jù)最多工業(yè)市場(chǎng)份額的機(jī)器人四大家族和各種流行的研究型機(jī)器人。
1 教學(xué)內(nèi)容
1.1 目標(biāo)定位
隨著目前機(jī)器人技術(shù)的不斷發(fā)展和應(yīng)用,本課程的目標(biāo)定位:熟悉ARM Cortex-A內(nèi)核處理器的硬件結(jié)構(gòu)和功能,熟悉和掌握ROS機(jī)器人操作系統(tǒng)的體系結(jié)構(gòu)、任務(wù)間通信機(jī)制、功能包設(shè)計(jì)方法;強(qiáng)化學(xué)生在ROS系統(tǒng)下的應(yīng)用設(shè)計(jì)能力,為后續(xù)專(zhuān)業(yè)課程教學(xué)實(shí)踐奠定工作基礎(chǔ)。
1.2 內(nèi)容調(diào)整
原有課程內(nèi)容:①硬件系統(tǒng),STM32的32位的ARM Cortex-M3內(nèi)核的控制器;②嵌入式操作系統(tǒng),?C/OS-II操作系統(tǒng)。
現(xiàn)有課程內(nèi)容:①硬件系統(tǒng),TI的32位的ARM Cortex-A8處理器;②嵌入式操作系統(tǒng),基于Ubuntu的ROS操作系統(tǒng)。
基于以上內(nèi)容,教學(xué)理論和實(shí)驗(yàn)內(nèi)容調(diào)整前后對(duì)比見(jiàn)表1、表2。
2 理論教學(xué)與實(shí)驗(yàn)教學(xué)
嵌入式系統(tǒng)教學(xué)是在理論基礎(chǔ)上強(qiáng)調(diào)實(shí)踐性。理論教學(xué)分為兩大部分:①ARM Cortex-A8內(nèi)核處理器硬件結(jié)構(gòu)和功能,硬件設(shè)備樹(shù)Device Tree機(jī)制;②ROS操作系統(tǒng)原理和運(yùn)行架構(gòu);節(jié)點(diǎn)、消息、主題、服務(wù)等基本概念;節(jié)點(diǎn)、主題以及消息等相互之間的關(guān)系、節(jié)點(diǎn)之間消息傳遞機(jī)制。實(shí)驗(yàn)教學(xué)是理論教學(xué)的實(shí)踐,讓學(xué)生認(rèn)識(shí)和動(dòng)手實(shí)踐理論的內(nèi)容。
2.1 理論教學(xué)內(nèi)容
(1)處理器硬件內(nèi)容:以ARM Cortex-A8內(nèi)核處理器為重點(diǎn),以TI(德州儀器)公司Sitara Processors系列中的AM3359為對(duì)象,對(duì)Cortex-A8內(nèi)核處理器的硬件片內(nèi)資源和功能予以介紹;Ubuntu操作系統(tǒng)下的硬件操作和驅(qū)動(dòng)基于設(shè)備樹(shù)文件實(shí)現(xiàn)。
以設(shè)備樹(shù)Device Tree機(jī)制及其規(guī)范為主要內(nèi)容展開(kāi)。
①設(shè)備樹(shù)(Device Tree)基本概念及作用:設(shè)備樹(shù)是一種描述硬件資源的數(shù)據(jù)結(jié)構(gòu),作用是將硬件外設(shè)與相應(yīng)的驅(qū)動(dòng)程序直接進(jìn)行綁定,系統(tǒng)啟動(dòng)時(shí)加載設(shè)備樹(shù)文件并配置各種硬件資源,通過(guò)bootloader(啟動(dòng)程序)將硬件資源傳給操作系統(tǒng)內(nèi)核,使得內(nèi)核和硬件資源描述相對(duì)獨(dú)立,其基本數(shù)據(jù)結(jié)構(gòu)如下:
{ #address-cells = <1>; // 子節(jié)點(diǎn)中reg屬性中address值;
#size-cells = <1>; // 子節(jié)點(diǎn)中reg屬性中size值;
chosen { }; // 描述由系統(tǒng)指定的runtime parameter ;
aliases { }; // 定義別名;
memory { device_type = "memory"; reg = <0 0>; }; // 設(shè)備類(lèi)型,起始地址和大??;
};
②設(shè)備樹(shù)的組成和使用:設(shè)備樹(shù)包含DTC(device tree compiler),DTS(device tree source)和DTB(device tree blob)。
DTS文件:是一種ASCII文本對(duì)Device Tree的描述,放置在ROS內(nèi)核的/arch/arm/boot/dts目錄下,一個(gè)DTS文件對(duì)應(yīng)一個(gè)ARM的硬件資源。
DTSI文件:硬件系統(tǒng)中每個(gè)子系統(tǒng)都有一個(gè)DTS文件。這些文件會(huì)有許多共同部分,為減少代碼的冗余,設(shè)備樹(shù)將這些共同部分保存在DTSI文件中,供不同的DTS使用。
③設(shè)備樹(shù)中DTS文件的基本語(yǔ)法與舉例:根據(jù)設(shè)備樹(shù)的基本概念,給出TI的AM3359處理器的ADC外設(shè)的DTS文件格式,AM3359的ADC部分有8個(gè)通道,其控制器寄存器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>;
};
};
通過(guò)上述ADC部分DTS文件舉例說(shuō)明硬件外設(shè)在文件中的描述,對(duì)其他GPIO、PWM、定時(shí)器等不同系統(tǒng)外設(shè),其DTS文件形式類(lèi)同。每個(gè)DTS文件共同的部分代碼存放于DTSI文件中。通過(guò)這種舉例,強(qiáng)調(diào)DT設(shè)備樹(shù)機(jī)制的優(yōu)點(diǎn):操作系統(tǒng)內(nèi)核中不再充斥著與硬件有關(guān)的代碼,操作系統(tǒng)因此瘦身和精簡(jiǎn),操作系統(tǒng)與硬件無(wú)關(guān)性得到實(shí)現(xiàn)。
(2)操作系統(tǒng)主要內(nèi)容:ROS系統(tǒng)框架及其內(nèi)部運(yùn)行機(jī)制, ROS系統(tǒng)下任務(wù)之間的通信機(jī)制和概念:節(jié)點(diǎn)(node)、消息(message)、主題(topic)、服務(wù)(service),它們之間消息訂閱和發(fā)布如圖1所示。
①節(jié)點(diǎn)。節(jié)點(diǎn)就是執(zhí)行運(yùn)算任務(wù)的進(jìn)程,一個(gè)系統(tǒng)是由很多節(jié)點(diǎn)組成的,節(jié)點(diǎn)也被稱(chēng)之為“軟件模塊”。
② 消息。節(jié)點(diǎn)之間是通過(guò)傳送消息進(jìn)行通訊的。每一個(gè)消息都是一個(gè)嚴(yán)格的數(shù)據(jù)結(jié)構(gòu),不但支持標(biāo)準(zhǔn)的數(shù)據(jù)類(lèi)型如整型、浮點(diǎn)型、布爾型等,也支持?jǐn)?shù)組類(lèi)型。消息可以包含任意的嵌套結(jié)構(gòu)和數(shù)組,類(lèi)似于C語(yǔ)言的結(jié)構(gòu)structs。
③主題。消息以一種發(fā)布(publish)/ 訂閱(subscribe)的方式傳遞。一個(gè)節(jié)點(diǎn)可以在一個(gè)給定的主題中發(fā)布消息,一個(gè)節(jié)點(diǎn)對(duì)某個(gè)主題關(guān)注與訂閱特定類(lèi)型的數(shù)據(jù),可能同時(shí)有多個(gè)節(jié)點(diǎn)發(fā)布或者訂閱同一個(gè)主題的消息。如圖1所示,Master為節(jié)點(diǎn)管理器。
④服務(wù)。基于主題(topic)的發(fā)布/訂閱模型的廣播通訊方式范圍過(guò)大,為簡(jiǎn)化節(jié)點(diǎn)間的通信,在ROS中,用一個(gè)字符串和一對(duì)嚴(yán)格規(guī)范的消息定義:一個(gè)用于請(qǐng)求,一個(gè)用于回應(yīng)。類(lèi)似于 web服務(wù)器是由URIs定義的,同時(shí)帶有完整定義類(lèi)型的請(qǐng)求和回復(fù)文檔,稱(chēng)為一個(gè)服務(wù),如圖1所示。
2.2 實(shí)驗(yàn)教學(xué)內(nèi)容
將理論內(nèi)容以實(shí)踐形式呈現(xiàn)給學(xué)生,嵌入式系統(tǒng)課程實(shí)驗(yàn)中Cortex-A內(nèi)核的MPU(處理器)與原來(lái)的MUC(控制器)級(jí)硬件系統(tǒng)實(shí)驗(yàn)不同在于:①片內(nèi)外設(shè)GPIO、A/D等硬件控制通過(guò)DTS設(shè)備樹(shù)文件配置和驅(qū)動(dòng),而Cortex-M內(nèi)核控制器硬件資源相對(duì)簡(jiǎn)單,硬件功能的配置通過(guò)控制庫(kù)函數(shù)調(diào)用實(shí)現(xiàn);②軟件系統(tǒng):ROS系統(tǒng)的原理和程序框架;功能包開(kāi)發(fā)步驟;節(jié)點(diǎn)、消息、服務(wù)等通信機(jī)制與?C/OS-II系統(tǒng)差別很大。
因此,本課程實(shí)驗(yàn)基于上述內(nèi)容展開(kāi),分為3部分內(nèi)容。
①ROS系統(tǒng)程序框架與功能包設(shè)計(jì)實(shí)驗(yàn):程序框架:在ROS中,所有的軟件都是以ROS包或功能包形式存在的,ROS包是用于實(shí)現(xiàn)特定功能的相關(guān)文件的集合,包括可執(zhí)行文件和其他支持文件;實(shí)驗(yàn)內(nèi)容:功能包的創(chuàng)建、編輯和編譯運(yùn)行。該實(shí)驗(yàn)讓學(xué)生熟悉ROS功能包的開(kāi)發(fā)環(huán)境和過(guò)程。
②設(shè)備樹(shù)(Device Tree)文件創(chuàng)建和程序運(yùn)行實(shí)驗(yàn):實(shí)驗(yàn)主要包括GPIO、ADC等外設(shè)控制的DTS文件、DTSI文件的編寫(xiě)和編譯;通過(guò)上位機(jī)終端發(fā)送命令加載DTBO文件。控制LED、ADC等外設(shè)的工作。通過(guò)該實(shí)驗(yàn)使得學(xué)生能夠認(rèn)識(shí)和掌握硬件外設(shè)的DTS驅(qū)動(dòng)文件格式和編寫(xiě)。
③ROS系統(tǒng)下節(jié)點(diǎn)間通信實(shí)驗(yàn):利用ROS系統(tǒng)下的“海龜仿真運(yùn)動(dòng)”程序包(turtlesim)進(jìn)行任務(wù)節(jié)點(diǎn)通信和運(yùn)行實(shí)驗(yàn)。該實(shí)驗(yàn)通過(guò)創(chuàng)建兩個(gè)節(jié)點(diǎn),一個(gè)節(jié)點(diǎn)控制“海龜”的運(yùn)動(dòng),另外一個(gè)節(jié)點(diǎn)捕捉鍵盤(pán)事件,同時(shí)發(fā)送命令消息。通過(guò)該實(shí)驗(yàn),讓學(xué)生認(rèn)識(shí)和理解ROS節(jié)點(diǎn)之間消息傳遞的通信機(jī)制。
3 本課程與其他智能專(zhuān)業(yè)課程、課程設(shè)計(jì)與本科創(chuàng)新實(shí)踐
基于ROS的嵌入式系統(tǒng)教學(xué)內(nèi)容為本專(zhuān)業(yè)其他智能專(zhuān)業(yè)課程如自然語(yǔ)言理解、智能檢測(cè)技術(shù)與系統(tǒng)、自主移動(dòng)機(jī)器人技術(shù)、專(zhuān)業(yè)課程設(shè)計(jì)等奠定了較好的硬件和軟件基礎(chǔ)。
首先,在嵌入式系統(tǒng)內(nèi)容的學(xué)習(xí)中,學(xué)生已經(jīng)能夠熟悉ARM Cortex-A8處理器的硬件功能和結(jié)構(gòu),以及ROS系統(tǒng)下任務(wù)以節(jié)點(diǎn)形式運(yùn)行、節(jié)點(diǎn)間的通信機(jī)制和功能包的開(kāi)發(fā)。為后續(xù)課程和實(shí)踐比賽奠定了一個(gè)軟硬件實(shí)驗(yàn)共享平臺(tái):自然語(yǔ)言處理課程上的語(yǔ)言包、自主移動(dòng)機(jī)器人技術(shù)的定位算法、智能檢測(cè)技術(shù)與系統(tǒng)的傳感器硬件檢測(cè)與軟件數(shù)據(jù)處理等都能夠在這個(gè)平臺(tái)上實(shí)驗(yàn)和運(yùn)行;學(xué)生在專(zhuān)業(yè)課程設(shè)計(jì)中可以設(shè)計(jì)、集成一個(gè)機(jī)器人系統(tǒng)功能:以本課程的實(shí)驗(yàn)環(huán)境,實(shí)現(xiàn)傳感器檢測(cè)、語(yǔ)音處理、自主定位等機(jī)器人系統(tǒng)常用的功能。
其次,通過(guò)本課程內(nèi)容的學(xué)習(xí),為學(xué)生申請(qǐng)和完成本校和上海市的大學(xué)生創(chuàng)新項(xiàng)目奠定了工作基礎(chǔ)。本專(zhuān)業(yè)學(xué)生近年來(lái)連續(xù)獲得多項(xiàng)上海市大學(xué)生創(chuàng)新項(xiàng)目和我校本科創(chuàng)新項(xiàng)目,如2017年上海市大學(xué)生創(chuàng)新項(xiàng)目“基于Ubuntu系統(tǒng)的機(jī)器人仿真平臺(tái)設(shè)計(jì)”(SH2017035)等。
最后,為本專(zhuān)業(yè)學(xué)生參加各類(lèi)全國(guó)大學(xué)生智能大賽奠定了較好的硬件、軟件基礎(chǔ),如“華為杯全國(guó)大學(xué)生智能大賽”“華為杯電子設(shè)計(jì)大賽”等。同時(shí)也將為本專(zhuān)業(yè)學(xué)生參加此類(lèi)比賽培育眾多參賽隊(duì)員。圖2(a)(b)為硬件實(shí)驗(yàn)設(shè)備。
4 結(jié) 語(yǔ)
面向應(yīng)用的智能專(zhuān)業(yè)嵌入式系統(tǒng)教學(xué)以ARM Cortex-A8內(nèi)核的處理器為硬件對(duì)象,以ROS操作系統(tǒng)為軟件平臺(tái),圍繞著處理器的硬件設(shè)備樹(shù)結(jié)構(gòu)及其語(yǔ)法格式,ROS系統(tǒng)基于節(jié)點(diǎn)通信的程序運(yùn)行機(jī)制等兩個(gè)方面展開(kāi)內(nèi)容,使得學(xué)生能夠理解面向機(jī)器人操作系統(tǒng)的硬件組成和功能原理,能夠充分理解、熟悉和掌握ROS機(jī)器人操作系統(tǒng)框架和程序運(yùn)行機(jī)制。
課程內(nèi)容安排為本專(zhuān)業(yè)其他相關(guān)課程、后續(xù)課程設(shè)計(jì)、創(chuàng)新實(shí)踐和大學(xué)生教學(xué)實(shí)踐比賽奠定一個(gè)開(kāi)發(fā)、實(shí)驗(yàn)共享平臺(tái),ROS系統(tǒng)的開(kāi)放性能夠讓學(xué)生開(kāi)發(fā)自己的算法包,如自然語(yǔ)言理解、智能信息處理、機(jī)器人移動(dòng)技術(shù)等課程的算法可以在這個(gè)平臺(tái)上調(diào)試和運(yùn)行驗(yàn)證,使得嵌入式系統(tǒng)該門(mén)課程更好地支撐后續(xù)專(zhuān)業(yè)課程算法實(shí)驗(yàn),進(jìn)而為專(zhuān)業(yè)課程設(shè)計(jì)奠定了硬件、軟件基礎(chǔ)。
在目前機(jī)器人技術(shù)應(yīng)用逐漸進(jìn)入工業(yè)自動(dòng)化領(lǐng)域和各個(gè)生活領(lǐng)域并且已經(jīng)開(kāi)始取代一些人類(lèi)重復(fù)性工作的大趨勢(shì)下,通過(guò)對(duì)ROS系統(tǒng)的熟悉和掌握,將使得智能科學(xué)與技術(shù)的專(zhuān)業(yè)學(xué)生專(zhuān)業(yè)應(yīng)用能力更具有針對(duì)性和專(zhuān)業(yè)性。
參考文獻(xiàn):
[1] 孫紅, 蔣念平, 陳瑋, 等. 智能科學(xué)與技術(shù)專(zhuān)業(yè)理論教學(xué)與工程實(shí)踐的融合[D]. 上海:上海理工大學(xué), 2012.
[2] 卡莫爾(印度). Embedded Systems: Architecture, Programming and Design[M].賈建斌, 李化, 譯. 北京: 清華大學(xué)出版社, 2010.
[3] 張俊, 陳飛, 馮士剛. 大連海事大學(xué)“智能科學(xué)與技術(shù)”本科專(zhuān)業(yè)建設(shè)實(shí)踐[J]. 計(jì)算機(jī)教育, 2012(18): 22-27.
[4] 王萬(wàn)森. 適應(yīng)智能化應(yīng)用發(fā)展趨勢(shì), 培養(yǎng)創(chuàng)新型智能科技人才[J]. 計(jì)算機(jī)教育, 2013(19): 37-39.
[5] 奧凱恩·杰森(美)機(jī)器人操作系統(tǒng)淺析[M]. 肖軍浩, 譯. 北京: 國(guó)防工業(yè)出版社, 2015.
[6] 恩里克·費(fèi)爾南德斯(西). ROS機(jī)器人程序設(shè)計(jì)(原書(shū)第二版)[M]. 北京: 機(jī)械工業(yè)出版社, 2016.
[7] 馬麗梅. Ubuntu Linux操作系統(tǒng)與實(shí)驗(yàn)教程[M]. 北京: 清華大學(xué)出版社, 2014.
(編輯:郭田珍)endprint