詹書豪,陳平平,彭川
(東莞理工學(xué)院 電子工程與智能化學(xué)院,廣東東莞,523808)
隨著科學(xué)技術(shù)的不斷進步,機器人技術(shù)得到了快速的發(fā)展,機器人不僅促進了人類勞動的發(fā)展,而且為人類科學(xué)史作出了巨大的貢獻。機器人技術(shù)被認為是對未來新興產(chǎn)業(yè)發(fā)展具有重要意義的高技術(shù)之一[1]。仿生機器人是機器人研究的重要領(lǐng)域[2],在反恐防暴、探索太空、搶險救災(zāi)等不適合由人來承擔(dān)任務(wù)的環(huán)境中,仿生機器人有著良好的應(yīng)用前景[3]。作為仿生機器人的典型代表,四足爬行機器人步態(tài)多樣,運動靈活,對未知復(fù)雜的地形具有極強的適應(yīng)性。在這樣的背景下,本文設(shè)計了一種以ESP32為主控的四足爬行機器人。
本文設(shè)計的機器人共有四條腿,每條腿的根關(guān)節(jié)、髖關(guān)節(jié)和膝關(guān)節(jié)都有一個大扭力數(shù)字舵機,一共需要12個舵機。
步態(tài)是足式機器人的各腿之間運動的規(guī)律,步態(tài)規(guī)劃,顧名思義為機器人六條腿的運動次序[6]。在自然界中,昆蟲綱的動物一般擁有六條腿,像螞蟻、甲蟲、蟬等,這些動物在爬行時并不是六足同時前進,而是前右腿、中左腿和后右腿為一組,剩下的三條腿為一組,這兩組腿分別組成兩個三角形支架,前進的過程中兩組腿交替運動,這種步態(tài)稱為三角步態(tài)[7]。自然界中也有大量的四條腿的動物,四條腿能讓它們不需要任何控制或調(diào)整就能夠保持直立,即可以保持靜態(tài)穩(wěn)定。本文設(shè)計的四足機器人,靜止的情況下,處于靜態(tài)穩(wěn)定狀態(tài),移動時,機器人每次邁步只用一條腿,同一時刻至少有三條腿在地上支撐,并且重心投影點保持在這三條支撐腿形成的三角形內(nèi)。
如圖1所示,以機器人重心為坐標原點O建立坐標系,A、B、C為某一時刻在地上支撐的三條腿的足尖,d1、d2、d3為機器人重心投影點到支撐足尖圍成的三角形各邊的距離,以d1為例,已知A(x1,y1),B(x2,y2)兩點坐標可求直線AB的兩點式方程:
圖1 穩(wěn)定裕度計算
化成一般式:
根據(jù)點到距離的公式可以求原點O到直線AB的距離d1:
機器人爬行過程中的穩(wěn)定裕度為d1、d2、d3中的最小值,顯然重心投影點距離三角形各邊越遠,穩(wěn)定裕度越大,即機器人越穩(wěn)定。只要機器人在爬行過程中,重心投影點一直在支撐三角形范圍內(nèi),那么機器人爬行過程中是靜態(tài)穩(wěn)定的[8]。
圖2展示了一種方案[9],機器人在爬行過程中,始終符合上述條件。起始時,腿1和腿4分別相對身體向外伸出,腿2和腿3相對身體向內(nèi)靠攏;腿2向前伸出;所有腿相對身體向后移動,此時機器人的身體會向前移動;腿4相對身體向內(nèi)靠攏;腿1向前伸出;所有腿相對身體向后移動,此時機器人的身體會向前移動;腿3相對身體向內(nèi)靠攏,機器人回到起始位置,完成一次完整的爬行動作。
圖2 爬行步態(tài)示意圖
本文設(shè)計的四足機器人每條腿有3個自由度分別位于根關(guān)節(jié)、髖關(guān)節(jié)和膝關(guān)節(jié),為了得到步態(tài)規(guī)劃后腿部各個關(guān)節(jié)的轉(zhuǎn)角角度(即舵機轉(zhuǎn)向角度),如圖3所示,以機器人腿根部為原點,建立空間坐標系,進行逆運動學(xué)分析。
圖3 機器人單腿模型
已知條件為每條腿各部分長度L1、L2、L3和足尖坐標(x,y,z),需要求出α、β和γ。為了方便計算,分別以X軸和Y軸、直線L1和Z軸為一個二維平面,如圖4和5所示。
圖4 X軸和Y軸平面
在圖4中,根據(jù)勾股定理可以計算出L4的長度,根據(jù)反正切函數(shù)可以求出角度α:
在圖5中,根據(jù)三角形相關(guān)知識有如下結(jié)論:
圖5 直線L1和Z軸平面
為了得到β和γ的具體值,還需要計算出θ1、θ2和θ3,先計算出L5和θ3:
由余弦定理可以求得θ1和三角形各邊的關(guān)系,進而通過反余弦函數(shù)求出θ1:
同理可以求出θ2的值:
基于ESP32的四足機器人的硬件系統(tǒng)如圖6所示。本系統(tǒng)由主控制器ESP32、陶瓷天線、USB一鍵下載電路、電源電路、LED燈光模塊、舵機驅(qū)動模塊、姿態(tài)傳感器(MPU6050)等模塊組成。
圖6 硬件系統(tǒng)框圖
整體系統(tǒng)選用鋰電池供電(額定電壓7.4V),系統(tǒng)主控和傳感器的供電電壓為3.3V,所以需要把電壓轉(zhuǎn)換到3.3V,而舵機直接使用電池供電。由于DCDC芯片的轉(zhuǎn)換效率很高,能使得系統(tǒng)的整體發(fā)熱很低,所以本系統(tǒng)通過TPS63070RNMR方案為系統(tǒng)提供3.3V電壓,通過查閱該芯片的技術(shù)手冊可知,TPS63070RNMR可以為系統(tǒng)提供高達2A的輸出電流,輸出電壓和反饋電阻R1和R2的關(guān)系為:
基于TPS63070RNMR的DCDC基本電路如圖7所示,電池電源通過三個10μF濾波電容輸入芯片的輸入引腳,輸出端通過一個10μF和兩個22μF濾波電容輸出3.3V電壓。
圖7 TPS63070RNMR電路
系統(tǒng)采用鋰電池供電,需要實時監(jiān)控電池電壓以避免過放導(dǎo)致電池損壞,這里設(shè)計一個電壓采集電路,通過電阻分壓使單片機能采集超過3.3V的電壓,使用運算放大器搭建電壓跟隨器實現(xiàn)阻抗匹配,盡量避免單片機受到影響。單片機采集的電壓與輸入電壓的關(guān)系為:
主控芯片選用了樂鑫公司的ESP32-PICO-D4模組,這是一款集成有WiFi和藍牙的高性能芯片,其采用臺積電超低功耗的40納米工藝,工作溫度范圍達到-40℃~+125℃,最大時鐘頻率高達240MHz。該芯片將大量器件如晶振、濾波器、Flash、射頻匹配鏈路等集于一體,極大地簡化了外圍電路的設(shè)計[10]。
圖8 電壓采集電路
主控電路和下載電路如圖9所示,ESP32采用3.3V供電,LAN_IN管腳外接陶瓷天線。為確保芯片上電時的供電正常,EN管腳處需要增加RC延遲電路,這里選用10kΩ電阻和100nF電容構(gòu)成RC延遲電路。EN管腳還有復(fù)位功能,只需將其電平拉低即可觸發(fā)復(fù)位。USB轉(zhuǎn)串口電路采用的方案是CH340C芯片,該芯片內(nèi)置晶振,可以省去晶振電路。查閱技術(shù)手冊可知ESP32有正常啟動模式與下載模式兩種,想要進入下載模式,需要滿足:在IO0保持低電平的期間,EN引腳產(chǎn)生一個上升沿。利用CH340C芯片的DTR和RTS信號控制兩個S8050三極管的通斷來改IO0和EN的電平,產(chǎn)生上述時序,最終實現(xiàn)自動下載功能。
圖9 主控電路
本系統(tǒng)共有12個舵機,需要12路PWM控制信號,故采用PCA9685為本系統(tǒng)的舵機驅(qū)動芯片。PCA9685芯片使用I2C協(xié)議與主控ESP32進行通信,該芯片支持2.3~5.5V寬電壓輸入,可以同時輸出16路PWM控制信號,每一路控制信號均可自由調(diào)節(jié)輸出PWM波的頻率(支持40~1000Hz)和占空比(0%~100%)[13]。電路設(shè)計如圖10所示。
圖10 PCA9685電路
姿態(tài)傳感器采用MPU6050,該芯片采用I2C通訊,集成最大可測范圍為±2000°/s(dps)的3軸陀螺儀和最大可測范圍為±16G的3軸加速度計,以及一個數(shù)字運動處理器DMP。電路設(shè)計如圖11所示。
圖11 MPU6050電路
機器人主程序流程如圖12所示,系統(tǒng)上電后,進行系統(tǒng)初始化,包括ADC配置、GPIO配置、PCA9685初始化、MPU6050初始化和WiFi通信初始化,WiFi通信采用STA模式,在此基礎(chǔ)上建立一個WebSocket服務(wù)器用來與小程序進行通信。第一次運行機器人時,需要在小程序中對舵機的位置進行校準,校準完成后數(shù)據(jù)保存在ESP32的Flash中,下次運行時自動讀取校準結(jié)果。在正常模式下,機器人保持等待接收指令狀態(tài),機器人接收到指令后,根據(jù)指令執(zhí)行相應(yīng)的動作。
圖12 主程序流程圖
使用MPU6050可以獲得機器人x軸y軸的傾角(對應(yīng)歐拉角中的pitch和roll),ESP32通過I2C協(xié)議讀取到的數(shù)據(jù)是三軸加速度和三軸角速度的原始值,為了獲得傾角,需要對其進行姿態(tài)解算,MPU6050的姿態(tài)解算方法有多種,本文使用硬件DMP解算的方式進行解算。DMP是MPU6050內(nèi)部的數(shù)字運動處理器,可以直接輸出四元數(shù),獲得四元數(shù)后可以由以下公式轉(zhuǎn)成歐拉角[15]:
解算出姿態(tài)后,可以根據(jù)pitch和roll的角度知道機器人是往哪邊傾斜的,控制機器人腿的伸縮以控制姿態(tài),讓機器人在一定程度上保持水平狀態(tài)。
圖13 MPU6050程序流程圖
ESP32采用STA工作模式,運行小程序的設(shè)備需要與ESP32處在同一局域網(wǎng)下,小程序與機器人之間使用WebSocket進行通信(小程序為客戶端,ESP32為服務(wù)端)。小程序主要分兩個頁面,在控制頁面下,能通過按鈕對機器人進行操控,通過搖桿改變機器人的姿態(tài),在校準頁面下,能對每個舵機進行校準,0對應(yīng)舵機的中值,校準完成后點擊保存按鈕可以把校準數(shù)據(jù)存到ESP32的Flash中。
圖14 小程序界面
經(jīng)測試,本文設(shè)計的四足爬行機器人能使用小程序進行遙控,實現(xiàn)舵機校準、前進后退轉(zhuǎn)彎、姿態(tài)自主調(diào)節(jié)等功能。隨著機器人技術(shù)的不斷發(fā)展,會有更多的領(lǐng)域應(yīng)用智能機器人,減輕人力的負擔(dān)。本文設(shè)計的機器人使用ESP32作為主控,直接利用了ESP32內(nèi)部集成的WiFi,性價比高,應(yīng)用潛力大。