迷宮機器人軟件設(shè)計_第1頁
迷宮機器人軟件設(shè)計_第2頁
迷宮機器人軟件設(shè)計_第3頁
迷宮機器人軟件設(shè)計_第4頁
迷宮機器人軟件設(shè)計_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、摘 要人類科技的進步促使機器人技術(shù)的智能化水平越來越高。可移動機器人的路徑規(guī)劃是機器人研究中的一個重要領(lǐng)域,得到越來越多研究者的關(guān)注,并取得了豐厚的成果。行進方向選擇問題是智能機器人控制的關(guān)鍵技術(shù)之一,可移動機器人如何在復雜和未知的環(huán)境中自主選擇路線到達目標地點,并躲避障礙物,是其重要的判斷條件之一,也是功能實現(xiàn)的基礎(chǔ)。迷宮機器人是一種基于ARM1138的具備人工智能的小型機器人,可在沒有人工干預的情況下,在16×16未知的迷宮中自行完成一系列動作??此坪唵蔚男⌒蜋C器人,其中卻包含了光學、力學、信息科學等多種學科的綜合應(yīng)用,是對機器智能化的實現(xiàn)。本設(shè)計從軟件設(shè)計的角度對迷宮機器人的智

2、能控制做了較有深度的探討。通過軟件編程,實現(xiàn)迷宮機器人的智能控制,完成在16×16的迷宮中,由起點自動探索到終點并探測返回,隨后完成沖刺的功能。論文中講述的重點是迷宮機器人在路徑選擇中邏輯方面的判斷,以及墻壁信息的獲取和車身的控制。關(guān)鍵詞:人工智能;迷宮機器人;軟件III 目錄1緒論11.1課題的研究背景和發(fā)展歷程11.2課題研究的目的和意義11.3課題研究的主要內(nèi)容11.4本章小結(jié)12系統(tǒng)的總體設(shè)計22.1系統(tǒng)方案的設(shè)計22.2單片機和開發(fā)工具的選擇32.2.1單片機的選擇32.2.2開發(fā)工具的選擇42.3本章小結(jié)53迷宮機器人的軟件設(shè)計63.1迷宮介紹63.1.1迷宮的結(jié)構(gòu)63.

3、1.2起點坐標的確立63.2主要外設(shè)的軟件設(shè)計73.2.1紅外傳感器的軟件控制73.2.2步進電機的軟件控制83.3迷宮機器人的姿勢矯正93.3.1雙板的身姿矯正103.3.2單側(cè)板的身姿矯正103.3.3直角拐彎113.3.4車身后轉(zhuǎn)133.4本章小結(jié)134控制方式的實現(xiàn)144.1等高圖的制作與偏移量的判斷144.2探索法則154.2.1基本法則154.2.2中心法則的改良174.3本章小結(jié)195總結(jié)與展望20參考文獻21附錄22III1緒論1.1課題的研究背景和發(fā)展歷程進入21世紀,伴隨著電子、信息技術(shù)的發(fā)展與迅速普及,人們對電子技術(shù)的要求也越來越高,智能化、信息化的高尖技術(shù)逐步融入人們的

4、日常生活?,F(xiàn)如今為滿足社會需要,許多人正工作在未知的、惡劣的、高風險的環(huán)境下,所以由機器人代替人承擔危險、繁重的工作已成為時代發(fā)展的必然要求,也體現(xiàn)出以人為本的和諧社會理念,而迷宮機器人技術(shù)很好的滿足了這一要求,所以受到了各界人士的廣泛關(guān)注。以迷宮機器人為主題的“電腦鼠走迷宮競賽”在世界范圍內(nèi)興起,成為深受高校大學生喜愛的一項電子類競賽1。1.2 課題研究的目的和意義 人工智能是智能機器人所執(zhí)行的通常與人類智能有關(guān)的功能,如判斷、推理、證明、識別、感知、理解、設(shè)計、思考、規(guī)劃學習和問題求解等思維活動。智能化要求具有獲取外界信息的能力、演繹推理的能力、學習的能力、自適應(yīng)能力等2。迷宮機器人成功的

5、實現(xiàn)了信息獲取、可行路線判斷和最優(yōu)路徑選擇的功能,很好的突出了其學術(shù)價值。同時在實時性、效率性上得很好的體現(xiàn),是對人工智能的一次很好的應(yīng)用和發(fā)展。選擇迷宮機器人這個課題,對人工智能的理解,對人類思維方式與機器編程銜接的理解具有很大的幫助。完善后的迷宮機器人可代替人類在高溫、缺氧、有毒、輻射等危險環(huán)境下作業(yè),且能在復雜環(huán)境中自行探尋目標并安全返回,對火災現(xiàn)場、外太空等復雜、危險環(huán)境下的應(yīng)用具有很好的前景。迷宮機器人的研制是智能控制領(lǐng)域的新突破,也是學術(shù)價值與實際應(yīng)用價值的一個重要銜接。1.3課 題研究的主要內(nèi)容迷宮機器人擬采用左右雙輪驅(qū)動控制車身,通過控制左右電機的不同運動狀態(tài)實現(xiàn)車身的前進、后

