?

基于arduino平臺的足球機器人在RCJ中的應用

2015-03-31 14:58李嘉秀
物聯網技術 2015年3期

李嘉秀

摘 要:以國際青少年機器人世界杯比賽中的機器人平臺為對象,介紹了Arduino的功能特點,詳細分析了使用Arduino軟硬件平臺開展中小學機器人教育的優勢,同時根據Arduino機器人的開發流程和環境,通過Arduino足球機器人中的典型應用——數字舵機給出了一個具體的應用案例,并結合實際效果進行了分析展望。

關鍵詞:Arduino;足球機器人;數字舵機;RCJ

中圖分類號:TP316 文獻標識碼:A 文章編號:2095-1302(2015)03-00-03

0 引 言

機器人是一門涉及運動學和動力學、系統結構、傳感技術、控制技術等多領域的交叉學科。國際青少年機器人世界杯比賽(RoboCup Junior,RCJ)是國際機器人世界杯比賽(RoboCup)的重要組成部分,其目標是通過組織機器人比賽,來推動世界范圍內的機器人研究和教育。RoboCup的教育和普及理念主要是通過RCJ活動來實現的。RCJ國際理事會是最高管理機構,負責相關的一切技術問題,管理問題,以及世界范圍內的推廣和普及。

RCJ國際比賽包括四個項目:機器人舞蹈、機器人救援、機器人足球以及Cospace。RCJ比賽分為兩個組:14歲以下的初級組,以及14~19歲的高級組。從2006年8月開始,RCJ中國委員會每年舉辦一次“中國機器人公開賽(RoboCup Junior China-Open)”以及國際青少年世界杯比賽中國賽區選拔賽。目前RCJ中國的活動已經成為RCJ在所有國家活動中參與人數最多的,其教育實施正是促使學生整合科學、技術、數學領域的知識,以工程標準化的思想進行綜合實踐的過程,具有較強的教育價值。

1 Arduino原理

Arduino是2005年冬由意大利一家高科技設計學校的兩位教師Massimo Banzi和David Cuartielles聯合建立的。Arduino是一個開放源代碼的單芯片微控制器,它使用了Atmel AVR單片機,采用了基于開放源代碼的軟硬件平臺,建構于簡易輸出/輸入(simple I/O)接口板,并且具有使用類似Java、C語言的Processing/Wiring開發環境。

1.1 Arduino功能特點

Arduino的主要功能特點如下:

(1)基于知識共享(Creative Commons)開放源代碼的電路圖設計和程序開發環境。

(2)免費下載,也可依需求自己修改,但需遵照姓名標示。

(3)依相同方式分享,若改變或轉變著作,當發布該衍生著作時,需采用與本著作相同或類似的授權條款。

(4)Arduino可使用ICSP線上燒入器,將Bootloader燒入新的IC芯片。

(5)可依據Arduino官方電路圖,調整電路板及元件,以符合自己實際設計的需求。

(6)可簡單地與傳感器,各式各樣的電子元件連接,如:紅外線、超音波、熱敏電阻、光敏電阻、伺服馬達等。

(7)支持多種互動程序,如Adobe Flash、Max/MSP、VVVV、C、Processing等。

(8)使用低價格的微處理控制器(Atmel AVR,ATMEGA 8、168、328等)。

(9)USB接口,不需外接電源。另外有提供直流(DC)電源輸入。

(10)應用方面,利用Arduino,突破以往只能使用鼠標、鍵盤、CCD等輸入的裝置進行互動內容的設計,可以更簡單地達成單人或多人游戲互動

1.2 Arduino在中學機器人應用中的優點

根據Arduino平臺功能特點結合中學的機器人教育課程,其展現出了強大的優勢:

(1) Arduino硬件平臺開源并可擴展

Arduino是一個開源的硬件平臺,學生可以通過查資料、買元件、焊接電路制作Arduino控制板。同時,很多廠商開發了各種各樣的Arduino控制板和外圍功能電路供選擇。對于學習機器人制作的學生而言,這樣就可以通過教師引導和自學等方式,得到自己所需的功能電路并實現對應的電路設計任務。這對學生了解機器人的硬件電路原理及制作大有幫助。

(2)Arduino軟件編程平臺開源并可擴展

Arduino的編程器可以直接在網站上免費下載,而且網絡上有很多功能實現的例子和大量的SDK開發包和ADK工具包,這樣編程效率就會大大提高。

(3)簡易的編程環境

Arduino開發環境使用的語法與C/C++相近,這對于學習了基本的數學邏輯和計算機編程的高中生而言,容易掌握和使用。對于復雜的編程功能,學生可以通過直接調用已有函數或SDK開發包實現編程,甚至直接利用Arduino愛好者們已開發出的圖形化編程軟件進行搭積木式的編程,即使完全沒有編程經驗的人也可以嘗試給Arduino控制器編寫程序,非常簡單快捷。

