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

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

圖2 芯片外觀與封裝腳位

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

每個周期增加的脈波寬度越大,RC伺服馬達的轉動速度就越快,除了調整脈波寬度的方式以外,還可以調整周期的方式來控制速度,但要注意RC伺服馬達的規格。

圖4 控制方式構架
控制RC伺服馬達的PWM控制訊號,由微控制器內部的3組計時器提供,機器人的動作與速度由計時器產生的周期性中斷來做控制,中斷程序內將當前PWM訊號的寬度與機器人動作信息數據進行比較,若數據大于當前PWM訊號寬度值,執行PWM訊號寬度做加運算,反之做減運算,流程圖如圖5所示。

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

表1 機器人各軸誤差角度

圖6 伺服馬達編號對照
RC伺服馬達控制板的主控核心是使用STM32微處理器,其功能為輸出12通道PWM信號,可控制多顆RC伺服馬達,為了使RC伺服馬達的控制更加的穩定與迅速,12組PWM信號由STM32芯片內部3組計時器產生,最高可擴展至16通道輸出,在PWM信號寬度的控制上,開啟預先裝載功能可同時控制多組PWM信號的脈波寬度,在電源供應部分使用一種穩壓器,供應RC伺服馬達所需要的高電流,并配合系統滴答計時器來做RC伺服馬達的速度控制。若能在伺服馬達控制器上增加傳感器如:陀螺儀、加速度計、姿態感應器等各種傳感器,通過這些傳感器使控制板在控制機器人的時候,能夠對各種狀況做出應對。