電腦鼠走迷宮實驗報告附程序_第1頁
電腦鼠走迷宮實驗報告附程序_第2頁
電腦鼠走迷宮實驗報告附程序_第3頁
電腦鼠走迷宮實驗報告附程序_第4頁
電腦鼠走迷宮實驗報告附程序_第5頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

東南大學第二屆IEEE標準電腦鼠走迷宮競賽電腦鼠原理及其應用 機電動力試驗平臺第7頁共9頁第二屆IEEE標準電腦鼠走迷宮競賽論文目錄一.軟件程序框圖………….3二.參賽軟件研發過程…….4三.軟硬件調試過程……….4四.各組員分工…………….4五.體會心得……………….5附錄……………………...…..6參考書目……………….……9軟件程序框圖參賽軟件研發過程在voidmain()函數中,采用壓棧的方式進行電腦鼠搜索,數組uint8GmcCrossway[MAZETYPE*MAZETYPE]用于暫存未走過支路坐標。數組uint8GucMapBlock[MAZETYPE][MAZETYPE]記錄每個點的地圖信息,初始化為0x00。函數voidmouseGoahead(int8cNBlock)、voidmazeSearch(void)、voidmouseTurnleft(void)、voidmouseTurnright(void)、voidmouseTurnback(void)和voidobjectGoTo(int8cXdst,int8cYdst)控制電腦鼠的運動狀態。voidmapStepEdit(int8cX,int8cY)為制作等高圖函數,它把記錄等高值的數組uint8GucMapStep[MAZETYPE][MAZETYPE](初始化為0xff)賦值。當電腦鼠搜索時無方向可走時就按照這個等高圖的信息退回上個點,沖刺時也是一樣的道理。另外,為了縮短轉彎時間,并且保證電腦鼠的穩定性,采取轉彎時整步,直走時半步。我們在Mouse_Drive.c文件中,加入全局變量int8maincheck,初始化為0(其中0為不轉彎,1為轉彎)。在__leftMotorContr()和__rightMotorContr()中根據maincheck的值來實現整步和半步的轉換,maincheck的值在voidmouseTurnleft(void),voidmouseTurnback(void)和voidmouseTurnright(void)中被更改。軟硬件調試過程首先我們對電腦鼠的傳感器進行調節。根據程序中對傳感器返回值的要求,首先我們降低了左前右三個方向遠距紅外檢測頻率,改為35500Hz。再在跑道上對傳感器硬件的調節,當電腦鼠靠近墻時,近墻一側斜角紅外值為1,遠墻一側斜角紅外值為0,近墻一側正對紅外值為3,遠墻一側正對紅外值為1;當電腦鼠在跑道中央時,斜角紅外值均為0,且兩側正對紅外值為1;前方紅外探測距離不得超過一格,由于提速的原因,盡量要遠些。將速度提高,68的速度實在太慢。最開始嘗試100和120,但是電腦鼠探索時前進不穩定,會晃,撞墻。所以放棄了高速,只將速度提高到80。速度提高了,就得更改轉彎時得轉動步數,速度的調節和步數的調節是同步的。根據轉彎時的幅度來判斷目前轉彎步數是否合適。預賽完后,要想縮短搜索時間,就采用轉彎時整步,直走時半步的驅動方法。首先步數減半,再像之前那樣微調步數。組員分工程序的改編和程序的調試體會心得當初我選這門公選課,是我舍友告訴我的,他說他的朋友說上這門課有機會拿srtp學分,但是需要些編程基礎。我的編程基礎還好,就奔著srtp學分選了這門課。其實這次我上交的程序只在標準程序中更改了很少,更本沒有多大的意義。對此我很遺憾。我們平時課程也有點多,瑣碎的事情也多,就沒多少時間來好好理解程序。我很早就寫好了一個算法,但是我是在C++上寫的,是很理論的。后來我就想用我自己的算法來寫這個電腦鼠搜索程序,結果我遇到了很大的難題。我對電腦鼠的速度始終都控制不好,老是撞墻。后來聽了好友的建議,把速度先減小,看看具體原因。結果我發現,我的程序有很多問題。雖然我修改了很多了,但是還是有漏洞。由于時間不夠,沒有將我的算法改好,就很舍不得地放棄了它。我將我自己編寫的程序附在附錄里。在整個過程中,我感觸最深的是理論與實際的差異原來是很大的。比如說對半步驅動速度的控制,如果defineSEARCHSPEED68,在較長直道上速度太小,很慢,但是轉彎就比較合適;但是如果defineSEARCHSPEED100,雖然在較長直道上速度足夠,但是轉彎很不穩定,很容易出現丟步現象。還有一點,我體會到有個老師說的那句話是對的,“現在的編程語言太多了,平臺也很多,但是只要你努力學好一種語言,其他的語言可以很快學會”。他曾經十天學會一種語言,并且完成了一個項目。附錄搜索算法:搜索過程中根據絕對方向信息前進,由遞歸函數voidSeekPath(int8x,int8y,int8x1,int8y1)實現的,其中(x,y)為電腦鼠當前所在點,(x1,y1)為上次探索的點,(x1,y1)是為了回溯而設立的參數。而且,在搜索過程中采用排除算法,可以避免走一些死路或不必走的路。其中排除算法是由函數voidmapchange(void)實現的,其算法為:在電腦鼠四周的四個點中,如果某個點的四個方向地圖信息至少有三個方向已知,則不需要探索這個點,將這個點標記為已被探測過。電機驅動:Speed0=Speed1=整步驅動。整步驅動加速很快,尤其是后轉彎很快。地圖信息處理:地圖信息在每次走了40步后進行獲取,此時傳感器正處于格子中央,獲取的地圖信息要準確些。記錄地圖信息的數組我改為maze[MAZETYPE*2+1][MAZETYPE+1],我設電腦鼠起點為(1,1),則地圖上某個點(x,y)的墻壁信息為:上方向maze[2*x-1][y],下方向maze[2*x-1][y-1],左方向maze[2*x-2][y-1],右方向maze[2*x][y-1]。如下圖,每個三角形為地圖上的一個點,圖中每個三角形的上頂點為上方向墻壁信息,左頂點為左方向墻壁信息,右頂點為右方向墻壁信息,中間的點為下方向墻壁信息。這樣做有一個好處,比如說,地圖上某個點(x,y),那么它下方向墻壁信息和這個點下面的點(x,y-1)的上方向墻壁信息是一致的,一旦改變其一,兩者都變了,這很符合實際。但是,它有它的不足,就是開空間太大,而且還是全局變量,占內

溫馨提示

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

評論

0/150

提交評論