(4)價格低廉

和其它平臺相比, Arduino板是相當便宜的。最便宜的Arduino版本可以自己動手制作,即使是組裝好的成品,其價格一般也不會十分昂貴。

(5)跨平臺

Arduino IDE可以運行在Window、Macintosh OS X和Linux操作系統。大部分其它的單片機編譯軟件都只能運行在Window系統上。

基于以上原因,基于Arduino平臺的機器人制作在RCJ中得到了普遍應用。

2 Arduino機器人開發流程及環境

2.1 Arduino機器人開發流程

Arduino機器人實例的開發是Arduino平臺下機器人教學實踐與研究的基礎和載體。其開發流程一般至少包括7個步驟,具體為設計目標→確定器件→硬件組裝→軟件設置→測試→程序編寫→代碼調試。

通常,機器人在地面上移動的方式通常有三種:車輪式、履帶式和步行式。在RCJ足球比賽中,場地為室內光滑平整地面,非常適合車輪運動,因此本方案選用車輪式運動方式。

2.2 Arduino硬件開發環境

(1)Arduino硬件類型

為了適應不同用戶的需求,Arduino有多種型號,其中Arduino Duemilanove是一款最基本的Arduino產品,后續的很多產品都是在這款產品的基礎上發展起來的。如Arduino Nano去掉了直流電源接口,采用Mini-B標準的USB接口連接電腦,是一款縮小版的Arduino Duemilanove;Arduino BT則包含了一個Bluegiga WT11藍牙模塊,支持藍牙無線串行通信。目前Arduino主推的產品是Arduino Uno,它與之前的Arduino最大的不同在于采用ATmega8U2芯片進行USB到串行數據的轉換。使用者可以根據對設計功能的不同需求選擇相應的Arduino產品。

(2)Arduino主要硬件資源

不同型號的Arduino其硬件資源也有所差異,但基礎配置包括以下部分:

(1)控制器??刂破魇茿rduino產品的核心部分,以Arduino Duemilanove為基礎的多數產品均采用ATmegal68或ATmega328單片機;資源更為豐富的Arduino Mega2560則采用ATmega2560作為控制器,它具有更大的程序存儲容量,可接入的I/O數也更多。

(2)輸入輸出接口。根據控制器的性能差異,不同Arduino產品的輸入輸出接口數量也有所不同。

(3)電腦連接或程序燒寫接口。根據使用者對Arduino產品尺寸要求的差異,Arduino或通過獨立USB接口支持程序燒寫,或通過由USB/RS 232轉換成TTL的適配器解決該問題,而對Arduino BT而言,其內置的藍牙模塊即可支持通過藍牙適配器進行程序燒寫。

2.3 Arduino機器人軟件開發環境

(1)Arduino開發環境設置

Aruduino的開發環境是以AVR-GCC和其他一些開源軟件為基礎,采用Java編寫的。軟件無需安裝,下載完成解壓縮后就可以直接打開使用了。開發環境的主界面如圖l所示。

圖1 Aruduino的軟件開發環境界面

在應用程序編寫之前,需要按照順序進行安裝驅動程序、選擇Arduino板的型號以及設置串口號三項內容的設置。

(2)ArduBlock圖形編程環境介紹

目前圖形化編程插件ArduBlock已得到Arduino官方支持,其界面友好,操作簡單,不用學習C語言通過拼圖形式就可以完成Arduino的編程,為Arduino進入中小學課堂奠定了基礎。圖2所示即為該編程環境界面。

圖2 ArduBlock編程界面

從網上下載ArduBlock插件后只需將該文件拷貝至Arduino官方編程環境軟件包的tools子文件夾里面即可??截惓晒笤俅未蜷_官方編程環境,菜單欄tools選項中便新增了ArduBlock選項,單擊即可打開ArduBlock編程界面。除了ArduBlock之外,還有Miniblog、S4A等圖形化編程插件也可利用。

3 Arduino機器人開發實例

本方案選用Arduino Duemilanove為核心主板,以ArduBloek作為圖形化開發環境進行實例開發。因為Arduino足球機器人所涉開發項目較多,囿于文章篇幅所限,以下僅給出“Arduino足球機器人——數字舵機”的開發實例。本實例重點介紹Arduino足球機器人在RCJ中使用的舵機原理及相關的代碼調試環節。

3.1 舵機介紹

機器人有許多個關節, 每一個關節為一個自由度。在機器人機體上,通常使用舵機作為每一個關節的連接部分,它可以完成每個關節的定位和運動。舵機的控制信號相對簡單,控制精度高,反應速度快,而且比伺服電機省電。

