張 利 張立杰 黃 彥
(宜昌測(cè)試技術(shù)研究所 宜昌 443003)
從1920年捷克斯洛伐克作家卡佩克在他的一本科幻小說(shuō)—《羅薩姆的機(jī)器人萬(wàn)能公司》中構(gòu)思和幻想了第一個(gè)名字叫羅伯特(Robot)的機(jī)器人,到1947年美國(guó)橡樹嶺國(guó)家實(shí)驗(yàn)室研制成功第一臺(tái)主從遙控機(jī)器人,再到2004年3月9日索尼公司的人形機(jī)器人“QRIO”在東京市舉行的節(jié)目彩排中登臺(tái)亮相,擔(dān)任樂(lè)隊(duì)指揮,機(jī)器人的研制取得了巨大的發(fā)展?!皺C(jī)器人時(shí)代已經(jīng)拉開了序幕,機(jī)器人就在我們中間”。機(jī)器人,特別是娛樂(lè)機(jī)器人,已經(jīng)發(fā)展成為一種產(chǎn)業(yè),方興未艾[1]。
隨著一年一度的“全國(guó)舞蹈機(jī)器人大賽”的舉行,舞蹈機(jī)器人的研制在大學(xué)生中越來(lái)越普及。舞蹈機(jī)器人屬娛樂(lè)機(jī)器人的一種,它集軟件與硬件于一體,是一個(gè)比較完善的系統(tǒng),其設(shè)計(jì)涉及到控制、機(jī)械、舞蹈與音樂(lè)等各方面。
機(jī)器人控制系統(tǒng)是整個(gè)舞蹈機(jī)器人的核心,直接影響到整個(gè)舞蹈機(jī)器人的性能和表現(xiàn)能力。在低成本的前提下,目前參加機(jī)器人比賽的舞蹈機(jī)器人多采用51系列單片機(jī)來(lái)直接實(shí)現(xiàn)對(duì)電機(jī)的控制,大大限制了對(duì)舞蹈機(jī)器人自由度的擴(kuò)展和功能的擴(kuò)展。特別是當(dāng)驅(qū)動(dòng)電機(jī)包含多路舵機(jī)時(shí),這種控制方式就顯得“力不從心”,不能在產(chǎn)生舵機(jī)控制信號(hào)的同時(shí)完成對(duì)步進(jìn)電機(jī)或直流電機(jī)的控制,以及實(shí)現(xiàn)其它一些輔助功能。為此有人采用雙或多CPU的控制方式,即系統(tǒng)采用兩個(gè)或多個(gè)單片機(jī)來(lái)分別實(shí)現(xiàn)對(duì)不同種類電機(jī)的控制。但是這種控制方式對(duì)機(jī)器人動(dòng)作控制的協(xié)調(diào)性較差,且系統(tǒng)復(fù)雜,穩(wěn)定性較差[3]。
本文介紹了一個(gè)基于AVR單片機(jī)和FPGA的舞蹈機(jī)器人控制系統(tǒng),能同時(shí)實(shí)現(xiàn)對(duì)2個(gè)直流電機(jī)的伺服控制和對(duì)16個(gè)獨(dú)立舵機(jī)的調(diào)速控制。系統(tǒng)采用角度插值的舵機(jī)速度控制和節(jié)拍分割的舞蹈節(jié)奏控制方法,使舞蹈機(jī)器人能隨音樂(lè)節(jié)奏的變化自動(dòng)切換舞蹈動(dòng)作和速度。
基于該控制系統(tǒng)的舞蹈機(jī)器人在表演過(guò)程中動(dòng)作平穩(wěn)、流暢、節(jié)奏感好,系統(tǒng)穩(wěn)定可靠,并在“2004濱州機(jī)器人邀請(qǐng)賽”中獲得亞軍。
控制系統(tǒng)硬件設(shè)計(jì)是整個(gè)舞蹈機(jī)器人系統(tǒng)設(shè)計(jì)的基礎(chǔ),直接影響到機(jī)器人性能的發(fā)揮和可擴(kuò)展性以及系統(tǒng)軟件編程的復(fù)雜程度。
控制系統(tǒng)的硬件包括:單片機(jī)、FPGA、執(zhí)行電機(jī)、驅(qū)動(dòng)及反饋檢測(cè)模塊、存儲(chǔ)模塊、串行通信模塊、防碰撞模塊以及UPS供電模塊等部分。其整體結(jié)構(gòu)框圖如圖1所示。
圖1 舞蹈機(jī)器人控制系統(tǒng)框圖
電機(jī)是舞蹈機(jī)器人各種動(dòng)作的直接執(zhí)行機(jī)構(gòu),其型號(hào)和性能決定了機(jī)器人的表現(xiàn)能力和主控系統(tǒng)的工作方式。
考慮到舞蹈機(jī)器人體積、重量以及動(dòng)作不要求十分精確等自身特點(diǎn),采用兩個(gè)直流電機(jī)做底盤驅(qū)動(dòng),其型號(hào)為SMD882212(自帶減速30r/min)。
舵機(jī)具有體積小、重量輕、定位準(zhǔn)確、力矩大和不需要附加驅(qū)動(dòng)電路等特點(diǎn),能夠較好地勝任對(duì)舞蹈機(jī)器人任何自由度的驅(qū)動(dòng),從而實(shí)現(xiàn)各種舞蹈動(dòng)作。所以選用16個(gè)舵機(jī)來(lái)對(duì)16個(gè)自由度進(jìn)行全方位控制,舵機(jī)牌號(hào)為GWS MINI/STD微型舵機(jī)(15個(gè))和S04 BB大扭力舵機(jī)(2個(gè))。
單片機(jī)是整個(gè)控制系統(tǒng)的“大腦”。為使機(jī)器人動(dòng)作與音樂(lè)合拍,要求單片機(jī)不僅能實(shí)時(shí)處理各種舞蹈動(dòng)作的驅(qū)動(dòng)數(shù)據(jù),還要能夠及時(shí)處理各種反饋信息?;谝陨峡紤]選用了ATMEL公司生產(chǎn)的Atmega8515L單片機(jī)。
Atmega8515L單片機(jī)是一款新型的AVR單片機(jī)。它具有以下特點(diǎn):1)在線可編程 ISP(In-System Programming),使得在不用單片機(jī)仿真器的情況下,可以方便的對(duì)單片機(jī)程序進(jìn)行修改;2)速度快、支持單時(shí)鐘周期指令,使得機(jī)器人在處理完動(dòng)作數(shù)據(jù)后,有足夠的時(shí)間來(lái)響應(yīng)各種反饋信息;3)豐富的片內(nèi)資源,包括可編程異步串行口、內(nèi)部及外部中斷和為下載程序而設(shè)計(jì)的SPI串行口[5]。
試驗(yàn)證明,由一片單片機(jī)同時(shí)產(chǎn)生16個(gè)相互獨(dú)立的舵機(jī)和2個(gè)直流電機(jī)的控制信號(hào)雖然可以使硬件電路設(shè)計(jì)稍微簡(jiǎn)單,但卻使單片機(jī)軟件設(shè)計(jì)非常復(fù)雜,并且實(shí)時(shí)性不好??紤]到FPGA具有在線可編程、大容量和多I/O引腳、實(shí)時(shí)性好等特點(diǎn),選用FPGA芯片來(lái)實(shí)時(shí)產(chǎn)生舵機(jī)控制信號(hào)[4]。
FPGA芯片負(fù)責(zé)產(chǎn)生16路相互獨(dú)立的舵機(jī)控制信號(hào)。舵機(jī)每個(gè)動(dòng)作的實(shí)現(xiàn)只需要FPGA從單片機(jī)PA口連續(xù)兩次讀入兩個(gè)命令字:1)舵機(jī)要轉(zhuǎn)到的角度;2)第幾路舵機(jī)動(dòng)作。舵機(jī)在未收到新的動(dòng)作命令之前一直保持在原角度上。各路舵機(jī)信號(hào)相互獨(dú)立。
利用MAX+PLUSⅡ10.0開發(fā)環(huán)境,對(duì)所編寫的Verilog HDL程序項(xiàng)目進(jìn)行FPGA器件自動(dòng)適配,并在此基礎(chǔ)上選定了EPF10K10芯片。
驅(qū)動(dòng)及反饋檢測(cè)模塊主要包括直流電機(jī)的驅(qū)動(dòng)電路和光電編碼器模塊。選用一片具有四路驅(qū)動(dòng)能力的L293芯片驅(qū)動(dòng)兩個(gè)直流電機(jī)。每個(gè)直流電機(jī)需要兩路控制信號(hào),一路為轉(zhuǎn)向控制信號(hào),一路為轉(zhuǎn)速控制信號(hào)。通過(guò)轉(zhuǎn)向控制信號(hào)高低電平的切換,實(shí)現(xiàn)直流電機(jī)轉(zhuǎn)向控制;通過(guò)轉(zhuǎn)速控制信號(hào)占空比的改變,實(shí)現(xiàn)直流電機(jī)速度PWM控制。此外,還為機(jī)器人底盤安裝了光電編碼器,通過(guò)計(jì)算光電編碼器反饋回來(lái)的脈沖個(gè)數(shù)可以準(zhǔn)確的知道機(jī)器人行走的距離和轉(zhuǎn)彎角度。
供電電源是整機(jī)電路工作可靠的保證。為了簡(jiǎn)化供電系統(tǒng)、提高可靠性,本系統(tǒng)采用單電源供電。
電源模塊包括電池組和電平轉(zhuǎn)換、穩(wěn)壓電路。電池組由兩路3節(jié)的鋰電池組并聯(lián)而成,電池容量為2Ah/3.6V。電平轉(zhuǎn)換由DC-DC變換模塊HZD20-12S05構(gòu)成,穩(wěn)壓電路由 LM7812穩(wěn)壓模塊組成。DC-DC模塊5V電壓輸出被分成兩路,一路負(fù)責(zé)單片機(jī)、FPGA芯片及其相應(yīng)的外圍電路供電,另一路負(fù)責(zé)舵機(jī)供電;LM7812的12V電壓輸出負(fù)責(zé)直流電機(jī)驅(qū)動(dòng)芯片供電。
為了防止機(jī)器人在舞臺(tái)邊緣做動(dòng)作時(shí)發(fā)生碰撞或者被卡死,在機(jī)器人的底盤前、后兩個(gè)方向上安裝了光電開關(guān)模塊。光電開關(guān)模塊的輸出信號(hào)經(jīng)反相器連到單片機(jī)的INT0引腳,利用AVR單片機(jī)的外部中斷0,對(duì)發(fā)生碰撞或卡死的情況進(jìn)行處理。外部中斷0一旦被觸發(fā),既進(jìn)入防碰撞處理程序,控制機(jī)器人往相反方向運(yùn)動(dòng)。
串行通信模塊主要用于單片機(jī)與PC機(jī)控制軟件之間的串行通信,實(shí)現(xiàn)舞蹈動(dòng)作的在片編輯、調(diào)試。該模塊由RS-232總線接口、電平轉(zhuǎn)換芯片組成,利用PC機(jī)的COM 口經(jīng)由MAX232芯片驅(qū)動(dòng)與單片機(jī)實(shí)現(xiàn)通信。
PC機(jī)COM口是符合EIA RS-232C規(guī)范的外部總線標(biāo)準(zhǔn)接口。RS-232C采用的是負(fù)邏輯,即邏輯“1”為-5V 至-15V,邏輯“0”為+5V 至 +15V;而CMOS電平的邏輯“1”為 4.99V,邏輯“0”為0.01V;T TL電平的邏輯“1”和“0”則分別為2.4V和0.4V。因此在實(shí)現(xiàn)PC機(jī)與單片機(jī)串行通信時(shí)需外接MAX232電平轉(zhuǎn)換電路,在發(fā)送端將T TL或CMOS電平轉(zhuǎn)換為RS-232C電平,在接收端將RS-232C電平再轉(zhuǎn)換為T T L或CMOS電平。
存儲(chǔ)模塊用來(lái)存放上位機(jī)軟件編輯好的舞蹈動(dòng)作數(shù)據(jù)。設(shè)計(jì)中以5分鐘動(dòng)作數(shù)據(jù)量為標(biāo)準(zhǔn),選用了一片容量為8K的EEPROM芯片24LC64作為存儲(chǔ)元件。AVR單片機(jī)以I2C總線的方式實(shí)現(xiàn)對(duì)該存儲(chǔ)芯片的讀/寫操作。
如何使舞蹈機(jī)器人的動(dòng)作產(chǎn)生快慢變化并具有節(jié)奏感是控制系統(tǒng)需要解決的關(guān)鍵問(wèn)題。
為了實(shí)現(xiàn)舞蹈動(dòng)作快慢隨音樂(lè)變化而改變,本文采用了一種舵機(jī)角度插值的策略,即把舵機(jī)定位在初始位置和目標(biāo)位置之間的多個(gè)中間位置。例如:如果舵機(jī)現(xiàn)處在 20°位置處,要運(yùn)動(dòng)到25°位置處,系統(tǒng)可以讓舵機(jī)先轉(zhuǎn)到21°位置處,然后轉(zhuǎn)到22°、23°、24°,最后轉(zhuǎn)到 25°位置處 ,這就使得舵機(jī)動(dòng)作速度減慢。如果使舵機(jī)以不同的中間位置點(diǎn)數(shù)遞增,就可以得到不同的舵機(jī)運(yùn)動(dòng)速度了。在實(shí)際中,把舵機(jī)0~180°轉(zhuǎn)角細(xì)分為100等份,即舵機(jī)轉(zhuǎn)動(dòng)以1.8°的整數(shù)倍為中間位置。
為保證機(jī)器人舞蹈動(dòng)作的節(jié)奏性,將舞蹈動(dòng)作按音樂(lè)節(jié)拍來(lái)分割。編輯舞蹈動(dòng)作時(shí),通過(guò)上位機(jī)控制軟件以節(jié)拍為單位錄入動(dòng)作;實(shí)現(xiàn)舞蹈動(dòng)作時(shí),單片機(jī)程序以音樂(lè)節(jié)拍時(shí)間為單位讀入動(dòng)作數(shù)據(jù)。在PC機(jī)端,上位機(jī)軟件將在一個(gè)音樂(lè)節(jié)拍內(nèi)各路舵機(jī)要完成的動(dòng)作經(jīng)過(guò)處理后按事先指定的格式存儲(chǔ)到一個(gè)數(shù)組內(nèi),再通過(guò)計(jì)算機(jī)串口下載到EEPROM 中;在單片機(jī)端,單片機(jī)程序在下一個(gè)音樂(lè)節(jié)拍到來(lái)之前從EEPROM讀入下一組動(dòng)作數(shù)據(jù),并在上一舞蹈節(jié)拍結(jié)束后將該組動(dòng)作數(shù)據(jù)送往FPGA控制其輸出相應(yīng)的PWM信號(hào)驅(qū)動(dòng)舵機(jī)執(zhí)行舞蹈動(dòng)作。
舞蹈機(jī)器人經(jīng)裝機(jī)調(diào)試,實(shí)現(xiàn)了舞蹈動(dòng)作的在線編輯和平穩(wěn)流暢控制,并在“2004濱州機(jī)器人邀請(qǐng)賽”中獲得亞軍。
本文研制的舞蹈機(jī)器人控制系統(tǒng)具有以下特點(diǎn):
1)舞蹈機(jī)器人控制采用AVR單片機(jī)和FPGA相配合,充分利用單片機(jī)成本低、運(yùn)算控制簡(jiǎn)單和FPGA實(shí)時(shí)并行處理能力強(qiáng)、引腳數(shù)量多等特點(diǎn)實(shí)現(xiàn)了16個(gè)舵機(jī)的同步控制和I/O端口擴(kuò)展,使外圍接口簡(jiǎn)單,整機(jī)性價(jià)比高。
2)舞蹈機(jī)器人采用角度插值控制思想,實(shí)現(xiàn)了對(duì)舵機(jī)速度在0~180°轉(zhuǎn)角范圍內(nèi)平滑轉(zhuǎn)動(dòng)和變速的控制,使舞蹈動(dòng)作隨著音樂(lè)節(jié)拍而變化自如。
3)利用自主開發(fā)的具有圖形界面的上位機(jī)控制軟件實(shí)現(xiàn)舞蹈動(dòng)作的可視化編輯調(diào)試,調(diào)試簡(jiǎn)單 、快捷 。
4)舞蹈機(jī)器人以音樂(lè)節(jié)拍為時(shí)間單位實(shí)現(xiàn)舞蹈動(dòng)作的編輯,方便了舞蹈動(dòng)作調(diào)試,且動(dòng)作更具節(jié)奏感。
[1]Kazuhiro Kosuge,Tomohiro Hayashi,Yasuhisa Hirata,et al.Dance Partner Robot-Ms DanceR[C]//2003 IEEE/RSJ International Conference,2003,4(3):3459~3464
[2]楊子夫,米良川,李德升,等.舞蹈機(jī)器人步進(jìn)電機(jī)驅(qū)動(dòng)電路和程序設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2002,28(9)
[3]董建軍,楊文杰,王兵.舞蹈機(jī)器人的設(shè)計(jì)與控制[J].信陽(yáng)師范學(xué)院學(xué)報(bào),2002,15(4):456~467
[4]熊承義,孫奉?yuàn)?一種基于CPLD的寬可調(diào)PWM信號(hào)發(fā)生器[J].中南民族學(xué)院學(xué)報(bào),2001,30(3):9~11
[5]宋建國(guó).AVR單片機(jī)原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,1998,10
[6][美]邁克?普瑞德科.機(jī)器人控制器與程序設(shè)計(jì)[M].宗光華,李大寨,譯.北京:科學(xué)出版社,2004