謝邦晉
(閩江師范高等專科學(xué)校機(jī)電工程系,福建 福州 350018)
由于機(jī)器人的應(yīng)用逐漸廣泛,除了工業(yè)機(jī)器人,越來越多種類的機(jī)器人開始進(jìn)入人類的社會(huì),一般機(jī)器人移動(dòng)的方式分為輪型、足型,使用輪型移動(dòng)機(jī)器人優(yōu)點(diǎn)是移動(dòng)速度快與穩(wěn)定性高,但是適應(yīng)地形與跨越障礙上,還是以足型機(jī)器人較占優(yōu)勢(shì),開發(fā)像人類一樣以雙足移動(dòng)的機(jī)器人,是讓機(jī)器人更加擬人化的條件之一。
為了使機(jī)器人能夠步行移動(dòng),機(jī)器人在機(jī)構(gòu)上,需要有靈活的足部機(jī)構(gòu),而當(dāng)機(jī)器人在步行時(shí),由于同一時(shí)間內(nèi)只有一只腳接觸地面,為了讓機(jī)器人能夠平衡,機(jī)器人的重心分配非常重要,控制機(jī)器人步態(tài),需要控制與機(jī)構(gòu)的研究,才能使機(jī)器人的步行移動(dòng)更接近人類。
1970年代開始日本研究者開發(fā)出許多具有步行功能的機(jī)器人,至今幾十年來對(duì)于機(jī)器人的步行控制,世界上許多專家學(xué)者已提出相當(dāng)多的論文與研究報(bào)告。機(jī)器人步行控制的研究中,在1968年由南斯拉夫?qū)W者M(jìn).Vukobratovic提出了零力矩點(diǎn)(ZMP)這個(gè)理念,經(jīng)由零力矩點(diǎn)(ZMP)的計(jì)算,只要機(jī)器人的零力矩點(diǎn)在安全范圍以內(nèi),機(jī)器人即可保持平衡,80年代日本早稻田大學(xué)的加藤一郎實(shí)驗(yàn)室便依據(jù)此理論制作了WL系列機(jī)器人,還有Honda制作的Asimo也同樣是利用零力矩點(diǎn)來達(dá)到機(jī)器人穩(wěn)定的步行,零力矩點(diǎn)提出至今已50年,仍是機(jī)器人步行控制的主要方法之一。
另外有部分研究者提出以演算法來計(jì)算機(jī)器人步態(tài),如模糊控制、類精神網(wǎng)絡(luò)、基因演算法等方法,上述各種控制方法都是希望能夠穩(wěn)定機(jī)器人的步態(tài),但是透過演算法控制的方法,在處理器的計(jì)算上需要發(fā)費(fèi)一些時(shí)間,所以機(jī)器人移動(dòng)的速度還是偏慢。
文章將以使用STM32晶片來制作伺服馬達(dá)控制板,透過控制板來控制雙足機(jī)器人的動(dòng)作,雙足機(jī)器人由RC伺服馬達(dá)與結(jié)合模塊組成。
本論文設(shè)計(jì)中的硬件架構(gòu)分成三部分,由RC伺服馬達(dá)控制板、機(jī)器人結(jié)構(gòu)、電源供應(yīng)組成如圖一所示。RC伺服馬達(dá)控制板由主控核心(MCU),伺服馬達(dá)控制電路、降壓電路所組成,機(jī)器人結(jié)構(gòu)由RC伺服馬達(dá)與結(jié)合模塊組成,電源供應(yīng)部分來源為鋰電池并搭配穩(wěn)壓器對(duì)機(jī)器人與控制板供電。

