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