朱 丹 王宇洋 陸 揚
(南京理工大學紫金學院,江蘇 南京 210023)
雙足步行機器人與輪式機器人不同,在地勢較復雜的情況下,雙足步行機器人的靈活性更高,不僅具有更廣闊的應用場景,而且還可以更協(xié)調(diào)地完成任務。同時,其跨越多個學科,有深厚的研究基礎,因此雙足機器人發(fā)展速度極快[1]。該文通過建立雙足機器人的模型、列寫D-H 參數(shù)進行MATLAB 仿真,對雙足機器人的步態(tài)穩(wěn)定性進行分析、算法調(diào)試,最終制造實物并對實物進行驗證。
設計目標是制造一個雙足步行機器人。首先,研究成年人身體的具體數(shù)據(jù),找出合適的構建機器人腿的D-H 參數(shù)。其次,通過MATLAB 軟件的機器人工具箱建模,并為其規(guī)劃適合步行的軌跡并進行仿真,獲得合適的行走數(shù)據(jù)。最后,通過STM32 單片機設計系統(tǒng)的硬件電路,編寫相應的C 語言程序,使實物具備相應的功能。
從運動學的角度來看,機器人的腿更像是機械臂,對簡單的雙足機器人來說,2 個旋轉關節(jié)的串聯(lián)機械臂就可以滿足相關需求。但是要確定其D-H 參數(shù)也是一個很復雜的過程,要制造一個機器人,其尺寸最好與人的尺寸比例一致。通過研究靜態(tài)尺寸來研究人體構造尺寸及人體部分肢體長度。根據(jù)《中國成年人人體尺寸(GB 10000—1988)》的要求,具體計算和取值見表1[2]。
表1 機器人主要設計尺寸
根據(jù)上文的數(shù)據(jù)、D-H 參數(shù)和機器人正運動學的相關理論內(nèi)容構造1條機器人單腿。其模型如圖1 所示,列寫的D-H 參數(shù)見表2。
表2 機器人單腿的連桿參數(shù)
圖1 雙足機器人機構模型
人體步行的姿態(tài)為2條腿交替前行,因此可以根據(jù)單足的運動分析推導雙足運動的規(guī)律。因為在笛卡爾空間的軌跡規(guī)劃要求大量逆解,換算到關節(jié)空間還有可能出現(xiàn)部分軌跡不在工作空間的情況,所以要在關節(jié)空間進行軌跡規(guī)劃。主要考慮步行過程中單腿的運動分為幾個狀態(tài)以及每個狀態(tài)的角度[3]。
首先,在關節(jié)空間中進行單腿路徑規(guī)劃,通過觀察人走路的情況可以分析人在行走時胯關節(jié)、膝關節(jié)和踝關節(jié)的運動情況。將機器人單腿行走的關節(jié)空間變化情況分為8 種狀態(tài):1) 向前抬左腳。2) 左腳向前著地。3) 重心落在左腳,右腳微抬。4) 右腳抬起,兩腿平行。5) 向前抬右腳。6) 右腳向前著地。7) 重心落在右腳,左腳微抬。8) 左腳抬起,兩腿平行。用q1~q8分別表示8 種狀態(tài)的關節(jié)角度。其次,規(guī)定每個動作的持續(xù)時間,用100 Hz 的頻率對末端路徑軌跡坐標值進行采樣。最后,通過動畫觀察腿部運動,以驗證它是否按照一般行走的姿勢完成所有動作。
通過復制上文生成的串聯(lián)連桿對象(leg)就可以創(chuàng)建多條腿的機器人。但是需要提供不同的基座轉換,從而將腿連接到機體不同的點上,得到的結果是1 個包括多個串聯(lián)連桿(SerialLink)對象的向量[4]。
由于腿的軌跡是一個周期運動,因此可以通過使每個腿的運動軌跡有一個相位偏移來實現(xiàn)按順序復位的目標,該相位偏移時間為總循環(huán)周期的1/2。由于總周期有180 個點,因此每條腿的相移為90 個點。使用模運算來模擬每條腿的循環(huán)步態(tài),其結果如圖2 所示[5]。
圖2 MATLAB 仿真雙足運動的2 個狀態(tài)
在完成MATLAB 軟件仿真并獲得機器人雙足步行的關節(jié)變換的基本數(shù)據(jù)后,就可以設計基于STM32 的雙足機器人系統(tǒng),將舵機運行的參數(shù)轉換成MATLAB 中仿真的數(shù)據(jù)。
雙足機器人系統(tǒng)中設計的機器人結構尺寸比例是將人體下半身按照比例縮放得到的,其核心部分是6 個轉動關節(jié),分別為2 個髖關節(jié)、2 個膝關節(jié)和2 個踝關節(jié)。在制造前參考大量仿真試驗、人體下半身的主要數(shù)據(jù)以及國家標準,最終確定各個零部件的形狀,通過打孔、加工裝訂等工序,最終完成整個機器人的機械結構設計和裝配工作。
4.2.1 總體電路
雙足機器人的控制部分通過程序下載完成步態(tài)規(guī)劃,控制器穩(wěn)定電壓供給(電源模塊為控制器和舵機提供穩(wěn)定的電壓供給),通過LED 燈顯示機器處于不同狀態(tài),蜂鳴器鳴響表示電壓過低(需要充電)。因此,根據(jù)上面的各種功能,電路主要由以下7 個部分組成,分別是主控芯片STM32F103RBT6、串口驅動模塊、顯示模塊、蜂鳴器模塊、按鍵模塊、FLASH 模塊和舵機系統(tǒng)。具體系統(tǒng)框圖如圖3 所示。
圖3 雙足機器人控制部分系統(tǒng)框圖
各部分的具體設計如下:1) 電源模塊。電源模塊主要由濾波電容、AMS1117-3 芯片構成。舵機系統(tǒng)和CPU 共用1 個電源,其供電電壓為5.0 V~8.4 V,電源的功率一般可以根據(jù)舵機數(shù)量自行搭配,例如當使用5~6 個舵機、使用15~16 個舵機時,所需要的額定電流是不同的,前者要達到3 A 及以上,而后者達到8 A 及以上。一般不是每個舵機都會同時工作,因此隨著舵機數(shù)量增加,電流的增長速度可以適當變慢。2) 串口驅動模塊。CPU 的額定電壓為3.3 V,而RS232 串口通信邏輯1 為-3 V~-15 V 的電壓;邏輯0 為3 V~15 V 的電壓。兩者是不匹配的,因此需要通過轉接芯片來完成兩者的電壓轉接工作,該轉換芯片就是CH340。通過串口驅動電路也可以下載程序,還可以實現(xiàn)控制器和PC 機的雙向通信。3) 顯示電路。顯示電路主要由2 個LED發(fā)光二極管構成。通過限流電阻接在CPU 的I/O 口上,從而顯示不同模式下的狀態(tài)。4) 蜂鳴器模塊。使用源的蜂鳴器通過三極管輸入電平就可以驅動鳴響。當電源電壓不符合要求時,啟動蜂鳴器,提醒用戶充電。5) 舵機系統(tǒng)。采用串行總線舵機,該控制系統(tǒng)可以控制6 個串口總線舵機,還可以控制髖、膝以及踝關節(jié)運動,使機器人完成各種動作。6) 按鍵模塊。通過按鍵可以控制當前機器人的模式運行。7) Flash 模塊。將機器人要執(zhí)行的動作編寫成動作組程序存入Flash 中,開啟控制器后可以根據(jù)模式選擇執(zhí)行動作組或者單獨動作。
4.2.2 舵機系統(tǒng)
該設計采用的舵機為串行總線數(shù)字舵機,型號為LX-824,控制板可以同時控制6 個串行總線舵機,在沒有使用彈性連接件和無線傳感器的條件下,舵機的控制效果良好。在使用舵機前要先用舵機調(diào)試控制板對舵機的偏差調(diào)零。
將雙足機器人的硬件電路裝配好后,就編寫軟件程序,以控制雙足機器人運動??紤]7 種機器人的運動模式,分別為立正、前進、后退、左轉、右轉、向前翻滾以及向后翻滾。采集人體各個關節(jié)的動作數(shù)據(jù),首先,進行MATLAB 仿真,通過動畫觀察雙足機器人的運動效果。其次,基于相關的數(shù)據(jù)編寫C 語言程序,以控制舵機完成各種運動,使其達到預定狀態(tài)。其主程序流程如圖4所示。該程序最核心的部分是控制單個舵機在一定時間內(nèi)轉動一定角度,通過串口發(fā)送指令來完成任務,將MATLAB 中仿真的各個關節(jié)數(shù)據(jù)作為函數(shù)參數(shù)進行傳遞后,再根據(jù)ZMP 的步態(tài)規(guī)劃算法進行預判和調(diào)整。
圖4 系統(tǒng)流程圖
對機器人進行調(diào)試的方法分為2 個步驟:1) 在MATLAB軟件中獲取各動作的關節(jié)旋轉角度,將該數(shù)據(jù)輸入設計好的上位機界面的動作中,再將若干個動作組成動作組,從而完成一系列動作。2) 編寫基于STM32 的C 語言程序,以完成動作組脫機任務。在雙足機器人的運動過程中,采用基于ZMP 的步態(tài)規(guī)劃算法對機器人的步行軌跡進行預判,以保證機器人行走的穩(wěn)定性。
以前進為例,分析從人體采集的運動數(shù)據(jù)和機器人運行數(shù)據(jù)的試驗結果。如圖5 所示,機器人和人體前進步伐一致。
圖5 機器人和真人的步態(tài)對比
首先,該文根據(jù)人體數(shù)據(jù)得出雙足機器人的D-H 參數(shù),通過MATLAB 動畫仿真機器人的運動情況,以驗證數(shù)據(jù)的實用性。其次,設計、制造雙足機器人實體編寫相關程序,試驗結果驗證了該雙足機器人的正確性。在STM32 單片機的控制下結合多種模塊,實現(xiàn)了機器人前進、后退、前后翻滾、左右轉動以及模擬步態(tài)行走的一系列動作且各個動作相對穩(wěn)定。盡管在行走的過程中機器人會發(fā)生偏移,但是在試驗和調(diào)試后,實現(xiàn)了機器人正常行走的目標。