圖1 硬件構(gòu)架圖
主控核心意法半導(dǎo)體(STMicroelectronis)公司生產(chǎn)的STM32F103系列增強(qiáng)型微控制器,該系列微控制器的特點(diǎn)為內(nèi)核使用了Cortex-M3核心,Cortex-M3是ARM公司開發(fā)的處理器,該處理器實(shí)現(xiàn)了低成本、縮減接觸腳數(shù)量,并同時(shí)具有低功耗、高執(zhí)行速度、先進(jìn)的中斷系統(tǒng)響應(yīng)、支持多種通訊等功能。
RC伺服馬達(dá)控制芯片的選用,依據(jù)需要選擇中等容量的STM32F103Cx系列,完整型號(hào)為STM32F103C8T6,擁有64KFlash、4組計(jì)時(shí)器、37個(gè)IO腳與LQFP48封裝形式,芯片外觀與封裝腳位如圖2所示。
機(jī)器人的硬件部分,由RC伺服馬達(dá)搭配結(jié)合模塊制作成高自由度的雙足機(jī)器人,機(jī)器人的靈活度取決于該機(jī)器人自由度的多少,自由度的意思為機(jī)構(gòu)上可獨(dú)立運(yùn)動(dòng)的數(shù)目,為了讓機(jī)器人的步行更接近人類,所以設(shè)計(jì)了12個(gè)自由度的雙足機(jī)器人機(jī)構(gòu),機(jī)器人關(guān)節(jié)為RC伺服馬達(dá),骨架部分則由結(jié)合模塊組成,雙足機(jī)器人機(jī)構(gòu)如圖3所示。

圖2 芯片外觀與封裝腳位

圖3 雙足機(jī)器人機(jī)構(gòu)
雙足機(jī)器人的控制方式架構(gòu)圖如圖4所示,RC伺服馬達(dá)控制板由三組計(jì)時(shí)器輸出PWM脈波訊號(hào),由此PWM訊號(hào)控制RC伺服馬達(dá)的轉(zhuǎn)動(dòng),另外配合STM32F103C8T6的系統(tǒng)應(yīng)答計(jì)時(shí)器產(chǎn)生計(jì)時(shí)中斷,由此計(jì)時(shí)中斷來達(dá)到RC伺服馬達(dá)的控制。RC馬達(dá)的控制是由產(chǎn)生一周期20 ms的PWM訊號(hào)來控制,由PWM訊號(hào)的脈波寬度來控制馬達(dá)角度,由增加脈波寬度的方式就可以控制RC伺服馬達(dá)的速度,以RC伺服馬達(dá)從0度(0.5ms)旋轉(zhuǎn)到180度(2.5ms)為例,假設(shè)每20ms周期的增加0.1ms的寬度。脈波寬度由0.5ms增加至2.5ms,每20ms增加0.1ms的寬度,RC伺服馬達(dá)轉(zhuǎn)動(dòng)時(shí)間計(jì)算公式如:

每個(gè)周期增加的脈波寬度越大,RC伺服馬達(dá)的轉(zhuǎn)動(dòng)速度就越快,除了調(diào)整脈波寬度的方式以外,還可以調(diào)整周期的方式來控制速度,但要注意RC伺服馬達(dá)的規(guī)格。

圖4 控制方式構(gòu)架
控制RC伺服馬達(dá)的PWM控制訊號(hào),由微控制器內(nèi)部的3組計(jì)時(shí)器提供,機(jī)器人的動(dòng)作與速度由計(jì)時(shí)器產(chǎn)生的周期性中斷來做控制,中斷程序內(nèi)將當(dāng)前PWM訊號(hào)的寬度與機(jī)器人動(dòng)作信息數(shù)據(jù)進(jìn)行比較,若數(shù)據(jù)大于當(dāng)前PWM訊號(hào)寬度值,執(zhí)行PWM訊號(hào)寬度做加運(yùn)算,反之做減運(yùn)算,流程圖如圖5所示。

