李頓
摘要:本論文的舞蹈機(jī)器人包括腰、肩、肘、頸等人體基本關(guān)節(jié),它們分別由8個(gè)舵機(jī)驅(qū)動(dòng),其控制系統(tǒng)采用ATmega64單片機(jī)。本文重點(diǎn)研究了順序脈沖控制方法來控制各關(guān)節(jié)舵機(jī)配合音樂節(jié)奏協(xié)調(diào)動(dòng)作,實(shí)現(xiàn)舞蹈動(dòng)作。經(jīng)過測試,舞蹈機(jī)器人在表演過程中能夠很好的配合音樂節(jié)奏翩翩起舞,達(dá)到了預(yù)期效果。
關(guān)鍵詞:舞蹈機(jī)器人;單片機(jī);舵機(jī);順序脈沖
1 引言
舞蹈機(jī)器人是一種類人娛樂機(jī)器人,它能夠隨著音樂“翩翩起舞” ,其新穎的功能和較強(qiáng)的觀賞性使其本身具有很大的研究與市場開發(fā)價(jià)值。目前,日本在此類機(jī)器人上的研究比較領(lǐng)先,國內(nèi)的研究相對還比較落后。
本文介紹一個(gè)輪式10DOF(Degree Of Freedom,自由度)的舞蹈機(jī)器人,該機(jī)器人使用舵機(jī)來模擬人的關(guān)節(jié),一共由8個(gè)關(guān)節(jié)組成,包括手臂關(guān)節(jié)、腰關(guān)節(jié)和頸關(guān)節(jié)等。通過不同關(guān)節(jié)(舵機(jī))旋轉(zhuǎn)到不同角度位置可以模仿人的一些基本動(dòng)作,例如抬手,旋臂,轉(zhuǎn)身,扭腰,搖頭,行走等。把這些基本動(dòng)作組合起來,并配合適當(dāng)?shù)臉非涂梢詷?gòu)成一套優(yōu)美的舞蹈表演動(dòng)作。
2 系統(tǒng)總體設(shè)計(jì)
舞蹈機(jī)器人的動(dòng)作是表現(xiàn)在一定時(shí)間序列上的空間位姿(位置和姿態(tài))的集合。整個(gè)設(shè)計(jì)始終圍繞舞蹈機(jī)器人的特點(diǎn),以實(shí)現(xiàn)系統(tǒng)的藝術(shù)性和觀賞性為出發(fā)點(diǎn)和核心,并根據(jù)系統(tǒng)總體分析提出如下總體設(shè)計(jì)方案:
(1)系統(tǒng)采用模塊化設(shè)計(jì)思想,如圖1。
圖1 系統(tǒng)框架示意圖
(2)確定機(jī)器人的自由度為10個(gè),如圖2。
圖2 舞蹈機(jī)器人自由度示意圖
3 硬件實(shí)現(xiàn)
3.1 控制模塊
控制模塊采用ATmega64作為舞蹈機(jī)器人的主控芯片。在表1中列出ATmega64端口的使用情況。
表1 主控芯片端口分配表
ATmega64引腳 舞蹈機(jī)器人中的功能
PORTF 舵機(jī)控制輸出信號
PORTA5,6,7 LED點(diǎn)陣控制輸出信號
PORTB 調(diào)試設(shè)備輸入輸出信號
PORTC6,7 主控模塊啟動(dòng)信號
3.2 關(guān)節(jié)驅(qū)動(dòng)模塊
從成本和控制的難易度與精度上考慮,作者考慮采用分級使用不同扭力舵機(jī)。在受力較大的關(guān)節(jié)處,如腰部,肩部等處采用扭力強(qiáng)勁的強(qiáng)力舵機(jī),在關(guān)節(jié)的末尾處才用力量小的自身重量也小的微型舵機(jī)。這樣在性能價(jià)格比上找到了一個(gè)很好的折衷點(diǎn)。
3.3 LED顯示模塊
該模塊是作為人機(jī)交互輸出的可視化設(shè)備。不僅僅可以顯示當(dāng)前機(jī)器人的運(yùn)行狀態(tài),還可以通過文字或動(dòng)畫展現(xiàn)機(jī)器人的情感,是一個(gè)非常人性化的模塊。
3.4 行走機(jī)構(gòu)模塊
行走機(jī)構(gòu)采用兩輪驅(qū)動(dòng),將機(jī)器人的移動(dòng)方式設(shè)定為輪式。電機(jī)驅(qū)動(dòng)采用SGS公司的L298N。比較常見的是15腳Multiwatt封裝的L298N,該芯片具有4路邏輯通道,為恒壓恒流橋式2A驅(qū)動(dòng)芯片。
3.5 調(diào)試模塊
LED數(shù)碼管:
為了能夠方便的對系統(tǒng)進(jìn)行測試,故使用了LED數(shù)碼管來顯示系統(tǒng)運(yùn)行的狀態(tài)。能夠不用讓機(jī)器人動(dòng)起來也能直觀的觀察系統(tǒng)。
鍵盤:
在單獨(dú)測試動(dòng)作子集時(shí),文中采用把各個(gè)動(dòng)作子集定義到鍵盤的按鍵上。當(dāng)按下鍵盤上不同的按鍵就會(huì)出現(xiàn)不同的動(dòng)作組合,非常方便的觀察動(dòng)作是否到位。
3.6 電源系統(tǒng)
采用LM2576模塊進(jìn)行并聯(lián)并用1N4007整流方法。
4 軟件設(shè)計(jì)
本軟件設(shè)計(jì)的重點(diǎn)為關(guān)節(jié)驅(qū)動(dòng)模塊的控制程序,其中單片機(jī)系統(tǒng)實(shí)現(xiàn)對舵機(jī)輸出轉(zhuǎn)角的控制,必須首先完成兩個(gè)任務(wù):首先是產(chǎn)生基本的PPM周期信號,本設(shè)計(jì)是產(chǎn)生周期信號為20ms;其次是脈寬的調(diào)整,即單片機(jī)模擬PPM信號的輸出,并且調(diào)整占空比。圖3給出了一個(gè)典型的20ms周期性脈沖的正脈沖寬度與舵機(jī)輸出臂位置的關(guān)系,通過設(shè)置正脈沖寬度來調(diào)整舵機(jī)的轉(zhuǎn)動(dòng)角度。
圖3 正脈沖寬和舵機(jī)轉(zhuǎn)動(dòng)度數(shù)關(guān)系示意圖
針對系統(tǒng)有8個(gè)舵機(jī)的情況,專門制定了一套解決方法——順序脈沖法。
具體的設(shè)計(jì)過程:例如想讓舵機(jī)轉(zhuǎn)向左極限的角度,它的正脈沖為2.5ms,則負(fù)脈沖為20ms-2.5ms=17.5ms,所以開始時(shí)在控制口發(fā)送高電平,然后設(shè)置定時(shí)器在2.5ms后發(fā)生中斷,中斷發(fā)生后,在中斷程序里將控制口改為低電平,并將中斷時(shí)間改為17.5ms,再過17.5ms進(jìn)入下一次定時(shí)中斷,再將控制口改為高電平,并將定時(shí)器初值改為2.5ms,等待下次中斷到來,如此往復(fù)實(shí)現(xiàn)PPM信號輸出到舵機(jī)。用修改定時(shí)器中斷初值的方法巧妙形成了脈沖信號,調(diào)整時(shí)間段的寬度便可使伺服機(jī)靈活運(yùn)動(dòng)。
下圖是順序脈沖法控制8個(gè)舵機(jī)的時(shí)序圖:
圖4 舵機(jī)控制時(shí)序圖
如圖4所示,用這種方法控制舵機(jī),從微觀上來講,每個(gè)舵機(jī)其實(shí)是順序啟動(dòng)的。但是由于系統(tǒng)處理的速度非???,所以從宏觀上來看,所有被控舵機(jī)是同時(shí)動(dòng)作的,完全能滿足控制8個(gè)舵機(jī)的要求。
順序脈沖法控制舞蹈機(jī)器人主要由兩個(gè)中斷服務(wù)程序來實(shí)現(xiàn)一是定時(shí)器0中斷服務(wù)程序;二是定時(shí)器2中服務(wù)程序。下面就對這兩個(gè)子程序進(jìn)行介紹。
(1)定時(shí)器0中斷服務(wù)程序
定時(shí)器0產(chǎn)生周期為2.5ms的中斷信號,每次進(jìn)入中斷后選擇PORTF的一個(gè)端口將其輸出的電平置高,并對定時(shí)器2設(shè)置定時(shí)初值,如圖5所示。
圖5 定時(shí)器0中斷服務(wù)程序流程圖
(2)定時(shí)器2中斷服務(wù)程序
在定時(shí)器0中斷服務(wù)程序里對定時(shí)器2設(shè)置的初值就是PPM信號的高電平長,而進(jìn)入該中斷服務(wù)程序就是為了結(jié)束高電平,從這里開始就是先前所說的“長中斷”了,如圖6所示。
圖6 定時(shí)器2中斷服務(wù)程序流程圖
5 參考文獻(xiàn)
[1](日)Brain Navi著.機(jī)器人集錦[M].北京:科學(xué)出版社.2003.
[2]蔡自興.機(jī)器人學(xué)[M].北京:清華大學(xué)出版社.2000.
[3]董建軍,楊文杰,王兵.舞蹈機(jī)器人的設(shè)計(jì)與控制[J].信陽師范學(xué)院學(xué)報(bào)(自然科學(xué)版).2002.15(4):456-459.
[4]Richard C Dorf,Robert H Bishop.Modern Control System(9th edition)[M].Prentice Hall.2001
[5]Karl Williams.Build Your Own Reptilian Robot.McGraw-Hill Companies,Inc.2003