6、退、身姿調(diào)整和轉(zhuǎn)向。由傳感器單元獲取周圍墻壁信息,并通過嵌入式系統(tǒng)對墻壁信息進行記憶存儲、判斷最優(yōu)路徑,進而控制電機完成一系列動作。研究的主要內(nèi)容有:1) 墻壁信息的獲取2) 等高圖的制作3) 轉(zhuǎn)角的精確度4) 沖刺的速度和穩(wěn)定性1.4本章小結(jié)隨著科技的進步,機器人的智能控制已經(jīng)成為現(xiàn)實,通過簡單的邏輯指令的疊加,機器人便可完成復雜的動作。本設(shè)計便是通過軟件編程,完成迷宮機器人的自動化智能控制。2系統(tǒng)的總體設(shè)計 隨著科技的進步和發(fā)展,對機器人信息化、自動化和智能化的要求越來越高。迷宮機器人作為智能控制的典型代表,因為其控制理論的先進性和本身的趣味性,越來越受到廣大大學生的關(guān)注。本設(shè)計意在使用簡

7、單器件,通過C語言編程控制制作一臺能在迷宮中自動完成探索至終點、探索返回和沖刺的迷宮機器人。2.1系統(tǒng)方案的設(shè)計迷宮機器人是結(jié)合光學、信息學等多種學科,以及軟硬件綜合應(yīng)用制作出來的一種智能機器人。為實現(xiàn)迷宮機器人在迷宮中的自由行進,需完成墻壁信息的采集、數(shù)據(jù)的存儲、等高圖的制作、轉(zhuǎn)角的設(shè)置等。因此在軟件設(shè)計中,將電腦鼠的控制程序主要分成搜索模塊、等高圖制作模塊、轉(zhuǎn)彎模塊和沖刺模塊等四大模塊。本設(shè)計采用單片機作為控制芯片,紅外傳感器作為探測裝置,步進電機為驅(qū)動設(shè)備,制作一款采用雙輪驅(qū)動的車型迷宮機器人。迷宮機器人以單片機作為主控制芯片,外部擴展分為傳感器、驅(qū)動電路、按鍵電路、電源電路等??驁D如圖

8、2-1所示。圖2-1 迷宮機器人控制系統(tǒng)框圖迷宮機器人軟件設(shè)計中,主程序主要包括:初始化、按鍵等待、探索至終點、探索返回、沖刺等五個部分。打開電源,單片機啟動,開始等待。按鍵按下后,迷宮機器人開始運行,搜索到達終點后再搜索返回至起點。迷宮機器人根據(jù)探測到的迷宮信息自動選擇最優(yōu)路徑,以最快速度沖刺到終點后重新返回到起點,然后轉(zhuǎn)身進入再次等待狀態(tài)。迷宮機器人運行主程序的流程圖如下所示:圖2-2 主程序流程圖2.2單片機和開發(fā)工具的選擇2.2.1單片機的選擇 單片機自70年代以來就以微處理器及超大規(guī)模集成電路技術(shù)的發(fā)展為重心,以其廣泛的應(yīng)用而得到迅速的發(fā)展,現(xiàn)在單片機的功能已經(jīng)比較完善3。由于單片機

9、的迅速發(fā)展,基于單片機應(yīng)用的產(chǎn)品也越來越多。主要的單片機有51系列、ARM系列等。本設(shè)計擬采用擁有32位ARM Cortex-M3內(nèi)核的LM3S1138作為主控制芯片。它具有50MHZ運行頻率,完全可以擔負起迷宮機器人的實時性控制。64KB單周期Flash,16KB單周期SRAM,使單片機的功能給加強大4。其外設(shè)具有7組GPIO,可以很好的實現(xiàn)與外部設(shè)備的連接,4個32位Timer,3路全雙工UART,6路16位PWM波,8通道,10位ADC等,能夠有效實現(xiàn)對外設(shè)的控制。單片機內(nèi)置看門狗定時器,可使芯片可靠運行。圖2-3 LM3S1138引腳圖2.2.2開發(fā)工具的選擇IAR Embedded

