華中師范大學(xué)計(jì)算機(jī)學(xué)院 王澤紅 彭 熙 劉思源 康程華 張桓瑜 盧書(shū)宇
近年來(lái),機(jī)器人作為高技術(shù)領(lǐng)域內(nèi)具有代表性的戰(zhàn)略目標(biāo),機(jī)器人技術(shù)的研究與發(fā)展很受重視。我國(guó)的“中國(guó)制造2025”國(guó)家創(chuàng)新戰(zhàn)略就把發(fā)展機(jī)器人作為搶占技術(shù)和市場(chǎng)制高點(diǎn)的重要戰(zhàn)略舉措。[1]
舞蹈機(jī)器人是一種娛樂(lè)機(jī)器人,具有人類(lèi)外觀特征,能伴隨音樂(lè)進(jìn)行舞蹈表演,其較強(qiáng)的觀賞性和娛樂(lè)功能使其具有很大的研究與市場(chǎng)開(kāi)發(fā)價(jià)值。舞蹈機(jī)器人同一般機(jī)器人,由機(jī)械結(jié)構(gòu)、控制系統(tǒng)、驅(qū)動(dòng)裝置和傳感系統(tǒng)等組成。本次設(shè)計(jì)采用Arduino單片機(jī)作為舞蹈機(jī)器人硬件控制系統(tǒng)的核心,使用19個(gè)LDX-227舵機(jī)作為關(guān)節(jié)驅(qū)動(dòng)和一個(gè)微伺服電機(jī)控制器作為舵機(jī)驅(qū)動(dòng),實(shí)現(xiàn)對(duì)伺服舵機(jī)的分時(shí)控制,以達(dá)到控制機(jī)器人完成各種動(dòng)作的目的。為機(jī)器人設(shè)計(jì)紅外測(cè)距系統(tǒng),通過(guò)紅外測(cè)距技術(shù)實(shí)現(xiàn)人機(jī)交互功能。并根據(jù)需求繪制舞蹈機(jī)器人零部件圖紙,通過(guò)3D打印技術(shù)制造出機(jī)器人整體零部件。
設(shè)計(jì)與開(kāi)發(fā)一款舞蹈機(jī)器人,首先需要對(duì)其總體進(jìn)行分析與設(shè)計(jì),確定該款機(jī)器人的功能,基本結(jié)構(gòu)和系統(tǒng)配置。
該款舞蹈機(jī)器人設(shè)計(jì)目的為從藝術(shù)性與觀賞性出發(fā),實(shí)現(xiàn)機(jī)器人舞蹈表演和人機(jī)交互功能。我們提出以下設(shè)計(jì)要點(diǎn):
(1)機(jī)器人為雙足類(lèi)人結(jié)構(gòu),具有19個(gè)自由度。自由度分配為:一個(gè)1自由度的頸部,一雙4自由度的手部,一雙5自由度的腿部。這款機(jī)器人需可完成大部分普通舞蹈動(dòng)作,以及轉(zhuǎn)動(dòng)手腕的特殊舞蹈動(dòng)作,實(shí)現(xiàn)機(jī)器人舞蹈表演功能。
(2)根據(jù)系統(tǒng)的工作要求設(shè)計(jì)控制電路,實(shí)現(xiàn)機(jī)器人各關(guān)節(jié)自由度協(xié)調(diào)控制,并使機(jī)器人具有穩(wěn)定系統(tǒng)性能。
(3)為機(jī)器人設(shè)計(jì)紅外測(cè)距系統(tǒng),根據(jù)人距離機(jī)器人遠(yuǎn)近做出不同交互動(dòng)作,使其具備人機(jī)交互功能。
(4)利用3D打印技術(shù)設(shè)計(jì)舞蹈機(jī)器人外觀部件,最大程度滿足觀賞性和娛樂(lè)性的要求。
(5)設(shè)計(jì)一套契合機(jī)器人設(shè)計(jì)主題的舞蹈動(dòng)作,并編寫(xiě)對(duì)應(yīng)Arduino程序。
硬件系統(tǒng)設(shè)計(jì)方案分為機(jī)器人機(jī)械結(jié)構(gòu)設(shè)計(jì)以及控制系統(tǒng)的硬件設(shè)計(jì)部分。
2.1.1 機(jī)械結(jié)構(gòu)
經(jīng)過(guò)分析,要實(shí)現(xiàn)預(yù)期舞蹈動(dòng)作,本款舞蹈機(jī)器人應(yīng)設(shè)計(jì)為雙足類(lèi)人結(jié)構(gòu),具有19個(gè)自由度。圖1為舞蹈機(jī)器人整體結(jié)構(gòu)示意圖。所有自由度由伺服舵機(jī)分別單獨(dú)控制,其中自由度分配如圖1所示。
圖1 舞蹈機(jī)器人整體結(jié)構(gòu)示意圖
(1)頸部:一個(gè)1自由度。可實(shí)現(xiàn)頭部的來(lái)回轉(zhuǎn)動(dòng)。
(2)肩部:兩個(gè)自由度??蓪?shí)現(xiàn)肩部前后擺動(dòng)和左右擺動(dòng)。
(3)肘部:一個(gè)自由度??蓪?shí)現(xiàn)手臂的旋轉(zhuǎn)。該關(guān)節(jié)通常設(shè)計(jì)為實(shí)現(xiàn)手臂曲伸,但考慮到手臂重量和特殊舞蹈動(dòng)作設(shè)計(jì)需求,我們做出了滿足需求的修改。
(4)手腕:一個(gè)自由度??煽刂剖植块_(kāi)合,實(shí)現(xiàn)機(jī)器人用手部夾取東西的功能。
(5)跨部:兩個(gè)自由度。可實(shí)現(xiàn)跨部開(kāi)合和大腿前后抬放動(dòng)作。
(6)膝部:一個(gè)自由度。實(shí)現(xiàn)膝部曲伸動(dòng)作。
(7)腳腕:兩個(gè)自由度。實(shí)現(xiàn)腳板抬放和里側(cè)外側(cè)動(dòng)作。
2.1.2 控制系統(tǒng)硬件設(shè)計(jì)
本文所涉及的舞蹈機(jī)器人系統(tǒng),主要組成部分為:Arduino M0單片機(jī)、傳感器拓展板、32路伺服舵機(jī)控制器、GP2D12紅外測(cè)距傳感器、伺服舵機(jī)、電源。其硬件系統(tǒng)組成框圖如圖2所示。
(1)Arduino M0:我們選擇Arduino M0作為機(jī)器人控制主板。Arduino將開(kāi)源硬件與開(kāi)源軟件相結(jié)合,是一塊基于開(kāi)放原始碼的USB接口Simple I/O接口板[2]。Arduino的電路板是硬件開(kāi)源的,而配套上位機(jī)是軟件開(kāi)源的,我們可以容易的找到相應(yīng)的電路圖紙、軟件代碼和庫(kù)文件,十分便于我們?cè)谄渖线M(jìn)行自主設(shè)計(jì)并開(kāi)發(fā)。Arduino可以脫離電腦獨(dú)立運(yùn)行,可以搭配各種傳感器使用,能滿足機(jī)器人控制系統(tǒng)設(shè)計(jì)需求。
圖2 舞蹈機(jī)器人硬件系統(tǒng)組成框圖
一套4分鐘左右的流暢美觀的舞蹈,通常需要350步以上的機(jī)器人動(dòng)作,對(duì)應(yīng)的代碼相對(duì)較大,單片機(jī)需要有足夠大的內(nèi)存存儲(chǔ)空間來(lái)存儲(chǔ)程序。Arduino M0是UNO的增強(qiáng)版,具有較大的內(nèi)存,更符合我們的需求。
表1所示為Aduino M0和Arduino UNO的參數(shù)對(duì)比:
表1 Arduino M0和UNO參數(shù)對(duì)比
(1)傳感器拓展板:Arduino Sensor Shield V5.0傳感器擴(kuò)展板將Arduino控制器的全部數(shù)字與模擬接口以舵機(jī)線序形式擴(kuò)展出來(lái),十分便于我們連接單片機(jī)與需要的傳感器。
(2)功能選擇開(kāi)關(guān):開(kāi)關(guān)一端連接數(shù)字接口作為輸入端,另一端連接單片機(jī)穩(wěn)定輸出3.3v電壓的正極。用來(lái)實(shí)現(xiàn)機(jī)器人舞蹈表演或人機(jī)交互的功能選擇。
(3)微伺服電機(jī)控制器:由于Arduino M0上只有14個(gè)PWM引腳,不能滿足我們?cè)O(shè)計(jì)需求,因此我們選用了Arduino 32路伺服舵機(jī)控制器作為微伺服電機(jī)控制器。其具有控制指令精簡(jiǎn),控制轉(zhuǎn)角精度高,波特率可以實(shí)時(shí)更改,體積小,重量輕等優(yōu)點(diǎn)。通過(guò)Arduino M0單片機(jī)給控制器傳遞控制指令信號(hào),可實(shí)現(xiàn)對(duì)多路伺服舵機(jī)的分時(shí)控制。
(4)紅外測(cè)距傳感器:GP2D12紅外線測(cè)距傳感器輸出為模擬值,其電壓值與被測(cè)物距離值成反比。大約為距離10cm輸出2.55V,距離80cm輸出0.42V。使用Arduino的模擬量采樣命令analogRead()獲得模擬量數(shù)據(jù)。
圖3 模擬信號(hào)與測(cè)量距離對(duì)應(yīng)表
圖3所示為GP2D12紅外測(cè)距傳感器模擬信號(hào)與測(cè)量距離對(duì)應(yīng)表。analogRead()命令采樣的數(shù)據(jù)范圍由0到1023,對(duì)應(yīng)的電壓范圍由0到5v,每單位數(shù)據(jù)代表0.0049v,讀取的有效數(shù)據(jù)由86(0.42v)到520(2.548v)。另外這個(gè)關(guān)系式里的距離為參考距離,實(shí)際距離值需另外減去0.42cm。對(duì)應(yīng)圖4曲線有實(shí)際距離與采樣數(shù)據(jù)之間的關(guān)系式為:
實(shí)際距離=2547.8/(( float)采樣數(shù)據(jù)*0.49-10.41)-0.42
(1)伺服舵機(jī):舵機(jī)是一種位置的伺服驅(qū)動(dòng)器,具有閉環(huán)控制系統(tǒng)的機(jī)電結(jié)構(gòu),由小型直流電機(jī)、變速齒輪組、可調(diào)電位器、控制板等部件組成[3]。由于可以方便地控制舵機(jī)旋轉(zhuǎn)的角度,在舞蹈機(jī)器人設(shè)計(jì)中被廣泛應(yīng)用。伺服舵機(jī)接收控制器發(fā)出的脈寬調(diào)制(PWM)信號(hào),獲得直流偏置電壓。舵機(jī)內(nèi)部的基準(zhǔn)電路產(chǎn)生周期為20ms,脈寬為1.5ms的基準(zhǔn)信號(hào)。將直流偏置電壓與電位器的電壓比較得到的電壓差輸出到電機(jī)驅(qū)動(dòng)芯片,驅(qū)動(dòng)芯片根據(jù)電壓差的正負(fù)控制電機(jī)的正反轉(zhuǎn)。[4]
本設(shè)計(jì)選用的舵機(jī)為深圳樂(lè)幻索爾科技公司的270o數(shù)字雙軸舵機(jī)。該款舵機(jī)利用PWM脈寬型調(diào)節(jié)角度,周期20ms,占空比0.5ms~2.5ms的脈寬電平對(duì)應(yīng)舵機(jī)0°~270°角度范圍,且成線性關(guān)系。數(shù)字舵機(jī)具有發(fā)送一次PWM信號(hào)就能鎖定角度不變,控制精度高、響應(yīng)速度快、線性度好的優(yōu)點(diǎn),270o的舵機(jī)能實(shí)現(xiàn)舞蹈機(jī)器人大部分舞蹈動(dòng)作。
(2)電源:電源模塊主要用來(lái)給系統(tǒng)中控制板和伺服舵機(jī)分別供電,使其不會(huì)發(fā)生相互干擾。系統(tǒng)電路各部分所需電壓不盡相同,Arduino M0工作電壓為3.3v,紅外測(cè)距傳感器工作電壓為5v,控制板控制端工作電壓為+7v~+12v,而LDX-227舵機(jī)工作電壓為+6v~+8.4v。基于系統(tǒng)需求,機(jī)器人電源模塊與硬件系統(tǒng)各模塊接線如圖4所示。
圖4 舞蹈機(jī)器人硬件系統(tǒng)接線圖
根據(jù)機(jī)械結(jié)構(gòu)設(shè)計(jì)與控制電路設(shè)計(jì),單片機(jī)上的控制程序主要包括一個(gè)主程序和多個(gè)實(shí)現(xiàn)相應(yīng)功能的子程序。Arduino代碼兼容C/C++語(yǔ)言,程序采用C語(yǔ)言按模塊化編程思想進(jìn)行編寫(xiě)。機(jī)器人舞蹈動(dòng)作、機(jī)器人不同的交互動(dòng)作、功能選擇判斷、紅外測(cè)距數(shù)據(jù)處理均在子函數(shù)中完成,主函數(shù)負(fù)責(zé)對(duì)子函數(shù)的調(diào)用。圖5所示為主程序結(jié)構(gòu)框圖:
圖5 主程序框圖
圖6 舞蹈機(jī)器人等軸測(cè)圖
在程序編寫(xiě)完成后,我們用Arduino官方推出的標(biāo)準(zhǔn)編譯環(huán)境——Arduino IDE進(jìn)行代碼的編譯于燒錄。
在機(jī)器人設(shè)計(jì)過(guò)程中,我們充分考慮機(jī)器人的美觀性和穩(wěn)定性,同時(shí)考慮到機(jī)器人本體重量不能過(guò)重,否則舵機(jī)功率消耗太大,帶來(lái)舵機(jī)過(guò)度損耗和系統(tǒng)供電困難的難題。在便于零部件設(shè)計(jì)、測(cè)試、修改的前提下,我們采用3D打印技術(shù)進(jìn)行機(jī)器人整體零部件的設(shè)計(jì)與實(shí)現(xiàn)。
3D打印技術(shù),即增材制造(additive manufacturing,AM)技術(shù)是通過(guò)CAD設(shè)計(jì)數(shù)據(jù)采用材料逐層累加的方法制造實(shí)體零件的技術(shù),相對(duì)于傳統(tǒng)的材料去除(切削加工)技術(shù),是一種“自下而上”材料累加制造制造方法。[5]3D打印過(guò)程分為三維設(shè)計(jì)、切片處理、修改打磨步驟。
基于舞蹈機(jī)器人整體結(jié)構(gòu)設(shè)計(jì)和功能需求,我們用CAD和3ds Max繪制出機(jī)器人整體零部件圖紙。圖6所示為舞蹈機(jī)器人整體三維模型等軸測(cè)圖。
機(jī)器人零部件三維模型設(shè)計(jì)中,零部件尺寸要與選用的LDX-227伺服舵機(jī)尺寸適合,在機(jī)器人頭部、軀干、四肢外,要有能安裝Arduino單片機(jī)和傳感器拓展板、微伺服電機(jī)控制器以及電源的空間。零部件厚度應(yīng)在保證機(jī)器人穩(wěn)定性的前提下考慮美觀性。經(jīng)過(guò)反復(fù)打印測(cè)試和修改,我們最終設(shè)計(jì)出一款美觀、穩(wěn)定的機(jī)器人圖紙。
其中,為滿足舞蹈表演主題,機(jī)器人頭部設(shè)計(jì)參考了孫悟空形象,手部設(shè)計(jì)為可開(kāi)合夾取物體的形狀,使機(jī)器人可實(shí)現(xiàn)轉(zhuǎn)、甩金箍棒等特殊舞蹈動(dòng)作。
設(shè)計(jì)完成后,進(jìn)行了功能測(cè)試。測(cè)試方法為:
(1)設(shè)計(jì)一套測(cè)試動(dòng)作,動(dòng)作中包含前進(jìn)、后退、側(cè)移、蹲下起立、單腳站立、夾取物體、揮舞物體等動(dòng)作。將編寫(xiě)好的程序燒錄入主控板,將機(jī)器人放于2m*2m的木板上運(yùn)行,測(cè)試機(jī)器人執(zhí)行動(dòng)作的穩(wěn)定性。
(2)運(yùn)行紅外測(cè)距部分代碼,障礙物距離機(jī)器人15——25cm處,26——35cm處,40cm以外,機(jī)器人分別做出相應(yīng)的交互動(dòng)作,測(cè)試人機(jī)交互功能。
經(jīng)過(guò)測(cè)試,機(jī)器人能穩(wěn)定流暢地進(jìn)行舞蹈表演,但由于機(jī)器人重心偏高,肘部不能曲伸等因素,無(wú)法實(shí)現(xiàn)翻滾、倒立一類(lèi)的難度動(dòng)作。紅外測(cè)距部分則能較準(zhǔn)確地識(shí)別障礙物的距離并作出相應(yīng)動(dòng)作??傮w而言,測(cè)試結(jié)果比較理想。
本文設(shè)計(jì)了一款外形美觀、性能穩(wěn)定的小型舞蹈機(jī)器人。機(jī)器人共19個(gè)自由度,能進(jìn)行舞蹈表演,能實(shí)現(xiàn)人機(jī)交互功能。此外本系統(tǒng)具有舞蹈機(jī)器人研究的拓展空間,能在本系統(tǒng)上模擬、研究多傳感器在舞蹈機(jī)器人上的應(yīng)用,研究機(jī)器人運(yùn)動(dòng)規(guī)律,為智能機(jī)器人的研究提供了一個(gè)可靠的平臺(tái)。在機(jī)器人機(jī)械結(jié)構(gòu)設(shè)計(jì)中,我們花費(fèi)大量精力不斷修改完善對(duì)每個(gè)零部件的設(shè)計(jì),最終完成兩臺(tái)穩(wěn)定美觀的3D打印的完整機(jī)器人。在硬件系統(tǒng)設(shè)計(jì)中,我們?cè)囉煤捅容^了幾款A(yù)rduino主板,最后選擇了Arduino M0作為舞蹈機(jī)器人的主控板,在設(shè)計(jì)與研究的過(guò)程中,由于Arduino主板PWM引腳數(shù)的少于設(shè)計(jì)所需的自由度數(shù),我們?cè)黾恿?2路伺服舵機(jī)控制板來(lái)滿足對(duì)分時(shí)控制多個(gè)伺服舵機(jī)的需求。
[1]余東華,胡亞男,呂逸楠.新工業(yè)革命背景下“中國(guó)制造2025”的技術(shù)創(chuàng)新路徑和產(chǎn)業(yè)選擇研究[J].天津社會(huì)科學(xué),2015(4).
[2]蔡睿妍.Arduino的原理及應(yīng)用[J].電子設(shè)計(jì)工程,2012(16).
[3]胡小江,董飛垚,雷虎民,等.基于虛擬儀器的舵機(jī)半實(shí)物仿真系統(tǒng)研究[J].測(cè)控技術(shù),2011(1).
[4]蔡睿妍.基于Arduino的舵機(jī)控制系統(tǒng)設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2012(15).
[5]盧秉恒,李滌塵.增材制造(3D打印)技術(shù)發(fā)展[J].機(jī)械制造與自動(dòng)化,2013(04).