翟永君
(天津輕工職業(yè)技術(shù)學(xué)院,天津 300350)
自主式移動機器人任意轉(zhuǎn)角運動研究
翟永君
(天津輕工職業(yè)技術(shù)學(xué)院,天津 300350)
文章結(jié)合AS-UII型自主移動機器人的結(jié)構(gòu),針對其任意角實現(xiàn)的困難,給出任意轉(zhuǎn)角運動的算法思想,并進行實現(xiàn),通過測試表明本文給出的算法切實可行。
移動機器人;任意角;控制
本文研究的是AS-UII型自主移動機器人,如圖1所示。該機器人的運動系統(tǒng)有兩只主動輪和兩只從動輪,也可加裝機械手或其他裝置,擴展更多的功能。在運動系統(tǒng)中,兩只主動輪由兩只電機分別驅(qū)動,可以實現(xiàn)前進、后退、轉(zhuǎn)向、劃弧線等各種平面運動。移動機器人的光電編碼器能夠累計機器人主動輪轉(zhuǎn)動時所反饋的計數(shù)值,通過換算得到機器人的實時行進速度,然后傳送到CPU進行計算,并按照程序進行運行。其中。機器人的CPU是一個單片機,其型號為68HC11E。這是一個8位機,安裝在機器人的主板上,用于集中處理程序指令和傳感器返回的信息。
圖1 AS-UII自主機器人側(cè)視圖
機器人的矩形運動包含實現(xiàn)機器人各種運動軌跡控制的兩個最基本的動作:直線行走與轉(zhuǎn)彎。在實現(xiàn)機器人矩形運動的控制算法與控制效果中了解到,在機器人原有VJC軟件編程環(huán)境的基礎(chǔ)上,要使移動機器人依據(jù)指定角度(如90°)實現(xiàn)轉(zhuǎn)彎,通過軟件設(shè)置電機在轉(zhuǎn)彎時的轉(zhuǎn)角速度與轉(zhuǎn)角時間是關(guān)鍵。這就要求對控制程序中“直行”“轉(zhuǎn)向”模塊的參數(shù)或JC中drive()與wait()的參數(shù)進行反復(fù)調(diào)試、修改,使其轉(zhuǎn)角速度與轉(zhuǎn)角時間能相互協(xié)調(diào),以使機器人正好能轉(zhuǎn)過90°。
但這種實驗試湊的方法,工作量大,一個轉(zhuǎn)角速度對應(yīng)一個轉(zhuǎn)角時間,并且不具備通用性,最終是依據(jù)測量得到的經(jīng)驗值來對機器人進行轉(zhuǎn)角控制,不能保證轉(zhuǎn)角的精確度,另外機械性能、地面摩擦也不可避免地對機器人的行走造成影響,所以這種方法并不能完全實現(xiàn)機器人矩形運動的精確控制,更不能實現(xiàn)任意轉(zhuǎn)角的運動。在從實現(xiàn)機器人的矩形運動出發(fā),下面會用一種應(yīng)用光電編碼器來實現(xiàn)移動機器人任意轉(zhuǎn)角運動的算法(圖2)。首先在程序中設(shè)定轉(zhuǎn)彎速度和轉(zhuǎn)角度數(shù),然后把轉(zhuǎn)角度數(shù)轉(zhuǎn)換成脈沖值、左右輪脈沖計數(shù)清零,啟動電機、累計左右輪脈沖計數(shù),之后通過光碼盤得到的脈沖計數(shù),查看是否達到轉(zhuǎn)角脈沖計數(shù)或超出設(shè)定轉(zhuǎn)角時間,如果沒有,則繼續(xù)執(zhí)行上述的流程,如果是,則轉(zhuǎn)彎停止,輸出左右輪脈沖累計計數(shù),返回左右輪脈沖計數(shù)誤差值。
應(yīng)用光電編碼器來實現(xiàn)機器人走矩形,是因為光電編碼器是靠所獲取的脈沖計數(shù)值來完成對規(guī)定距離的行走,故用它來實現(xiàn)矩形軌跡的行走受外界地面狀況的影響程度相對較小。對于轉(zhuǎn)角函數(shù)的設(shè)計,關(guān)鍵在于確定所要求轉(zhuǎn)過角度所對應(yīng)的脈沖個數(shù)。機器人轉(zhuǎn)彎時,令算得的脈沖個數(shù)為上限,到達規(guī)定脈沖個數(shù)上限時停止,這樣,就可以旋轉(zhuǎn)到本文所期望的角度。應(yīng)用此函數(shù),不僅可以走直角,還可以轉(zhuǎn)過任意所設(shè)定的角度,對于機器人準(zhǔn)確完成行走任務(wù)有較好的幫助。由于移動機器人的左右兩只主動輪分別由兩只直流電機差動驅(qū)動,通過分別控制主動輪的轉(zhuǎn)速和力矩來控制機器人按所要求的方向和速度移動,所以在實現(xiàn)機器人任意轉(zhuǎn)角運動的方法上,采用單電機控制或者兩電機控制。
下面以單電機實現(xiàn)矩形運動為例推導(dǎo)出實現(xiàn)機器人任意轉(zhuǎn)角運動的控制算法,即轉(zhuǎn)角與脈沖個數(shù)之間的轉(zhuǎn)換函數(shù)。單電機實現(xiàn)矩形運動,即在轉(zhuǎn)彎過程中,一電機停止運動(這里假設(shè)為右電機),另一電機(左電機)驅(qū)動一輪以其為圓心,旋轉(zhuǎn)90°,這樣可以完成向右轉(zhuǎn)彎。本文可以根據(jù)兩輪之間的距離以及輪子的直徑算出所要旋轉(zhuǎn)角度的脈沖個數(shù)。
左輪在轉(zhuǎn)彎過程中走過的距離等于以右輪為圓心、輪間距為半徑的圓周值乘以左輪在轉(zhuǎn)彎過程中所掃過角度與360°的比值。而輪子旋轉(zhuǎn)360°共產(chǎn)生33個脈沖,于是可以得到轉(zhuǎn)角函數(shù)為:脈沖個數(shù)=(旋轉(zhuǎn)角度
圖2 任意轉(zhuǎn)角子程序流程圖
利用兩電機實現(xiàn)矩形運動的控制算法,其轉(zhuǎn)換函數(shù)的推導(dǎo)與單電機相同,具體實現(xiàn)將在接下來的程序中具體加以說明。
有了轉(zhuǎn)角——脈沖轉(zhuǎn)換函數(shù)后,便可以將計算得到的脈沖個數(shù)設(shè)為上限,到達規(guī)定脈沖個數(shù)后使電機停止,這樣,就可以旋轉(zhuǎn)到所期望的角度。測得移動機器人的輪間距為16cm,輪直徑為6cm。
1.利用兩電機進行轉(zhuǎn)彎控制
利用drive()函數(shù)對兩電機進行控制,實現(xiàn)轉(zhuǎn)彎。由于drive()函數(shù)為復(fù)合語句,同時控制左右兩個電機的轉(zhuǎn)速,用drive(0,turn_vel)進行控制電機時,兩輪轉(zhuǎn)速相反,因此脈沖個數(shù)只需要以一個輪子為圓心時脈沖個數(shù)的一半。
利用motor()函數(shù)對兩電機分別進行控制,實現(xiàn)轉(zhuǎn)彎,如圖3所示。
設(shè)轉(zhuǎn)過90°所需的時間為t,輪直徑為l,輪間距為x,左輪的速度為V1,右輪的速度為V2。因為轉(zhuǎn)過90°的時間同為t,由:
圖3 轉(zhuǎn)彎時左右兩輪示意圖
2.利用單電機進行轉(zhuǎn)彎控制
該程序的主體與利用drive()函數(shù)對兩電機進行控制,實現(xiàn)轉(zhuǎn)彎的程序大致相同,只是脈沖個數(shù)的判定值為degree/180×(16/6)×33。
精確控制是通過機器人控制程序來使得其為了達到某種任務(wù)而實現(xiàn)的控制方案,通過控制程序使得機器人能夠按照程序設(shè)定的要求來完成某個任務(wù)或則運行軌跡,圖4描述了任意轉(zhuǎn)角運動的精確控制程序流程,在這里通過設(shè)定輸入行進速度和轉(zhuǎn)角數(shù)來后,按照某個程序要進行任意轉(zhuǎn)角運動的控制,最后實現(xiàn)達到輸入初的轉(zhuǎn)角運動要求。
1.直線運動實驗測試
實驗環(huán)境由兩臺移動機器人組成,一個用作為主機器人,另一個作為從機器人,各自有獨立的處理器、傳感器和執(zhí)行機構(gòu),主機器人的速度為給定的,從機器人根據(jù)紅外傳感測得的數(shù)據(jù),進行分析并作出決策,驅(qū)動執(zhí)行機構(gòu)使得從機器人能夠與主機器人保持相對的距離和速度。主機器人給定期望路徑為直線,速度為20cm/s,給定時間T=10s內(nèi)運動,兩機器人之間的期望距離為30cm,則軟件實現(xiàn)流程分別如圖5和圖6所示。
圖4 實現(xiàn)任意轉(zhuǎn)角運動的精確控制程序流程圖
圖5 從機器人軟件實現(xiàn)流程
圖6 主機器人軟件實現(xiàn)流程
從機器人與主機器人不同,一方面它首先要獲取與主機器人直接的相對距離信息,然后通過測得的距離與期望距離進行比較,同時又得實時獲取編碼器數(shù)據(jù),測出每一時刻的速度,通過設(shè)定的控制程序求出電機的輸入量,去控制電機的輸出,從而達到與主機器人的相對位置不變。從表1中可以看出,兩機器人在直線運行過程中,它們之間相對距離基本保持不變,從而達到了本文的實驗要求。
2.轉(zhuǎn)角測試
在實驗中,我們先利用式(1)對兩電機進行90°轉(zhuǎn)彎控制的標(biāo)準(zhǔn)脈沖個數(shù)計算,應(yīng)為degree/360×(16/6)×33=22。
但實際測試中結(jié)果如表2。
從下面結(jié)果看出轉(zhuǎn)角運動實際測量值但在實際調(diào)試中,本文得出脈沖個數(shù)的設(shè)定值為12時,機器人就能較好地完成90°的轉(zhuǎn)彎,而22個脈沖的是轉(zhuǎn)角為173°??赡艽嬖趦蓚€問題:
表1 機器人相對位置信息
表2 轉(zhuǎn)角實測結(jié)果
(1)在硬件結(jié)構(gòu)上,考慮到輪子的慣性,以及脈沖個數(shù)需要取整數(shù)值的緣故,角度越小,則誤差越大,當(dāng)角度小到一個脈沖就可以完成或是不到一個脈沖時,這時轉(zhuǎn)角函數(shù)就基本失效。另外光電編碼器本身在讀取計數(shù)時也是存在誤差的;
(2)在程序?qū)崿F(xiàn)方面,由于受到延時函數(shù)的影響,雖然可以滿足所需轉(zhuǎn)角的要求,但光電編碼器是在轉(zhuǎn)彎過程中進行計數(shù)并且累加,這需要花費相對較長的時間;另外,在測試時,若將任意轉(zhuǎn)角函數(shù)主體部分的延時語句和停止語句去掉,則必須要修改所需脈沖個數(shù)值。因為如果沒有stop()語句,在循環(huán)體內(nèi)執(zhí)行其它語句時,電機仍在運行,故使得脈沖計數(shù)器清零后計數(shù)與實際存在誤差。
在這種情況下,為了實現(xiàn)移動機器人的精確轉(zhuǎn)角控制,本文還應(yīng)該人為地進行調(diào)整。在轉(zhuǎn)角計數(shù)方面,本文可以利用一些經(jīng)驗值來抵消光電編碼器自身檢測精度的影響;通過在實際不同情況下得到相應(yīng)的修訂值,作為程序中的設(shè)定上限值,完成對程序的完善。在硬件方面,本文可以考慮在輪子的上方加上機械旋轉(zhuǎn)裝置,利用對旋轉(zhuǎn)裝置的精確控制來完成機器人對規(guī)定角度的旋轉(zhuǎn)。實際上,移動機器人自主地進行矩形運動,回不到出發(fā)點的原因,一方面是機器人在轉(zhuǎn)彎過程中它多轉(zhuǎn)過的角度出現(xiàn)誤差,另一個重要原因是,機器人在最初的直線行進時就出現(xiàn)了偏離直線運動的現(xiàn)象,這樣即便機器人能夠?qū)崿F(xiàn)精確的轉(zhuǎn)彎,也還是會出現(xiàn)機器人回不到出發(fā)點,出現(xiàn)無法完成閉合的矩形運動軌跡的情況。由此可見,直線運動是自主式移動機器人最基本的運動,也是機器人能夠精確實現(xiàn)其它各種動作的保證與基礎(chǔ)。
[1]郝立果,王玉東,邴志剛等.基于CPLD和 MCU網(wǎng)絡(luò)的服務(wù)機器人研究[J].微計算機信息,2005,(10).
[2]韓大鵬,韋慶.機器人控制器的一種模塊化設(shè)計方法[J].微計算機信息,2005,(05).
[3]能力風(fēng)暴智能機器人開發(fā)系統(tǒng)AS-UⅡ使用手冊[Z].上海廣茂達伙伴機器人有限公司,2010.
Research on Random Rotating Angle of Autonomous Mobile Robot
ZHAI Yong-jun
(Tianjin Light Industry Vocational Technical College,Tianjin,China 300350)
Based on the structure of the autonomous mobile robot of AS-UII and the difficulties in realizing random rotating angle,the algorithm thinking of random rotating angle is given and achieved.The paper shows the algorithm is feasible through the test.
mobile robot;random rotating angle;control
TP242
A
1673-582X(2012)08-0044-04
2012-02-20
翟永君(1981-),女,講師,主要研究方向:數(shù)據(jù)庫、自動化控制等。