10、Workbench for ARM(下面簡稱IAR EWARM)是一個針對ARM處理器的集成開發(fā)環(huán)境,它包含項目管理器、編輯器、C/C+編譯器和ARM匯編器、連接器XLINK和支持RTOS的調(diào)試工具C-SPY5。將開發(fā)工具設(shè)置在EWARM環(huán)境下,則可以使用C/C+和匯編語言等對嵌入式應(yīng)用程序進行開發(fā)。比較其它的ARM開發(fā)環(huán)境,IAR EWARM具有入門容易、使用方便和代碼緊湊等特點6。 在本設(shè)計中,軟件設(shè)計是通過IAR環(huán)境下的C語言編程實現(xiàn)。IAR軟件編程實例如下,迷宮機器人軟件控制較為復雜,程序內(nèi)容龐大,為使邏輯較為調(diào)理和方便編程,本設(shè)計中除主程序之外,另分別設(shè)置按鍵讀取、迷宮機器人運行總體

11、控制、傳感器、步進電機、坐標、算法等多種子程序文件。通過設(shè)置全局變量和程序之間的相互調(diào)用,可實現(xiàn)各個程序模塊間的協(xié)調(diào)工作。圖2-4 IAR軟件示意圖2.3本章小結(jié)迷宮機器人主要由單片機、光電傳感器、步進電機和電源組成,通過電路設(shè)計等,將各部分合理的鏈接到一起,再通過程序控制,使得各器件協(xié)調(diào)工作。在此基礎(chǔ)上,便可以實現(xiàn)迷宮機器人的功能。3迷宮機器人的軟件設(shè)計3.1迷宮介紹3.1.1 迷宮的結(jié)構(gòu)正規(guī)迷宮的地板為黑色,墻壁為白色,分成16×16的共計256塊邊長為18cm的方格,每塊方格由白色立柱和隔墻分割。除四周邊界外,每塊隔墻和立柱都可自由拆卸組裝,隨機組成迷宮。其中隔墻高5cm,厚1

12、.2cm,立柱長1.2cm寬1.2cm,高5cm。迷宮可以四角處任意一點作為起點,起點必須三面設(shè)有墻壁,只在一面留有出口,迷宮機器人起始時朝向出口方向。以迷宮左下角作為原點,以每塊方格長度作為一個標準單位,設(shè)置迷宮二維坐標,則X、Y軸同時被分為015共16個單位長度,則終點坐標為(7,7)(7,8)(8,7)(8,8)四點,迷宮機器人到達四個坐標的任意位置,及算到達終點。圖3-1迷宮例圖3.1.2起點坐標的確立坐標的設(shè)置是迷宮機器人正常探索的基礎(chǔ),只有確定迷宮機器人所處位置的坐標,才能完成等高圖的設(shè)置,控制機器人按照正確路線行駛至指定位置。而起點坐標與終點坐標的正確設(shè)置是完成迷宮機器人沖刺的前

13、提。機器人起始位置的坐標不同,與終點的相對位置也有所不同,所以起點坐標的確立至關(guān)重要。因為機器人是在迷宮四角的任意位置作為起點,所以在起始時,機器人一側(cè)始終有墻壁存在,可根據(jù)此點確定起點坐標。在本設(shè)計中,迷宮機器人自起點處開始運行,同時檢測兩側(cè)墻壁信息,若右側(cè)首先探測到出口,則起點坐標默認為(0,0),若左側(cè)首先探測到出口,則起點坐標默認為(15,0)。3.2主要外設(shè)的軟件控制3.2.1紅外傳感器的軟件控制迷宮機器人采用IRM8601S紅外一體式傳感器。該傳感器內(nèi)部的帶通濾波器中心頻率為38KHZ,所以驅(qū)動紅外線的載波信號為38KHZ時傳感器最靈敏,其調(diào)制信號應(yīng)該為12us的方波,通過調(diào)節(jié)驅(qū)動

14、紅外線的載波信號頻率可以改變傳感器的探測距離。本設(shè)計中迷宮機器人前方共設(shè)有五個紅外一體傳感器,分別探測左方、左前方、前方、右前方、右方共五個方向的墻壁信息。單片機輸出PWM波驅(qū)動紅外傳感器的運行,通過更改PWM波的頻率,可控制紅外發(fā)射管的強度,從而實現(xiàn)遠近距離的切換探測。左前、右前用于身姿的矯正,防止與墻壁發(fā)生碰撞,左、右、前三個傳感器用于探測墻壁信息,判斷可行路線。紅外傳感器的流程圖如下所示。圖3-2 紅外發(fā)射接收一體化程序流程圖紅外傳感器的發(fā)射管以單片機輸出的PWM波作為供電電源,紅外探測則可通過程序中對PWM波的設(shè)置來實現(xiàn)控制。紅外光線的發(fā)射強度與PWM波的占空比和頻率有關(guān),頻率越高、占

