北京交通大学
电脑鼠原理与实践
——基于 MicroMouse615 迷宫智能鼠
北京交通大学 电脑鼠走迷宫
目录
第一章 绪论 ............................................................................................................................. 4
1.1 人工智能与电脑鼠.............................................................................................. 4
1.2 电脑鼠起源及发展历史 ...................................................................................... 5
1.2.1 起源 ........................................................................................................... 5
1.2.2 竞赛历史 ................................................................................................... 5
1.3 电脑鼠竞赛的意义............................................................................................ 10
1.4 电脑鼠平台 ....................................................................................................... 11
1.5 电脑鼠竞赛规则................................................................................................ 13
第二章 MicroMouse615 硬件原理 ....................................................................................... 14
2.1 元件布局图 ....................................................................................................... 14
2.2 电路原理图 ....................................................................................................... 15
2.3 原理说明 ........................................................................................................... 15
2.3.1 电源电路 ................................................................................................. 15
2.3.2 JTAG 接口电路 ........................................................................................ 16
2.3.3 按键电路 ................................................................................................. 17
2.3.4 红外检测电路 ......................................................................................... 17
2.3.5 电机驱动电路 ......................................................................................... 18
第三章 开发软件配置与使用 ............................................................................................... 19
3.1 IAR EWARM 简介 .............................................................................................. 19
3.2 LM LINK 调试器介绍 ........................................................................................ 19
3.3 IAR EWARM 的安装 .......................................................................................... 19
3.3.1 IAR EWARM 的安装步骤 ....................................................................... 19
3.3.2 安装 LM LINK 驱动 ................................................................................ 21
3.4 安装流明诺瑞驱动库.............................................................................................. 24
3.4.1 下载最新库文件 ..................................................................................... 24
3.4.2 拷贝连接器命令文件 ............................................................................. 25
3.4.3 拷贝驱动库头文件 ................................................................................. 25
3.4.4 拷贝底层驱动函数库 ............................................................................. 26
1
北京交通大学 电脑鼠走迷宫
3.5 在 EWARM 中新建一个新项目 ............................................................................. 27
3.5.1 建立一个项目文件目录 ......................................................................... 27
3.5.2 新建工作区 ............................................................................................. 28
3.5.3 生成新项目 ............................................................................................. 28
3.5.4 添加/新建文件 ....................................................................................... 31
3.6 项目选项设置 ......................................................................................................... 35
3.6.1 通用选项设置 ......................................................................................... 35
3.6.2
C/C++编译器选项设置 ........................................................................... 36
3.7 编译和运行应用程序.............................................................................................. 42
3.7.1 编译连接处理 ......................................................................................... 42
3.7.2 查看 MAP 文件 ....................................................................................... 43
3.7.3 加载应用程序 ......................................................................................... 43
3.8 生成 hex 文件和 bin 文件 ....................................................................................... 44
3.8.1 生成 hex 文件 ........................................................................................ 44
3.8.2 生成 bin 文件 ......................................................................................... 45
实验一 电池电压检测实验 ................................................................................................... 47
第四章 传感系统 ................................................................................................................... 52
4.1 电脑鼠传感系统的构成 .................................................................................... 52
4.2 红外线传感器 ................................................................................................... 52
4.3 速度传感器 ....................................................................................................... 55
4.4 角度传感器 ....................................................................................................... 57
实验二 红外线传感器测距实验 ........................................................................................... 58
第五章 驱动系统 ................................................................................................................... 70
5.1 步进电机驱动 ................................................................................................... 70
5.2 直流电机驱动 ................................................................................................... 74
实验四 步进电机匀加减速控制实验 ................................................................................... 76
实验五 含姿势修正的走直线实验 ....................................................................................... 91
实验六 无记忆功能的走迷宫实验 ....................................................................................... 99
第六章 智能算法 ................................................................................................................. 109
6.1 迷宫坐标和绝对方向的建立 .......................................................................... 109
6.2 相对方向与绝对方向的转换 .......................................................................... 110
6.3 左边转换 ......................................................................................................... 111
2
北京交通大学 电脑鼠走迷宫
6.4 墙壁资料存储与映射...................................................................................... 112
6.5 迷宫搜索方法 ....................................................................................................... 112
右手法则 ............................................................................................................... 112
左手法则 ............................................................................................................... 113
求心法则 ............................................................................................................... 113
6.6 寻找最优路径的方法............................................................................................ 115
6.6.1 等高图制作原理 ................................................................................... 115
6.6.2 等高图制作范例 ................................................................................... 115
6.6.3 转弯加权的等高图 ............................................................................... 118
6.7 程序设计 ................................................................................................................ 118
6.7.1 电脑鼠向对方向的墙壁资料获取 ....................................................... 119
6.7.2 右手法则程序设计 ............................................................................... 122
6.7.3 左手法则程序设计 ............................................................................... 122
6.7.4 中右法则程序设计 ............................................................................... 123
6.7.5 中右法则程序设计 ............................................................................... 124
6.7.6 求心法则程序设计 ............................................................................... 124
6.7.7 等高图制作程序设计 ........................................................................... 128
6.7.8 直接到指定坐标程序设计 ................................................................... 131
6.7.9 搜寻到终点的最短路径 ....................................................................... 135
6.7.10 未走过的支路统计 ............................................................................. 136
6.7.11 主函数程序设计 ................................................................................. 137
附录 A 电脑鼠走迷宫竞赛规则 ....................................................................................... 146
3
北京交通大学 电脑鼠走迷宫
第一章 绪论
1.1 人工智能与电脑鼠
所谓“电脑鼠”,英文名叫做 MicroMouse,是使用嵌入式微控制器、传感器和机电运动
部件构成的一种智能行走装置的俗称,它可以在“迷宫”中自动记忆和选择路径,寻找出口,
最终达到所设定的目的地。国际电工和电子工程学会(IEEE)每年都要举办一次国际性的电
脑鼠走迷宫竞赛,自举办以来参加国踊跃,为此许多大学还开设了“电脑鼠原理和制作”选
修课程。
电脑鼠可谓是一种具有人工智能的小型机器人,依照新制的比赛规则,当电脑鼠放入起
点,按下启动键之后,它就必须自行决定搜寻法则并且在迷宫中前进、转弯、记忆迷宫墙壁
资料、计算最短路径、搜寻终点等功能。电脑鼠更结合了机械、电机、电子、控制、光学、
程序设计和人工智能等多方面的科技知识。
人类在科技的发展史上,一直在尝试着想要创造出一个具有肢体、感官、脑力等综合一
体的智能机器人,而电脑鼠就是一个很能够用来诠释肢体、感官及脑力综合工作的基本实例,
这也是当初电脑鼠被发明的理由,希望能够借助电脑鼠的创作来进而研究与发明更加复杂的
机械。
图 1.1 电脑鼠走迷宫
一只电脑鼠是具有机电知识整合的基本架构,本身就像是一个智能的机器人。要在指定
的迷宫中比赛,就像是一个人置身于竞赛中,必须要靠本身的判断力、敏捷动作及正确探查
周边环境,来赢得胜利。一般来说,一只电脑鼠需具备有下列三件基本能力:
(1) 拥有稳定且快速的行走能力;
(2) 能正确判断能力;
4
北京交通大学 电脑鼠走迷宫
(3) 记忆路径的能力。
行走能力指的就是电机,当电机收到讯号时,系统必须判断是否能同步行走,遇到转角
时,转弯的角度是否得当,一个好的电机驱动程序,可以减少行走时所需要做的校正时间。
判断能力的关键就在于传感器,它的地位如同人类的双眼,一个好的传感器驱动程序,
可避免一些不必要的错误动作,如撞壁、行走路线的偏移等等。
而记忆能力就像是大脑,它的功能并没有因为看不见而遭到忽视,相反地,它的地位在
整场比赛中是最重要的,他必须把所走过的路都能一一记下来,并将其资料送给系统,让系
统整理出最佳路径以避开不必要的路段。
1.2 电脑鼠起源及发展历史
1.2.1 起源
申龙(C. Shannon),数学家,1916 年出生在美国密执安州。1938 年申龙完成了《继电
器和开关电路的分析》论文。由于布尔代数只有 0 和 1,恰好与二进制数对应,申龙将它运
用于以脉冲方式处理信息的继电器开关,从理论到技术彻底改变了数字电路的设计方向,因
此这篇论文在现代数字计算机史上具有划时代的意义。
1940 年申龙取得了博士学位之后,在 AT&T 贝尔实验室里度过了硕果累累的 15 年。他
用实验证实,完全可以采用继电器元件制造出能够实现布尔代数运算功能的计算机。1948
年申龙又发表了另一篇至今还在闪烁光芒的论文——《通信的数学基础》,从而给自己赢得
了“信息论之父”的桂冠。
1956 年,他参与发起了达特默斯人工智能会议,成为这一新学科的开山鼻祖之一。他
不仅率先把人工智能运用于电脑下棋方面,而且发明了一个能自动穿越迷宫的“电老鼠”,
以此证明计算机可以通过学习提高智能。这就是电脑鼠的起源。
1.2.2 竞赛历史
电脑鼠走迷宫竞赛从 1979 年在美国举办以来,就迅速在世界范围流行开来,1980 年欧
洲引入电脑鼠走迷宫竞赛,第一场比赛在伦敦举行,随后日本就举办了第一届全日本电脑鼠
竞赛。之后台湾引入电脑鼠竞赛,新加坡在 1987 年举办了第一届电脑鼠比赛。现在电脑鼠
比赛发展很好,实力很强的国家和地区有美国,日本,新加坡,台湾,英国,韩国和印度等。
最初,电脑鼠是机械的。1972 年,机械设计杂志发起了一场比赛。在比赛中,仅由捕
鼠器弹簧驱动的机械鼠不停地与其它参赛鼠竞赛,以判断哪个机械鼠能够沿着跑道跑出最长
的距离。冠军是“mousemobile”,它跑了 825.3 英尺。
1977 年,IEEE Spectrum 杂志提出电脑鼠的观念。电脑鼠是一个小型的由微处理器控制
的机器人车辆,在复杂迷宫中具有译码和导航的功能和能力。1977 年 5 月,Spectrum 宣布
首场美国令人震惊的电脑鼠迷宫大赛在 1979 年于纽约举行。在 6000 个参赛作品中仅有 15
个电脑鼠比赛胜出。一些电脑鼠被报道为“大脑智障”(“brain failure”),另外一些则被宣布
5
北京交通大学 电脑鼠走迷宫
为电脑鼠“爆炸”(“blow up”)。当大家都非常关心这个话题时,智能电脑鼠的设计和制作
显然就被证实比想象中的困难得多。
1980 年,在伦敦 Euromicro’80 举办了一场欧洲版的比赛,但是 18 个参赛鼠都没能成
功地完成这个迷宫赛,如图 1.2 所示为当时参加竞赛的电脑鼠 QUESTER。在比赛的观众当中,
有五位来自日本新科学基金会的代表。他们将此比赛规则带回了东京,后来还在 1980 年 11
月举办了首场全日本电脑鼠比赛。
图 1.2 1980 年参赛电脑鼠 QUESTER
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 个小
6
北京交通大学 电脑鼠走迷宫
时的比赛中,表演出来的速度和敏捷程度使得观众叹为观止。新加坡获得第 2 名、第 4 名、
第 5 名和第 7 名的事实出乎了很多人的意外。
1991 年,世界锦标赛在香港举行,这是继 1985 年 Tsukuba 世界锦标赛的又一场最大的
国际盛会:来自 13 个国家的 21 位选手带着 30 个电脑鼠来比赛。
1994 年举行的第十五届全日本电脑鼠竞赛已经具有相当大的规模,超过 80 只电脑鼠参
加了此次比赛,其中有三只来过其他国家(美国、韩国新加坡)的电脑鼠,最终美国麻省理
工学院 David Otten 的电脑鼠 MITEE 7 以 11 秒 81 的成绩夺得冠军。
1996 年举行的第十七届全日本电脑鼠竞赛中,日本电脑鼠 NORIKO-FINAL 以 12"74 的成
绩击败来自美国,韩国和新加坡的电脑鼠夺得冠军。
2006 年,The UK MicroMouse 2006 competition 伯明翰举行,比赛包括 maze solver,
non-contact wall follower, contact wall follower, and drag race events 四类,除了英国的入围者
还有来自新加坡的最优秀电脑鼠参加,最终 COOL Y 以 5.6 秒的成绩夺 maze solver 比赛的冠
军。
2006 年第二十七届全日本电脑鼠竞赛中,来自新加坡南洋理工工院黃明吉教授的电脑
鼠 MIN4a 夺得冠军。
2007 年,由上海市计算机学会主办的 IEEE 标准电脑鼠走迷宫邀请赛(长三角地区)在
上海师范大学举行,有三十多所院校参加,反响强烈。
2008 年,第二十九届全日本电脑鼠竞赛中,来自新加坡的电脑鼠南洋理工工院黃明吉
教授凭借 MIN5 再次夺得冠军。
2008 年 9 月,2008 长三角嵌入式系统创新设计应用竞赛暨 IEEE 标准电脑鼠走迷宫邀请
赛在华东师范大学举行,50 支队伍参加了电脑鼠走迷宫竞赛。比赛的规模和质量都比往年
有很大的提高。
2009 年,在美国 APEC2009 电脑鼠竞赛中新加坡南洋理工工院电脑鼠队以 11.81 秒的综
合计算时间,技压群“鼠”,击退美国麻省理工学院(Massachusetts Institute of Technology,
MIT)等强劲对手三度夺得冠军。台湾龙华科技大学夺得第三名。
电脑鼠走迷宫竞赛自从 1980 年从走出美国以后,已经在全球许多国家发展多年。如今
每年都有许多国际性的比赛在不通的国家举行,有更多的区域性比赛在各个国家举行。以下
简要介绍电脑鼠走迷宫竞赛在各个国家的发展情况。
美国
美国是电脑鼠走迷宫竞赛的发源地,从 1979 年开始每年都有电脑鼠比赛举行。在美国
举办的 APEC 电脑鼠竞赛是当前国际上最有影响力的电脑鼠竞赛。APEC 电脑鼠竞赛是由 IEEE
与 APEC 协作共同主办的国际比赛,每年举办一次。APEC 电脑鼠竞赛以设计复杂、难度大的
迷宫出名。APEC 竞赛的筹办者 David Otten 是电脑鼠界的明星人物,多年从事电脑鼠的研究,
创作了多件优秀作品。多次国际大赛中获得夺得冠军,在 1994 年举办的第十五届全日本电
脑鼠竞赛中就以 11"81 的成绩夺得冠军。如图 1.3 所示为 David Otten 的一件优秀作品 MITTE
7