舵機是由直流電機、減速齒輪組、傳感器和控制電路組成的一套自動控制系統。通過發送信號,指定輸出軸旋轉角度。舵機一般而言都有最大旋轉角度。與普通直流電機的區別主要在,直流電機是一圈圈轉動的,舵機只能在一定角度內轉動, 不能一圈圈轉(數字舵機可以在舵機模式和電機模式中切換)。普通直流電機無法反饋轉動的角度信息,而舵機可以。用途也不同,普通直流電機一般是整圈轉動做動力用, 舵機是控制某物體轉動一定角度用。

3.2 舵機內部結構

舵機的外觀如圖3所示。

圖3 舵機的外觀圖

舵機的組成部分主要有齒輪組、電機、電位器、電機控制板、殼體這幾大部分。其中電機控制板主要是用來驅動電機和接受電位器反饋回來的信息;電機提供動力;電位器判斷輸出軸角度是否輸出正確;齒輪組的作用主要是力量的放大。

3.3 舵機控制協議

舵機的伺服系統由可變寬度的脈沖來進行控制,控制線是用來傳送脈沖的。脈沖的參數有最小值,最大值和頻率。一般而言,舵機的基準信號都是周期為20 ms,寬度為1.5ms。這個基準信號定義的位置為中間位置。舵機有最大轉動角度,中間位置的定義就是從這個位置到最大角度與最小角度的量完全一樣。此外不同舵機的最大轉動角度可能不相同,但是其中間位置的脈沖寬度是一定的,就是1.5 ms。

角度是由來自控制線的持續的脈沖所產生,脈沖的長短決定舵機轉動多大角度。例如1.5 ms脈沖會到轉動到中間位置(對于180°舵機來說, 就是90°位置)。當控制系統發出指令,讓舵機移動到某一位置,并讓其保持這個角度,這時外力(不超過最大扭力)的影響不會讓其角度產生變化。除非控制系統不停的發出脈沖穩定舵機的角度,舵機的角度不會一直不變。當舵機接收到一個小于1.5 ms的脈沖,輸出軸會以中間位置為標準,逆時針旋轉一定角度。接收到的脈沖大于1.5 ms情況相反。一般而言,最小脈沖為1 ms,最大脈沖為2 ms。

Arduino IDE己經集成了舵機控制庫,只需要在程序開頭調用庫Servo.h就可以了,省去了繁瑣的信號控制、時序等問題,給舵機配置好端口和初始位置,然后給出目標角度,舵機就會轉過去了。

3.4 舵機控制程序示例

Arduino有舵機應用庫,把180°舵機接在第6接口,舵機控制程序如下:

#include < Servo.h > //舵機的函數庫

Servo myservo; //定義舵機變量

int pos = 80; //舵機初始化80°

void setup()

{

myservo.attach(6); //初始化使用第6個引腳

myservo.write(pos); //先讓舵機回歸80°中心點

}

void loop()

{

myservo.write(pos); //下角度指令給舵機

for(;pos<90;pos++ )

{

myservo.write(pos); //下角度指令給舵機,170°

delay(10); //等待10 ms

}

for( ;pos<90;pos--)

{

myservo. write(pos); //下角度指令給舵機,80°

delay(10); //等待10 ms

}

}

實現的功能為:舵機初始位置為80°,舵機旋轉到180°,再旋轉到80°。

3.5 Arduino機器人實際效果

通過多次實驗成功實現了Arduino機器人在RCJ中的進攻、防守等功能,Arduino機器人能按照預先設計的程序在脫離人工控制的情況下自主運作,其前進、后退、停止射門等動作配合成功,并能順利捕捉紅外足球,達到了預期目標。

但在比賽中還出現Arduino機器人的避障流暢度不足,即不能在探測到障礙物存在時實時做出流暢的避障行為。此外,驅動卡的電源非單獨供電,影響機器人運動時的穩定性和快捷性,從而導致有可能無法順利完成比賽。Arduino機器人實物如圖4所示。

圖4 Arduino機器人實物

4 結 語

Arduino的開源性及功能可擴展性決定了它在機器人教育領域內的高性價比,圖形化編程插件符合中小學階段學生的認知習慣及水平,豐富的Arduino論壇資源為教育過程提供了持久的技術和創意保障。該文提出的基于Arduino的車輪式機器人設計相對于其他系統,成本更低,制作方便,軟件和硬件開源并可擴展,有一定的實用性并在RCJ上取得了一定的成績。但該機器人還存在許多不足,這些都有待進一步改進和提高。

參考文獻

[1] RCJ中國組委會.RoboCup青少年(RCJ)機器人世界杯中國組委會介紹[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].教育信息技術,2012(8):15-17.

[5]程晨.Arduino開發實戰指南[M].北京:機械工業出版社,2012.

[6]王娟,胡來林.中小學Arduino機器人特性及其實例開發[J].中國教育信息化,2013(6):69-71.

[7]宜昌城老張.新車間Arduino圖形化編程軟件ArduBlock的介紹[EB/OL].http://eefocus.com/zhan9700309/blog/12-02/237994_76dea.html,2014.

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合