15、空比越高,其紅外發(fā)生強度越大。在本設(shè)計中,為方便程序的調(diào)試,將占空比設(shè)定為固定值50%,只通過調(diào)節(jié)PWM波頻率控制紅外發(fā)射管的強度。對PWM波的設(shè)定和使能程序如下圖所示:圖3-3紅外發(fā)射程序圖3.2.2步進電機的軟件控制步進電機是將電脈沖的信號轉(zhuǎn)變成線位移或角位移的開環(huán)控制元件,給電機送一個脈沖信號,電機則轉(zhuǎn)過一個步距角7。這一線性關(guān)系的存在,加上步進電機只有周期性誤差而無累計的誤差等特點,使得在速度、位置等控制領(lǐng)域里,用步進電機來操縱變的非常的簡單8。步進電機帶動車輪的正確運轉(zhuǎn)是迷宮機器人在迷宮中自由行使以及完成各種不同動作的基礎(chǔ)。通過軟件編程,可實現(xiàn)左右電機的前進、后退、暫停一步和停止四個

16、狀態(tài),同時可設(shè)置步進電機的前進步數(shù)以及最大行駛速度。步進電機也可通過設(shè)置運行步數(shù)判斷行駛距離,在本設(shè)計中,迷宮機器人每行駛完一個,步進電機需前進125步。雙輪驅(qū)動的迷宮機器人,通過對左右步進電機狀態(tài)與速度的分別控制,則可完成迷宮機器人車身的前進、轉(zhuǎn)彎、后退等復雜動作,實現(xiàn)迷宮機器人在狹窄迷宮中的自由穿梭。電機狀態(tài)在程序中的控制如表3-1所示。表3-1 電機狀態(tài)的程序設(shè)置宏定義取代值電機狀態(tài)_MOTORSTOP0電機停止_WAITONESTEP1電機暫停一步_MOTORRUN2電機運行_MOTORGOAHEAD0電機前進_MOTORGOBACK1電機后退3.3迷宮機器人的姿勢矯正迷宮機器人行駛過

17、程中,會因為電壓因素、外界光線因素、摩擦力因素等多種無法避免的原因影響其運行效果,造成車身偏移等。若不加以處理,隨著行駛距離的增加,偏移量也會累加,會出現(xiàn)碰壁等現(xiàn)象,所以必須在運行過程中自行對以上現(xiàn)象造成的偏移進行校正。機器人的智能化要求能對外界干擾自行作出調(diào)整,本設(shè)計中迷宮機器人通過紅外傳感器與步進電機的協(xié)調(diào)控制實現(xiàn)車身的姿勢矯正。迷宮機器人設(shè)置為雙輪驅(qū)動,并通過五個不同方向的紅外傳感器探測墻壁信息。其實物圖如下所示:圖3-4 迷宮機器人實物圖 為更直觀的展現(xiàn)迷宮機器人的運行方式,在本論文中,采用迷宮機器人簡圖作為解說對象。如下圖所示,簡圖中只羅列出車身以及五個不同方向的紅外傳感器和兩個由步

18、進電機驅(qū)動的車輪。圖3-5 迷宮機器人簡圖3.3.1雙板的身姿矯正當機器人左右兩邊都有擋板時,左前、右前兩個傳感器以較低頻率的PWM波檢測兩邊墻壁距離,若某個傳感器探測到墻壁反射的信號,則證明機器人距對應(yīng)位置的墻壁距離較近,靠近墻壁一側(cè)的車輪快行一步,遠離墻壁的車輪慢行一步,完成車身遠離墻壁的調(diào)整。圖3-6 迷宮機器人雙板矯正方式解說圖3.3.2單側(cè)板的身姿矯正當迷宮機器人檢測到只有一側(cè)存在墻壁時,例如圖3-5所示情況,機器人只依靠左前方探頭探測與墻壁的間距。迷宮機器人采用雙頻率判斷車身位置9。使用低頻率PWM波發(fā)射紅外信號,若檢測到反射信號,證明距墻壁距離較近,需要內(nèi)側(cè)車輪快行一步,外側(cè)車輪

19、慢行一步,調(diào)整車身遠離。若使用高頻率信號未能檢測道反射信號,說明與墻壁距離較遠,需要外側(cè)車輪快行一步,內(nèi)側(cè)車輪慢性一步,調(diào)整車身向墻壁靠近。圖3-7 迷宮機器人單板矯正方式解說圖3.3.3直角拐彎 迷宮機器人碰到直角需要拐彎時可采用兩種方式:原地轉(zhuǎn)彎、弧度轉(zhuǎn)彎。原地轉(zhuǎn)彎為確保轉(zhuǎn)角精度,需車身在拐角處停穩(wěn)后才可進行,步進電機需進行幅度較大的加速減速過程,這會影響迷宮機器人行駛的速度,且步進電機停止后的重新啟動也會消耗不必要的時間。考慮到迷宮機器人的行駛速度,本設(shè)計采用轉(zhuǎn)弧度彎的方式?;《绒D(zhuǎn)彎雖然也存在步進電機速度變化的過程,但相對于原地轉(zhuǎn)彎速度變化幅度較小,且電機始終處于運行狀態(tài),不存在電機完全

