
曾璐(1983-)
女,江西贛州人,江西理工大學(xué)應(yīng)用科學(xué)學(xué)院教師,研究方向?yàn)檫^(guò)程控制和嵌入式系統(tǒng)。
摘要:電腦鼠實(shí)際上是集傳感與控制于一體的,能夠自動(dòng)穿越迷宮的微型機(jī)器人。本課題結(jié)合模擬電路、數(shù)字電路知識(shí)以及傳感器知識(shí),制作出一個(gè)性能優(yōu)良的電腦鼠,在迷宮中找到一條最優(yōu)路徑,走出迷宮。根據(jù)國(guó)際標(biāo)準(zhǔn)迷宮電腦鼠的比賽規(guī)則,通過(guò)各種方案的對(duì)比,確定在本文中采用NXP公司ARM7LPC2138作為控制核心,將新興的群智能算法運(yùn)用到迷宮電腦鼠中。
關(guān)鍵詞:最優(yōu)路徑、迷宮、電腦鼠、ARM、蟻群算法
Abstract: Micromouse in fact being microrobot with integrated sensor and controller,
which is controlled by the microprocessor, can automatically traverse maze. Combining
with analog circuits, digital circuits and sensors knowledge, we construct a fine
performance micromouse that can find an optimal path in the maze. In accordance with
international maze micromouse competition standards, compared with some different
schemes, it makes certain that using ARM7LPC2138 as control core can apply the intelligent
algorithms in maze micro-mouse.
Key words: Optimal path; maze; micro-mouse; ARM; Ant colony algorithm
智能機(jī)電鼠又稱電腦鼠,電腦鼠( micro mouse)是一只迷人的人工智慧鼠,它不但有銳利的眼睛和靈活的雙腳,還有聰明的頭腦來(lái)控制眼睛和雙腳,使眼睛和雙腳能夠同心協(xié)力,互相配合,以達(dá)成唯一的目標(biāo)——走出迷宮。實(shí)際上電腦鼠就是一個(gè)電動(dòng)小車,而這個(gè)電動(dòng)小車是由一個(gè)或多個(gè)微控制器來(lái)控制,通過(guò)傳感器和其他各器件的配合,具備一定智能。目前,電腦鼠在一些電子設(shè)計(jì)競(jìng)賽中出現(xiàn)的比較多,電腦鼠走迷宮是機(jī)器人比賽中比較重要的一個(gè)分支,其主要考察的是電腦鼠對(duì)未知世界的自動(dòng)探索和學(xué)習(xí)過(guò)程。
本課題是以“IEEE國(guó)際電腦鼠上海邀請(qǐng)賽”為背景,將采用飛利浦公司的微控制器LPC2138作為電腦鼠的控制核心,近年來(lái)國(guó)際上新興的蟻群算法實(shí)現(xiàn)從起點(diǎn)到終點(diǎn)的最優(yōu)路徑選擇,實(shí)現(xiàn)理論到模型制作的實(shí)際創(chuàng)新過(guò)程。蟻群算法是通過(guò)對(duì)生物行為的分析而得出的團(tuán)體最優(yōu)配置和路徑選擇,與電腦鼠的路徑選擇是非常相似。結(jié)合模擬電路、數(shù)字電路知識(shí)以及傳感器知識(shí),將平時(shí)所學(xué)的各種控制理論運(yùn)用到實(shí)踐當(dāng)中,制作出一個(gè)性能優(yōu)良的電子產(chǎn)品——能夠走迷宮的電腦鼠。
1 系統(tǒng)總體設(shè)計(jì)方案
為本課題的最佳電腦鼠也是一個(gè)多學(xué)科的綜合產(chǎn)物,主要包括電源,傳感器,步進(jìn)電機(jī),控制核心電路,機(jī)身5個(gè)部分。傳感器就是電腦鼠的眼睛,用來(lái)獲取各方面的信息,送到LPC2138(電腦鼠的大腦)中處理,然后驅(qū)動(dòng)步進(jìn)電機(jī),由步進(jìn)電機(jī)(電腦鼠的腳)執(zhí)行相應(yīng)的動(dòng)作,包括加減速,轉(zhuǎn)彎,停止。
迷宮電腦鼠的控制系統(tǒng)設(shè)計(jì)主要包括三個(gè)方面:①控制電路設(shè)計(jì);②傳感器選擇以及安放位置設(shè)計(jì);③程序設(shè)計(jì)。選用LED顯示電腦鼠運(yùn)行時(shí)的狀態(tài),ULN2003驅(qū)動(dòng)4相6線步進(jìn)電機(jī),JY043W紅外線傳感器檢測(cè)距離和LPC2138作為控制器。由于電腦鼠走迷宮和螞蟻覓食過(guò)程兩個(gè)問(wèn)題上具有很大的相似性,用蟻群算法來(lái)解決電腦鼠走迷宮具有很強(qiáng)的優(yōu)越性。因此蟻群算法選擇方案。
如圖1所示,整個(gè)系統(tǒng)可以初步分為以下主要部分:電源模塊,控制模塊,執(zhí)行機(jī)構(gòu)模塊,傳感器模塊,機(jī)身模塊。可以形象地認(rèn)為,電源模塊是電腦鼠的“動(dòng)力源泉”,控制模塊是電腦鼠的“大腦”,傳感器模塊是電腦鼠的“眼睛”,機(jī)身模塊是電腦鼠的“軀干”,執(zhí)行機(jī)構(gòu)是電腦鼠的“腳”,幾個(gè)模塊之間要相互配合才能使這只老鼠正常工作并最終“逃離”迷宮。
2 電腦鼠控制系統(tǒng)設(shè)計(jì)
2.1 電腦鼠硬件系統(tǒng)設(shè)計(jì)
在一只電腦鼠的架構(gòu)完成前必須先進(jìn)行硬件的整體規(guī)劃,圖2為系統(tǒng)硬件架構(gòu)發(fā)展流程圖。
機(jī)身是電腦鼠的最基本架構(gòu),選用雙主動(dòng)輪,單從動(dòng)輪的方案,從動(dòng)輪使用萬(wàn)向輪,轉(zhuǎn)彎時(shí)是通過(guò)兩個(gè)主動(dòng)輪的差速來(lái)達(dá)到轉(zhuǎn)彎效果,通過(guò)讀取傳感器來(lái)進(jìn)行及時(shí)調(diào)整消除單從動(dòng)輪轉(zhuǎn)動(dòng)時(shí)造成的誤差。在本設(shè)計(jì)中,選用了PHILIPS公司基于ARM7TDMI-S核、單電源供電的LPC2138作為系統(tǒng)的微處理器。
2.1.1 電源電路
移動(dòng)電源的地位在移動(dòng)式機(jī)器人中歷來(lái)十分重要,可以說(shuō)是機(jī)器人的生命源。在該系統(tǒng)中,需要使用12V、5V、3.3V的直流穩(wěn)壓電源,其中驅(qū)動(dòng)二個(gè)步進(jìn)電機(jī)電機(jī)使用12V左右的電源,而LPC2138微處理器及外圍器件需要3.3V電源,其他器件需5V電源。為簡(jiǎn)化系統(tǒng)設(shè)計(jì),系統(tǒng)配8節(jié)電池(每節(jié)1.5V,8*1.5=12V),通過(guò)三端穩(wěn)壓芯片L7805CV供需要5V的器件使用,再對(duì)5V電源使用SPX1117M3-3.3降低到3.3V供ARMLPC2138微處理器及其他部分使用。系統(tǒng)電源電路如圖3所示。
2.1.2 傳感器檢測(cè)電路
電腦鼠通過(guò)傳感器來(lái)認(rèn)識(shí)迷宮這個(gè)未知的世界,因此,傳感器的選擇有著至關(guān)重要的作用。本課題中選用JY043W傳感器,使用+5V直流電源供電。在運(yùn)算放大器的輸入端口對(duì)紅外傳感器的輸出值與設(shè)定值進(jìn)行比較,電位器R33用于調(diào)節(jié)靈敏度,在不同環(huán)境、不同光源下必須通過(guò)此來(lái)調(diào)節(jié),以減少誤動(dòng)作的產(chǎn)生。紅外傳感器測(cè)距電路如圖4所示。
2.1.3 步進(jìn)電機(jī)驅(qū)動(dòng)電路和LED顯示電路
本課題中設(shè)計(jì)了最簡(jiǎn)單的用控制器I/O口來(lái)發(fā)出控制信號(hào),通過(guò)達(dá)林頓管電壓放大后來(lái)控制步進(jìn)電機(jī)。為了防止控制紊亂造成電機(jī)的損壞,在步進(jìn)電機(jī)和驅(qū)動(dòng)芯片之間連接了電阻,為了不影響驅(qū)動(dòng)能力,電阻大小為1KΩ。
人機(jī)交互界面即鍵盤(pán)和數(shù)碼管顯示電路,是人和電腦鼠交流的界面。通過(guò)按鍵啟動(dòng)電腦鼠開(kāi)始工作,在LED上顯示當(dāng)前電腦鼠的運(yùn)行狀態(tài),每一種LED代表當(dāng)前老鼠的運(yùn)行狀態(tài),包括加速、減速、左轉(zhuǎn)90°,右轉(zhuǎn)90°,轉(zhuǎn)180°等。
2.2 電腦鼠底層軟件系統(tǒng)設(shè)計(jì)
在主程序中,首先是初始化(其中包括了GPIO的初始化、定時(shí)器1捕獲初始化等)。初始化結(jié)束后,判斷啟動(dòng)開(kāi)關(guān)是否按下,如未按下,則繼續(xù)等待并檢測(cè)是否有健按下;如果啟動(dòng)鍵按下,LED顯示開(kāi)機(jī)運(yùn)行狀態(tài),同時(shí)調(diào)用蟻群算法搜尋策略的子程序,在蟻群算法搜尋策略的子程序中,通過(guò)算法控制策略,根據(jù)所獲取的不同的傳感器信息,調(diào)用不同的底層步進(jìn)電機(jī)驅(qū)動(dòng)程序,有了這些基本的運(yùn)動(dòng)程序,電腦鼠就可以在迷宮中運(yùn)動(dòng)并搜索最優(yōu)路徑,直至尋找出最優(yōu)路徑。若找出最優(yōu)路徑,電腦鼠運(yùn)動(dòng)至終點(diǎn)并LED顯示目標(biāo)尋找結(jié)束。主程序的設(shè)計(jì)框圖如圖5所示:
3 電腦鼠驅(qū)動(dòng)執(zhí)行機(jī)構(gòu)與感知系統(tǒng)的研究
在電腦鼠系統(tǒng)中,傳感器模塊是電腦鼠的“眼睛”,運(yùn)動(dòng)執(zhí)行機(jī)構(gòu)(輪子)是電腦鼠的“腳”。通過(guò)紅外傳感器來(lái)感知迷宮這個(gè)未知的世界,電腦鼠則根據(jù)傳感器所獲取的相關(guān)信息由步進(jìn)電機(jī)來(lái)驅(qū)動(dòng)兩個(gè)輪子執(zhí)行相應(yīng)的動(dòng)作。
3.1 電腦鼠的驅(qū)動(dòng)執(zhí)行機(jī)構(gòu)研究
迷宮的大小和迷宮每一格的大小都是已知的,當(dāng)老鼠輪子大小確定的時(shí)候,每來(lái)一個(gè)脈沖,老鼠行走的距離也是一定的,那么我們就可以控制脈沖的個(gè)數(shù)來(lái)確定和檢測(cè)老鼠是否走過(guò)了一單元,而不需要另外再加一個(gè)測(cè)距裝置,在硬件復(fù)雜度上得到簡(jiǎn)化。因此步進(jìn)電機(jī)是一個(gè)較好的選擇。
控制步進(jìn)電機(jī)按照脈沖的控制順序的給定可以有幾種工作方式,本課題中選用雙四拍的控制方式。表1是四相雙四拍工作方式的控制數(shù)據(jù)表。
表1 四相雙四拍工作方式的控制數(shù)據(jù)表
通電狀態(tài) |
P1.18(D) |
P1.19(C) |
P1.20(B) |
P1.21(A) |
控制字 |
正轉(zhuǎn) |
反轉(zhuǎn) |
AB |
1 |
1 |
0 |
0 |
0CH |
↓ |
↑ |
BC |
1 |
0 |
0 |
1 |
09H | ||
CD |
0 |
0 |
1 |
1 |
03H | ||
DA |
0 |
1 |
1 |
0 |
06H |
控制步進(jìn)電機(jī)進(jìn)行加減速就是實(shí)際上控制每次換相的時(shí)間間隔,如果利用定時(shí)器中斷方式來(lái)控制電機(jī)變速,就是不斷地改變定時(shí)器裝載值得大小。每接收一個(gè)脈沖信號(hào)CP,驅(qū)動(dòng)步進(jìn)電機(jī)旋轉(zhuǎn)一個(gè)步距角(細(xì)分時(shí)為一個(gè)細(xì)分步距角),步進(jìn)電機(jī)的轉(zhuǎn)速與CP的頻率成正比,CP的脈沖個(gè)數(shù)決定了步進(jìn)電機(jī)旋轉(zhuǎn)的角度。電機(jī)的轉(zhuǎn)動(dòng)方向由DIR信號(hào)決定。
3.2 電腦鼠感知系統(tǒng)的研究
電腦鼠在探測(cè)迷宮時(shí)要完成兩個(gè)基本任務(wù):一是能夠快速測(cè)定電腦鼠與迷宮隔墻之間的距離,以保證電腦鼠在行走時(shí)不碰到隔墻墻壁;二是能夠及時(shí)測(cè)定電腦鼠行走的距離,以便推算出電腦鼠在迷宮中確切的位置信息。
為了實(shí)現(xiàn)電腦鼠在迷宮中運(yùn)動(dòng)更加有效率,則電腦鼠的運(yùn)動(dòng)軌跡應(yīng)為直線(拐彎時(shí)除外)。根據(jù)上述分析,分別在電腦鼠機(jī)身的左右兩側(cè)各安裝了一個(gè)紅外發(fā)射傳感器A1和A2,初始化距迷宮左右壁的距離為L(zhǎng)1和L2,再考慮一定偏移裕度Ample1和Ample2,則對(duì)應(yīng)的檢測(cè)距離為:L1±Ample1和L2±Ample2。
當(dāng)機(jī)身向左偏移時(shí),則機(jī)身左邊的傳感器檢A1測(cè)到的距離小于所設(shè)定的閾值L1±Ample1,機(jī)身右邊的傳感器檢A2測(cè)到的距離大于所設(shè)定的閾值L2±Ample2,此時(shí)控制器檢測(cè)到傳感器的信息,發(fā)送相應(yīng)的控制命令給電腦鼠的左右兩個(gè)電機(jī),進(jìn)行向右轉(zhuǎn)動(dòng)調(diào)整,直到恢復(fù)為電腦鼠運(yùn)動(dòng)的初始狀態(tài);當(dāng)機(jī)身向右偏移時(shí),則機(jī)身右邊的傳感器檢A2測(cè)到的距離小于所設(shè)定的閾值L2±Ample2,機(jī)身左邊的傳感器檢A1測(cè)到的距離大于所設(shè)定的閾值L1±Ample1,此時(shí)控制器檢測(cè)到傳感器的信息,發(fā)送相應(yīng)的控制命令給電腦鼠的左右兩個(gè)電機(jī),進(jìn)行向左轉(zhuǎn)動(dòng)調(diào)整,直到恢復(fù)為電腦鼠運(yùn)動(dòng)的初始狀態(tài)。
4 蟻群算法在迷宮電腦鼠中的應(yīng)用
在利用蟻群算法求解迷宮最短路徑問(wèn)題時(shí),為了使每只螞蟻能以盡可能高的概率生成可行解,本文采用兩組數(shù)量相等的蟻群分別從迷宮的起點(diǎn)和終點(diǎn)同時(shí)出發(fā),該表記錄螞蟻 當(dāng)前走過(guò)的點(diǎn)集,以避免選擇已經(jīng)走過(guò)的點(diǎn)。
對(duì)任意一只螞蟻,在移動(dòng)過(guò)程中可以定義如下的生命周期:①螞蟻?zhàn)哌M(jìn)死角,除非沿原路返回一步或多步,不能再朝前移動(dòng),則將該螞蟻從系統(tǒng)中刪除;②螞蟻到達(dá)另一組蟻群的出發(fā)點(diǎn),此時(shí)該螞蟻?zhàn)哌^(guò)的路徑為一條可行路徑;③螞蟻碰到另一組的某只螞蟻。如果這兩只螞蟻所經(jīng)過(guò)的點(diǎn)沒(méi)有重復(fù)(相遇點(diǎn)除外),則將兩只螞蟻所經(jīng)過(guò)的路徑相連以構(gòu)成迷宮的一條可行路徑。因此,從蟻群的產(chǎn)生到生命周期的結(jié)束,會(huì)有一部分螞蟻找到問(wèn)題的可行解,但可行解的數(shù)量小于蟻群數(shù)的一半。
5 小結(jié)
本文從分析迷宮電腦鼠比賽規(guī)則入手,介紹了電腦鼠硬件系統(tǒng)的設(shè)計(jì)過(guò)程和流程圖,將電腦鼠整個(gè)系統(tǒng)設(shè)計(jì)進(jìn)行模塊化劃分:LPC2138作為電腦鼠的大腦,蟻群優(yōu)化算法作為電腦鼠的思想,紅外測(cè)距傳感器作為電腦鼠的眼睛,步進(jìn)電機(jī)作為電腦鼠行走的驅(qū)動(dòng)機(jī)構(gòu)。并對(duì)迷宮電腦鼠控制系統(tǒng)的驅(qū)動(dòng)執(zhí)行機(jī)構(gòu)和感知系統(tǒng)進(jìn)行了介紹。進(jìn)行了迷宮電腦鼠控制系統(tǒng)硬件部分和軟件部分的設(shè)計(jì)。選用了Philips高性能32位微控制器LPC2138,設(shè)計(jì)了其外圍電路。經(jīng)過(guò)不斷地調(diào)試,本控制系統(tǒng)能達(dá)到預(yù)期的設(shè)計(jì)要求。迷宮算法是迷宮電腦鼠比賽的關(guān)鍵技術(shù),然后根據(jù)迷宮電腦鼠比賽的特點(diǎn),確定一種符合本課題要求的改進(jìn)蟻群算法。
參考文獻(xiàn)
[1] Joseph L Jones[美],原魁,鄒偉等譯. 機(jī)器人編程技術(shù)——基于行為的機(jī)器人實(shí)戰(zhàn)指南[M]. 機(jī)械工業(yè)出版社,2005.
[2] 董玉成,陳義華. 基于螞蟻算法的移動(dòng)機(jī)器人路徑規(guī)劃[J]. 重慶大學(xué)學(xué)報(bào). 2003,3(26).
[3] 錢真彥. 走迷宮機(jī)器人——控制系統(tǒng)設(shè)計(jì)[M]. 上海交通大學(xué),2004.
[4] 樊曉平等. 復(fù)雜環(huán)境下基于蟻群優(yōu)化算法的機(jī)器人路徑規(guī)劃[J]. 控制與決策,2004,19(2) .
[5] 高麗宏. 移動(dòng)機(jī)器人的路徑規(guī)劃和避障控制[大連理工大學(xué)碩士學(xué)位論文]. 2002.