智能尋跡機器人是一種被廣泛研究的機器人,而且國內外都有許多重要的比賽都以尋跡機器人為核心展開(kāi),如我國的“飛思卡爾”杯全國大學(xué)生智能車(chē)大賽,以及吸引亞太地區眾多國家參賽的亞廣聯(lián)(ABU)機器人大賽等。 所謂的復雜路線(xiàn),即由小半徑彎道、各種角度折道、直道等組成的不規則導引線(xiàn),它是相對由大半徑彎道組成、過(guò)渡平滑的簡(jiǎn)單路線(xiàn)而言的。筆者所設計的尋跡機器人小車(chē),以AT89C52單片機為控制芯片,采用自制的3個(gè)紅外光電傳感器,以簡(jiǎn)單的設計、較低的成本實(shí)現了復雜路線(xiàn)下機器人的自主尋跡。 1 硬件及電路 1.1 控制芯片 考慮到實(shí)用性和性?xún)r(jià)比,采用AT89C52單片機作為機器人的控制芯片。AT89C52是美國 Atmel公司生產(chǎn)的低電壓、高性能CMOS 8位單片機,片內含8 KB的可反復擦寫(xiě)的只讀存儲器(PEROM)和256B的隨機存取數據存儲器(RAM),32個(gè)I/O口線(xiàn),3個(gè)16位定時(shí)/計數器,1個(gè)全雙工串行通行口。器件采用Atmel公司的高密度、非易失性存儲技術(shù)生產(chǎn),與標準MCS-51指令系統及8052產(chǎn)品引腳兼容。 1.2 傳感器模塊 作為尋跡機器人的“眼睛”,選擇合適的傳感器是關(guān)鍵。目前市面上可選用的傳感器主要有CCD傳感器和紅外光電傳感器兩種。近年來(lái)CCD傳感器技術(shù)已趨成熟,在近幾屆“飛思卡爾”杯智能車(chē)大賽上,采用CCD傳感器的智能車(chē)越來(lái)越多,并取得了不錯的成績(jì)。不過(guò),CCD傳感器價(jià)格較高,體積較大,數據處理相當復雜,因此在按既定路線(xiàn)行走的尋跡機器人設計中,紅外光電傳感器以其體積小、價(jià)格低、數據處理簡(jiǎn)單而顯得更有優(yōu)勢。 紅外光電傳感器由1個(gè)紅外發(fā)射管和1個(gè)光敏二極管組成。工作時(shí),紅外發(fā)射管發(fā)射的紅外光被被測表面反射回來(lái),光敏二極管接收被反射光。由于被測表面的材質(zhì)不同,反射率也不一樣。當被測表面為白色時(shí),反射光較強,光敏二極管將導通;反之,被測表面為黑色時(shí),光敏二極管將截止?紤]到外界環(huán)境光照等干擾因素,輸出的電壓值有一定的波動(dòng)范圍,若直接輸給單片機,可能導致檢測判斷錯誤。因此,需要將輸出電壓通過(guò)比較器(LM324)與預置的閾值電壓比較,然后得出一個(gè)高低電平輸給單片機。閾值電壓通過(guò)試驗測量得出,其電路如圖1所示。其中LED為傳感器工作指示燈,R1為閾值電壓調節電阻。 ![]() 根據上述電路,自制了3個(gè)簡(jiǎn)易的紅外光電傳感器。經(jīng)測試表明,性能良好,有效檢測距離為1~4 cm,滿(mǎn)足機器人尋跡的要求。 1.3 驅動(dòng)模塊 驅動(dòng)機器人行走的2個(gè)電機需要不同的轉速來(lái)實(shí)現轉彎。選用的驅動(dòng)芯片為L(cháng)293D,它包含4個(gè)輸出通道,最大輸出峰值電流為1.2 A,能同時(shí)驅動(dòng)2個(gè)直流電機工作;其信號輸入端和使能端接收到來(lái)自單片機的信號,控制電機的通斷以及正、反轉,還可以通過(guò)向使能端輸入不同占空比的方波信號來(lái)調整電機轉速(PWM方式)。如圖2所示,IN端口接控制信號,OUT端口接電機的兩端,EN端口接使能信號。一組IN端口輸入為高/低或低/高電平時(shí),能實(shí)現電機的正/反轉。一組IN端口輸入均為高或低電平時(shí),電機將停轉。EN使能端為高電平時(shí),相應端口輸入信號有效;反之,則輸入信號無(wú)效。在EN 端輸入PWM波,通過(guò)調整PWM波的占空比,即可實(shí)現電機的無(wú)級調速。 ![]() 2 尋跡控制 機器人尋跡控制示意圖如圖3所示,機器人采用前輪驅動(dòng)后輪輔助的三輪差動(dòng)式行走方式。車(chē)體前部?jì)奢喚鶠橹鲃?dòng)輪,由兩個(gè)電機分別驅動(dòng),利用它們的轉速差來(lái)控制機器人運動(dòng)方向;后輪為從動(dòng)萬(wàn)向輪,僅起著(zhù)支撐車(chē)體的作用。車(chē)底板前部以車(chē)體中心線(xiàn)為軸線(xiàn)對稱(chēng)放置著(zhù)3個(gè)自制的紅外光電傳感器,作為機器人的尋跡傳感器。 ![]() 機器人尋跡場(chǎng)地中除了黑線(xiàn),其他區域均為白色。當傳感器正下方為黑線(xiàn)時(shí),輸出“0”狀態(tài),當其為白色區域時(shí),輸出“1”狀態(tài)。因此,理論上3個(gè)傳感器輸出的組合狀態(tài)會(huì )有8種,如表1所列。每一種組合狀態(tài)都對應著(zhù)一種機器人下一步的行走動(dòng)作,共有前進(jìn)、左轉、快速左轉、右轉、快速右轉、原地旋轉、停止7種動(dòng)作。 ![]() 注:“+”指車(chē)輪向前運動(dòng),“-”表示車(chē)輪向后運動(dòng),“1.0”、“0.3”指的是控制相應電機轉速的PWM波的占空比,可根據實(shí)際需要在程序中修改。 本機器人有著(zhù)雙級轉彎的設計,即普通轉彎和快速轉彎。當機器人對黑線(xiàn)的偏離量比較小時(shí),使用普通轉彎,即兩個(gè)驅動(dòng)輪都向前運動(dòng),速度一大一小,依靠?jì)奢喌乃俣炔顏?lái)實(shí)現轉彎;而當機器人偏離黑線(xiàn)較遠時(shí),使用快速轉彎,即兩個(gè)驅動(dòng)輪一個(gè)向前運動(dòng),一個(gè)向后運動(dòng),這樣能迅速實(shí)現轉彎。普通轉彎用于大半徑彎道、大角度折道,而快速轉彎則用于小半徑彎道和直角銳角折道等非平滑過(guò)渡路線(xiàn)。對于非封閉路線(xiàn),還設計了原地旋轉的動(dòng)作,來(lái)實(shí)現原路返回:一旦機器人小車(chē)走完全程,3個(gè)傳感器將均檢測到白色區域,輸出組合狀態(tài)“111”,此時(shí)一輪全速前進(jìn),一輪全速后退,小車(chē)原地旋轉,直到掉過(guò)頭來(lái)傳感器檢測到黑線(xiàn)為止。 ![]() 3 程序設計 程序設計時(shí),采用匯編語(yǔ)言編程。其思路為:第1步,系統初始化后,讀取單片機P2口的值,然后對其 P2.0、P2.1、P2.2按位取與,得到傳感器模塊的組合值。第2步,將得到的組合值與預定的值比較,若相等則執行相應的動(dòng)作,否則繼續比較,直到獲得正確的動(dòng)作。比較完全部動(dòng)作后,轉到第1步重新掃描傳感器的狀態(tài)值。 為了進(jìn)一步提高系統的安全性和可靠性,還需增加異常處理算法?赡艹霈F的異常情況有:過(guò)小彎道或小角度折道時(shí),機器人還來(lái)不及轉過(guò)彎來(lái),就已經(jīng)完全偏離黑線(xiàn)。這種情況下,3個(gè)傳感器都輸出“1”,檢測不到黑線(xiàn),若不及時(shí)處理,機器人將無(wú)法繼續尋跡。針對該情況,設計了原地旋轉動(dòng)作來(lái)找回預定路線(xiàn),不過(guò)原地旋轉有順、逆時(shí)針之分,因此還得區分開(kāi)來(lái)。改進(jìn)后編程的思路為:每次讀取P2口值之前,將其上一次的傳感器組合值存入某個(gè)寄存器,當出現組合值為 “111”的情況時(shí),立即查詢(xún)上一次的值,根據該值,可以判斷出機器人是從哪一側偏離黑線(xiàn)的,從而進(jìn)行順或逆時(shí)針原地旋轉。其主要程序如下: ![]() 結語(yǔ) 根據上述設計思路,我們制作出尋跡機器人并進(jìn)行了測試。測試場(chǎng)地如圖4所示,黑色導引線(xiàn)寬度為3 cm,黑線(xiàn)周?chē)鷧^域均為白紙覆蓋。測試結果表明:該尋跡機器人能在此復雜路線(xiàn)下平穩、順利地沿著(zhù)黑線(xiàn)走完全程,并在終點(diǎn)沿原路返回,達到了預期的目標。這為進(jìn)一步研究復雜環(huán)境下的自動(dòng)行走機器人提供了參考。 本文的創(chuàng )新點(diǎn)為:使用3個(gè)自制的紅外光電傳感器,以簡(jiǎn)單的設計和較少的硬件實(shí)現了復雜路線(xiàn)下機器人的尋跡。而基于該機器人雙級轉彎的設計思想,可以增加傳感器數量、組成傳感器陣列來(lái)實(shí)現多級轉彎,從而對機器人的自主尋跡有著(zhù)更為精確的控制。 參考文獻 1. 韓毅,張雪峰.一種低成本尋跡機器人的實(shí)現[J].微計算機信息,2008,52:233-235. 2. 朱益斌,胡學(xué)龍,朱亞鋒,等.自主式尋跡機器人小車(chē)的設計[J].國外電子測量技術(shù),2006,25(7):40-42. 3. 何立民.MCS-51系列單片機應用系統設計[M].北京:北京航空航天大學(xué)出版社,2003. 作者:中國石油大學(xué)(華東)唐甫世 齊明俠 張曉春 沈蓉 來(lái)源:《單片機與嵌入式系統應用》 2009(8) |