20、靜止和重新啟動的過程,不僅提高了迷宮機器人的速度,以降低了步進電機的損耗。如圖3-6所示,當迷宮機器人進行弧度直角拐彎時,內(nèi)側(cè)車輪減速,外側(cè)車輪勻速,通過左右兩車輪的速度差實現(xiàn)車身行進中的轉(zhuǎn)動。圖3-8 迷宮機器人原地后轉(zhuǎn)解說圖圖3-9 迷宮機器人弧度彎解說圖整個轉(zhuǎn)彎過程中,外輪行進步數(shù)值和內(nèi)輪行進步數(shù)值的不同會影響到轉(zhuǎn)彎的角度。調(diào)試過程中,對迷宮機器人轉(zhuǎn)彎角度與對應(yīng)兩輪行進步數(shù)的數(shù)據(jù)進行了記錄。如下表所示:表3-2 弧度直角拐彎步數(shù)設(shè)置記錄表外輪行進步數(shù)內(nèi)輪行進步數(shù)轉(zhuǎn)彎角度1503093°1552588°1553293°1603692°1603390&

21、#176;此數(shù)據(jù)是以外輪最大速度為50步為參照的,速度越大,外輪造成的“掉步”現(xiàn)象便越明顯。所以,每次更改迷宮機器人行駛速度時,其轉(zhuǎn)彎的行進步數(shù)也要做出相應(yīng)的調(diào)整10。3.3.4車身后轉(zhuǎn) 當迷宮機器人進入死胡同或到達終點時,為保證后彎中不會碰撞到墻壁,需要在原地完成。迷宮機器人原地后轉(zhuǎn)可通過兩個車輪反向轉(zhuǎn)動實現(xiàn)。在本設(shè)計中,通過在相同速度條件下,左車輪正轉(zhuǎn)右車輪反轉(zhuǎn)實現(xiàn)。當車身后轉(zhuǎn)完成后,迷宮機器人可倒退幾步,通過與迷宮墻壁的碰撞修正車身。圖3-10迷宮機器人原地后轉(zhuǎn)解說圖3.4本章小結(jié)本章重點講述迷宮機器人運行狀態(tài)的簡單控制,包括光電傳感器探測的簡單原理和機器人運行中車身的簡單動作。通過對各

22、種動作的連貫控制,則可實現(xiàn)機器人在迷宮中的流利運行。4控制方式的實現(xiàn)4.1等高圖的制作與偏移量的判斷迷宮機器人以較快速度到達指定坐標需要完成等高圖的制作11。根據(jù)已探測到的墻壁信息,以目標點為原點,按照可行路徑,根據(jù)與原點的距離大小以遞增的方式設(shè)置等高圖。因為轉(zhuǎn)彎時加速減速的過程也需消耗時間,所以等高圖設(shè)置過程中,須將轉(zhuǎn)彎數(shù)作為參考量添加到各個坐標的等高值中。圖4-1 等高圖使用流程圖設(shè)置三個方向變量確認迷宮機器人的方向,分別設(shè)定cDirTemp為相對方向變量、設(shè)定GucMouseDir為絕對方向變量和設(shè)定cDirTemp2為方向偏移量。當迷宮機器人行駛到一個新的坐標點時,探測周圍墻壁信息。以

23、迷宮機器人為參照物,若上方有路時,則將cDirTemp賦值為0,同理,右方有路、下方有路、左方有路時,分別將cDirTemp賦值為1、2、3。若同時存在多條支路,則根據(jù)各個方向的等高值進行判斷,將等高值最小的方向?qū)?yīng)的數(shù)字賦值給cDirTemp。以X、Y坐標為參照物,若迷宮機器人朝向的方向為上,則GucMouseDir被賦值為0,同理,迷宮機器人的朝向為右、下、左,則GucMouseDir對應(yīng)的值為1、2、3。迷宮機器人的方向偏移量可根據(jù)下列公式進行判斷:cDirTemp2 = (cDirTemp + 4 - GucMouseDir)%4; (4-1)式4-1通過相對方向與絕對方向之間的關(guān)系,

24、計算出與方向選擇相關(guān)的數(shù)據(jù),賦值給設(shè)置的cDirTemp2變量。根據(jù)cDirTemp2的值,可對迷宮機器人運行進行控制。如下表所示:表4-1 岔路時迷宮機器人的運行狀態(tài)變量取值迷宮機器人運行狀態(tài)cDirTemp20直行1右轉(zhuǎn)2后轉(zhuǎn)3左轉(zhuǎn)4.2探索法則探索法則是迷宮機器人在迷宮探索時所遵循的一定規(guī)律。按照一定法則探索迷宮可使迷宮探索更加充分,并減少路線的重復探索,節(jié)省探索時間。常用的探索法則主要有:左手法則、右手法則、中左法則、中右法則四種基礎(chǔ)法則和將以上四種法則綜合應(yīng)用的中心法則12。4.2.1基本法則左手法則:當迷宮機器人碰到多條支路的情況時,若左邊存在支路,會優(yōu)先選擇左側(cè)探索。若左邊不存在

