李嘉秀
摘 要:以國際青少年機(jī)器人世界杯比賽中的機(jī)器人平臺為對象,介紹了Arduino的功能特點,詳細(xì)分析了使用Arduino軟硬件平臺開展中小學(xué)機(jī)器人教育的優(yōu)勢,同時根據(jù)Arduino機(jī)器人的開發(fā)流程和環(huán)境,通過Arduino足球機(jī)器人中的典型應(yīng)用——數(shù)字舵機(jī)給出了一個具體的應(yīng)用案例,并結(jié)合實際效果進(jìn)行了分析展望。
關(guān)鍵詞:Arduino;足球機(jī)器人;數(shù)字舵機(jī);RCJ
中圖分類號:TP316 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2015)03-00-03
0 引 言
機(jī)器人是一門涉及運(yùn)動學(xué)和動力學(xué)、系統(tǒng)結(jié)構(gòu)、傳感技術(shù)、控制技術(shù)等多領(lǐng)域的交叉學(xué)科。國際青少年機(jī)器人世界杯比賽(RoboCup Junior,RCJ)是國際機(jī)器人世界杯比賽(RoboCup)的重要組成部分,其目標(biāo)是通過組織機(jī)器人比賽,來推動世界范圍內(nèi)的機(jī)器人研究和教育。RoboCup的教育和普及理念主要是通過RCJ活動來實現(xiàn)的。RCJ國際理事會是最高管理機(jī)構(gòu),負(fù)責(zé)相關(guān)的一切技術(shù)問題,管理問題,以及世界范圍內(nèi)的推廣和普及。
RCJ國際比賽包括四個項目:機(jī)器人舞蹈、機(jī)器人救援、機(jī)器人足球以及Cospace。RCJ比賽分為兩個組:14歲以下的初級組,以及14~19歲的高級組。從2006年8月開始,RCJ中國委員會每年舉辦一次“中國機(jī)器人公開賽(RoboCup Junior China-Open)”以及國際青少年世界杯比賽中國賽區(qū)選拔賽。目前RCJ中國的活動已經(jīng)成為RCJ在所有國家活動中參與人數(shù)最多的,其教育實施正是促使學(xué)生整合科學(xué)、技術(shù)、數(shù)學(xué)領(lǐng)域的知識,以工程標(biāo)準(zhǔn)化的思想進(jìn)行綜合實踐的過程,具有較強(qiáng)的教育價值。
1 Arduino原理
Arduino是2005年冬由意大利一家高科技設(shè)計學(xué)校的兩位教師Massimo Banzi和David Cuartielles聯(lián)合建立的。Arduino是一個開放源代碼的單芯片微控制器,它使用了Atmel AVR單片機(jī),采用了基于開放源代碼的軟硬件平臺,建構(gòu)于簡易輸出/輸入(simple I/O)接口板,并且具有使用類似Java、C語言的Processing/Wiring開發(fā)環(huán)境。
1.1 Arduino功能特點
Arduino的主要功能特點如下:
(1)基于知識共享(Creative Commons)開放源代碼的電路圖設(shè)計和程序開發(fā)環(huán)境。
(2)免費下載,也可依需求自己修改,但需遵照姓名標(biāo)示。
(3)依相同方式分享,若改變或轉(zhuǎn)變著作,當(dāng)發(fā)布該衍生著作時,需采用與本著作相同或類似的授權(quán)條款。
(4)Arduino可使用ICSP線上燒入器,將Bootloader燒入新的IC芯片。
(5)可依據(jù)Arduino官方電路圖,調(diào)整電路板及元件,以符合自己實際設(shè)計的需求。
(6)可簡單地與傳感器,各式各樣的電子元件連接,如:紅外線、超音波、熱敏電阻、光敏電阻、伺服馬達(dá)等。
(7)支持多種互動程序,如Adobe Flash、Max/MSP、VVVV、C、Processing等。
(8)使用低價格的微處理控制器(Atmel AVR,ATMEGA 8、168、328等)。
(9)USB接口,不需外接電源。另外有提供直流(DC)電源輸入。
(10)應(yīng)用方面,利用Arduino,突破以往只能使用鼠標(biāo)、鍵盤、CCD等輸入的裝置進(jìn)行互動內(nèi)容的設(shè)計,可以更簡單地達(dá)成單人或多人游戲互動
1.2 Arduino在中學(xué)機(jī)器人應(yīng)用中的優(yōu)點
根據(jù)Arduino平臺功能特點結(jié)合中學(xué)的機(jī)器人教育課程,其展現(xiàn)出了強(qiáng)大的優(yōu)勢:
(1) Arduino硬件平臺開源并可擴(kuò)展
Arduino是一個開源的硬件平臺,學(xué)生可以通過查資料、買元件、焊接電路制作Arduino控制板。同時,很多廠商開發(fā)了各種各樣的Arduino控制板和外圍功能電路供選擇。對于學(xué)習(xí)機(jī)器人制作的學(xué)生而言,這樣就可以通過教師引導(dǎo)和自學(xué)等方式,得到自己所需的功能電路并實現(xiàn)對應(yīng)的電路設(shè)計任務(wù)。這對學(xué)生了解機(jī)器人的硬件電路原理及制作大有幫助。
(2)Arduino軟件編程平臺開源并可擴(kuò)展
Arduino的編程器可以直接在網(wǎng)站上免費下載,而且網(wǎng)絡(luò)上有很多功能實現(xiàn)的例子和大量的SDK開發(fā)包和ADK工具包,這樣編程效率就會大大提高。
(3)簡易的編程環(huán)境
Arduino開發(fā)環(huán)境使用的語法與C/C++相近,這對于學(xué)習(xí)了基本的數(shù)學(xué)邏輯和計算機(jī)編程的高中生而言,容易掌握和使用。對于復(fù)雜的編程功能,學(xué)生可以通過直接調(diào)用已有函數(shù)或SDK開發(fā)包實現(xiàn)編程,甚至直接利用Arduino愛好者們已開發(fā)出的圖形化編程軟件進(jìn)行搭積木式的編程,即使完全沒有編程經(jīng)驗的人也可以嘗試給Arduino控制器編寫程序,非常簡單快捷。
(4)價格低廉
和其它平臺相比, Arduino板是相當(dāng)便宜的。最便宜的Arduino版本可以自己動手制作,即使是組裝好的成品,其價格一般也不會十分昂貴。
(5)跨平臺
Arduino IDE可以運(yùn)行在Window、Macintosh OS X和Linux操作系統(tǒng)。大部分其它的單片機(jī)編譯軟件都只能運(yùn)行在Window系統(tǒng)上。
基于以上原因,基于Arduino平臺的機(jī)器人制作在RCJ中得到了普遍應(yīng)用。
2 Arduino機(jī)器人開發(fā)流程及環(huán)境
2.1 Arduino機(jī)器人開發(fā)流程
Arduino機(jī)器人實例的開發(fā)是Arduino平臺下機(jī)器人教學(xué)實踐與研究的基礎(chǔ)和載體。其開發(fā)流程一般至少包括7個步驟,具體為設(shè)計目標(biāo)→確定器件→硬件組裝→軟件設(shè)置→測試→程序編寫→代碼調(diào)試。
通常,機(jī)器人在地面上移動的方式通常有三種:車輪式、履帶式和步行式。在RCJ足球比賽中,場地為室內(nèi)光滑平整地面,非常適合車輪運(yùn)動,因此本方案選用車輪式運(yùn)動方式。
2.2 Arduino硬件開發(fā)環(huán)境
(1)Arduino硬件類型
為了適應(yīng)不同用戶的需求,Arduino有多種型號,其中Arduino Duemilanove是一款最基本的Arduino產(chǎn)品,后續(xù)的很多產(chǎn)品都是在這款產(chǎn)品的基礎(chǔ)上發(fā)展起來的。如Arduino Nano去掉了直流電源接口,采用Mini-B標(biāo)準(zhǔn)的USB接口連接電腦,是一款縮小版的Arduino Duemilanove;Arduino BT則包含了一個Bluegiga WT11藍(lán)牙模塊,支持藍(lán)牙無線串行通信。目前Arduino主推的產(chǎn)品是Arduino Uno,它與之前的Arduino最大的不同在于采用ATmega8U2芯片進(jìn)行USB到串行數(shù)據(jù)的轉(zhuǎn)換。使用者可以根據(jù)對設(shè)計功能的不同需求選擇相應(yīng)的Arduino產(chǎn)品。
(2)Arduino主要硬件資源
不同型號的Arduino其硬件資源也有所差異,但基礎(chǔ)配置包括以下部分:
(1)控制器??刂破魇茿rduino產(chǎn)品的核心部分,以Arduino Duemilanove為基礎(chǔ)的多數(shù)產(chǎn)品均采用ATmegal68或ATmega328單片機(jī);資源更為豐富的Arduino Mega2560則采用ATmega2560作為控制器,它具有更大的程序存儲容量,可接入的I/O數(shù)也更多。
(2)輸入輸出接口。根據(jù)控制器的性能差異,不同Arduino產(chǎn)品的輸入輸出接口數(shù)量也有所不同。
(3)電腦連接或程序燒寫接口。根據(jù)使用者對Arduino產(chǎn)品尺寸要求的差異,Arduino或通過獨立USB接口支持程序燒寫,或通過由USB/RS 232轉(zhuǎn)換成TTL的適配器解決該問題,而對Arduino BT而言,其內(nèi)置的藍(lán)牙模塊即可支持通過藍(lán)牙適配器進(jìn)行程序燒寫。
2.3 Arduino機(jī)器人軟件開發(fā)環(huán)境
(1)Arduino開發(fā)環(huán)境設(shè)置
Aruduino的開發(fā)環(huán)境是以AVR-GCC和其他一些開源軟件為基礎(chǔ),采用Java編寫的。軟件無需安裝,下載完成解壓縮后就可以直接打開使用了。開發(fā)環(huán)境的主界面如圖l所示。
圖1 Aruduino的軟件開發(fā)環(huán)境界面
在應(yīng)用程序編寫之前,需要按照順序進(jìn)行安裝驅(qū)動程序、選擇Arduino板的型號以及設(shè)置串口號三項內(nèi)容的設(shè)置。
(2)ArduBlock圖形編程環(huán)境介紹
目前圖形化編程插件ArduBlock已得到Arduino官方支持,其界面友好,操作簡單,不用學(xué)習(xí)C語言通過拼圖形式就可以完成Arduino的編程,為Arduino進(jìn)入中小學(xué)課堂奠定了基礎(chǔ)。圖2所示即為該編程環(huán)境界面。
圖2 ArduBlock編程界面
從網(wǎng)上下載ArduBlock插件后只需將該文件拷貝至Arduino官方編程環(huán)境軟件包的tools子文件夾里面即可。拷貝成功后再次打開官方編程環(huán)境,菜單欄tools選項中便新增了ArduBlock選項,單擊即可打開ArduBlock編程界面。除了ArduBlock之外,還有Miniblog、S4A等圖形化編程插件也可利用。
3 Arduino機(jī)器人開發(fā)實例
本方案選用Arduino Duemilanove為核心主板,以ArduBloek作為圖形化開發(fā)環(huán)境進(jìn)行實例開發(fā)。因為Arduino足球機(jī)器人所涉開發(fā)項目較多,囿于文章篇幅所限,以下僅給出“Arduino足球機(jī)器人——數(shù)字舵機(jī)”的開發(fā)實例。本實例重點介紹Arduino足球機(jī)器人在RCJ中使用的舵機(jī)原理及相關(guān)的代碼調(diào)試環(huán)節(jié)。
3.1 舵機(jī)介紹
機(jī)器人有許多個關(guān)節(jié), 每一個關(guān)節(jié)為一個自由度。在機(jī)器人機(jī)體上,通常使用舵機(jī)作為每一個關(guān)節(jié)的連接部分,它可以完成每個關(guān)節(jié)的定位和運(yùn)動。舵機(jī)的控制信號相對簡單,控制精度高,反應(yīng)速度快,而且比伺服電機(jī)省電。
舵機(jī)是由直流電機(jī)、減速齒輪組、傳感器和控制電路組成的一套自動控制系統(tǒng)。通過發(fā)送信號,指定輸出軸旋轉(zhuǎn)角度。舵機(jī)一般而言都有最大旋轉(zhuǎn)角度。與普通直流電機(jī)的區(qū)別主要在,直流電機(jī)是一圈圈轉(zhuǎn)動的,舵機(jī)只能在一定角度內(nèi)轉(zhuǎn)動, 不能一圈圈轉(zhuǎn)(數(shù)字舵機(jī)可以在舵機(jī)模式和電機(jī)模式中切換)。普通直流電機(jī)無法反饋轉(zhuǎn)動的角度信息,而舵機(jī)可以。用途也不同,普通直流電機(jī)一般是整圈轉(zhuǎn)動做動力用, 舵機(jī)是控制某物體轉(zhuǎn)動一定角度用。
3.2 舵機(jī)內(nèi)部結(jié)構(gòu)
舵機(jī)的外觀如圖3所示。
圖3 舵機(jī)的外觀圖
舵機(jī)的組成部分主要有齒輪組、電機(jī)、電位器、電機(jī)控制板、殼體這幾大部分。其中電機(jī)控制板主要是用來驅(qū)動電機(jī)和接受電位器反饋回來的信息;電機(jī)提供動力;電位器判斷輸出軸角度是否輸出正確;齒輪組的作用主要是力量的放大。
3.3 舵機(jī)控制協(xié)議
舵機(jī)的伺服系統(tǒng)由可變寬度的脈沖來進(jìn)行控制,控制線是用來傳送脈沖的。脈沖的參數(shù)有最小值,最大值和頻率。一般而言,舵機(jī)的基準(zhǔn)信號都是周期為20 ms,寬度為1.5ms。這個基準(zhǔn)信號定義的位置為中間位置。舵機(jī)有最大轉(zhuǎn)動角度,中間位置的定義就是從這個位置到最大角度與最小角度的量完全一樣。此外不同舵機(jī)的最大轉(zhuǎn)動角度可能不相同,但是其中間位置的脈沖寬度是一定的,就是1.5 ms。
角度是由來自控制線的持續(xù)的脈沖所產(chǎn)生,脈沖的長短決定舵機(jī)轉(zhuǎn)動多大角度。例如1.5 ms脈沖會到轉(zhuǎn)動到中間位置(對于180°舵機(jī)來說, 就是90°位置)。當(dāng)控制系統(tǒng)發(fā)出指令,讓舵機(jī)移動到某一位置,并讓其保持這個角度,這時外力(不超過最大扭力)的影響不會讓其角度產(chǎn)生變化。除非控制系統(tǒng)不停的發(fā)出脈沖穩(wěn)定舵機(jī)的角度,舵機(jī)的角度不會一直不變。當(dāng)舵機(jī)接收到一個小于1.5 ms的脈沖,輸出軸會以中間位置為標(biāo)準(zhǔn),逆時針旋轉(zhuǎn)一定角度。接收到的脈沖大于1.5 ms情況相反。一般而言,最小脈沖為1 ms,最大脈沖為2 ms。
Arduino IDE己經(jīng)集成了舵機(jī)控制庫,只需要在程序開頭調(diào)用庫Servo.h就可以了,省去了繁瑣的信號控制、時序等問題,給舵機(jī)配置好端口和初始位置,然后給出目標(biāo)角度,舵機(jī)就會轉(zhuǎn)過去了。
3.4 舵機(jī)控制程序示例
Arduino有舵機(jī)應(yīng)用庫
#include < Servo.h > //舵機(jī)的函數(shù)庫
Servo myservo; //定義舵機(jī)變量
int pos = 80; //舵機(jī)初始化80°
void setup()
{
myservo.attach(6); //初始化使用第6個引腳
myservo.write(pos); //先讓舵機(jī)回歸80°中心點
}
void loop()
{
myservo.write(pos); //下角度指令給舵機(jī)
for(;pos<90;pos++ )
{
myservo.write(pos); //下角度指令給舵機(jī),170°
delay(10); //等待10 ms
}
for( ;pos<90;pos--)
{
myservo. write(pos); //下角度指令給舵機(jī),80°
delay(10); //等待10 ms
}
}
實現(xiàn)的功能為:舵機(jī)初始位置為80°,舵機(jī)旋轉(zhuǎn)到180°,再旋轉(zhuǎn)到80°。
3.5 Arduino機(jī)器人實際效果
通過多次實驗成功實現(xiàn)了Arduino機(jī)器人在RCJ中的進(jìn)攻、防守等功能,Arduino機(jī)器人能按照預(yù)先設(shè)計的程序在脫離人工控制的情況下自主運(yùn)作,其前進(jìn)、后退、停止射門等動作配合成功,并能順利捕捉紅外足球,達(dá)到了預(yù)期目標(biāo)。
但在比賽中還出現(xiàn)Arduino機(jī)器人的避障流暢度不足,即不能在探測到障礙物存在時實時做出流暢的避障行為。此外,驅(qū)動卡的電源非單獨供電,影響機(jī)器人運(yùn)動時的穩(wěn)定性和快捷性,從而導(dǎo)致有可能無法順利完成比賽。Arduino機(jī)器人實物如圖4所示。
圖4 Arduino機(jī)器人實物
4 結(jié) 語
Arduino的開源性及功能可擴(kuò)展性決定了它在機(jī)器人教育領(lǐng)域內(nèi)的高性價比,圖形化編程插件符合中小學(xué)階段學(xué)生的認(rèn)知習(xí)慣及水平,豐富的Arduino論壇資源為教育過程提供了持久的技術(shù)和創(chuàng)意保障。該文提出的基于Arduino的車輪式機(jī)器人設(shè)計相對于其他系統(tǒng),成本更低,制作方便,軟件和硬件開源并可擴(kuò)展,有一定的實用性并在RCJ上取得了一定的成績。但該機(jī)器人還存在許多不足,這些都有待進(jìn)一步改進(jìn)和提高。
參考文獻(xiàn)
[1] RCJ中國組委會.RoboCup青少年(RCJ)機(jī)器人世界杯中國組委會介紹[EB/OL].http://www.rcj.org.cn/?q=rcjc,2014.
[2] Massimo Banzi.愛上Arduino[M].2版.于欣龍,郭浩赟,譯.北京:人民郵電出版社,2012.
[3]維基百科.Arduino[EB/OL]. http://zh.wikipedia.org/wiki/Arduino,2014.
[4]周嘉.基于Arduino平臺的機(jī)器人制作課程在普通高中開發(fā)與實施[J].教育信息技術(shù),2012(8):15-17.
[5]程晨.Arduino開發(fā)實戰(zhàn)指南[M].北京:機(jī)械工業(yè)出版社,2012.
[6]王娟,胡來林.中小學(xué)Arduino機(jī)器人特性及其實例開發(fā)[J].中國教育信息化,2013(6):69-71.
[7]宜昌城老張.新車間Arduino圖形化編程軟件ArduBlock的介紹[EB/OL].http://eefocus.com/zhan9700309/blog/12-02/237994_76dea.html,2014.