本專題採用盛群半導體的I/O類型微控制器HT48E50作為機身主體控制,採軟體實現PWM脈波輸出以改變伺服馬達的旋轉角度,並加入多元控制機制,如紅外線人體感測、手動遙控與以HT46R24為核心的語音聲控等,達到控制機器人行走及實現多樣化動作目的。
本文欲著重於機器人的電路與程式控制,在機構部分則採用簡單的方式實現。他日若能再搭配精密的機構設計,必能使機器人的發展與應用多添一層色彩。
「音控雙足機器人」的特點為具有語音遙控與手動無線遙控功能,使用者可自行編輯機器人動作,即使電源關閉,資料依舊存在;此外,還有中文發音,增加其互動性;人體紅外線感應裝置,機器人具自主性;紅外線雷射筆瞄準功能,可提高其娛樂性;運用陀螺儀裝載至機器人,使機身更穩定;機身關節皆以伺服器(馬達)作為控制,使機器人的程式控制單一化。
以MCU作為控制核心
圖1為「音控雙足機器人」的系統方塊圖,是以盛群微控制器HT48E50為機器人主控端與手動遙控端核心,當兩者電源開啟時,主控端會先判斷射頻接收模組是否接收到訊號,並檢查HT48E50內部電子式可清除程式化唯讀記憶體(EEPROM)是否記錄著使用者所編輯的動作資料。當手動遙控端的射頻發射模組送出訊號時,主控端判斷資料正確無誤後,再產生控制訊號控制機器人對應的周邊元件,如伺服馬達的角度控制、SD178A發聲控制、蜂鳴器、EEPROM使用者編輯動作、發光二極體(LED)以及紅外線雷射筆,並配合主動感測元件–人體紅外線感測器,作為機器人自發性的動作控制。
手動遙控端共有十二個按鍵,功能分別是機器人前進、後退、立正動作、左轉、右轉以及左、右手的控制。按鍵上方皆加裝LED顯示,以便能更明確的顯示按鍵狀態。電源採用8.4伏特的電池,在經由7805穩壓電路後,提供手動遙控電路元件所需電壓(圖2),而射頻發射模組的工作電壓為8.4伏特,主要目的是提高射頻發射功率,讓接收端能更穩定收到發射端的串列訊號。 此外,為讓機器人具備更多樣的控制方式,特別加上具語音辨識的遙控功能,聲音訊號透過電路上的四組帶通濾波器(Band Pass Filter)轉換為辨識所需之能量參數,再經由HT46R24的交流電(AD)轉換單元轉換成數位資料存入內部記憶體,辨識結果透過射頻發射模組傳至主控端,藉此控制機器人的動作。其工作原理以硬體區分為以下幾個部分的說明:
伺服馬達的控制主掌角度/位置運作
伺服馬達是以改變脈衝寬度調變(PWM)波形的工作週期(Duty Cycle),來達成不同角度的調變目的,本文介紹採用Futaba S3003伺服馬達,其所需的PWM訊號高電位時間通常約在0.8~2.2毫秒間,而低電位的時間應在17.8~19.2毫秒間(圖3)。
雖然HT48E50內部已提供PWM輸出介面,但並無法適合於Futaba S3003伺服馬達所需時序,因此本專題乃運用軟體方式產生PWM波形輸出,實現十個軸的控制,解析度約為二至三度。其作法是以計時/計數器約二十毫秒的中斷時間作為PWM週期,再以不同的Duty Cycle控制伺服馬達實現所需角度變化(圖4)。
每一顆伺服馬達在立正(停止)時的Duty Cycle皆不同,主因是機構的誤差導致在安裝馬達時,角度均有些許的差異,所以操作上須先了解立正所對應的每顆伺服馬達PWM的參數,才能進一步將機器人的動作平順、協調的展示出來。
伺服馬達在固定的可出扭力下,其力距(伺服馬達的軸心點至承受點的距離)長度與載重重量成反比。若力距為一公分,則可承受最大重量約達3.3公斤(伺服馬達在五伏特電壓下扭力為3.3kg-cm),只要是在伺服馬達承受重量的範圍內,則皆可達到一定的定位能力;但若超過承受範圍,則會與原先定位的位置有些許誤差,不過仍會固定在該位置上,惟須特別注意不可讓伺服馬達承受太久的時間,以免燒毀伺服馬達內的電路。圖5顯示不同位置的伺服馬達,在依據個別規格與機構設計所計算出的承載重量。此外,機器人的機構、背負電路與電池,再加上行走時應考慮的摩擦力等,絕對超出圖4中所推論的數據。因此若將伺服馬達的電壓提升至8.4伏特時,扭力相對提升6kg-cm,轉速也會因此變快。但值得注意的是,此作法將會降低伺服馬達的使用壽命,若能在經費充足的情況下研究機器人,則建議讀者使用扭力大於10kg-cm以上的伺服馬達做為控制軸。
人體紅外線感測器量測體溫
人體紅外線感測器是以三甘氨酸硫酸鹽(TGG)或汰酸系壓電材料(PZT)強介質做成的光感測器。因為利用溫度變化而產生電賀現象,故又名「焦電型」人體紅外線感測器(圖6)。其可接受所有熱體輻射出來的紅外線,在未感測到紅外線或沒有溫度變化時,輸出高電位,反之則輸出為低電位。
文句轉換語音IC低耗電量為設計考量
SD178A中文文句轉語音(Text to Speech)IC,可將繁體中文字、英文字母及數字轉換成語音輸出。僅須使用HT48E50的三支I/O接腳即可控制發聲,此三支接腳分別是
‧SDI接腳
串列資料輸入腳。
‧RDY接腳
低(Low)時表示SD178A已準備好,可接收資料輸入。
‧SCLK接腳
外部時脈輸入端,為負緣觸發,用以控制SDI輸入資料的傳送速率。
此外,SD178A也提供數種功能命令碼供使用者應用,如停止播放、暫停播放、重新啟動以及調整文字間靜音時間長度等。在電池供電的裝置中,耗電量是相當重要的設計考量。SD178A不僅提供命令碼使其進入省電模式,還提供PWDN接腳,當其進入待機狀態時,亦可利用PWDN接腳控制其他元件進入關機狀態,以降低整體功耗。SD178A語音合成訊號是由音頻接腳輸出,經由語音放大器HT82V733後推動8Ω喇叭,請參考圖14。
陀螺儀加強動作穩定性
使用陀螺儀的目的,是希望能克服機器人動作時所產生的慣性現象,增加動作的穩定性,現採用GWS PG-03陀螺儀(圖7),並參考圖8的相關動作說明:
1.本機使用壓電式陀螺儀,具有輕量化及不暫空間的優點,可隨意安裝在機器人身上的任何位置。
2.使用陀螺儀的作用在於修正機器人動作,保持穩定整體機身。惟應注意PWM訊號經過陀螺儀後,會產生約五百一十毫秒差距(圖8),其中CH1、CH3為原PWM訊號,CH2、CH4則是經陀螺儀後的輸出訊號。主因是陀螺儀內部電路會使得原來的PWM產生延遲,所以在控制上對此要特別注意。
3.陀螺儀內部有一個感應器可偵測角度速度,如機器人行進或立正時,整體機構會因為慣性動作而使機構偏移,此時陀螺儀感應移動後會微幅改變伺服馬達,此可經由靈敏度增益調整,形成反向作用力,抵銷機器人因慣性動作的偏向力量。
4.HT48E50的PWM波形直接輸出至陀螺儀的輸入端,再將其輸出波形傳送至欲控制的伺服馬達。當陀螺儀偵測到角度變化時,會自動調整PWM的輸出波形,以避免因慣性而導致機器人動作不穩定情形(圖9)。圖9(A)為機器人穩定直立時的PWM波形,此時CH2與CH4的Duty Cycle相同,僅有因陀螺儀延遲效應所造成的相差。圖9(B)則是刻意將機器人往前傾時,陀螺儀為使機器人穩定站立所送出的修正波形,可發現CH2的PWM波形維持在高電位的時間約比原來多出40毫秒的時間。
語音辨識提升控制便利性
為了增加操控上的人性化與便利性,機器人系統中再加入語音控制的功能,經由訓練過程後,使用者便能以語音的方式控制機器人的動作。
在訊號辨識中,最常用的特徵參數是訊號在頻譜上的能量值,如高頻訊號只在高頻有較大的能量值,低頻訊號在低頻的能量較大,這些頻譜上的能量便可稱為一種特徵值。傅立葉轉換(Fourier Transform)有助於將時間軸上的訊號轉換至頻譜中處理。對於語音訊號而言,另一種稱為倒頻譜(Cepstrum)的參數卻更能代表語音訊號的特性,而使辨識率提高。然而,這些演算法在對於運算量與記憶體錙銖必較的微控制器上似乎遙不可及。本文採用特定語者(Speaker Dependent)的辨識機制,圖10為語音辨識系統的硬體方塊圖,主要是利用不同命令語句,於四個頻帶中能量分布差異性作為辨識依據。因顧及微控制器在記憶體與運算量的限制,故將上述能量分布參數改以類比電路取得,藉此降低微控制器的負擔。放大後的聲音訊號首先經由四組不同的帶通濾波器濾波,再由全波整流電路與能量累積電路取得該音訊在不同頻帶的能量分布,最後再利用HT46R24的四個AD通道將該能量分布參數數位化,並經軟體處理後,做為辨識參數的依據。
以三十二毫秒為音框長度,每一音框都會有四個頻帶的能量分布輸入至HT46R24,代表第i個音框的特徵參數。為考量MCU記憶體的限制與命令語句之實際運作,本系統以三十二個音框作為命令語句的最大長度限制,故輸入命令語句長度最長約一秒鐘。
為降低音量大小變化對辨識率的影響,輸入的特徵參數須再經由正規化的處理成為,其中,k=0~3。此外,由於每次輸入的命令語句長度也不盡相同,本系統採用簡易的線性時間較準(Linear Time Warpping),以克服長度不一所衍生的問題。
其作法是將輸入的語音訊號固定切成四段,再分別算出每段落中的平均值,作為代表該段落語音訊號之特徵參數。經過上述的特徵參數萃取(Feature Extraction)處理過程後,不管輸入之語音訊號為若干長度,最後都將以四個段落,每段落包含四個不同頻帶能量的特徵參數為代表,請參考下式:
(詳細公式請見新電子科技雜誌255期6月號)
上述式中N代表每一段落中的音框總數,即(詳細公式請見新電子科技雜誌255期6月號)。
語音辨識可分為兩個階段(圖11)。首先是訓練階段,使用者將所需的命令語句逐一從麥克風輸入,HT46R24會依上述的說明將代表各命令語句的特徵參數求出,同時將其存放於記憶體作為辨識時的參考樣本。而測試階段時,首先將輸入命令的特徵參數求出,然後與參考樣本比對後並找出最相似者作為辨識結果。為避免重新開機或更換電源時須重新訓練的困擾,於模組中加入I2C介面的EEPROM,因此使用者僅須在第一次使用時才進入訓練階段,並建立所需的命令語句參考樣本。若使用者須更改命令語句,本系統在軟體設計上也提供單一參考樣本的更新與全部重新訓練的功能,增加使用上的便利性。語音模組的電路如圖12所示。
機器人機構設計與控制電路考量
本專題在機構設計上較市面上的機器人結構來的簡易。一般仿人機器人在足部結構上,大致可分為上、中、下三層來探討。
上層的動作相當於人類行走時大腿及骨盆之間的關節,此處關節應有前、後、左、右的變化,亦即包含X、Y軸動向;而中層則是屬於大腿及小腿間的關節,應只有前、後的變化,亦即僅有Y軸動向;最後是下層則是小腿與腳踝間的關節部分,此處關節亦應包含前、後、左、右四種變化。然而,本專題的機構設計省略中層關節部分,其主因不外乎為降低製作成本,以最經濟實惠設計達到最高效能,藉此符合產業需求。
經過分析發現,要讓機器人抬腿,未必需要中層關節,若能巧妙運用機器人的慣性動作和平衡原理,亦可實現抬腿的效果。機器人在前進時,重心點完全放在中間,以達到整體機器人動作時能夠維持平衡不至於跌倒,而重力點幾乎是放在腳掌上面,以達到動作穩定之目的(圖13)。
機器人在結構設計上不適合將重物放置上半身,如其動力來源–電池,此會使得機器人在動作時,機身重量須完全由下半身機構承受,萬一伺服馬達的扭力稍有不足,就會造成機器人動作較不穩定甚至跌倒。所以,本文探討的機身是利用牛頓第一運動定律將重量集中放在腳掌上,以達到穩定下盤、減小伺服機承受重量、增加動作時穩定性以及方便充電時卸除與組裝等目的。
圖14是機器人接收端電路,此電路運用兩組電池:五伏特電壓供給微控制器HT46R24、射頻接收模組等元件;另一組8.4伏特電池則是與五伏特電壓獨立分開,提供十顆伺服馬達的電源,由於感測元件較易為電感元件產生的雜訊所影響,因而適用兩組獨立的電源。伺服馬達的控制是由HT46R24經射頻接收端傳輸進入的資料進行分析整理後,再經由MCU上的兩組通道PORTA、PORTD送出十顆伺服馬達的各別PWM控制訊號,以完成所需的機構動作。其中有兩組PWM訊號是經過GWS-KRG陀螺儀修正後,再輸出至伺服馬達,以做為機器人平衡與修正角度用途。
精良機構設計為關鍵
圖15~圖18為各單元之成品圖,本專題純就電子人的觀點,在機器人之機構設計上以簡單、成本低廉與加工容易為主要訴求;而程式與硬體設計則期望能使所採用的微控制器發揮所有的效能,以達資源盡用目的;至於操控與功能上,則力求方便性與互動性,使玩具機器人更具娛樂效果。
市面上有各式各樣的AI馬達,在控制上十分簡易但價格都在新台幣千元以上。本專題採用一般的伺服馬達,單價約在新台幣二百五十元,以符合低成本的初衷。
機器人的機身的控制採用盛群的HT48E系列MCU為主體,因其程式記憶體為多次可編程(MTP)型式,針對移動式產品的設計更突顯出在開發過程的便利性。該系列MCU尚有內建的資料電子式可清除程式化唯讀記憶體(Data EEPROM),用來記錄使用者的操作流程,以作為展示模式時機器人的動作控制依據,可謂適得其所。另外,也加上TTS IC-SD178A與人體紅外線感測器等周邊元件,讓機器人具備更人性化的特質。
語音辨識模組採用盛群AD-Type MCU-HT46R24,使用四個類比通道作為各頻帶能量之輸入,再搭配軟體程式的撰寫達到以語音命令控制機器人的目的。但受限於HT46R24的資源–隨機存取記憶體(RAM)、匯流排時鐘頻率(Clock Rate)無法在有限時間內完成複雜的運算,因此把濾波器與能量的擷取改以類比電路實現,雖然仍可獲得約85%以上的辨識率,但若能將此一部分改用數位濾波器設計,相信辨識率能再有大幅度的提升,不過相對的也須採用更高階的MCU或DSP IC,且對RAM的需求亦將增加,在成本的考量上不得不三思。
為避免每次使用辨識模組都須重新訓練的困擾,本模組使用一個I2C介面的EEPROM-HT24LC16來儲存訓練階段所輸入的命令參數,同時也提供單一命令與所有命令重新訓練的選擇,增加使用上的方便性。為能在MCU實現辨識功能,辨識模組所採用的演算法相當簡化,在五個命令語句以下的辨識率約可達到85%,並不建議使用在過多命令語句辨識的應用場合。
在專題實驗過程中,理解到機電整合的迫切與需要性,不夠精良的機構設計使得程式撰寫過程中,將花費大半時間在控制機身動作的協調性與平衡上。若開發者礙於專業領域不足,將導致機構設計缺乏全面性的周詳考量,有時在機構設計造成的不協調,是不論花再多的軟體微調功夫亦無法完全的彌補、修正的。
(註:本低價位語音辨識演算法已申請中華民國專利,專利證號:發明第一六五二七三號,專利權人為翔音科技。)
(作者鍾啟仁為明新科技大學電子工程系助理教授、鄭程偉為大四學生)
(詳細圖表請見新電子科技雜誌255期6月號)