25、支路或左側(cè)支路已探索完成并重新返回到路口時,若前方存在支路,優(yōu)先探索前方支路。左手法則的探索順序是:先左,后前,再右。圖4-2 左手法則程序圖右手法則:當迷宮機器人碰到多條支路的情況時,若右邊存在支路,會優(yōu)先選擇右側(cè)探索。若右邊不存在支路或右側(cè)支路已探索完成并重新返回到路口時,若前方存在支路,優(yōu)先探索前方支路。右手法則的探索順序是:先右,后前,再左。圖4-3 右手法則程序圖中左法則:當迷宮機器人碰到多條支路的情況時,若前方存在支路,會優(yōu)先選擇前方探索。若前方不存在支路或前方支路已探索完成并重新返回到路口時,若左邊存在支路,優(yōu)先探索左邊支路。中左法則的探索順序是:先前,后左,再右。圖4-4 中左

26、法則程序圖中右法則:當迷宮機器人碰到多條支路的情況時,若前方存在支路,會優(yōu)先選擇前方探索。若前方不存在支路或前方支路已探索完成并重新返回到路口時,若右邊存在支路,優(yōu)先探索右邊。中右法則的探索順序是:先前,后右,再左。圖4-5 中有法則程序圖中心法則:中心法則是根據(jù)迷宮機器人在迷宮中所處的具體位置,靈活調(diào)用其他四種法則,其在五個法則中邏輯較為嚴謹,便于較快速度探索到終點。在本次設(shè)計中,采用中心法則,并進行了一定的改良。中心法則根據(jù)設(shè)置的二維坐標,將迷宮分成右上、右下、左上、左下四個部分,當迷宮機器人碰到多條支路的情況時,根據(jù)迷宮機器人所在位置的不同,采用不同的探索方式。中心法則始終將指向終點的支

27、路作為優(yōu)先支路。當迷宮機器人位于迷宮的右上角時:若機器人方向朝上,則采用左手法則;若機器人方向朝右,則采用右手法則;若機器人方向朝下,則采用中右法則;若機器人方向朝左,則采用中左法則。當迷宮機器人位于迷宮的右下角時:若機器人方向朝上,則采用中左法則;若機器人方向朝右,則采用左手法則;若機器人方向朝下,則采用右手法則;若機器人方向朝左,則采用中右法則。當迷宮機器人位于迷宮的左上角時:若機器人方向朝上,則采用右手法則;若機器人方向朝右,則采用中右法則;若機器人方向朝下,則采用中左法則;若機器人方向朝左,則采用左手法則。當迷宮機器人位于迷宮的左下角時:若機器人方向朝上,則采用中右法則;若機器人方向朝

28、右,則采用中左法則;若機器人方向朝下,則采用左手法則;若機器人方向朝左,則采用右手法則。4.2.2中心法則的改良原有的中心法則將整個迷宮分成四個部分,雖然較易尋到終點,但在一些特殊的迷宮地圖中,因為其固定的探尋順序,可能會在接近終點時,因為一條支路的存在會牽引迷宮機器人行駛向遠離終點的方向,這會大大增加迷宮機器人的探索時間。所以,在原有中心法則的基礎(chǔ)上,本設(shè)計中做了進一步的改良,在距離終點坐標兩個單位長度的方形范圍內(nèi),增添一個新的坐標區(qū)域。將距離終點兩個單位距離的區(qū)域命名為中心區(qū)域,當探測到中心區(qū)域時,若存在多條支路,依然中心法則的探索原則進行迷宮搜索。但當支路走不通或即將行駛出中心區(qū)域時,迷

29、宮機器人則優(yōu)先選擇中心區(qū)域內(nèi)的支路探索。這樣便令迷宮機器人行駛進中心區(qū)域后,始終圍繞終點探索,更容易找到進入終點的路線。迷宮區(qū)域劃分如下圖。圖4-6迷宮區(qū)域的劃分圖中心法則改良后,在絕大多數(shù)迷宮條件下,極大的縮短了探索至終點所消耗的時間。很多情況下,全迷宮探索較為繁瑣,即使探索出更短路徑,但也在探索過程中消耗了大量的不必要的時間。采用改良了的中心法則,當迷宮機器人以最快速度到達終點后,首先判斷在已知的迷宮地圖中由終點到達起點的等高值,若等高值低于25,則此路線為較短路線,無需再探索迷宮。通過在不同迷宮中多次比較,此種方案更為可行。迷宮機器人改良后的中心法則在程序設(shè)置中,首先對是否是中心區(qū)域進行

