黃寅光,劉祚時(shí)
(江西理工大學(xué) 機(jī)電工程學(xué)院,贛州 341000)
機(jī)器人技術(shù)的提高離不開機(jī)器人競(jìng)賽活動(dòng)[1]。國(guó)內(nèi)開展了許多機(jī)器人競(jìng)賽項(xiàng)目,鄭增輝[2]介紹了以Arduino為控制器運(yùn)輸對(duì)抗機(jī)器人。賀龍豹[3]介紹了以STC12C5A60S2單片機(jī)為控制器,電機(jī)驅(qū)動(dòng)車輪運(yùn)動(dòng),舵機(jī)驅(qū)動(dòng)機(jī)械手實(shí)現(xiàn)抓取物料功能。本文給出了適用于中國(guó)工程機(jī)器人暨國(guó)際公開賽仿生四足機(jī)器人穩(wěn)定快速爬坡的軟硬件設(shè)計(jì)。
仿生機(jī)器人在科研領(lǐng)域內(nèi)已經(jīng)成為了研究熱點(diǎn),目前許多國(guó)內(nèi)外高校研究學(xué)者們對(duì)仿生四足機(jī)器人投入研究[4,5]。由于四足機(jī)器人的基礎(chǔ)理論知識(shí)還不夠成熟,在速度、平衡性、靈活性和環(huán)境的適應(yīng)性等方面四足機(jī)器人的發(fā)展空間還很大。想要在復(fù)雜環(huán)境下靈活平穩(wěn)的行走,解決機(jī)器人在不同角度斜坡上穩(wěn)定快速的完成爬坡也是其中一個(gè)難題。
所謂的仿生四足機(jī)器人就是模仿自然界生物的身體結(jié)構(gòu)特征和行走狀態(tài)的一種機(jī)器人[6]。對(duì)于仿生四足機(jī)器人,四足機(jī)器人穩(wěn)定性和快速性主要取決于爬行步態(tài)和軟件系統(tǒng)控制[7]。機(jī)器人的爬行步態(tài)控制可分為連續(xù)性行走狀態(tài)和間歇性行走狀態(tài)兩類[8]。連續(xù)性行走速度快但協(xié)調(diào)性比較差,而間歇性行走速度稍微慢點(diǎn)但穩(wěn)定性高。本文以STM32F103單片機(jī)為核心控制四足機(jī)器人爬行步態(tài),采用連續(xù)性的爬行方式結(jié)合TSL1401線性CCD采用黑線提取算法并對(duì)采集的黑色直線進(jìn)行二值化處理,將獲得的四足的方向偏差量和角速度偏差量,通過PD控制協(xié)調(diào)每條腿之間的角度差和速度差,使機(jī)器人穩(wěn)步、精確、快速的爬行[9]。為了檢測(cè)控制系統(tǒng)的快速穩(wěn)定性,將四足機(jī)器人放在15°、25°、35°的斜坡階梯上進(jìn)行試驗(yàn)測(cè)試,在中國(guó)工程機(jī)器人公開賽中獲得一等獎(jiǎng)。
狗和馬等四足哺乳動(dòng)物的行走方式在四足機(jī)器人方向的研究比較成熟[10]。機(jī)器人爬坡必須重心低、步態(tài)穩(wěn),本文采用類似烏龜?shù)臋C(jī)械結(jié)構(gòu)與四足哺乳動(dòng)物步態(tài)規(guī)劃相結(jié)合的方式來(lái)解決問題。四足機(jī)器人系統(tǒng)總體框架,如圖1所示。四足機(jī)器人的硬件組成主要包括:舵機(jī)、STM32F103單片機(jī)、線性電荷耦合器件(CCD)、傳感器模塊、電源驅(qū)動(dòng)等,四足機(jī)器人的硬件系統(tǒng)結(jié)構(gòu),如圖2所示。
圖1 四足機(jī)器人系硬件統(tǒng)總體框架圖
圖2 四足機(jī)器人的硬件組成
TSL1401CL線性傳感器陣列由一個(gè)128x1的光電二級(jí)管。它提供了同時(shí)集成起始和停止時(shí)間的所有像素,像素間有8μm間隔,操作簡(jiǎn)化內(nèi)部控制邏輯,只需要1個(gè)串行輸入端(SI)的信號(hào)和時(shí)鐘CLK。電源電壓(VDD)范圍3~5.5V。模擬輸出(AO)的電壓公式:Vout=Vdrk+(Re)(Ee)(tint)Vout是白色狀態(tài)的模擬輸出電壓;Vdrk是黑暗條件下的模擬輸出電壓;Re是對(duì)于給定的V/中給出的光的波長(zhǎng)(μJ/cm2設(shè)備響應(yīng));Ee是在μw/cm2的事件輻照;Tint是集成在幾秒鐘的時(shí)間。
STM32F103使用高性能的ARM?的Cortex?-M3 32位的RISC內(nèi)核,工作頻率為72MHZ,內(nèi)置高速存儲(chǔ)器(高達(dá)128K字節(jié)的閃存和20K字節(jié)的SRAM),豐富的增強(qiáng)I/O端口和聯(lián)接到兩條APB總線的外設(shè)。所有型號(hào)的器件都包含2個(gè)12位的ADC、3個(gè)通用16位定時(shí)器和1個(gè)PWM定時(shí)器,還包含標(biāo)準(zhǔn)和先進(jìn)的通信接口:多達(dá)2個(gè)I2C接口和SPI接口、3個(gè)USART接口、一個(gè)SUB接口和一個(gè)CAN接口。
LM2596S 電源模塊板3A 12/24V轉(zhuǎn)12/5/3.3V。輸入電壓范圍3~40V同,輸出電壓范圍直流1.5~35V。使用了4個(gè)該穩(wěn)壓模塊分別為控制模塊、傳感器模塊和13個(gè)舵機(jī)提供5V電壓。電源使用2200mAh 11.1v放點(diǎn)倍率:20C的格力航模電池。
4個(gè)避障傳感器模塊分別安裝在四條腿的外側(cè),將有效距離調(diào)為10cm左右,當(dāng)未檢測(cè)遇到障礙物時(shí),紅外線反射回來(lái)被接收管接收,同時(shí)信號(hào)輸出接口輸出數(shù)字信號(hào),將信息傳送給單片機(jī),使控制器調(diào)整腳步方向確保不從道路平臺(tái)摔下。傳感器模塊輸出端OUT直接與STM32F103單片機(jī)IO口PB2連接,采用穩(wěn)壓模塊進(jìn)行5V供電。
舵機(jī)模塊采用經(jīng)濟(jì)實(shí)惠的MG995模擬舵機(jī),它內(nèi)部有一個(gè)基準(zhǔn)電路,產(chǎn)生周期為20ms,寬度為1.5ms的基準(zhǔn)信號(hào),將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。最后,電壓差的正負(fù)輸出到電機(jī)驅(qū)動(dòng)芯片決定電機(jī)的正反轉(zhuǎn)。當(dāng)電機(jī)轉(zhuǎn)速一定時(shí),通過級(jí)聯(lián)減速齒輪帶動(dòng)電位器旋轉(zhuǎn),使得電壓差為0,電機(jī)停止轉(zhuǎn)動(dòng)。假設(shè)現(xiàn)在舵機(jī)穩(wěn)定在A點(diǎn),這時(shí)候CPU發(fā)出一個(gè)PWM信號(hào),舵機(jī)全速由A點(diǎn)轉(zhuǎn)向B點(diǎn),在這個(gè)過程中需要一段時(shí)間,舵機(jī)才能運(yùn)動(dòng)到B點(diǎn)。保持時(shí)間為Tw,當(dāng)Tw=△T時(shí),系統(tǒng)最連貫,而且舵機(jī)運(yùn)動(dòng)的最快。舵機(jī)特性線,如圖3所示。
圖3 舵機(jī)特性圖
四足機(jī)器人的運(yùn)動(dòng)是通過單片機(jī)結(jié)合傳感器模塊按照設(shè)定的步態(tài)智能協(xié)調(diào)控制每條腿的各個(gè)自由度的轉(zhuǎn)動(dòng)角度、速度、和方向[11]。自由度通過舵機(jī)實(shí)時(shí)控制,舵機(jī)控制算法:PID經(jīng)典控制算法、模糊算法、人工智能算法等。本文采用改進(jìn)的PID經(jīng)典控制算法對(duì)舵機(jī)控制使機(jī)器人連續(xù)性的爬行步態(tài)。軟件系統(tǒng)設(shè)計(jì)理念是精確識(shí)別提取黑線為輸入量,舵機(jī)根據(jù)輸入量快速穩(wěn)定準(zhǔn)確的輸出。系統(tǒng)程序總體控制流程:1)初始化各功能模塊控制參數(shù)。2)線性CCD模塊對(duì)道路軌跡進(jìn)行識(shí)別。3)通過傳感器模塊獲取四足機(jī)器人的速度,利用PID對(duì)舵機(jī)進(jìn)行反饋控制。4)按設(shè)計(jì)步態(tài)結(jié)合對(duì)舵機(jī)的速度和角度的控制,使四足機(jī)器人穩(wěn)定快速的爬行。系統(tǒng)的基本軟件結(jié)構(gòu)流程圖,如圖4所示。
圖4 系統(tǒng)的基本軟件結(jié)構(gòu)流程圖
四足機(jī)器人斜面坐標(biāo)系設(shè)定如圖5所示,分別從機(jī)體坐標(biāo)系∑α、水平面坐標(biāo)系∑β、斜面坐標(biāo)系∑γ分析并且均為右手坐標(biāo)系。斜面傾斜角為θ,重心(COG)到斜面的豎直高度為h。機(jī)體坐標(biāo)系:∑α原點(diǎn)Gα位于COG,Zα軸垂直于機(jī)體向上,Xα軸指向機(jī)器人運(yùn)動(dòng)前方,Yα軸指向機(jī)器人左方。機(jī)器人的姿態(tài)由繞三個(gè)軸的旋轉(zhuǎn)角來(lái)決定(ψbR,ψbP,ψbγ)。
圖5 坐標(biāo)系
水平面坐標(biāo)系∑β:原點(diǎn)Gβ是從COG沿重力方向與和斜面的交點(diǎn)。Zβ軸垂直于水平面向上,Xβ軸為Xα軸在水平面的垂直投影。
斜面坐標(biāo)系∑γ:原點(diǎn)Gγ與Gβ口重合?!痞玫淖鴺?biāo)軸方向是∑β坐標(biāo)系繞Yβ轉(zhuǎn)-θ,繞Zβ轉(zhuǎn)ψbγ得到。旋轉(zhuǎn)矩陣設(shè)為E-jψ,和Ekψbγ。
坐標(biāo)系間轉(zhuǎn)換矩陣:
上式中,P(P=[0,0,-h]T)是∑α的原點(diǎn)到的原點(diǎn)的向量。旋轉(zhuǎn)矩陣EkψbγEjψbPEkψbR由∑β坐標(biāo)系繞Zβ轉(zhuǎn)ψbγ,繞Yβ轉(zhuǎn)ψbP,繞Xβ轉(zhuǎn)ψbR得到的。在斜面坐標(biāo)系∑γ下進(jìn)行步態(tài)規(guī)劃,然后轉(zhuǎn)換為機(jī)體坐標(biāo)系∑α控制機(jī)器人。
在控制器下模糊規(guī)劃出四足機(jī)器人的整體步態(tài),行走流程如下:
MS代表關(guān)節(jié)點(diǎn)(舵機(jī)),K代表轉(zhuǎn)動(dòng)角度,步伐構(gòu)建簡(jiǎn)要過程為:左前腳抬起;左前腳向前移;左前腳放下,右前腳和左后腳向后劃,右后腳抬起并向前移;右后腳放下;右前腳抬起;右前腳向前移;右前腳放下,左前腳和右后腳向后劃,左后腳抬起并向前移;左后腳放下。單片機(jī)接受CCD模塊和防跌落模塊反饋的信號(hào),動(dòng)態(tài)協(xié)調(diào)控制每條腿的各個(gè)自由度的轉(zhuǎn)動(dòng)角度、速度、和方向。四足機(jī)器人自由度配置圖,如圖6所示。
圖6 四足機(jī)器人自由度配置圖
四足機(jī)器人采用TSL1401線性CCD傳感器對(duì)賽道黑線信息進(jìn)行識(shí)別,線性CCD包含128個(gè)像素點(diǎn),確定黑線的中心位置,首先通過實(shí)驗(yàn)設(shè)定閾值大小,然后選擇采用從左到右讀取圖像灰度值,設(shè)定原點(diǎn)Li,若|Li-Li+3|大于閾值則重新賦予值Li+3=j,從j開始判斷從j+3到該行最末一個(gè)點(diǎn)之間的差值大于閾值,則將Li+j/2+2的坐標(biāo)賦值給黑線的中心位置[12]。對(duì)提取的圖像進(jìn)行二值化處理增強(qiáng)抗干擾能力和運(yùn)算速度。通過上位機(jī)軟件檢驗(yàn)算法是否可以提取黑線。圖7(a)為算法提取圖像,圖7(b)為二值化后的識(shí)別圖像
圖7 CCD采集的路況信息
線性CCD采集前方一定距離內(nèi)的黑線,從中提取相關(guān)量,用來(lái)控制舵機(jī)的轉(zhuǎn)向,實(shí)現(xiàn)四足機(jī)器人的自動(dòng)循跡。算法具體步驟如下:
1)將前方彎的平緩程度反應(yīng)設(shè)置為變量valid_line(用提取的黑線數(shù)量來(lái)估定)。
2)把每行采集黑線值與中間值的差作為每行偏移量,提取5行偏移量并求平均值設(shè)為整體偏移量eveb_diff,黑線斜率設(shè)為D_differen,舵機(jī)走直線的控制中間值為Centre。
3)判斷前方彎的平緩程度是否在黑線識(shí)別有效行范圍內(nèi),若在有效范圍內(nèi),則PD給舵機(jī)的輸入量Steer=Centre+Kp×eveb_diff+Kd×D_different。即在某一小段范圍內(nèi),得到的黑線位置和對(duì)應(yīng)的舵機(jī)PID參照角度處理成一次線性關(guān)系。
4)對(duì)不同行的參數(shù)單獨(dú)調(diào)節(jié),確定Kp值,Kp=A+(4-valid_line)/B+speed/C;A為Kp的基礎(chǔ)值,speed表征四足的時(shí)刻速度,B、C是速度稍高的時(shí)候調(diào)試得出合適的值。
5)最終將調(diào)試舵機(jī)的轉(zhuǎn)向的Kp系數(shù)協(xié)調(diào)配合步態(tài)使四足平穩(wěn)快速爬行。
設(shè)計(jì)完成的四足爬坡機(jī)器人的實(shí)物如圖8所示,機(jī)器人完全符合比賽規(guī)則。應(yīng)用此機(jī)器人參加了中國(guó)工程機(jī)器人公開賽并獲得四足爬坡項(xiàng)目一等獎(jiǎng)。
圖8 四足機(jī)器人實(shí)物圖
本文針“中國(guó)工程機(jī)器人公開賽”仿生四足機(jī)器人爬坡項(xiàng)目設(shè)計(jì)出了一款滿足比賽要求的設(shè)計(jì)的機(jī)器人,提出了四足機(jī)器人的整體設(shè)計(jì),圍繞機(jī)器人爬坡要求設(shè)計(jì)了屬于自己的一套行走過程,確定了以STM32F103單片機(jī)為核心的四足機(jī)器人的總體方案,改進(jìn)了對(duì)腿部關(guān)節(jié)舵機(jī)的控制算法,使系統(tǒng)的魯棒性增強(qiáng)了,實(shí)現(xiàn)了四足機(jī)器人穩(wěn)定快速的爬行。