蔡勝宇 儲澤楠
摘 要:本文以矩形輪腿式的六足機器人為試驗機器人,以STM32單片機為主要控制核心,以舵機控制板為輔助板,利用上位機編程來編寫六足機器人的動作組,通過PS2手柄發(fā)送命令到單片機,單片機控制舵機板實現(xiàn)相應的動作組,后期采用Arduino控制板通過傳感器對環(huán)境變化的檢測實現(xiàn)對動作組的控制,實現(xiàn)六足機器人的自動化移動。
關鍵詞:復合運動;STM32;上位機;PS2;舵機控制板Arduino
中圖分類號:TP242文獻標識碼:A文章編號:1003-5168(2018)26-0010-04
隨著社會的不斷發(fā)展和進步,人類涉足的范圍盡管不斷增加,但在人類社會和自然界中還存在一些可能危及我們生命的特殊場合,如深山、發(fā)生災難的礦井、救援救助等人類當前尚沒有辦法到達的地方,這些地方的地形具有共同的特點:崎嶇不平和地形不規(guī)則。通過以往的試驗可以看出,在比較平坦的路面上,輪式機器人無論在速度和靈活程度上都有絕對的優(yōu)勢,但在不平坦的路面上,輪式機器人在能量消耗上更加明顯且靈活程度大大降低。相對而言,履帶式機器人在不平坦的地面上更具優(yōu)勢,但在機動性和平衡性方面存在較大缺陷。與輪式、履帶式移動機器人相比,在崎嶇路面上步行的機器人具有更為優(yōu)越的性能。
筆者結合六足機器人的優(yōu)點和輪式移動機器人的優(yōu)點,設計了輪腿式復合機器人。這種復合式機器人通過輪式與足式的不斷變換,不僅可以在平坦的路面上快速行駛,而且能平穩(wěn)地通過崎嶇的地面[1,2]。
1 六足機器人的總體結構設計
1.1 六足機器人機械結構的選擇
本項目中需要考慮的主要問題是六足復合式機器人的輪腿結構組合方式?,F(xiàn)有的輪腿組合方式主要有3種:輪、腿結合式;輪、腿獨立式;輪即是腿,腿即是輪式。六足機器人的機械結構有很多,大部分以圓周型和矩形為主。
本項目采用矩形機械結構,具體如圖1所示。從圖上可以看出,機器人的輪子和腿相對獨立,分別獨立安裝在機器人的本體上,當腿向某一方向折疊收起時,輪子就與地面接觸,這時機器人就可以做輪式運動;當關節(jié)伸展站立時,輪子與地面脫離,這時機器人可進行腿式步行。相對圓周形機械結構,矩形機械結構中六足的平行性恰好滿足了機器人由足變成輪時兩組輪子恰好實現(xiàn)了平行性移動的特點。
圖1 六足機器人機械結構三維圖
1.2 控制板的選擇
控制板是整個六足機器人的核心??刂瓢宥喾N多樣,有樹莓派、32單片機、51單片機、Arduino控制板等??紤]到整個項目對六足機器人的智能控制和便捷操作、板子面積及功耗等方面的影響,加上32單片機有強大的PWM輸出效率、運行速度快、內(nèi)存大、強大的工程編程環(huán)境、數(shù)量比較多的IO口,所以選擇32單片機為主要控制板。
本項目采用STM公司的STM32F103系列的單片機,該系列的單片機高性能、低成本、低功耗,具有144個引腳,給項目提供更多IO的使用,內(nèi)核采用ARM Cortex?-M3微控制器,1μs的雙12位ADC,4Mb/s的UART,18Mb/s的SPI,18MHz的I/O翻轉(zhuǎn)速度。
2 六足機器人的步態(tài)控制
2.1 六足機器人的三角步態(tài)
六足機器人步行行走步態(tài)(見圖2)是機器人研究的重要問題,自然界內(nèi)六足類的動物在行走時,一般六足并不是同時直線前進的,而是像人一樣將三對足分成兩組,相當于人的左右腿,以三角形態(tài)結構交替前進。六足動物身體左側的前足、后足及右側的中足為一組,其他的為一組。在行進的過程中,其中一組為支撐組,另一組為運動組,這時重心在支撐組。然后,運動組變?yōu)橹谓M,支撐組變?yōu)檫\動組,這樣周而復始,就可以實現(xiàn)六足的三角步態(tài)行走[3-5]。
圖2 三角步態(tài)示意圖
2.2 舵機控制核心
六足機器人足是由18個舵機組成的關節(jié)組合,舵機控制板可以同時控制多個舵機的轉(zhuǎn)動速度,轉(zhuǎn)動角度。上位機制作是實現(xiàn)電腦對舵機控制板圖形化編程的重要步驟,其能直接明了地實現(xiàn)對單個舵機及舵機動作組的編程。
2.3 單片機對舵機控制板的控制步態(tài)
32單片機對舵機控制板是通過串口的通信控制舵機做出相應的動作或者動作組。單片機和舵機控制板存在通信協(xié)議,該協(xié)議在波特率為9600的環(huán)境下通信,該協(xié)議的命令由4部分組成,即幀頭、數(shù)據(jù)長度、指令、參數(shù)。舵機板在連續(xù)接收到兩個0X55的情況下,表示開始接收數(shù)據(jù),即幀頭。數(shù)據(jù)長度就是指令和參數(shù)占用一個字節(jié)的長度。
例如,控制舵機動作組的實現(xiàn),需要的指令名為CMD _ACTION_GROUP_RUN,可以看出指令值為6,數(shù)據(jù)長度為5,這里只涉及三個參數(shù),格式和控制舵機命令一樣。參數(shù)1:要運行的動作組的編號;參數(shù)2:動作組要運行的次數(shù)低八位;參數(shù)3:動作組要運行的次數(shù)高八位。
例如,控制2號動作組:幀頭:0X55 0X55;數(shù)據(jù)長度0X05;指令值:0X06;參數(shù):0x01 0x02 0x01。
通過通信協(xié)議的建立,控制舵機動作組的不單單是舵機控制板,32單片機也可以通過串口通信命令的發(fā)送實現(xiàn)對舵機動作及動作的實現(xiàn)。
3 六足機器人的輪腿轉(zhuǎn)換
3.1 輪腿轉(zhuǎn)換的形態(tài)
由于六足機器人具有多關節(jié)的特點,加上我們使用的是矩形機械結構,因此,筆者仿照六輪裝甲車多輪轉(zhuǎn)向的外形,使六足機器人變形以后呈現(xiàn)出六輪機動車的形態(tài),同時使用六足機器人的多關節(jié)可活動性,實現(xiàn)六輪的多轉(zhuǎn)向性,使機器人更加得靈活。六輪的同時轉(zhuǎn)向比以往的兩輪轉(zhuǎn)向或者速度轉(zhuǎn)向更加便捷,對電機速度的要求降低,且操作起來相對比較簡單。六足機器人的輪式三維圖見圖3。
圖3 六足機器人的輪式三維圖
3.2 單片機對六足機器人足變輪變形的控制
本項目中,筆者采用32單片機控制舵機控制板,采用PS2手柄進行手動控制。通過PS2手柄發(fā)送命令給32單片機,然后單片機把指令發(fā)送給舵機控制板,舵機控制板接收到發(fā)送過來的指令后做出相應的動作組或者動作,完成變形任務。其流程如圖4所示。
PS2由手柄和接收器組成。手柄的接收器由8個接口組成,分別是DIDAT、DO/CMD、NC、GND、ACK、CS/SEL、CLK和VDD。DIDAT和DO/CMD接口是手柄到主機和主機到手柄信號的流向接口,這個信號是一個8BIT的串行數(shù)據(jù);CS/SEL是手柄的觸發(fā)信號;CLK則是一個時鐘信號,主要用于數(shù)據(jù)的同步;ACK是一個應答信號。
在CS觸發(fā)信號發(fā)生時,手柄開始進入通信狀態(tài)。數(shù)據(jù)(1bit)的發(fā)送與接收是在單片機時鐘下降時完成的,并且是同時完成的。當控制板想要向手柄發(fā)送命令或者讀取命令時,會拉低CS的電平,并發(fā)送“0X01”的命令,手柄回復之后,控制板將發(fā)送“0X42”的請求數(shù)據(jù)的命令,之后手柄就會發(fā)送“0X5A”命令到單片機,單片機就開始接收數(shù)據(jù)。表1為PS2通信各個數(shù)據(jù)位的意義。
表1 PS2通信各個數(shù)據(jù)位的意義
[順序 DO DI Bit0、Bit1、Bit2、Bit3、Bit4、Bit5、Bit6、Bit7 0 0X01 idle - 1 0X42 ID - 2 Idle OX5A - 3 WW data SELECT、L3、R3、START、UP、RIGHT、DOWN、LEFT 4 YY data L2、R2、L1、R1、△、○、×、□ 5 idle data PSS_RX(0X00=left、0XFF=right) 6 idle data PSS_RY(0X00=up、0XFF=down) 7 idle data PSS_LX(0X00=left、0XFF=right) 8 idle data PSS_LY(0X00=up、0XFF=down) ]
3.3 輪式形態(tài)的控制
做項目的電機分類有很多:步進電機、直流電機和直流減速電機。筆者采用的是減速直流電機。相比而言,直流減速電機更容易控制,編程簡單,體積更小,速度控制方面更加準確??刂齐姍C則要用到32單片機中PWM輸出模式,在32單片機中,單片機通過對時鐘的控制與寄存器的控制實現(xiàn)PWM波輸出的控制。簡單來說,PWM的輸出主要靠控制占空比來實現(xiàn)PWM波的輸出,從而控制控制電機的轉(zhuǎn)動。
輪式形態(tài)的控制主要是對舵機的控制,通過對舵機的控制實現(xiàn)直行、后退、轉(zhuǎn)彎等多種形態(tài)。由于六足機器人有18個關節(jié),因此,六足機器人的轉(zhuǎn)動形態(tài)較多。筆者選擇把輪子裝在前后兩組足關節(jié)的第二個關節(jié)上,這樣輪子既不會阻礙足式移動,又能很好地進行足輪轉(zhuǎn)換。足輪轉(zhuǎn)換過后,電機轉(zhuǎn)動的方向就會發(fā)生變化,如圖5和圖6所示。足式機器人及其俯視圖見圖7和圖8。
圖5 直行電機轉(zhuǎn)動的方向
圖6 后退電機轉(zhuǎn)動方向
圖7 足式機器人
圖8 俯視圖
4 六足機器人智能自控的實現(xiàn)
4.1 Arduino的應用
Arduino是一款與32單片機相似的控制板,其能通過各種各樣的傳感器來感知環(huán)境,通過控制燈光、馬達和其他裝置來反饋、影響環(huán)境。本項目中以Arduino控制板為輔助板,安裝各種傳感器,如聲音傳感器、紅外傳感器、超聲波傳感器。在六足機器人6個足的底部安裝紅外傳感器以防止六足機器人墜落,利用超聲波傳感器實現(xiàn)避障功能。同樣,Arduino控制和32單片機控制相同,都是通過串口發(fā)送命令給舵機控制板,舵機控制板再做出相應的動作。Arduino命令流程見圖9。
4.2 整體自動化的形成
通過傳感器對環(huán)境變化的感應,向Arduino發(fā)送數(shù)字模擬量,Arduino做出相應的命令控制舵機控制板。這樣一來,各個傳感器的相互配合,Arduino就可以識別復雜環(huán)境狀況,使六足機器人做出相應的動作來適應相應的環(huán)境,從而使機器人實現(xiàn)智能化。
5 結論
本項目從開始選題到買材料再到制作成品,遇到了許多困難,但在這段時間內(nèi),筆者獲益匪淺。從選材料開始,就從各個方面尋找能用到的機器人零件、舵機、舵機控制板、電機等,每樣東西都考慮再三,為后期制作編程節(jié)約了較多時間。在設置PS2手柄時,使用手柄發(fā)送命令,舵機卻一直收不到相應命令,在不斷調(diào)試和編程的情況下,終于實現(xiàn)了相應的功能。
但是,該項目的各個功能還有不足之處,仍需要不斷優(yōu)化,特別是在利用傳感器實現(xiàn)自動化控制方面,需要進一步深入研究。
參考文獻:
[1]田娜,丁希侖,戴建生.一種新型的變結構輪腿式探測車機構設計與分析[J].機械設計與研究,2004(z1):268-270.
[2]蘇軍,陳學東,田文罡.六足步行機器人全方位的步態(tài)研究[J].機械與電子,2004(3):48-52.
[3]馬忠梅,王美剛,孫娟,等.單片機的C語言應用程序設計[M].北京:北京航空航天大學出版社,2013.
[4]李增國.傳感器與檢測技術[M].北京:北京航空航天大學出版社,2009.
[5]BOXALL.動手玩轉(zhuǎn)Arduino[M].北京:人民郵電出版社,2014.