本文自行設計與實現一款雙輪物件追蹤機器人,以完成雙輪自主平衡控制(autonomous balance control)、自主移動控制(autonomous movement control)、物件追蹤(object tracking)與避障(obstacle avoidance)等功能。
該機器人是利用控制晶片HT32F52352結合PID控制(proportional-integral-derivative control)來實現雙輪自主平衡與移動控制功能。避障功能是利用控制晶片HT32F52352結合模糊控制器來完成。該機器人的物件追蹤功能主要是透過LBPH(Local Binary Patterns Histograms)方法實現在多個物件中辨識出特定物件影像資訊。
本文所開發的物件追蹤之兩輪機器人可進一步延伸至各式兩輪機器人,例如居家照護機器人、菜籃機器人、失智者(或小孩)跟隨機器人等。相較於四輪及三輪機器人,具有底盤輕且面積小的優點,而且若雙輪結構設計佳,則靜止平衡所需耗的電量極低。此外,雙輪結構亦適合爬坡。
創作動機
創作此款兩輪機器人的主要動機,在於製作一個能與人互動的機器人,能夠達到追蹤以及一些擬人的互動功能,甚至能夠達到老人照護的功能,現今的社會趨向高齡化,未來對於老人照護的需求增加,若能以機器人取代一些人力的需求,將能大大減少社會的負擔,由此為出發點設計出此兩輪機器人。
創作目的
本文的目的主要在於整合兩輪機器人的軟體及硬體功能,使其能夠做出一些簡單擬人類的功能。由於兩輪機器人屬於倒單擺系統,因此具有非線性與不穩定的特性,需要控制器才能使它平衡、前進與後退。本文設計此兩輪機器人硬體結構,亦設計以調整其重心來做為移動依據的控制器。
另外,透過人臉影像識別技術來識別特定的臉孔,及利用距離感測模組偵測周圍的障礙物,模糊控制器整合即時收到的資料並輸出決策命令給兩輪機器人,使其即時做出相對行為反應,來達成物件追蹤的功能。透過實際實驗驗證本文所設計的兩輪機器人是否能夠達到預期的結果,亦透過無線網路即時上傳兩輪機器人行為的資訊,以監控其狀態。
常見的兩輪平衡車是以人體來改變兩輪平衡車的重心,作為移動的依據。本文設計一機械裝置來改變兩輪機器人重心,以實現兩輪機器人可自主移動的功能。
工作原理
兩輪機器人功能
兩輪機器人使用六軸加速度陀螺儀、霍爾元件、超音波感測器與平板電腦,來收集兩輪機器人當前的狀態,包括當前機器人角度、角加速度、前方障礙物距離、輪速、追蹤的人臉所在方位等資訊,這些資訊經由控制器計算出適當控制值給馬達,使兩輪機器人能呈現一個不倒狀態且能產生移動行為,同時移動過程亦能避開障礙物,持續追蹤特定人臉,完成物件追蹤的功能。
MCU功能與元件原理
本文設計兩輪機器人使用盛群HT32F52352微控制器IC為主控制器,這顆IC為32bits微控制器,其核心為arm Cortex M0微控制器,相對於傳統的8bits微控制器有更強大的計算功能及儲存空間。
臉部辨識的處理是利用平板電腦來完成。至於感測器的連結以及通訊,會根據感測器的通訊方式使用對應的功能,有USART及GPIO。感測器讀取過程會用到Interrupt,並安排其優先順序。另外,也會運用各個類型的Timer來計數與計時。關於使用HT32F52352微控制器的功能會在之後的章節詳細介紹。
馬達驅動器
馬達驅動器是兩輪機器人重要的控制裝置,本文所選用的馬達驅動器型號是HB-25,正轉時高電位脈波寬度必須在1ms至1.5ms;反轉時高電位脈波寬度則是在1.5ms至2ms,而低電位的部分脈波寬度必須大於5.25ms,符合上述脈波寬度需求,才能使馬達轉動。
因此,我們需要利用利用盛群晶片中BFTM或GPTM的功能來產生PWM(Pulse Width Modulation)訊號,而晶片的功能讓本文所設計的PID控制器產生適當工作週期(Duty Cycle),可以使兩輪機器人因應當前情況改變馬達輸出。
MPU6050
本文兩輪機器人使用六軸加速度陀螺儀的型號為MPU6050,其能夠感測當前的角度、角速度、加速度及溫度,此顆感測器的加速度計是以重力加速度來換算當前加速度;而陀螺儀是利用受到外來的力矩影響,可以測量角速度得到狀態變化,將感測到的這兩個參數做運算之後才能得到當前精準的角度。
此顆感測器內建卡爾曼濾波器,能夠有效降低感測的雜訊,提高測量精準度。HT32F52352微控制器的UART1的中斷程序來處理MPU6050傳送的資料,以避免其他中斷程序會導致資料傳送錯誤。接收到MPU6050傳送的資料,再進行解碼並給PID控制器運算,最後提供資訊給BFTM改變PWM。
超音波感測器
為了使兩輪機器人移動過程具有避障功能,本文以超音波感測器HC-SR04來偵測障礙物的距離,並透過模糊控制器來計算出相對應的控制策略,進而做出避障的動作。
超音波感測器的工作原理是利用模組發射8個40k Hz的聲波出去,再來量測訊號是否有返回。如果有接收回傳的訊號,感測器就會傳出超音波來回的時間,使用者再依照音速(約340 m/s)換算成距離。
此外,由實驗經驗可知,所量測的物體體積最好大於0.5平方公尺,而觸發(trigger)時間最好大於60ms,以免trigger與echo干擾。這部分使用到HT32F52352微控制器中的EXTI0/1來完成。
五個超音波感測器使用過程,是先由主程式輪流發送trigger訊號開始,當感測器收到echo訊號後及觸發EXTI,這邊是設定為正緣觸發,觸發後會啟動BFTM1開始計數,當EXTI再度偵測到echo變低電位,這時停止BFTM1取出計數值,最後將計數值依據公式換算成時間,計數值對應的秒數有預先做過實驗並記錄。
霍爾元件
對於兩輪機器人的速度控制,則是以霍爾元件作為讀取速度的感測器,霍爾元件利用磁場變化來產生輸出脈波,沒有磁場的時候會輸出高電壓,而感應到磁場實則輸出低電壓。
由於本機器人所使用的馬達及驅動器有些製程上的誤差,導致左右兩輪在接收相同的脈波輸入時會有不同的轉速,所以藉由此方法能得到左右輪速度值進而作速度控制。
這部分使用到HT32F52352微控制器的EXTI2/3來做,相對超音波的處理,這邊EXTI內只要負緣觸發後便增加霍爾的計數變數一次,接著由於要取得當前速度,這邊再使用的HT32F52352微控制器的systick,將reloadvalue設定為3000000時間為0.5ms,這也代表取樣時間,每計數完一次先將systick停下,接著利用觸發次數*輪直徑*Pi*取樣時間的倒數,以取得當前速度值。
步進馬達與滑輪組
本文使用步進馬達搭配滑輪組裝置,做為移動的依據,換句話說,利用此裝置來調整兩輪機器人的重心,使兩輪機器人能夠前進或後退。而步進馬達做為此裝置的核心,控制其轉動步數改變上面載重物的位置。這部分使用到HT32F52352微控制器的BFTM1中斷來處理,利用此Timer來調整步進馬達移動的速度。
圖1為整體程式的流程,開始後經過初始化進到主程式開始計算所有數值,過程中也等待其他中斷讀取感測器數值,並且設定中斷優先順序。
作品結構
兩輪機器人硬體架構
圖2為本作品所設計的兩輪機器人,其包含左右兩側驅動器及馬達、一顆12V電池、控制車體重心的滑輪組(內含步進馬達)、超音波感測器、霍爾元件、藍牙傳輸模組HC-06、平板電腦以及微控制器。
兩輪機器人系統架構
兩輪機器人的系統架構如圖3所示,整體系統架構分別以手機、電腦以及微控制器為核心分成三大部分,手機的部分負責透過藍牙傳送命令給微控制器,以及接收目前兩輪機器人之狀態值;電腦的部分負責接收影像資訊整合之後傳送給微控制器,以及上傳所有資訊至資料庫;微控制器的部分則是負責接收所有感測器的資訊以及電腦與手機的命令,整合之後,計算所需要的控制策略,輸出對應的脈波給馬達驅動器,使兩輪機器人動作。
兩輪機器人控制系統
本作品使用PID控制於整體傾斜角度與速度控制上,首先由MPU6050(加速度陀螺儀)得到當前角度,當作回授的狀態值,再利用參考值(設定角度值為0)和狀態值做相減得到當前的誤差值,將此誤差值乘上PID參數,算出當前所需要的控制值,進而輸出至馬達,使兩輪機器人移動並保持平衡狀態。圖4為PID系統方塊圖。
人臉識別追蹤
本文人臉識別系統是以LBPH演算法所完成,而LBPH演算法原理是以提取待識別人臉之LBP特徵相量,與資料庫中的人臉影像資料進行比對,尋找相關性最高的結果以完成人臉識別。實驗中我們得到所需要追蹤的人臉後,計算人臉在鏡頭中的中心點,透過UART傳輸,將人臉中心點位置傳回給微控制器,再經由PID控制計算左右輪所需要的馬達轉速,進而達到追蹤的功能。
當兩個人在螢幕畫面中時,程式將所要追蹤的人從資料庫中進行比對,若比對成功便會框出該追蹤對象,若比對失敗則將不會在畫面中框出,圖5為影像追蹤之人臉識別。
超音波搭配模糊控制避障
本作品是利用五個超音波感測模組搭配模糊控制,來達到避障的效果,其感測器擺放位置為前方、左右前方45度以及左右方向,共五個超音波模組,擺放位置示意圖如圖6所示。
利用五個超音波接收的值當作模糊控制的輸入,並採用三角型歸屬函數,而我們分別以近、中、遠做為三種歸屬函數,當得到輸入值並帶入歸屬函數,得到所需要的歸屬度之後,將其帶入模糊規則庫,經過解模糊化得到左右輪控制策略,最後達到避障的效果。
手機APP藍牙連接
使用者透過藍牙模組HC-06從手機傳送命令給兩輪機器人,首先必須先利用Android Studio 設計一個APP介面供使用者使用,此APP具有及時顯示資訊的功能,顯示目前連接狀態,具有控制按鈕,讓使用者能夠透過遙控方式操控兩輪機器人。
整體實驗功能流程
本文完整實驗說明流程圖如圖7所示,首先開啟電源,且進行微控制器初始化,等到兩輪機器人進入平衡狀態,由手機選擇要進入遙控功能或是人臉追蹤功能,若選擇遙控功能,則接下來動作全以手機APP所控制;若選擇人臉追蹤功能後機器人進入全自動狀態,且等待使用者下達命令找尋追蹤之人臉,成功抓取後,判斷現況是否需要進入避障狀態,若無障礙物則將追蹤人臉,最後判斷追蹤是否完成,若還沒完成追蹤,則將重複做避障或追蹤人臉之功能,直到追蹤完成。
測試方法
實驗功能介紹
為了驗證本文所設計之兩輪機器人,其硬體和軟體整合的效能與可行性,本文透過實驗來驗證以下三個項目:
(一)透過鏡頭抓取人臉後進行追蹤。
(二)透過模糊控制進行避障。
(三)室內追蹤。
首先利用語音下達命令的功能決定欲追蹤之對象,並透過鏡頭抓取人臉後進行追蹤,而且兩輪機器人能夠穩定前進,目的是為了證明此設計是否能夠進入穩定狀態,解決靜摩擦力與動摩擦力轉換時會讓摩擦係數改變的問題,最後成功追蹤目標。
由於在追蹤目標的過程中,可能會有碰到障礙物的情形,所以我們必須使兩輪機器人自動避開障礙,避開後繼續追蹤目標,直到追蹤完成。
此實驗不僅使用PID控制,且加入了模糊控制進行避障,此部份目的是為了測試避障功能是否可行,並且在人臉追蹤及避障功能的切換是否正確。
最後由於機器人在室內使用的頻率較高,因此對於室內環境的模擬格外重要,接收命令後進行追蹤和避障,過程會經過多個直角轉彎,難度較高。此次實驗測試兩輪機器人整體功能是否能夠串聯起來,並適應室內的環境,同時整合其資訊上傳資料庫,讓使用者能透過網路監看其即時資訊。圖8為實驗預想路線圖,箭頭為預想兩輪機器人行走路線;實線為障礙物;虛線為人走的路線。
下方的實驗結果呈現實驗過程的時間截圖,其中實驗時間長度為1至310秒。如下圖所示,本文可完成自主平衡控制、自主移動控制、物件追蹤與避障功能。
(本文作者呂藝光1、陳勁榮2、林哲宇2為國立台灣師範大學電機工程學系1教授、2學生)
參考文獻
[1] SEGWAY,From http://www.segway.com/
[2] Yunsu, H. and Yuta, S., “Trajectory Tracking Control for Navigation of Self-Contained Mobile Inverse Pendulum,” IEEE/RSI/GI International Conference Advanced Robotic Systems and the Real World, Vol. 3, pp. 12-16, September 1994.
[3] Grasser, F., D’Arrigo, A., Colombi, S. and Rufer, A. C., “JOE: A Mobile, Inverted Pendulum,” Transactions on Industrial Electronics, Vol. 49, No.1, pp. 107-114, February 2002.
[4] Yeonhoon,K.,Soo. K. and Yoon. K., “Dynamic Analysis of a Nonholonomic Two-Wheeled Inverted Pendulum Robot,” Journal of Intelligent and Robotic Systems﹐Vol.40, pp. 25-46, September 2005.
[5] Jian-Xin Xu, Zhao-Qin Guo and Tong Heng Lee, “ Design and Implementation of a Takagi–Sugeno-Type Fuzzy Logic Controller on a Two-Wheeled Mobile Robot”. IEEE TRANSACTIONS ON INDUSTRIAL ELECTRONICS, VOL. 60, NO. 12, DECEMBER 2013
[6] Wei An and Yangmin Li, “Simulation and Control of a Two-wheeled Self-balancing Robot”. Proceeding of the IEEE International Conference on Robotics and Biomimetics (ROBIO) Shenzhen, China, December 2013
[7] 吳國駿,PID與狀態回受控制器應用於倒單擺系統之分析比較」,碩士論文,國立高雄應用科技大學電機工程系碩士班,台灣,2007
[8] PLAYROBOT,From http://www.playrobot.com/motro_driver/files/IG-52GM.pdf
[9] PARALLAX,From https://www.parallax.com
[10] 謝伯楷,居家式移動機器人之軟硬體設計與控制”,碩士論文,國立台灣師範大應用電子科技學系,台灣,2009
[11] ZHANYI,From http://www.zhanyi-tw.com/product
[12] Ching-Chang Wong, Hou-Yi Wang, Kuan-Hua Chen, Chia-Jun Yu and Hisayuki Aoyama, "Motion controller design for two-wheeled robot based on a batch learning structure," 2008 SICE Annual Conference, Tokyo, 2008, pp. 772-776.
[13]Q.Jia,X.Cao,H. Sun and J. Song, "A Novel Design of A Two-Wheeled Robot," 2007 2nd IEEE Conference on Industrial Electronics and Applications, Harbin, 2007, pp. 1226-1231.
[14] O. Y. Chee and M. S. b. Z. Abidin, "Design And Development of Two Wheeled Autonomous Balancing Robot," 2006 4th Student Conference on Research and Development, Selangor, 2006, pp. 169-172.
[15]J.Zhang,G.Li,F.Liu and Y.Liu,"Design of a two-wheeled self-balance personal transportation robot," 2016 IEEE 11th Conference on Industrial Electronics and Applications (ICIEA), Hefei,2016,pp.225-228.
[16] G. R. Yu, Y. K. Leu and H. T. Huang, "PSO-based fuzzy control of a self-balancing two-wheeled robot," 2017 Joint 17th World Congress of International Fuzzy Systems Association and 9th International Conference on Soft Computing and Intelligent Systems (IFSA-SCIS), Otsu,2017,pp.1-5.
[17] W. Qingcheng and F. Jian, "Fuzzy Immune PD Algorithm Applied in the Self-Balancing Two-Wheeled Robot," 2014 8th International Conference on Future Generation Communication and Networking, Haikou,2014,pp.112-115.
[18] T. Ojala, M. Pietikainen, and D. Harwood (1994), "Performance evaluation of texture measures with classification based on Kullback discrimination of distributions", Proceedings of the 12th IAPR International Conference on Pattern Recognition (ICPR 1994), vol.1,pp.582-585.