一種機器人的尋跡算法
1 引言
近年來,機器人的發(fā)展遍及機械、電子、冶金、交通、宇航、國防等領域,機器人的智能水平不斷提高。在自主式智能導航系統(tǒng)中,機器人要實現(xiàn)自動導引功能就必須要感知導引線,即常說的“尋跡”,這相當于給機器人一個視覺功能。
筆者所設計的機器人是一個自動導引小車(AGV),包括兩大部分:一是行進方向的檢測處理;二是步進電機的驅動。
在該系統(tǒng)里,采用與地面顏色有較大差別的線條作引導,使用傳感器感知導引線,用單片機AT89C52掃描光電傳感器組,對采集到的信號進行分析處理并做出邏輯判斷后,得到行進方向,然后根據(jù)一定的步數(shù)去驅動步進電機,實現(xiàn)機器人的循跡行進。
小車的驅動采用步進電機,因為步進電機具有快速起停能力,且轉換精度高,正反轉控制靈活。
2 硬件電路
采用AT89C52單片機作為控制核心對光電傳感器送來的各種信號進行分析處理,以控制機器人的方向和驅動及數(shù)據(jù)顯示等,如圖1所示。
為了檢測黑色導引線,筆者采用了8個光電傳感器組成的矩陣組。如圖2所示,相對于小車底盤的中心,我們布置了內外兩層各4個傳感器。每層4個傳感器對應著中心的4個方向:前、后、左前、右前??刹捎脪呙璺绞椒謨纱蔚玫礁餍袛?shù)據(jù)。
圖1 硬件框圖
圖2 光電傳感器矩陣組
導引線檢測的具體電路如圖3所示。此處采用的是TCRT1000反射式紅外光電傳感器。以第1行第1列的光電傳感器為例,其工作原理是這樣的:P1 .0輸出低電平時,三極管A1015導通,光電傳感器工作,TCRT1000的發(fā)射端發(fā)出不可見的紅外光。當反射物由非黑色導引線變?yōu)楹谏珜б€時,光電三極管的基極接受不到反射光,從而光敏三極管由導通變?yōu)榻刂梗沟眉姌O電壓由低電平變?yōu)楦唠娖?,?jīng)過74LS14反相器反相整形,輸出值由邏輯1變?yōu)檫壿?后,送入單片機中進行進一步處理。
值得指出的是在此處PNP三極管A1015的使用。此處如果選用NPN三極管,則在開機或復位時P1口各位輸出高電平會誤掃描傳感器矩陣,而選用PNP三極管就可以避免這種情況,能很好的控制光電傳感器的工作,并可以增加驅動能力。
圖3 光電傳感器尋跡電路圖
3 尋跡
單片機控制尋跡的原理是這樣的:第一步,通過矩陣式掃描,即給光電傳感器矩陣分別輸入兩個“1”信號的行值,將輸出的4個列值信號分別存入兩個地址(如30H、31H)的低4位,低4位從高到低分別對應著4個方向:前、后、左前、右前。然后用“F0”與這八位做“或”邏輯運算,即屏蔽掉高四位后作為本次的信號值;第二步,將本次的信號值與上一次掃描處理后的信號值進行邏輯處理,得出一個新方向,作為機器人行進的方向。
在這個程序里,邏輯處理內外層得到新方向是尋跡的關鍵。筆者在其中按先后步驟使用了3種規(guī)則:
前后比較規(guī)則,內外層切換規(guī)則,優(yōu)先級規(guī)則。
(1) 前后比較規(guī)則
此規(guī)則是這個算法的核心規(guī)則。它的目的是盡可能的用新探測到的黑點作為新方向。新方向F通過
(1)
來求得。(其中 為本次的信號值, 為前次的信號值)邏輯處理前“0”表示黑線軌跡,邏輯處理后“1”表示軌跡行進方向。舉例如下:以內層為例,設當前測得的值為
且前一次測得的值為
經(jīng)過上述(1)邏輯處理后,假設結果為
則正前方是行進的新方向。
(2) 內外層切換規(guī)則
如果光電傳感器組前后兩次所檢測的值完全一樣,則在邏輯處理后會出現(xiàn)全零,這時保持原方向行進。如果碰到曲線拐彎或者曲線斷續(xù),則有可能出現(xiàn)多個 “1”即多個方向,這時可采用“內外層切換規(guī)則”,也就是說從內層切換到外層,啟用外層掃描值重復上述前后比較規(guī)則來進行判斷。啟用外層信號進行二次判斷能很好的處理曲線拐彎及曲線斷續(xù)等內層處理不好的情況。但用外層信號判斷,因為其傳感器布置的間隙距離比內層大,其控制精度不如用內層信號判斷高。
(3) 糾錯規(guī)則
在運行中,傳感器有可能受到干擾而發(fā)出錯誤信號導致機器人走錯或迷失方向,這個時候糾錯規(guī)則能讓機器人后退起到糾錯作用。所謂糾錯規(guī)則就是在走錯后出現(xiàn)了內外層左前、前、右前均沒有探測到引導線,而后向探測到了導引線的情況下,讓機器人后退,一直退到前面三個方向傳感器里有傳感器探測到導引線為止。此時再用(1)式求得新的行進方向,從而實現(xiàn)糾錯功能。
其中前后比較法的邏輯處理及隨后的判斷程序具體如下:(30H放本次信號值,32H放前次信號值)
DATADEAL:MOV A, 30H
XRL A, 32H
ANL A, 32H ;按(1)式求新向
MOV 36H, A ;保存
MOV R3, #8
MOV R4, #0
COUNT: JB ACC.0, ADDN
COUNT1: RR A
DJNZ R3, COUNT
CJNE R4, #1H, JUDGE ;R4里所含不是1個“1”時,
;轉“JUDGE”再判斷
AJMP MOTORRUN ;R4里只有一個“1”時,以此
;“1”所代表的方向作為新方向
ADDN: INC R4
AJMP COUNT1
JUDGE: JC KEEPMOVE ;少于一個“1”,保持原方向
AJMP OUTCHECK ;多于一個“1”,則取用外層
……
MOTORRUN:…… ;電機驅動子程序
KEEPMOVE:…… ;保持原運動狀態(tài)子程序
OUTCHECK:…… ;取用外層信號值判斷子程序
4 執(zhí)行
導引機器人的驅動方式采用一驅動輪一轉向輪方式:將后輪作為驅動輪,前輪作為轉向輪,通過切換轉向輪向左或向右的方式改變機器人的方向。這種方式與汽車的控制方式一樣,直線行進性能好,可以高速移動。從1個步進脈沖對應的行進路程,可以預算出應給步進電機發(fā)出的脈沖數(shù)。預定的行進路程以小于內層傳感器間隙距離的1/2為宜,這樣可以保證機器人位置測量的連續(xù)性和方向識別的準確性。單片機AT89C52根據(jù)其邏輯處理出來的方向,調用步進電機的驅動程序即可實現(xiàn)機器人循跡連續(xù)運動的功能。
5 結束語
筆者在做好硬件部分的基礎上,根據(jù)上述思路編制了程序進行了實驗。實驗中筆者采用了與底色有較大差異的黑色膠帶作導引線,膠帶寬1.8cm,其中導引線總長6000mm,斷續(xù)部分的間斷距離不大于10mm,步進電機執(zhí)行一次驅動預定的行進路程為4mm。在沒有強烈日光干擾的情況下,筆者所設計的尋跡系統(tǒng)能自動識別黑色導引線并選擇正確的方向運動。測試結果:系統(tǒng)總能在60S內連續(xù)正確地走完全程,而且機器人(中心)所走的軌跡基本上在黑線上??梢?,即使是比較復雜的曲線,筆者設計的導引機器人也能準確地實現(xiàn)尋跡功能。
本文作者的創(chuàng)新點是:針對基于光電傳感器組尋跡的自動導引機器人,設計了一種新的傳感器陣列的布置方式。根據(jù)此布置方式,提出了三個處理規(guī)則結合而成的軌跡識別算法。
參考文獻
1. 何立民.MCS—51系列單片機應用系統(tǒng)設計.北京:北京航空航天大學出版社,2003年
2. 廖華麗,周祥,董豐,王延旗.基于模糊控制的AGV尋跡算法.哈爾濱工業(yè)大學學報 2005(7)
3. 胡銀彪,馮建超.拖靶高度控制系統(tǒng)的設計.微計算機信息 2002(11)
評論