圖5 流程圖
當(dāng)機(jī)器人要執(zhí)行動(dòng)作時(shí),先執(zhí)行初始化,將各軸的RC伺服馬達(dá)的角度都設(shè)定為置中(脈波寬度1.5ms),此時(shí)機(jī)器人呈現(xiàn)站立姿態(tài),載入機(jī)器人執(zhí)行動(dòng)作的數(shù)據(jù)陣列。
Intdata={{2500,2000,2200,2100,2400,1900,1900,1900,1900,2000,2300,2200},{1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500}};
陣列中為一個(gè)第一維度為2,第二維度為12的二維陣列,第一維度代表機(jī)器人的動(dòng)作數(shù),第二維度代表12個(gè)RC伺服馬達(dá)的脈波寬度,陣列中值的大小為500~2500,500代表0.5ms的脈波寬度;1500代表1.5ms的脈波寬度,2500代表2.5ms的脈波寬度,機(jī)器人在執(zhí)行動(dòng)作時(shí),微控制器中斷程序會(huì)將各軸的脈波寬度與數(shù)據(jù)陣列庫(kù)的值做比較,當(dāng)發(fā)現(xiàn)某個(gè)RC伺服馬達(dá)的值與數(shù)據(jù)陣列比較不相符時(shí),則對(duì)該RC馬達(dá)的脈波寬度進(jìn)行加減。由周期性的中斷程序,可同時(shí)對(duì)每個(gè)RC伺服馬達(dá)的脈波寬度做調(diào)整,當(dāng)RC伺服馬達(dá)達(dá)到動(dòng)作所需的角度后,會(huì)維持該角度并等待其他RC伺服馬達(dá)到達(dá)設(shè)定的角度,等全部RC伺服馬達(dá)都到達(dá)設(shè)定的角度時(shí),便會(huì)開始執(zhí)行動(dòng)作數(shù)據(jù)陣列的下一列。
人在步行時(shí),可視為一種周期性的反復(fù)運(yùn)動(dòng)模式,依據(jù)這種周期性的運(yùn)動(dòng)模式,可以規(guī)劃出步行的軌跡,人走路時(shí),雙手會(huì)自然地?cái)[動(dòng),而且跟兩腿走動(dòng)的方向相反,這種互相協(xié)調(diào)的動(dòng)作,是為了保持整個(gè)身體的平衡,但是雙足機(jī)器人卻沒有這種調(diào)節(jié)平衡的動(dòng)作,所以在設(shè)計(jì)雙足機(jī)器人的動(dòng)作時(shí)為了使 穩(wěn)定,必須要考慮到機(jī)器人重心的分配,機(jī)器人的重心在抬腳移動(dòng)的同時(shí)會(huì)跟著改變,如果機(jī)器人的重心沒有調(diào)節(jié)好,那么機(jī)器人必定會(huì)跌倒,因此重心的調(diào)整對(duì)機(jī)器人的動(dòng)作非常重要。
因此本次研究在機(jī)器人的動(dòng)作設(shè)計(jì)上,不采用運(yùn)算的方式算出機(jī)器人穩(wěn)定的步伐,而是使用控制伺服馬達(dá)角度的方式,來設(shè)計(jì)機(jī)器人的動(dòng)作,這種機(jī)器人的行進(jìn)動(dòng)作屬于靜態(tài)平衡,所以機(jī)器人的步行狀態(tài)可分為單腳支撐與雙腳支撐,當(dāng)機(jī)器人以單腳支撐時(shí),為了保持機(jī)器人的平衡,重心必須落在支撐的腳掌內(nèi),在雙腳支撐時(shí),機(jī)器人的重心要落在雙腳之間,只要注意重心的落點(diǎn),就可以讓機(jī)器人在步行時(shí)保持平衡,圖6為雙足機(jī)器人各軸的伺服馬達(dá)編號(hào)。
機(jī)器人在動(dòng)作前,為了使機(jī)器人站立,會(huì)先設(shè)定機(jī)器人的直立的動(dòng)作,由伺服馬達(dá)控制板對(duì)各軸送出寬度為1.5ms脈波,由于機(jī)器人在組裝上會(huì)存在一些誤差,所以還需對(duì)各軸做校正,各軸誤差的角度如表1所示:

表1 機(jī)器人各軸誤差角度

圖6 伺服馬達(dá)編號(hào)對(duì)照
RC伺服馬達(dá)控制板的主控核心是使用STM32微處理器,其功能為輸出12通道PWM信號(hào),可控制多顆RC伺服馬達(dá),為了使RC伺服馬達(dá)的控制更加的穩(wěn)定與迅速,12組PWM信號(hào)由STM32芯片內(nèi)部3組計(jì)時(shí)器產(chǎn)生,最高可擴(kuò)展至16通道輸出,在PWM信號(hào)寬度的控制上,開啟預(yù)先裝載功能可同時(shí)控制多組PWM信號(hào)的脈波寬度,在電源供應(yīng)部分使用一種穩(wěn)壓器,供應(yīng)RC伺服馬達(dá)所需要的高電流,并配合系統(tǒng)滴答計(jì)時(shí)器來做RC伺服馬達(dá)的速度控制。若能在伺服馬達(dá)控制器上增加傳感器如:陀螺儀、加速度計(jì)、姿態(tài)感應(yīng)器等各種傳感器,通過這些傳感器使控制板在控制機(jī)器人的時(shí)候,能夠?qū)Ω鞣N狀況做出應(yīng)對(duì)。