一種嵌入式智能尋跡機器人設計
3.3 直流電機驅動電路與電源模塊
直流電機通過主板的P5接口連接到主板的驅動模塊上。本文采用L298作為電機的驅動芯片,L298的5、7、10、12四個引腳連接到單片機上,通過對單片機的編程就可以實現兩組直流電機的正反轉等功能。由于單片機的電壓在4.8V左右,故采用VFM升壓型電源芯片,為單片機及外圍電路提供5V左右的電壓。
4 軟件設計模塊
4.1 軟件開發環境與搜索算法
本文采用Keil U Version2 作為系統的開發環境,在程序設計中采用C語言和匯編語言混合編程。在軟件算法上,考慮到深度優先搜索算法的時空效率和迷宮地形的復雜程度成正比,即迷宮越復雜,搜索出口的時間就越長。本文采用了一種稱為左手(或右手)法則的迷宮路徑搜索策略,即在迷宮中一直沿著左側(或右側)的墻尋找,就可以找到出口。
相對于深度優先搜索法,左手(或右手)法則的空間占用與迷宮復雜程度無關,機器人搜索路徑的選擇只與當前結點有關,不需要回溯。同時,硬件的制造精度要求不高,不需要精確的控制機器人的移動距離和移動方向,方便了驅動設計。為便于算法的實現,本文設定了如下約束條件:
1.在算法中不管迷宮地形有多么復雜,均由直線、死路、丁字形、十字形、轉角形和終點七個基本地形構成。
2.按分岔的多少將分岔口分為二岔口和三岔口(一般沒有四岔口),而將分岔口前面的岔路按從右到左的順序分別稱為第一岔路、第二岔路、第三岔路(十字型才有)。二岔路有三種不同的形式,第一種是前進的路線右邊出現一條岔路(右邊的岔路稱為第一岔路、前方稱為第二岔路);第二種是在前進的路線左邊出現一條岔路(前方稱為第一岔路、左邊的岔路稱為第二岔路);第三種是丁字路口(右邊的岔路稱為第一岔路、左邊的岔路稱為第二岔路)。對于這三種情況,算法對應的程序由主程序、走直線子程序、左轉子程序、右轉子程序和校正子程序組成。主程序起到導向和決策的功能,決定機器人什么時候該做什么。機器人的其他功能通過調用具體的子程序來實現。
4.2 算法流程圖描述
本文所采用的迷宮搜索算法流程如圖3所示。接通電機和傳感器電源后,單片機在程序的控制下,根據傳感器檢測到的值,決定電機的正轉和反轉。當P0.7=1時,表示左方沒有障礙物,依據“右手”遍歷算法,機器人將調用右轉子程序;當P0.7=0并且P0.5=0時,機器人將調用左轉子程序;否則機器人直線前進,如此反復檢測并調整機器人的動作,直至機器人走出迷宮為止。
5 結論及其創新點
本文對基于AT89S52的嵌入式智能尋跡機器人的硬件架構進行了探討,將左手(或右手)法則用于尋跡機器人行走路線搜索,重點討論了基于AT89S52的光電傳感器模塊、直流電機驅動模塊、電源模塊等的電路實現技術,經過反復測試,機器人能夠在軟件的控制下,無需任何外界力量就可以智能地完成從迷宮入口走到出口的尋跡任務。創新點在于通過光電傳感器自動感知障礙物,并利用軟件控制機器人左/右轉以及直線行走,對復雜路徑探測是一種嘗試,特別適合人無法到達的環境路徑探測,系統成本低,可靠性高,反應靈敏,對智能玩具的設計與開發也具有一定的參考價值。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論