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