申耀武
(廣州南洋理工職業學院,廣東 廣州 510925)
恐龍機器人是一種仿生機器人。仿生機器人是以生物的外形、動作原理及特性為基礎,利用機械結構結合電子晶片來模仿生物的一舉一動。近年來,仿生機器人的研究一直是機器人研究的熱點,具有廣闊的開發前景。
本文中的恐龍機器人通過AT89S51單片機產生PWM脈沖信號,控制伺服馬達的轉動來拉扯頭部、尾部及腿部動作,再通過巧妙的機械結構運動方式,使放在恐龍頭尾的重量得以調整,使重心轉移來達到單腳支撐身體重心的行走方式,所以恐龍的重量分配成為其能否成功行走的重點。
恐龍機器人結構如圖1所示,它由頭部、身體、肩部、尾部及腿部等幾部分組成。
頭部和尾部各裝4顆3號電池,為恐龍機器人提供所需的電源,同時電池重量可使恐龍行走時保持平衡。身體部分由8個伺服馬達組成。其他機械機構采用亞克力板。
2.1.1 材料選擇
制作小型機器人的材料有很多種,本文選用透明亞克力材料,化學名稱為甲基丙烯酸甲酯。該恐龍機器人設計制作使用厚度為3mm的亞克力板,這種材料具有良好的表面硬度及光澤,加工容易。由于亞克力板表面比較光滑,需使用專用亞克力膠水,常用氯仿作為黏結劑,但氯仿同時也是一種麻醉劑,具有毒性,透明如水,使用時須注意安全。
2.1.2 伺服馬達
小型機器人大多使用 R/C(Radio Control,無線電遙控)伺服馬達,其工作電壓為4V~6V直流電,體積較小,價格便宜,不需外加電路。該恐龍機器人采用GWS S03T伺服馬達,其扭力可達7.2kg·cm,機器人動作順暢。
R/C伺服馬達利用 PWM(Pulse Width Modulation,脈沖寬度調制)驅動信號,即利用周期約為20ms~30ms、脈沖寬度為0.8ms~2.2ms的脈沖信號來控制R/C伺服馬達的轉角,當R/C伺服馬達收到這種PWM的脈沖信號時,會根據脈沖寬度的大小選擇順時針轉動或逆時針轉動,從而改變轉動的角度及轉動的速度。PWM波形如圖2所示。

圖2 PWM波形
當脈沖寬度為1.5ms時,R/C伺服馬達會停在“中間位置”,當R/C伺服馬達接到此信號時,會一直停在中間位置,并固定不動,直到PWM脈沖寬度發生改變;若脈沖寬度為0.8ms時,伺服馬達逆時針轉到底;若脈沖寬度從0.8ms→1.5ms→2.2ms并維持,伺服馬達便順時針轉到底,并固定在該位置上,若此時有外力企圖將伺服馬達的輸出軸心轉動離開該位置時,則伺服馬達會立刻輸出動力使自己維持在原來的位置上,直到脈沖寬度改變。
另外,若脈沖信號的寬度沒有在此規定的范圍內,或者只給R/C伺服馬達電源,而沒有給它脈沖信號,都會使R/C伺服馬達發生無法預期的轉動甚至造成損壞。
采用ATMEL公司生產的AT89S51單片機控制,AT89S51是一種低功率、高效能的8位單片機,工作電壓為4.0V~5.5V,具有32個輸入/輸出引腳,一次可以控制多個R/C伺服馬達。
利用AT89S51單片機計時中斷方式,可定時產生周期性的PWM信號來驅動伺服馬達。
8個R/C伺服馬達的信號線接至單片機的P2.0引腳,+VCC腳接VCC,GND腳接地。
控制電路圖如圖3所示。

圖3 控制電路圖
程序流程圖如圖4所示。

圖4 程序流程圖
經過示波器及伺服馬達的調整,代表伺服馬達位置的暫存器(mtable[0]~[7])值為53時,伺服馬達為中間位置,80為逆時針到底(2.2ms),28為順時針到底(0.8ms)。所以數值越大,PWM脈沖寬度越大,伺服馬達逆時針轉動;數值越小,PWM脈沖寬度越小,伺服馬達順時針轉動。若更改mtable[0]~[7]的值,就會使伺服馬達轉動從而帶動恐龍機器人完成不同的動作。為避免恐龍機器人機構因轉動而損壞,mtable[0]~[7]的范圍為80~28。
恐龍機器人在第一次使用時,為避免伺服馬達裝設的位置未設定在最佳狀況,造成啟動后機構或者馬達損壞,必須對機構進行校正,使每個伺服馬達先處在中間位置。校正步驟為:①將恐龍機器人的8個伺服馬達輸出圓軸從伺服馬達主體撥開,也就是讓伺服馬達轉動時,不會帶動機構;②利用AT89S51單片機產生PWM脈沖信號,使8個伺服馬達通電均處于中間位置;③當伺服馬達處于中間位置時,在不切斷電源的情況下,將8個伺服馬達輸出圓軸再裝回各自的伺服馬達上,以此時的位置作為起點位置。
實現恐龍機器人的行走,可將其分為8個步驟,各步驟及圖示如下:
步驟1:如圖5所示,從初始位置開始,首先將重心向右移。

圖5 步驟1
步驟2:如圖6所示,第2個伺服馬達順時針轉動,左腳抬高。
步驟3:如圖7所示,第3個伺服馬達順時針轉動,左腳向前踏下,同時,右腳向后推,使身體前進。
步驟4:如圖8所示,重心左移。
步驟5:如圖9所示,左腳置中,右腳抬高跨出。
步驟6:如圖10所示,右腳踏下,左腳向后推,使身體向前移。
步驟7:如圖11所示,重心向右移。

圖6 步驟2

圖7 步驟3

圖8 步驟4

圖9 步驟5
步驟8:直接從步驟2重新開始第2步。
恐龍機器人的行走動作從步驟1開始,接下來步驟2~步驟7不斷循環。
根據實驗,利用前后各2顆電池就可以使恐龍行走達到平衡,但由于考慮到伺服馬達的耗電問題,本恐龍機器人使用了8顆3號電池,也因此增加了恐龍的自身重量,使恐龍從蹲下到站立時會稍微有點吃力,但仍能完成規定動作。也可使用鋰電池或移動電源,并在恐龍機器人頭部和尾部配上重量,使機器人行走時達到重心平衡。

圖10 步驟6

圖11 步驟7
本文設計的恐龍機器人,其硬件和控制電路結構簡單,程序控制動作靈活,便于實現。本恐龍機器人可以實現恐龍的蹲下、站立、取食及觀測動作,也可藉由重心轉移時產生的慣性,并配合步法來做轉彎的動作。實驗證明,該方案設計有效。
[1] 黃勤.單片機原理及應用[M].北京:清華大學出版社,2010.
[2] 王曉明.電動機的單片機控制[M].北京:北京航空航天大學出版社,2011.
[3] 梅隆.機器人[M].劉榮,譯.北京:科學普及出版社,2008.
[4] 鄭劍春.機器人結構與程序設計[M].北京:清華大學出版社,2010.
[5] 郝礦榮,丁永生.機器人的幾何代數模型與控制 [M].北京:科學出版社,2011.
[6] 劉金國,高宏偉,駱海濤.智能機器人系統建模與仿真[M].北京:科學出版社,2014.