電腦鼠

電腦鼠

所謂“電腦鼠”,英文名叫做MicroMouse,是使用嵌入式微控制器、感測器和機電運動部件構成的一種智慧型行走裝置的俗稱,它可以在“迷宮”中自動記憶和選擇路徑,尋找出口,最終達到所設定的目的地。

基本信息

概述

“電腦鼠”,英文名MicroMouse,是使用嵌入式微控制器、感測器和機電運動部件構成的一種智慧型行走裝置(微型機器人),電腦鼠可以在不同“迷宮”中自動記憶和選擇路徑,採用相應的算法,快速地達到所設定的目的地。

國際電氣和電子工程學會(IEEE)每年都要舉辦一次國際性的電腦鼠走迷宮競賽,自舉辦以來參加國踴躍,為此許多大學還開設了“電腦鼠原理和製作”選修課程。真正的首場電腦鼠迷宮競賽於1979年在紐約舉行。1991年以來,每年都有世界級的比賽。

依照比賽規則,當電腦鼠放入起點,按下啟動鍵之後,它就必須自行決定搜尋法則並且在迷宮中前進、轉彎、記憶迷宮牆壁資料、計算最短路徑、搜尋終點等功能。電腦鼠迷宮競賽結合了機械、電機、電子、控制、光學、程式設計和人工智慧等多方面的科技知識。

人類在科技的發展史上,一直在嘗試著想要創造出一個具有肢體、感官、腦力等綜合一體的智慧型機器人,而電腦鼠就是一個很能夠用來詮釋肢體、感官及腦力綜合工作的基本實例,這也是當初電腦鼠被發明的理由,希望能夠藉助電腦鼠的創作來進而研究與發明更加複雜的機械。

電腦鼠走迷宮 電腦鼠走迷宮

一隻電腦鼠是具有機電知識整合的基本架構,本身就像是一個智慧型的機器人。要在指定的迷宮中比賽,就像是一個人置身於競賽中,必須要靠本身的判斷力、敏捷動作及正確探查周邊環境,來贏得勝利。一般來說,一隻電腦鼠需具備有下列三件基本能力:

(1) 擁有穩定且快速的行走能力;

(2) 能正確判斷能力;

(3) 記憶路徑的能力。

行走能力指的就是電機,當電機收到訊號時,系統必須判斷是否能同步行走,遇到轉角時,轉彎的角度是否得當,一個好的電機驅動程式,可以減少行走時所需要做的校正時間。判斷能力的關鍵就在於感測器,它的地位如同人類的雙眼,一個好的感測器驅動程式,可避免一些不必要的錯誤動作,如撞壁、行走路線的偏移等等。

而記憶能力就像是大腦,它的功能並沒有因為看不見而遭到忽視,相反地,它的地位在整場比賽中是最重要的,他必須把所走過的路都能一一記下來,並將其資料送給系統,讓系統整理出最佳路徑以避開不必要的路段。

起源

1956年夏天,達特默斯人工智慧會議在美國達特茅斯大學(Dartmouth)召開,會議首先提出了“人工智慧”(Artificial Intelligence)這一術語,標誌著人工智慧(AI)作為一門新興學科正式誕生。香農(資訊理論之父)參與發起了達特茅斯人工智慧會議,成為這一新學科的開山鼻祖之一。他不僅率先把人工智慧運用於電腦下棋方面,而且發明了一個能自動穿越迷宮的電子老鼠,以此證明計算機可以通過學習提高智慧型。

1972 年,機械設計雜誌發起了一場比賽。在比賽中,僅由捕鼠器彈簧驅動的機械鼠不停地與其它參賽鼠競賽,以判斷哪個機械鼠能夠沿著跑道跑出最長的距離。冠軍是“mousemobile”,它跑了825.3 英尺。

1977 年,IEEE Spectrum 雜誌提出電腦鼠的觀念。電腦鼠是一個小型的由微處理器控制的機器人車輛,在複雜迷宮中具有解碼和導航的功能和能力。1977 年5 月,Spectrum 宣布首場美國令人震驚的電腦鼠迷宮大賽在1979 年於紐約舉行。在6000 個參賽作品中僅有15個電腦鼠比賽勝出。一些電腦鼠被報導為“大腦智障”(“brain failure”),另外一些則被宣布為電腦鼠“爆炸”(“blow up”)。當大家都非常關心這個話題時,智慧型電腦鼠的設計和製作顯然就被證實比想像中的困難得多。

1979年,電子和電氣工程師協會通過其Spectrum and Computer雜誌發起了一場競賽,比賽項目為製造出能夠在短時間內自主走出迷宮的電腦鼠的人獎勵1000美元。在6000個參賽作品中僅有15個電腦鼠比賽勝出,這是第一場真正的電腦鼠走迷宮的競賽,標誌著電腦鼠走迷宮競賽的正式誕生。

1980 年,在倫敦Euromicro’80 舉辦了一場歐洲版的比賽,但是18 個參賽鼠都沒能成功地完成這個迷宮賽。在比賽的觀眾當中,有五位來自日本新科學基金會的代表。他們將此比賽規則帶回了東京,後來還在1980 年11 月舉辦了首場全日本電腦鼠比賽。

1985 年8 月,在日本Tsukuba 舉行了首場世界電腦鼠大賽。電腦鼠來自整個歐洲和美國,使用的感測器有紅外的、超音波的和CCD 的,驅動裝置有步進電機的和DC 伺服電機的。所有最高獎項均由日本的電腦鼠Noriko-1 贏得,一舉成為世界冠軍。

1987 年,電機工程協會(IEE)在倫敦舉辦了一場電腦鼠錦標賽,13 個電腦鼠角逐冠軍。來自美國麻省理工學院(MIT)的David Otten 帶著他的兩個參賽鼠Mitee Mouse I 和