30、判斷,若不在中心區(qū)域,根據(jù)原有中心法則判斷搜索方式。框圖如下所示:圖4-7 改良后中心法則框圖4.3本章小結(jié)通過等高圖的制作以及探索法則的設(shè)定和不斷改良,實現(xiàn)了迷宮機器人在迷宮中的靈活運動以及在岔路前進方向的正確判定,迷宮機器人軟件設(shè)計中的主要邏輯部分成功實現(xiàn)。等高圖制作在完成路線記憶的基礎(chǔ)上,可實現(xiàn)迷宮機器人以最短路徑到達指定地點,省去了探索前進的麻煩。探索法則的設(shè)定使迷宮探測有一定的規(guī)律可循,可免去不必要的反復探測,節(jié)省了探測時間。轉(zhuǎn)彎方向的選擇確保了迷宮機器人的基本運行,這三段程序設(shè)置,有效的提高了迷宮機器人的效率。5總結(jié)與展望本文重點講述了迷宮機器人的軟件設(shè)計,通過對ARM1138的軟

31、件編程,實現(xiàn)邏輯運算和對各種外設(shè)的控制,完成迷宮機器人在未知迷宮中自行探索的功能。在迷宮機器人的實驗過程中,主要完成的任務(wù)有:墻壁信息的探索與存儲、轉(zhuǎn)角的設(shè)置、等高圖的制作以及沖刺過程中較快速度條件下車身穩(wěn)定性的調(diào)整。在設(shè)計過程中也遇到了一些難以解決的問題,例如因為輪胎的摩擦力變化造成的步數(shù)丟失,尤其是沖刺過程中,特別明顯。開始時只能依靠不斷清潔輪胎和迷宮地面的灰塵,防止灰塵填充輪胎造成的打滑,后來,通過跟老師的探討以及不斷地網(wǎng)上查找資料,找到了一個有效的解決方案:既是在沖刺過程中,只記錄模糊步數(shù),每經(jīng)過一個路口時,自動對偏移的步數(shù)進行修正。這樣便有效避免了因步數(shù)丟失造成的運行至指定位置過程中

32、,轉(zhuǎn)彎時與墻壁的碰撞。迷宮機器人的發(fā)展空間非常廣闊,自行移動機器人是人工智能中極為關(guān)鍵的一步,在未來的科技發(fā)展中必會得到更加廣闊的應(yīng)用。參考文獻1Joseph L Jones美原魁鄒偉等譯機器人編程技術(shù)基于行為的機器人實戰(zhàn)指南J機械工業(yè)出版社,200513-142西原主計等日,牛連強、趙文珍譯機器人c語言機電一體化接口M北京:科學出版社,200229-303孫巧榆等八方向走迷宮算法J計算機工程,2004,(1):90-914周立功等Cortex·M3開發(fā)指南基于LM3S8000M北京:北京航空航天大學出版社,200512-135張新誼一種電腦鼠走迷宮的算法J單片機與嵌入式系統(tǒng)應(yīng)用,2

33、00749-516關(guān)學忠單片機與TA8435的步進電機細分控制J單片機及嵌入式系統(tǒng)應(yīng)用200626-277彭小芳;方衛(wèi)紅等,電腦鼠運行的穩(wěn)定性研究J. 現(xiàn)代商貿(mào)工業(yè) ,2011,20:284-2858Kenneth A.Reek著,徐波譯.C和指針. J北京:人民郵電出版社,2003,9.14-159朱誠;郝麗萍;劉曉培,電腦鼠無線監(jiān)視平臺的設(shè)計J.計算機時代,2011,6:9-1210Jean J.Labrosse著,邵貝貝等,譯.嵌入式實時操作系統(tǒng)C/OS-(第二版)M.北京.33-3411DAlur,JCrupi,D Malks.”Core J2EE Patterns:Best and

34、opliece wo Practices and Design Strategies”Prentice Hall,2001.3-412Meehan Joanne,Muir Lindsey.SCM in Merseyside SMEs:Benefits andbarriers.TQM Journal,2008.8-9附錄:主函數(shù)程序:#include "sys_init.h"#include "Maze.h"#include "suanfa.h"#include "Zlg7289.h"#include "m

35、ouse.h"uint8 GucMouseTask = WAIT; /* 狀態(tài)機,初始狀態(tài)為等待 */uint8 cXdst=0xff,cYdst=0xff;int faze=0,sousuo=0,ok=0,zhongd=0;int _fanhui_sup = 0;int _fanhui_sch = 0;int _fanhui_tostart = 0;/* Function name: main* Descriptions: 主函數(shù)* input parameters: 無* output parameters: 無* Returned value: 無*/main (void) u

