王天偉
摘要:隨著科技發(fā)展,機器人在越來越多的領(lǐng)域得到發(fā)展與應(yīng)用。該文通過作者參加“華北五省機器人機器人大賽”前期準(zhǔn)備,以及參賽過程中的經(jīng)驗,簡要介紹下基于開源Arduino控制板的類人機器人的驅(qū)動與控制,比賽結(jié)果表明了該方法的有效性。
關(guān)鍵詞:Arduino;類人;多自由度;驅(qū)動與控制
中圖分類號:TP242 文獻標(biāo)識碼:A 文章編號:1009-3044(2016)07-0181-02
對于雙足類人機器人控制的研究一直是近些年機器人研究的熱點問題。能否精確地執(zhí)行預(yù)設(shè)動作,是評價機器人性能的指標(biāo)之一,而本科生可接觸到的傳統(tǒng)中小型機器人上,所運用的主控以傳統(tǒng)單片機為主,原理是利用定時器和中斷的方式來實現(xiàn)對舵機的控制,在舵機數(shù)量較少時表現(xiàn)尚可,而在競賽中所用到的類人舞蹈機器人、類人競技機器人等上面,往往需要十幾個自由度甚至更多,以達到使機器人更加靈活的目的,這樣的情況下傳統(tǒng)單片機控制起來就沒有那么方便了, 尤其在要求機器人進行復(fù)雜動作,多個舵機同時驅(qū)動時,單片機不但精度難以保證,在編程方面也相當(dāng)復(fù)雜。因此本文結(jié)合作者的比賽經(jīng)驗,介紹時下較為流行的開源Arduino,來實現(xiàn)對雙足類人機器人的控制。
1 Arduino簡介
Arduino是可編程的,使用功能強大的AVR微控制器,標(biāo)準(zhǔn)板擁有20個I/O引腳(Arduino的變體擁有更多的I/O引腳),并且很便宜。主Arduino使用標(biāo)準(zhǔn)的USB數(shù)據(jù)線連接到計算機,不僅提供到PC的串行連接,還包括所需的5V電源。其最大的優(yōu)勢在于它秉承開源硬件的思想,程序開發(fā)接口免費下載,也可依需自己修改。Arduino UNO的引腳如圖1所示:
圖1 Arduino UNO控制板I/O口示意圖
Arduino的硬件是高度模塊化的,在核心控制板的外圍,有開關(guān)量輸入輸出模塊、各種模擬量傳感器輸入模塊、總線類傳感器的輸入模塊, 還有網(wǎng)絡(luò)通信模塊,只要在核心控制板上增加網(wǎng)絡(luò)控制模塊,就可以容易地與互聯(lián)網(wǎng)連接。Arduino還提供了自己的開發(fā)環(huán)境Arduino IDE,支持Windows、Linux、MacOS等主流操作系統(tǒng)。Arduino系統(tǒng)是基于單片機開發(fā)的,并且大量應(yīng)用通用和標(biāo)準(zhǔn)的電子元器件,包括硬件和軟件在內(nèi)的整個設(shè)計,代碼均采用開源方式發(fā)布,因此采購的成本較低,在各種電子制作競賽、電子藝術(shù)品創(chuàng)意設(shè)計等越來越多地使用Arduino作為開發(fā)平臺。
2 主控的選擇
在“華北五省機器人大賽”前,作者對市面上在售的控制系統(tǒng)進行了數(shù)據(jù)收集與對比,對控制精度及擴展寬容度等多方面參數(shù)進行對比,并對其他參賽隊伍所選用的主控實際測試后,選擇了Arduino UNO R3的一個變體版Manshow-RC1,后者集成了Arduino UNO R3及24通道的SoftServo舵機控制系統(tǒng),其優(yōu)點在于:集成度更高,極大減小了主控安裝于機器人上所占用的空間,一定程度上減小了機器人的自重;擁有24路舵機控制通道,滿足了比賽中對機器人靈活度的要求;集成軟啟動功能,眾所周知,PWM 類型的舵機其初始位置往往是未知的。傳統(tǒng)的啟動模式將使舵機以全速運行到目標(biāo)位置,在很多機器人應(yīng)用中是非常忌諱的。軟啟動模式在初始位置未知的情況下可將舵機緩速運行到目標(biāo)位置,但在短時間內(nèi)需要較大的電流(當(dāng)需要控制多個舵機時,可采用分時啟動的方式緩解)。
在決定使用Arduino之前,作者也曾試驗過比較熟悉的51單片機在機器人控制上的效果,結(jié)果發(fā)現(xiàn)除了在對多個舵機的控制方面表現(xiàn)不足外,在代碼編寫方面,傳統(tǒng)單片機也不及Arduino方便,因為Arduino的編譯環(huán)境對AVR-GCC庫實現(xiàn)了二次封裝,使用者即使對C等編譯語言不是很熟悉,沒有很多單片機基礎(chǔ),進行簡單學(xué)習(xí)后也能很快上手,大大縮短了開發(fā)周期,節(jié)約了開發(fā)成本。并且由于開源的環(huán)境,可以根據(jù)自己的需求到Arduino論壇上下載已有的代碼,然后進行修改,其中包括傳感器等模塊的庫文件及測試程序。以下為作者參賽時所用雙足類人舞蹈機器上程序的一段截?。?/p>
#include "GI2C_V11.h"
#include
#include
unsigned char Buf[61 + 1];
GI2CV11 ManShow_RC1(Buf, sizeof(Buf));
const unsigned char back[][49] PROGMEM = { 90, 90, 111, 93, 90, 134, 86, 104, 76, 91, 83, 205, 8, 93, 88, 92, 88, 86, 86, 119, 91, 90, 88, 96, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 3 };
大括號內(nèi)的48個數(shù)字,分別對應(yīng)24個舵機的預(yù)設(shè)位置(0-180°)和運轉(zhuǎn)時的速度(1-250)。由于已經(jīng)有現(xiàn)成的庫文件可以使用,只需簡單配置寄存器即可,由此可見與傳統(tǒng)單片機相比,Arduino在開發(fā)周期上極大地縮短,并且減少了代碼占用空間,讓使用者省去了擴展內(nèi)存的麻煩,為增加擴展模塊帶來便利。
3 PWM類型的舵機控制器性能評價
1)PWM 類型的舵機,其PWM有效寬度并非完全一致,考慮到兼容性問題,PWM有效寬度必須可設(shè)定。
2)對于標(biāo)準(zhǔn)的PWM類型舵機,PWM信號周期通常建議為20ms,但對于數(shù)字舵機,可允許更高頻率的信號輸入,當(dāng)應(yīng)用系統(tǒng)要求舵機具有更高的響應(yīng)速度時,可縮短PWM信號的周期。因此,PWM信號的周期可人為設(shè)定,也是很有必要的。
3)有些時候我們希望所有的PWM信號同時輸出,并且信號間的耦合性控制在肉眼難以察覺的程度。
4)在一些動態(tài)的應(yīng)用系統(tǒng)中,尤其是人形機器人,我們希望在任意時刻每個通道的位置和速度均可單獨控制,因為機器人的動態(tài)平衡是依靠慣性力實現(xiàn)的。
5)絕大多數(shù)的舵機控制器均將舵機的動作代碼固化在EEPROM或Flash ROM中,或許這樣操作起來很簡單。我們認(rèn)為,一個機器人系統(tǒng),需要結(jié)合搭載的傳感器與智能控制算法,動態(tài)生成舵機的動作代碼。此外,關(guān)于通訊接口的簡易性、實時性和穩(wěn)定性也是非常的關(guān)鍵。
6)為了更好地保護舵機,必須能夠在任意時刻停止PWM信號的輸出。在使用過程中經(jīng)常會發(fā)現(xiàn)一個現(xiàn)象:舵機毀于沖擊力,原則上,當(dāng)存在異常的沖擊力時,應(yīng)當(dāng)停止信號的輸出。例如:機器人處于跌落狀態(tài)(可由加速度傳感器檢測),倘若提前停止PWM信號的輸出,使舵機進入惰行或制動狀態(tài),便可避免剛性沖擊。
4 傳感器的使用
針對不同應(yīng)用情境或比賽項目的不同,機器人可視情況加載合適的傳感器,以達到適應(yīng)外界環(huán)境和精確控制的目的。比如擂臺對抗機器人,為了防止掉下擂臺,往往加載灰度傳感器檢測擂臺邊緣的色帶;舞蹈機器人可增加加速度傳感器,用以檢測機器人的意外跌落,因為對于舵機,跌落后的意外卡死往往是致命的。
5 一些主流的控制方式
如若沒有特殊要求的情況下,可以給機器人增設(shè)遙控,通過一組紅外傳感器來控制機器人,在遙控器上對于每個按下的按鈕都發(fā)送一個特定的紅外線編碼,可以在Arduino上使用IR接收集成電路讀取紅外線編碼,這樣使用者可以更及時的調(diào)整機器人的姿態(tài)。
語音控制也是一種不錯的選擇,預(yù)先將一些指令錄入主控當(dāng)中,具體操作時,語音模塊對使用者的指令進行識別,然后調(diào)動舵機或其他模塊進行相應(yīng)動作。
談到了聲控就不得不提及光控,雖然此種控制方式對環(huán)境要求較高,但倘若使用好了也會給人耳目一新的感覺,比如舞蹈機器人,結(jié)合特定舞臺燈光的指令后可以更好地進行姿態(tài)調(diào)整。
為了實時監(jiān)控機器人的動態(tài)參數(shù),也可以選擇上位機控制機器人,可以自主編寫上位機軟件或網(wǎng)上下載現(xiàn)成的軟件使用。上位機控制方式分為有線和無線兩種。
藍(lán)牙模塊、語音模塊以及光傳感器等在網(wǎng)上商城均有銷售,買時需注意是否與Arduino兼容。
6 結(jié)束語
雙足類人機器人運動靈活,因與人類相似,可以在眾多領(lǐng)域得到應(yīng)用。本文對基于Arduino主控的機器人的控制進行了簡述,結(jié)合作者的參賽經(jīng)歷,從主控的選擇、外設(shè)擴展以及其他主流控制方式三方面給予建議。經(jīng)過驗證,Arduino在中小型機器人的設(shè)計制造上確實有很多傳統(tǒng)單片機沒有的優(yōu)勢。
參考文獻:
[1] John-David Warren,Josh Adams,Harald Molle.Arduino Robotics[M]. Apress,2011.
[2] 陳呂洲.Arduino程序設(shè)計基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2015.
[3] 蔡睿妍.基于Arduino的舵機控制系統(tǒng)設(shè)計[J].電腦知識與技術(shù),2012,5(15).
[4] 孟浩,王妍瑋.基于Arduino 的雙足仿人機器人設(shè)計[J].林業(yè)機械與木工設(shè)備,2014,2(2).