林俊武,周雨成,伍 坪,鄭劍鋒
(三明學(xué)院 機電工程學(xué)院,福建 三明 365004)
當(dāng)下機器人技術(shù)的研究越來越多樣化及智能化,仿人機器人技術(shù)的研究成為一種新的熱點,相對于傳統(tǒng)的輪式機器人技術(shù),仿人機器人技術(shù)更接近于人類的行為,有較明顯的優(yōu)勢。人類的身體結(jié)構(gòu)是經(jīng)過長期自然進化后的結(jié)果和選擇,實踐證明不管是對于直立行走、快速跑步,還是更復(fù)雜的運動項目,比如跳舞以及各種競技的體育項目,在整個自然界里無不說明人類具有更加合理性的身體結(jié)構(gòu)。仿人型機器人在現(xiàn)代日常生活中具有越來越廣泛的應(yīng)用,其目的就是替代人類完成各種各樣的工作。一方面可以應(yīng)用于生產(chǎn)發(fā)展領(lǐng)域,比如可應(yīng)用于軍事任務(wù)、災(zāi)難救治、生活娛樂、科學(xué)探測、服務(wù)業(yè)等各個領(lǐng)域,另一方面就是在家庭服務(wù)和醫(yī)療康復(fù)等領(lǐng)域的應(yīng)用,在當(dāng)今老齡化越來越突出的社會中,利用仿人機器人能夠有效地替代人類完成各種的家務(wù)以及看護工作,這樣就可以把人們從各種瑣碎工作中解脫出來,從而安心工作,因此研究如何讓仿人機器人實現(xiàn)高效的人類行為并為人類服務(wù)具有重要的意義[1-2]。
基于此,本文設(shè)計了一種基于STM32單片機簡易的仿人類行為機器人,可以用來替代人類完成災(zāi)難救治或者生活娛樂等任務(wù),具有很好的實用價值。
本設(shè)計采用 STM32F103C8T6作為系統(tǒng)的控制核心,主要由MPU6050芯片實時監(jiān)控和采集模塊、CDS5516數(shù)字舵機人體動作的模仿模塊、藍(lán)牙通信模塊等與外圍電路組成,其系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)框圖
由圖1可以看出,系統(tǒng)的工作原理:首先單片機從MPU-6050傳感器模塊獲取到人體姿態(tài)的位置數(shù)據(jù),即在給定三維直角坐標(biāo)系中關(guān)節(jié)點的x,y,z的坐標(biāo),并由此計算出三軸對應(yīng)的角度,并通過藍(lán)牙從機向驅(qū)動板的藍(lán)牙主機傳輸數(shù)據(jù),然后通過STM32對接收的的數(shù)據(jù)進行信息處理,下達(dá)指令控制CDS5516,從而啟動數(shù)字舵機,開始模仿人的手部動作。為了避免了數(shù)據(jù)的混亂和出錯,直到舵機執(zhí)行的動作的完成之后,再獲取采集下一組的信號,繼續(xù)模仿,這樣周而復(fù)始完成各種模仿動作。
本設(shè)計采用STM32F103C8T6作為系統(tǒng)的控制核心,其原理圖如圖2所示,此芯片共有48個引腳,系統(tǒng)中所用到的引腳都被標(biāo)注著網(wǎng)絡(luò)標(biāo)號,并連接到對應(yīng)的相同標(biāo)號上。其中的引腳RX1和TX1網(wǎng)絡(luò)標(biāo)號中的PA2~PA3中的2根引腳分別連接到CDS5516的通訊線上,以此進行數(shù)據(jù)的傳輸。其中的引腳VDD_1~VDD_3和VDDA全部連接到3.3 V電源線上,而VSS_1~VSS_3和VSSA都接連到地線上,并且電源到地都要有接連濾波電容來進行耦合濾波以提高系統(tǒng)的穩(wěn)定性。雖然芯片中提供有內(nèi)置晶振,設(shè)計中的可以不連接外部晶振,但是內(nèi)部晶振比較不穩(wěn)定,為了提高晶振的穩(wěn)定性,在PD0和PD1接了晶振電路,如圖3所示,再通過給外部電路進行倍頻,給系統(tǒng)提供工作的時鐘。STM32F103的啟動模式分別由第20腳(BOOT0)和44腳(BOOT1)來進行控制,其中系統(tǒng)的BOOT0腳接到地,選擇主閃存存儲器作為啟動區(qū)域,BOOT1腳作為普通強推挽輸出口來使用。
圖2 控制模塊原理圖
圖3 晶振電路圖
目前舵機一般有數(shù)字舵機和模擬舵機兩種,但數(shù)字舵機和模擬舵機其實在結(jié)構(gòu)上差異并不大,主要區(qū)別在于數(shù)字舵機多了個微處理器和晶振,它可以對動脈沖送到舵機之前就對信號進行處理,并根據(jù)舵機本身設(shè)定的數(shù)值參數(shù)進行處理,這樣激勵舵機馬達(dá)的動力可以根據(jù)傳來的指令包來進行調(diào)整,適應(yīng)了不同功能的需求和增強了舵機的性能,并且數(shù)字舵機相對于模擬舵機發(fā)送動脈處的頻率高得多,數(shù)字舵機無反應(yīng)期更小,舵機馬達(dá)響應(yīng)發(fā)射機信號的頻率更加的快,可以提供更好的精度和緊固力。
基于數(shù)字舵機的優(yōu)勢,而且模擬舵機的動作控制主要通過信號線輸入PWM波,通過改變占空比的值來決定舵機轉(zhuǎn)動的角度,容易產(chǎn)生誤差,且每個舵機的機械特性都不是線性的,這樣給舵機調(diào)試帶來了不便。因此,本設(shè)計中采用的是型號為CDS5516的數(shù)字舵機,它是一種集總線式的通訊接口、電機、伺服驅(qū)動為一體的數(shù)字舵機,在控制方面具有較高的可靠性和靈活性,其原理結(jié)構(gòu)圖如圖4所示,其中引腳MCU_TXD和MCU_RXD分別是單片機用來給CDS5516接發(fā)數(shù)據(jù)的兩個引腳,但收發(fā)信號都是接在CDS5516的SIG引腳上,因此根據(jù)分時復(fù)用原理,加入了控制收發(fā)信號的開關(guān),其中MCU_TXEN和MCU_RXEN連接在單片機上,是控制74HC126使能的引腳,作為控制收發(fā)(MCU_RXD和MCU_TXD)的開關(guān)。CDS5516的電源范圍為6.8 V~14 V,它的電源外接了8.4V,而設(shè)計中實際接了9 V。因為設(shè)計中選用的微處理器的輸出電壓為3.3 V,所以為了防止信號的傳輸出錯,需要在單片連接SIG這條信號線上加5 V的上拉電源和10KΩ左右的上拉電阻限流。
在設(shè)計中則直接用繼電器來代替74HC126的開關(guān)作用,其驅(qū)動原理圖如圖5所示,其中繼電器的電源和地端接了個續(xù)流二極管,這樣以續(xù)流的形式消耗掉繼電器中電感帶來的高感應(yīng)電動勢,保護了三極管和單片機引腳不被擊穿。
圖4 CDS5516舵機驅(qū)動電路連接原理圖
圖5 CDS5516驅(qū)動設(shè)計原理圖
MPU6050芯片是一種具有實時監(jiān)控和采集的模塊[3],其結(jié)構(gòu)如圖6所示。
圖6 MPU-6050硬件模塊
它是一種整合了6軸運動處理的模塊,可以適應(yīng)不同的工作環(huán)境,串口的波特率有9 600 bps與115 200 bps,適合所有單片機和電腦連接。它的航向角、橫滾角、府仰角都為±180°且分辨率為0.01°。具有體積小、響應(yīng)快的特點,它的工作電壓為3 V~5 V,可以直接用與STM32相同的電源進行供電。STM32主要通過串口1的引腳與其RX和TX連接和通訊,其中的RST和B0直接懸空,SCL和SDA是I2C的時鐘和數(shù)據(jù)。該模塊位于采集模塊的STM32板上,用來采集人肢體的運動角度。
3.1.1 CDS5516數(shù)字舵機通信協(xié)議
CDS5516采用異步串行總線通訊方式,理論上可以選用UART異步串行方式來控制254個機器人舵機,每個舵機可以設(shè)置不同的ID,然后就可以用尋址的方式獨立控制串聯(lián)起來的舵機。CDS5516上電后有0.6S不響應(yīng)期,這個時間段不接收單片機的任何指令[4]。CDS5516有指令包格式和應(yīng)答包格式。
指令包格式包括有字頭、ID、數(shù)據(jù)長度、指令、參數(shù)和校驗等6部分,字頭為指令的前兩個字節(jié),當(dāng)舵機接受到兩個0XFF時候,才接受這個指令包,它的ID號有254個。第254個ID是廣播ID,可以使每個舵機都接受到指令。數(shù)據(jù)長度為發(fā)送參數(shù)的長度再加上2,校驗和:校驗和為Check Sum = ~ (ID + Length + Instruction + Parameter1 + ... Parameter N),校驗位只取8位,計算和如果超出255,則取最低的位。
應(yīng)答包格式包括有字頭、ID、數(shù)據(jù)長度、當(dāng)前狀態(tài)、參數(shù)和校驗和等6部分,應(yīng)答包包含舵機的當(dāng)前狀態(tài)ERROR,工作不正常的話會通過這個字節(jié)體現(xiàn)出來,字節(jié)為0的時候則表示無出錯,否則出錯,各位的高電平分別代表:BIT6:指令出錯;BIT5:過載;BIT4:校驗和錯;BIT3:指令超范圍;BIT2:過熱;BIT1:角度超范圍;BIT0:過壓欠壓。
3.1.2 HC-05藍(lán)牙通信協(xié)議
藍(lán)牙是一種常用的無線通信,它的收發(fā)設(shè)備中的芯片價格便宜,功耗低,射程是由應(yīng)用來決定的、理論上是無限的,但是由于墻壁對信號的衰弱和信號反射的相互干擾,藍(lán)牙大多數(shù)都應(yīng)用在室內(nèi)。
藍(lán)牙通信是指兩個藍(lán)牙模塊或藍(lán)牙設(shè)備之間進行通信,進行數(shù)據(jù)通信的雙方一個是主機,一個是從機。數(shù)據(jù)處理主要過程:串口發(fā)生的數(shù)據(jù)只能一次一個字節(jié)數(shù)據(jù)在0~255位內(nèi),而采集的數(shù)據(jù)有負(fù)數(shù)且角度在0~300°范圍,所以只能用軟件進行處理,符號可以在程序中轉(zhuǎn)換為正數(shù),只要要發(fā)送的數(shù)據(jù)中加個判斷正負(fù)的標(biāo)志位即可,然后一次發(fā)送數(shù)據(jù)長度不夠的可以用16位的變量保存采集到的數(shù)據(jù),然后發(fā)送兩次,接著驅(qū)動板接受到數(shù)據(jù)后在把數(shù)據(jù)給組合起來,這樣就解決了數(shù)據(jù)的處理。通過在電腦的串口助手上給兩個藍(lán)牙模塊發(fā)送AT指令,做好配對后就可以進行數(shù)據(jù)的透傳。每個藍(lán)牙的配對方式都有點不一樣,本設(shè)計中選用的是HC-05[5]。
3.1.3 MPU-6050通信協(xié)議
MPU-6050的通信協(xié)議中的數(shù)據(jù)格式有校驗位、起始位、數(shù)據(jù)位、停止位等組成,通信中需要注意的是溫度和歐拉角的數(shù)據(jù)要放大100倍后輸出,而加速度計和陀螺儀數(shù)據(jù)則沒有放大輸出。另外假設(shè)串口的波特率為9 600,大概1 ms一個字節(jié),那么幀頭加幀尾一共24字節(jié),則串口輸出時間需要24 ms,這樣就超過了數(shù)據(jù)的更新頻率(通常為50 Hz),就會導(dǎo)致模塊的出錯,所以可以適當(dāng)降低其更新的頻率來解決,可以把更新頻率降為10 Hz左右。
3.2.1 驅(qū)動模塊程序
驅(qū)動模塊的功能是給機器人輸入激勵,用來控制機器人的行動,其程序流程框圖如圖7所示,驅(qū)動程序過程就是剛開始先給機器人舵機上電反應(yīng)時間,等待接收采集板角度數(shù)據(jù),數(shù)據(jù)接收到后立馬發(fā)送激勵信號給CDS5516舵機,控制對應(yīng)的舵機的運作實現(xiàn)跟蹤功能。為了提高抗干擾能力,在程序中加了閉環(huán)控制系統(tǒng)。在程序的數(shù)據(jù)位中加入了校驗位,以判斷執(zhí)行是否完成的指令,進而進行反饋,若是異常將不執(zhí)行這條指令的操作,并繼續(xù)請求采集板發(fā)送數(shù)據(jù),若是都完成,則發(fā)送接收標(biāo)志到采集板,繼續(xù)接收采集板數(shù)據(jù)。
圖7 驅(qū)動板程序流程圖
3.2.2 采集模塊程序
采集板主要是負(fù)責(zé)信號的采集,其程序流程框圖如圖8所示,其中延遲3秒的目的是為了讓角度傳感器上電自動校準(zhǔn)數(shù)據(jù),程序比較簡單,只要采集到數(shù)據(jù),接收到驅(qū)動的標(biāo)志信號,通過藍(lán)牙發(fā)送數(shù)據(jù),再繼續(xù)判斷是否接收到下一次數(shù)據(jù)發(fā)送請求標(biāo)志,再繼續(xù)發(fā)送。
圖8 采集板程序框圖
系統(tǒng)調(diào)試是確定舵機的控制參數(shù),經(jīng)過不斷的測試確定了硬件的復(fù)位狀態(tài)的數(shù)值和對應(yīng)動作的控制數(shù)據(jù),如表1所示。各個舵機的ID號,輸入的信號值為0到1 023,對應(yīng)的角度為0°到300°,復(fù)位值是機器人模仿人立正姿勢的狀態(tài),通過傳輸±復(fù)位值來控制舵機的向前行動或者向后運動。
表1 舵機的初始數(shù)值
通過調(diào)試實現(xiàn)了語音控制機器人的驅(qū)動,可以語音敬禮和舉起右手,機器人則分別做出敬禮和舉起右手的姿勢,如圖9所示。語音跳舞,機器人則伴著音樂節(jié)奏舞蹈。
圖9 機器人敬禮手勢
本文以STM32F103C8T6作為系統(tǒng)的控制核心,結(jié)合實時監(jiān)控和采集模塊、數(shù)字舵機人體動作的模仿模塊、藍(lán)牙通信模塊等,設(shè)計了一款簡易的仿人類行為機器人,可以用來災(zāi)難救治、生活娛樂、軍事任務(wù)區(qū)域。測試表明,該機器人具有測試性能好,成本低,操作簡單等優(yōu)點,具有很好的實用價值。