36、int8 n = 0; /* GmcCrossway下標 */ uint8 ucRoadStat = 0; /* 統(tǒng)計某一坐標可前進的支路數(shù) */ uint8 ucTemp= 0; /* 用于START狀態(tài)中坐標轉(zhuǎn)換 */ mouseInit(); /* 底層驅(qū)動的初始化 */ zlg7289Init(); /* 顯示模塊初始化 */ while (1) switch (GucMouseTask) /* 狀態(tài)機處理 */ case WAIT: sensorDebug(); voltageDetect(); delay(100000); if (keyCheck() = true) /* 檢測按

37、鍵等待啟動 */ zlg7289Reset(); /* 復位ZLG7289 */ GucMouseTask = START; break; case START: /* 判斷電腦鼠起點的橫坐標 */ mazeSearch(); /* 向前搜索 */ if (GucMapBlockGmcMouse.cXGmcMouse.cY & 0x08) /* 判斷電老鼠左邊是否存在出口 */ if (MAZETYPE = 8) /* 修改四分之一迷宮的終點坐標 */ GucXGoal0 = 1; GucXGoal1 = 0; GucXStart = MAZETYPE - 1; /*修改電腦鼠起點的橫

38、坐標 */ GmcMouse.cX = MAZETYPE - 1; /*修改電腦鼠當前位置的橫坐標 */ /* 由于默認的起點為(0,0),現(xiàn)在需要把已記錄的墻壁資料轉(zhuǎn)換過來*/ ucTemp = GmcMouse.cY; do GucMapBlockMAZETYPE - 1ucTemp = GucMapBlock0ucTemp; GucMapBlock0 ucTemp = 0; while (ucTemp-); /* * 在OFFSHOOT0中保存起點坐標 */ GmcCrosswayn.cX = MAZETYPE - 1; GmcCrosswayn.cY = 0; n+; GucMouse

39、Task = MAZESEARCH; /* 狀態(tài)轉(zhuǎn)換為搜尋狀態(tài) */ if (GucMapBlockGmcMouse.cXGmcMouse.cY & 0x02) /* 判斷電老鼠右邊是否存在出口 */ /* * 在OFFSHOOT0中保存起點坐標 */ GmcCrosswayn.cX = 0; GmcCrosswayn.cY = 0; n+; GucMouseTask = MAZESEARCH; /* 狀態(tài)轉(zhuǎn)換為搜尋狀態(tài)*/ break; case MAZESEARCH: ucRoadStat = crosswayCheck(GmcMouse.cX,GmcMouse.cY); /* 統(tǒng)

40、計可前進的支路數(shù) */ if (ucRoadStat) /* 有可前進方向 */ if (ucRoadStat > 1) /* 有多條可前進方向,保存坐標 */ GmcCrosswayn.cX = GmcMouse.cX; GmcCrosswayn.cY = GmcMouse.cY; n+; crosswayChoice(); /中心法則 mazeSearch(); /* 前進一格 */ else /* 沒有可前進方向,回到最近支路*/ while (-n) ucRoadStat = crosswayCheck(GmcCrosswayn.cX, GmcCrosswayn.cY); /*

41、統(tǒng)計最近支點未走過的方向數(shù) */ if (ucRoadStat) objectGoTo(GmcCrosswayn.cX, GmcCrosswayn.cY); if (ucRoadStat > 1) n+; crosswayChoice(); /選擇一條支路作為前進方向 現(xiàn)在是以中心法則 mazeSearch(); break; /已經(jīng)探到終點,搜索時的回來 if(GucMapStepGucXGoal0GucYGoal0!=0xff) sousuo=0; zhongd=n; GucMouseTask = FANHUI; _fanhui_sch=1; break; if(GucMapStep

42、GucXGoal0GucYGoal1!=0xff) sousuo=0; zhongd=n; GucMouseTask = FANHUI; _fanhui_sch=1; break; if(GucMapStepGucXGoal1GucYGoal0!=0xff) sousuo=0; zhongd=n; GucMouseTask = FANHUI; _fanhui_sch=1; break; if(GucMapStepGucXGoal1GucYGoal1!=0xff) sousuo=0; zhongd=n; GucMouseTask = FANHUI; _fanhui_sch=1; break; b

43、reak;/ case FANHUI: ucRoadStat = crosswayCheck(GmcMouse.cX,GmcMouse.cY); /*統(tǒng)計可前進的支路數(shù) */ if (ucRoadStat) /* 有可前進方向*/ if (ucRoadStat > 1) /* 有多條可前進方向,保存坐標 */ GmcCrosswayn.cX = GmcMouse.cX; GmcCrosswayn.cY = GmcMouse.cY; n+; if(faze=0) frontRightMethod(); /中右法則 else if(faze=1) frontRightMethod(); /中左法則 mazeSearch();

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論