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