武豪杰,李發海
(湖北汽車工業學院電氣與信息工程學院,湖北十堰, 442002)
本項目主要是應用所學知識對STM32F407單片機進項改裝設計來控制仿人型格斗機器人以達到競賽所需的目的,本次項目為我校學生提供了一次探索科技、創新思維與實際行動結合的機會。也為激發我校學生對高科技的興趣與愛好、激勵創新意識、活躍校園科技活動、培養未來科技人才提供了大舞臺,也是深化“科技興國”戰略方針的一個新舉措。
仿人型格斗機器人的系統結構主要由主控機構、伺服舵機、傳動系統組成[1]。仿生機器人共有2條腿,均勻分布在圓形軀干的兩邊,每條腿上有5個關節,機器人中的關節一般用“自由度”來表示。即機器人每條腿上有5個自由度,全身共19個自由度。對于一個仿生機器人來說,每條腿上的5個自由度基本能滿足到達各個位置的要求,關節部位通過來伺服舵機進行實現。主控機構可以控制全身的伺服舵機進行合適的角度調整以達到仿人效果。手部可以根據實際情況安裝合適的手型。
控制板可以控制全身的伺服舵機進行合適的角度調整以達到仿人效果,在此基礎上完成合適的仿人動作。核心處理器采用STM32F407VET6;動作存儲空間:采用128MBTF儲存卡,最大可支持32G;控制方式:藍牙模塊控制;485舵機接口:5個,理論可同時控制舵機數量為254個;TTL舵機接口: 5個,理論可同時控制舵機數量為254個;喇叭接口: 可同時連接2個8歐3瓦的喇叭;串口數量: 預留3個TTL接口;三維軟件操作接口:標準USB接口;姿態傳感器(陀螺儀);電源模塊:采用12V

圖1 系統模塊設計圖
航模電池供電,再使用降壓模塊分別引出10V、5V、3.3V接口,分別為電機、各傳感器、STM32單片機供電。
要完成在藍牙模塊控制的情況下,能夠根據周圍情況的不同,做出合適的仿人動作。其動作有前進,后退,左右撤步和左、右轉正面,左、右直拳。通過STM32控制板進行藍牙模塊控制、電源檢測等基礎硬件配置,接收藍牙發送過來的信息[2],進行電源監控以及進一步子模塊的運行。其子模塊是其某個具體動作的實現。系統模塊設計圖如圖1所示。
機器人采用的舵機為總線式舵機,此種舵機連接方式可以看作是所有的舵機是被一組線串聯起來的[3]。因此控制方式不是簡單的單對單控制命令,而是主控器將控制信號下發之后,每個舵機根據自己的ID號自動挑選自己對應的命令而執行。而這些命令全部通過485或串口發送給各個舵機,同時也將舵機的當前信息發回到控制器。
本項目要研究的主要問題是通過所學知識對STM32F407單片機的改裝以及機器人程序的編寫和改進,同時對機器人進行硬件改裝和軟件設計以用于適應仿人搏斗機器人競賽。而基于STM32F407芯片的單片機與傳感器和數量足夠多的舵機的組合設計成的格斗機器人是一個嵌入式系統,通過藍牙控制系統以執行各種命令,實現仿人格斗動作。軟件系統結構框圖如圖2所示。

圖2 軟件系統結構框圖
機器人的多個關節組合運動實現了機器人的連貫性動作,在控制機器人動作的時候,能夠控制各個舵機分別勻速平滑的由一個位置到另外一個位置,便可以實現機器人的動作連貫性。通過將舵機位移過程分數的方式,使得舵機的運行速度盡量的勻速平滑。舵機運動控制圖如圖3所示。

圖3 舵機運動控制圖
//函數名稱:voidp_to_p(int delay)
//函數說明:position 變化子程序,實現同起同落
//入口參數:delay=延時,define:決定循環次數由自//己決定還是通過程序算出結果
voidp_to_p(s16 delay,s16 define)
{
u8i,j; float c;
s16a,b=0,M=0;
u8 position_buあer[24];
for(i=0;i<24;i++)
{
position_buあer[i]=position[i];
//記錄當前位置值
}
if(define==0) //決定循環次數M
M=1;
else
M=define;
for(i=1;i<=M;i++) //開始循環M次輸出
{
for(j=0;j<24;j++)
{
// position_change記錄的是舵機的目標位置與當前位置差
c = position_change[j]; //將距離目標點的值分數,一步步逼近目標值
if(i==1)
a=(c*i)/M;
else
{
a=(c*i)/M;
b=(c*(i-1))/M;
}
position[j]+=(a-b);//每次加上分數值取整
}
SendMultipleServosAngles(position, 24); //執行24舵機輸出
low_level_500u(delay); //小延時,用于調速。
}
for(i=0;i<24;i++) //最后補償每個舵機的誤差
{
position[i]= position_buあer[i]+ position_change[i];
}
SendMultipleServosAngles(position, 24);
//執行24舵機輸出
low_level_500u(delay);
}
嵌入式系統裝置一般都由嵌入式計算機系統和執行裝置組成,執行裝置也稱為被控對象,它可以接受嵌入式計算機系統發出的控制命令,執行所規定的操作或任務。執行裝置可以很簡單,如轉動機器人左臂的舵機,當遙控左臂出拳時,左臂的四個舵機調節轉軸角度做出類人出拳的動作。程序流程圖如圖4所示。
姿態傳感器是一種將非電量轉換為電量信號的檢測裝置,靈活的運用它,可以賦予機器人調整姿態,使其出現任何不規則的姿勢回歸到標準站姿。開始要給傳感器設置合理的初始數值,作為判斷摔倒的依據,在倒地時能準確判斷并站立。機器摔倒判流程如圖5所示。

圖4 程序流程圖

圖5 機器摔倒判別流程圖
本項目的關鍵問題在于,第一在硬件上理解舵機的驅動原理,即通過某種頻率的脈沖信號來控制舵機的轉動速度和方向,需要對19個舵機進行通電同步控制,連接藍牙模塊,設置好舵機穩定的初始位置,配置姿態傳感器等處理。第二在軟件上,利用proteus仿真和keil5軟件進行C語言編寫,編程語言嵌入單片機后,當用藍牙控制機器人時,使機器人能夠依靠多個舵機同時轉動及時做出合理的動作,即要為單片機植入合理的程序,寫入多樣的動作模塊,使機器人結合多個攻擊動作,完成比賽要求。第三,在其他方面上,例如機械結構,既要保證機器人的強度也要保證機器人的靈活性,確保材料穩定,同時也要研究多個舵機轉動協調出動作,這是確保機器人在應對突發情況時是否能及時做出應對的關鍵。