Mitee MouseII 獲得了一等獎和二等獎。比賽採用新的得分體制,以獎勵那些能夠智慧型、高效地解開迷宮的方案和能夠獨立運行的電腦鼠。

一位新加坡工程協會(IES)的議會成員在1986 年偶然發現了電腦鼠。因為他對電腦鼠以及電腦鼠的複雜程度和前景非常感興趣,所以他覺得在新加坡舉辦一場國際電腦鼠大賽非常合適(IES 作為主要的贊助商)。

1987 年10 月,新加坡舉行了第一屆新加坡電腦鼠比賽。比賽的冠軍MIR3+(來自Nanyang技術協會)是1988 年在倫敦舉行的IEE UK 國際電腦鼠比賽的季軍。

1989 年7 月,由第二屆新加坡電腦鼠比賽的獲勝者組成比較大的新加坡隊參加了在倫敦舉行的1989 年IEE UK 國際電腦鼠大賽。新加坡參賽者獲得了最高8 個獎項中的6 個。

David Otten 的Mittee Mouse III 奪得了亞軍,UK 某企業則獲得了第五名。

在1989 年10 月21 日,IES 邀請澳大利亞、日本、台灣、UK 和美國最好的電腦鼠來參加新加坡首場國際電腦鼠大賽。來自美國和台灣的電腦鼠等待著復仇的時機,因為他們在7月份的倫敦大賽曾一度被新加坡打敗。13 個來自當地的和外國的參賽者的電腦鼠在3 個小時的比賽中,表演出來的速度和敏捷程度使得觀眾嘆為觀止。新加坡獲得第2 名、第4 名、第5 名和第7 名的事實出乎了很多人的意外。

1991 年,世界錦標賽在香港舉行,這是繼1985 年Tsukuba 世界錦標賽的又一場最大的國際盛會:來自13 個國家的21 位選手帶著30 個電腦鼠來比賽。

自1991 年以來,世界級的比賽數目顯著增加。原來一年舉行5~6 場比賽,現在增加到100 場以上。

電腦鼠比賽在中國大陸還很少見,直到2007 年,由上海市計算機學會主辦的IEEE 標準電腦鼠走迷宮邀請賽(長三角地區)在上海師範大學舉行,有三十多所院校參加,反響強烈。

比賽規則

最新的電腦鼠比賽規則是2006 年國際電工和電子工程學會(IEEE)制定的電腦鼠走迷宮競賽規則,這個規則將會對我們製作電腦鼠具體方案的設計提供依據。

電腦鼠比賽標準迷宮由廣州周立功單片機發展有限公司設計和生產的電腦鼠比賽專用迷宮完全符合 IEEE 國際標準。針對不同的需求,目前共有兩種可供選擇的型號。

1. MicroMouse Maze 8×8:

四分之一迷宮,如圖所示。即該迷宮是標準迷宮的四分之一大小。該迷宮底板的尺寸為1.48m×1.48m,上面共有8×8 個標準迷宮單元格。該迷宮可以用來初期調試學習使用,也可以用來做學校課程設計、畢業設計和內部競賽的比賽迷宮。

MicroMouse Maze 8×8 MicroMouse Maze 8×8

2.MicroMouse Maze 16×16:

標準迷宮,如圖所示。該迷宮尺寸規格等完全符合IEEE 國際標準。迷宮底板的尺寸為2.96m×2.96m,上面共有16×16 個標準迷宮單元格。

電腦鼠走迷宮 電腦鼠走迷宮
MicroMouse615 MicroMouse615

如下圖所示,MicroMouse615 是由廣州致遠電子設計生產的一款電腦鼠,它的微控制器是由Luminary 公司生產的Cortex-M3 核心的ARM 處理器——LM3S615,它具有以下一些特點:·體積小,寬度只有迷宮格的一半;

·五組可測距的紅外線感測器,靈敏度方便現場調節;

·電機為步進電機,控制容易;

·電池為 2200mAh,7.4V 的可充電鋰電池;

·支持電池的電壓監測,避免電量不足帶來的麻煩;

·一個按鍵,完全滿足了實際需要;

·為用戶預留了 6 個GPIO 口,一個串口,一個SPI 接口。配套的開發工具

如圖所示,與MicroMouse615 配套的有充電器、LM LINK USB JTAG 調試器和SPI接口的鍵盤顯示模組,使用戶開發調試更為方便。

MicroMouse615 及配套開發工具 MicroMouse615 及配套開發工具

文檔閱讀說明

本文以廣州致遠電子有限公司生產的MicroMouse615 型電腦鼠作為硬體開發平台,從硬體原理到程式設計都做了詳細分解。文中附了大量程式原始碼,在程式設計過程中,為了便於閱讀和編寫,使用了一套變數的定義方法。

數據類型定義

如程式清單1.1 所示,重新定義幾種常用的數據類型名。

//程式清單1.1 數據類型重定義

typedef unsigned char uint8; // 無符號8 位整型變數

typedef signed char int8; // 有符號8 位整型變數

typedef unsigned short uint16; // 無符號16 位整型變數

typedef signed short int16; // 有符號16 位整型變數

typedef unsigned int uint32; // 無符號32 位整型變數

typedef signed int int32; // 有符號32 位整型變數

typedef float fp32; // 單精度浮點數(32 位長度)

typedef double fp64; // 雙精度浮點數(64 位長度)

2. 局部變數定義

局部變數名包含變數類型和變數描述兩個部分,以局部變數Temp 為例,在不同類型下的定義如表1.1 所示。可以看出,在變數Temp 前加上了其類型的縮寫。

相關詞條

相關搜尋

熱門詞條

聯絡我們