电子老鼠走迷宫 分支限界法
- 格式:doc
- 大小:25.50 KB
- 文档页数:3
迷宫机器人竞赛规则一、规则(一)场地尺寸及环境要求1、迷宫场地由8×8个边长为180mm×180mm的正方形单元组成(见下图)。
2、用于隔开每个单元格的围板称为墙壁,迷宫场地的墙壁高50mm,厚12mm,因此两堵墙所构成的通道其实际宽度为168mm。
(二)参赛对象赛场:竞赛场地环境为冷光源、低照度、无磁场干扰。
但由于一般赛场的不确定因素较多,例如,场地表面可能有纹路和不平整,光照条件有变化等。
参赛队在调试机器人时应考虑各种应对措施。
安排:比赛分为团体赛和个人赛。
每个项目均有2次机会,每次机器人的运行时间不得超过4分钟,运行时间从迷宫机器人放入场地第一次被激活开始计算。
竞赛顺序:参赛队通过抽签参加比赛的先后次序。
竞赛顺序一旦排好不再改变;所有参赛队必须按照规定的顺序进行比赛;在每一项比赛全部结束后再开始下一项的比赛。
赛前准备:参赛队员从进入比赛时间起,到该项比赛结束,参赛队员不可再对迷宫机器人进行修改程序的操作。
否则将被取消比赛资格。
(三)比赛规则1、每个参赛队机器人编程调试完成后,在场地上只有4分钟的运行时间。
在该时间段内,如果机器人完成任务失败,可以由选手将机器人拿回到起点重新开始运行,此过程不能暂停,也不能更换电池和修理、调试机器人。
2、迷宫机器人第一次从起点出发开始直到按规定到达终点,且该期间无参赛队员对迷宫机器人的触碰,则称为一次“成功运行”。
每位参赛队员在每个项目均有两次机会,取运行最快的一次时间作为成绩。
3、迷宫机器人启动运行后出现故障,允许参赛队员将迷宫机器人从迷宫取出,放到起点重新启动运行,这称为“碰触”迷宫机器人。
但每轮比赛中,每个参赛队的成员“碰触”迷宫机器人的次数不得多于3次。
(四)评分标准1、任务要求团体赛:(1)从A1(A2)点走到B1(B2)点,记录时间;(2)从A1(A2)点走到C1(C2)点,记录时间;个人赛:(3)从A1点走到B2点或是从A2走到B1点,记录时间;2、评分标准(1)完成任务:选手完成了每项任务,则选取该项任务中用时最短的一次作为该轮比赛的成绩,参赛选手每碰触机器人1次,在该项任务中,该参赛队的最终成绩将增加10秒。
项目编号:31SZDYKC-090601 全国大学生电子设计竞赛项目名称:电脑鼠走迷宫学生班级:1104班学生姓名:王忆文所在系(部):通信工程系指导教师:摘要“电脑鼠”是使用嵌入式微控制器、传感器和机电运动部件构成的一种微型机器人,可以在“迷宫”中自动记忆和选择路径,快速地达到所设定的目的地。
电脑鼠走迷宫竞赛是一项具有一定难度、富有挑战性和趣味性的比赛。
能力。
通过系统分析、硬件设计、软件设计、整合电路设计、汇编语言、C语言专业知识解决问题的综合应用能力,激发我们对电脑鼠的研究兴趣。
创新点是提出了对电脑鼠电源电路、传感器电路的改进方案。
给出了电机控制算法、用于纠正姿态的算法、传感器驱动算法、连续转弯算法、迷宫信息采集算法以及迷宫搜索与迷宫最短路径算法等算法模块。
关键词:嵌入式系统,电脑鼠,智能算法ABSTRACT"Computer mouse" is the use of embedded microcontrollers, sensors and electromechanical moving parts consisting of a micro-robot maze memory and automatically select the path to reach the set destination. Computer Mouse Maze Competition is a certain degree of difficulty, challenging and fun game.completion of the research program circuit board testing, knowledge and technical skills in the school curriculum learning algorithm, data query and retrieval, project management, integration cultivate awareness of scientific and technological innovation and hands-on design capabilities. System analysis, hardware design, software design, integrated circuit design, assembly language, C language application of knowledge in the development of SCM culture integrated application skills, stimulate our interest in the study of computer mouse use our expertise to solve the problem.The innovation of the computer mouse power circuit, sensor circuit improvement program. Motor control algorithm, the algorithm used to correct posture, the sensor-driven algorithm, continuous turning algorithm, the maze information collection algorithms, and maze search maze shortest path algorithm, algorithm module.Keywords:Embedded System,Micromouse,Intellegent Algorithm目录摘要 (2)第一章前言 (2)1.1项目背景 (2)1.2项目介绍第三章电脑鼠硬件与软件 (2)第二章电脑鼠硬件及软件 (4)2.1电脑鼠的硬件 (4)2.1.1 电脑鼠硬件组成 (4)2.1.2电脑鼠基本动作 (6)2.2电脑鼠软件 (7)2.2.1等高图制作模块 (9)2.2.2冲刺模块 (10)2.2.3转弯模块 (10)2.2.4搜索模块 (11)2.2.5迷宫地图相对方向与绝对方向的建立 (11)2.2.6墙壁资料存储 (13)2.2.7电脑鼠搜索策略第四章问题总结及改进 (14)第三章问题总结及改进 (15)总结 (19)参考文献 (20)第一章前言所谓“电脑鼠”,英文名叫做MicroMouse,是使用嵌入式微控制器、传感器和机电运动部件构成的一种智能行走装置的俗称。
IEEE电脑鼠走迷宫竞赛规则迷宫规范迷宫由16×16个﹑18cm×18cm大小的正方形单元所组成。
迷宫的隔墙高5cm,厚1.2cm,因此两个隔墙所构成的通道的实际距离为16.8cm。
隔墙将整个迷宫封闭。
迷宫隔墙的侧面为白色,顶部为红色。
迷宫的地面为木质,使用油漆漆成黑色。
隔墙侧面和顶部的涂料能够反射红外线,地板的涂料则能够吸收红外线。
迷宫的起始单元可选设在迷宫四个角落之中的任何一个。
起始单元必须三面有隔墙,只留一个出口。
例如,如果没有隔墙的出口端为“北”时,那么迷宫的外墙就构成位于“西”和“南”的隔墙。
电脑鼠竞赛的终点设在迷宫中央,由四个的正方形单元构成。
在每个单元的四角可以插上一个小立柱,其截面为正方形。
立柱长1.2cm,宽1.2cm,高5cm。
小立柱所处的位置称为“格点”。
除了终点区域的格点外,每个格点至少要与一面隔墙相接触。
迷宫制作的尺寸精度误差应不大于5%,或小于2cm。
迷宫地板的接缝不能大于0.5mm,接合点的坡度变化不超过4度。
隔墙和之间的空隙不大于1mm。
电脑鼠规范电脑鼠必须自成独立系统,不能使用可燃物为能源。
电脑鼠的长和宽限定在25cm×25cm。
每次运行中电脑鼠几何尺寸的变化不能超过25cm×25cm。
对电脑鼠的高度没有限制。
电脑鼠穿越迷宫时不能在其身后留下任何东西。
电脑鼠不能跳越、攀爬、钻挖和损毁迷宫隔墙。
竞赛规则1.电脑鼠的基本功能是从起点开始走到终点,这个过程称为一次“运行”,所花费的时间称为“运行时间”。
从终点回到起点所花费的时间不计算在运行时间内。
从电脑鼠的第一次激活到每次运行开始,这段期间所花费的时间称为“迷宫时间”。
如果电脑鼠在比赛时需要手动辅助,这个动作称为“碰触”。
竞赛使用这三个参数,从速度﹑求解迷宫的效率和电脑鼠的可靠性三个方面来进行评分。
2.电脑鼠的得分是通过计算每次运行的“排障时间”来衡量的,排障时间越短越好。
排障时间是这样计算的:将迷宫时间乘以1/30,再加上运行时间,如果这次运行结束以后电脑鼠没有被碰触过,那么还要再减去10秒的奖励时间,这样得到的就是排障时间。
一种电脑鼠走迷宫的算法电脑鼠走迷宫的算法1探测策略电脑鼠走迷宫可以采用全迷宫探索策略,即将迷宫的所有单元均搜索一次,从中找出最佳的行走路径。
这种策略需要有足够的时间或探测次数,但在IEEE竞赛规则中每场竞赛只有15分钟的时间,因此是不可能的。
另一种方法是部分迷宫探索策略,即在有限的时间或探测次数下,只探测迷宫的一部分,从中找出次最佳的路径,显然只能采用这种策略。
电脑鼠在一巷道内行走,如果最后无路可走,则该巷为死巷。
电脑鼠在任一单元内,可能的行走方向最多只有三个(前、左、右),如果有二个或二个以上的可能行走方向,称为交叉,遇有交叉时,由于有多个可以行走的方向,在行走方向的选择上,可有下面的几种选择法则:•右手法则:遇有交叉时,以右边为优先的前进方向,然后是直线方向、左边方向。
•左手法则:遇有交叉时,以左边为优先的前进方向,然后是直线方向、右边方向。
•中左法则:遇有交叉时,以直线为优先的前进方向,然后是左边方向、右边方向。
与此类似的还有中右法则。
•乱数法则:遇有交叉时,取随机值作为前进方向。
•向心法则:由于终点在迷宫的中心,遇有交叉时,以向迷宫中心的方向为优先的前进方向。
2标记为了记忆迷宫的详细信息,需要对迷宫单元的位置进行线路标记。
全迷宫共有16×16个单元组成,可采用二维坐标方式标记,即用每个单元的XY坐标表示,如起点可标记为(0,0),终点为(7,7)。
此外,还需要对迷宫单元的可行进方向进行标记,可采用绝对方位或相对方位二种方式。
绝对方位:这是一种与电脑鼠行进方向无关的标记方式,以一个四位的二进制数,分别表示“东”﹑“西”﹑“南”和“北”四个方向。
以1表示允许行进(无墙壁),0表示不允许行进(有墙壁)。
相对方位:这是一种与电脑鼠行进方向有关的标记方式,以一个三位的二进制数即可实现标记,分别表示“前”“左”“右”,以1表示允许(无墙壁),0表示不允许(有墙壁)。
3阻断在电脑鼠试跑过程中或在最后冲刺时,需要对部分路径进行“阻断”,即在发现某条路径是死路(只有入口而无出口)时,在该路径的入口处(一般是交叉点)设置标记,即将入口的线路标记由1改为0。
IEEE电脑鼠路径选择及死区决策一、引言(一)IEEE电脑鼠走迷宫竞赛背景嵌入式系统融合了微电子、计算机软\硬件、通信和电子工程等多种技术,广泛应用于航空、航天、仪器仪表、工业控制和3C(Computer、Communication、Consumer)等领域,是科技集成创新的主要手段。
为了培养科技创性意识和动手能力,全国各地在近几年纷纷举办“电脑鼠走迷宫“邀请赛。
电脑鼠英文名叫做MicroMouse,是使用嵌入式微控制器、传感器和机电运动部件构成的一种智能行走装置(微型机器人)。
电脑鼠要在指定的迷宫中比赛,在迷宫中探索以找出通往终点的路径,并随时掌握自身的位置信息,准确获取墙壁信息并做记录,最终依靠记忆找出走出迷宫的最佳路径,以最短的时间解开迷宫,赢得比赛。
国际电工和电子工程学会(IEEE)每年都要举办一次国际性的电脑鼠走迷宫竞赛,自举办以来参加国踊跃,为此许多大学还开设了“电脑鼠原理和制作”选修课程。
2007 年和2008 年,上海市计算机学会率先在国内主办了两次IEEE 标准电脑鼠走迷宫邀请赛(长三角地区),有三十多所院校参加。
2009 年广州致远电子有限公司赞助了全国“IEEE 标准电脑鼠走迷宫”邀请赛,共邀请全国9 个赛区的52所高校参赛,反响强烈。
图1 所示为电脑鼠图2 所示为比赛迷宫本文主要以MicroMouse615为平台,介绍电脑鼠参赛的实现,对有些方面的基本算法提出改进,并在此基础上加上了一些自己的算法思想,比如说:用数学模型的方法提出了用改进后的数字PID算法对行进中的电脑鼠进行状态调整,进入死区的电脑鼠的人工智能决策,参赛时迷宫搜索的易于实现的算法以及植入操作系统的思想。
(二)竞赛平台简介MicroMouse615平台包含了微控制器、电机、红外线传感器、控制平台。
其中最重要的微控制器是LM3S615微控制器,如下图3为LM3S615的系统结构图。
其中内核用的是ARM Cortex-M3,外围还有存储器、系统时钟、定时器、输入输出端口、数模转换器等等。
走迷宫电脑鼠的算法分析与研究收稿日期:2010-03-30;修订日期:2010-11-08作者简介:夏炎(1984-),男,南京人,硕士研究生,研究方向:基于ARM 的嵌入式系统的设计与开发。
夏炎(南京工业大学电子与信息工程学院,南京210013)摘要:电脑鼠的灵活性和智能程度不但取决于硬件的结构和性能,还取决于软件设计的好坏,越是智能的电脑鼠,其软件设计就越不简单。
对走迷宫电脑鼠的算法做了总结和比较,并对各算法的优缺点进行了阐述。
关键词:电脑鼠;迷宫;算法中图分类号:TP18文献标识码:A 文章编号:1008-8725(2011)01-0194-03Analyzing and Researching on Maze-runningMicromouse AlgorithmXIA Yan(School of Electronics and Information Engineering,Nanjing University of Technology,Nanjing 210013,China )Abstract:The flexibility and intelligence degree of Micromouse depended on not only structure and properties of hardware,but also whether software design was good or bad.The more intelligent the Micromouse was,the more difficult software design was.This paper concluded and compared the algorithms of maze -running micromouse,and discribed advantages and disadvantages of different algorithms.Key words:Micromouse;maze;algorithm0引言人类在科技的发展史上,一直在尝试着想要创造出一个具有肢体、感官、脑力等综合一体的智能机器人,而电脑鼠就是一个能够用来诠释肢体、感官及脑力综合工作的基本实例,这也是当初电脑鼠被发明的理由,希望能够借助电脑鼠的创作来进而研究与发明更加复杂的机械。
一、实习问题:电子老鼠闯迷宫二、问题描述:有一只电子老鼠被困在如下图所示的迷宫中。
这是一个7*7单元的正方形迷宫,黑色部分表示建筑物,白色部分是路。
电子老鼠可以在路上向上、下、左、右行走,每一步走一个格子。
现给定一个起点start和一个终点finish,求出电子老鼠最少要几步从起点走到终点。
三、问题分析:该问题可用分支限界法来解决。
迷宫问题的解空间是一个图。
解此问题的队列式分支限界法从start开始将它作为第一个扩展结点。
与该扩展结点相邻并且可达的方格成为可行结点被加入到活结点队列中,并且将这些方格标记为1,即从起始方格start到这些方格的距离为1。
接着,算法从活结点队列中取出队首结点作为下一个扩展结点,并将与当前扩展结点相邻且未标记过的方格标记为2,并存入活结点队列。
这个过程一直继续到算发搜索到目标方格finish或活结点队列为空时为止。
在实现算法时,首先定义一个表示迷宫上方格位置的类Position,它的两个私用成员row 和col分别表示方格所在的行和列。
在迷宫的任何一个方格处,电子老鼠可沿右、下、左、上4个方向进行。
沿这4个方向的移动分别记为移动哦0,1,2,3。
在表中,offset[i].row和在实现上述算法时,用二维数组grid表示所给的方格阵列。
初始时,grid[i][j]=0,表示该方格允许走;而grid[i][j]=1表示该方格被封锁,不允许走。
为了便于处理方格边界的情况,算法在所给方格阵列四周设置一道“围墙”,即增设标记为“1”的附加方格。
算法开始时测试初始方格与目标方格是否相同。
如果这两个方格相同,则不必计算,直接放回起始位置标记为2。
由于数字0和1用于表示方格的开放或封锁状态,所以在表示距离时不用这两个数字,因而将距离的值都加2。
实际距离应为标记距离减2。
算法从起始位置start开始,标记所有标记距离为3的方格并存入活结点队列,然后依次标记所有标记距离为4,5…..的方格,直至到达目标方格finish或活结点队列为空时为止。
北京科技大学实验报告学院:自动化专业:智能科学与技术班级:智能1501姓名:卢静怡学号:41523404 实验日期:2017年11 月8 日实验名称:人工智能电脑鼠搜迷宫实验实验目的:掌握电脑鼠的基本操作及智能搜索算法操作。
实验仪器:KEIL MDK、电脑鼠、J-Link、VS实验原理:所谓“电脑鼠”,英文名叫做Micromouse,是一种具有人工智能的轮式机器人,是由嵌入式微控制器、传感器和机电运动部件构成的一种智能行走装置的俗称。
当电脑鼠放入起点,按下启动键之后,他就必须自行决定搜索法则并且在迷宫中前进,转弯,记忆迷宫墙壁资料,计算最短路径,搜索终点等功能。
电脑鼠更结合了机械、电机、电子、控制、光学、程序设计和人工智能等多方面的科技知识。
本实验中,通过红外传感器检测电脑鼠所处位置状态,通过智能算法保存地图并实现地图的搜索,通过pid等控制算法控制电机,达到电脑鼠搜索迷宫并计算最短路径等功能。
实验内容与步骤:内容1)KEIL MDK的安装2)电脑鼠硬件的检查及调整3)智能搜索算法的编写4)算法的调试与优化5)实验结果步骤(一)KEIL MDK的安装按照实验指导书上的步骤安装,一步一步安装成功KEIL MDK uVision5 (二)检查和调整电脑鼠的硬件1.电机检查:我们原始的电脑鼠下载好程序之后,开机即可试探性运动。
故判断,电机无故障。
2.传感器检查:我们原始的电脑鼠在初跑时总是会对墙壁不感应,如果用手挡住传感器周围的光线后放开,那么电脑鼠会产生一个相应动作。
分析是原代码中接受传感器信号的参数不合适的原因。
(三)智能搜索算法的编写我们组结合了很多同学的经验,最终找到了影响电脑鼠运动的核心参数。
并且修正了一个反应弧长的设定,使得后来电脑鼠试跑非常成功。
1.查资料——常见的算法形式选择曼哈顿距离作为预测函数h(n),整体的框架代码如下:2.算法设计在本次实验中,使用的是机械鼠优先向左移动的,即深度优先算法。
電腦鼠走迷宮比賽規則一、電腦鼠的規定1.電腦鼠必須以紅外線光感測器偵測迷宮路徑行走;不得以機械式的感測裝置(包含導輪)碰觸迷宮路徑的牆板行走。
2.電腦鼠必須為自立型,不得以無線電波遙控。
3.電腦鼠不得躍過、攀登、損傷或破壞迷宮壁面。
二、迷宮的規定1.電腦鼠迷宮,如[圖一]所示,單位方塊壁面的側面為白色,頂部為紅色,平面為黑色。
2.電腦鼠迷宮以一定大小的正方形單位方塊構成,整個迷宮的外圍也是正方形。
所有的迷宮方塊至少有一個方向被壁面擋住。
某些迷宮的路徑寬度為兩個迷宮方塊的寬度,如黃色部分所示。
3.電腦鼠迷宮的單位方塊為18cmX18cm,整個迷宮由16X16個迷宮方塊組成,面積為288cmX288cm。
電腦鼠迷宮的外圍全部相連接起來,壁面的高度為5cm,厚度為1.2cm。
4.迷宮是以一般的精度製作,有可能產生某種程度上的尺寸誤差(約1mm)。
三、比賽規則1.參加隊伍於比賽前由各隊選手(或選手代表)抽籤決定出賽次序。
每隊限一個操控手下場比賽。
2.比賽開始前,所有參賽的電腦鼠均須以大會提供的塑膠袋封起來,貼上裁判簽名的封條。
輪到下場比賽的隊伍,操控手須在裁判示意下打開塑膠袋,操控電腦鼠下場比賽。
當裁判發出哨聲後,操控手即可啟動電腦鼠。
3.電腦鼠由迷宮的一角出發,以達到終點(在迷宮的中心)時間短者為第一名,餘依次類推。
4.電腦鼠最多可擁有6分鐘,比賽期間最多可行進6次,以這段時間內最快到達迷宮終點的時間為比賽成績。
如在比賽時間內無法達到終點者,以比賽時間到時,電腦鼠距離終點的距離為比賽成績,此項距離越短者成績越高。
5.電腦鼠在比賽中碰觸迷宮牆壁達到3次或一次碰觸超過3秒卡住者即須退場,其成績依未到達終點者之方法計算,以退場時之位置為行走距離的量測點。
6.操控手不得在迷宮路徑公開之後,把迷宮的路徑資料輸入電腦鼠,即比賽中不得從事程式的置入(loading)及ROM的更換。
7.比賽場所的照明、溫度、濕度…等,均為普通的環境程度,操控手不得要求調節照明程度。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define maxs 13
#define maxsize 100000
int length=0;
int visit[20][20];
char mg[maxs][maxs];
typedef struct queue //huojiedian
{
int rear;
int top;
int base[maxsize][2];//0==x 1==y
} queue;
void enqueue(queue *a,int m,int n) //top wuyuansu {
if((a->top+1)%maxsize!=a->rear)
{
a->base[a->top][0]=m;
a->base[a->top][1]=n;
a->top=(a->top+1)%maxsize;
}
}
void dequeue(queue *a,int *x,int *y)
{
if(a->rear!=a->top)
{
*x=a->base[a->rear][0];
*y=a->base[a->rear][1];
a->rear=(a->rear+1)%maxsize;
}
}
int empty(queue *a)
{
if(a->rear==a->top)
return 0;
return 1;
}
int search(int x,int y,int m,int n,queue *a,char mg[13][13])
{
while(1)
{
if(empty(a))
{
dequeue(a,&x,&y);
if(x==0&&y==0)
{
enqueue(a,0,0);
length++;
dequeue(a,&x,&y);
}
visit[x][y]=1;
if(x==m&&y==n)
return 0;
if(mg[x-1][y]!='X'&&x-1>0&&visit[x-1][y]==0) //UP
enqueue(a,x-1,y);
if(mg[x][y+1]!='X'&&y+1<maxs&&visit[x][y+1]==0) //RIGHT
enqueue(a,x,y+1);
if(mg[x][y-1]!='X'&&y-1>0&&visit[x][y-1]==0) //LEFT
enqueue(a,x,y-1);
if(mg[x+1][y]!='X'&&x+1<maxs&&visit[x+1][y]==0) //DOWN enqueue(a,x+1,y);
}
}
}
int main()
{
queue a;
a.rear=0;
a.top=0;
int i,j,m,n,x,y;
for(i=0; i<20; i++)
{
for(j=0; j<20; j++)
visit[i][j]=0;
}
scanf("%d%d%d%d",&x,&y,&m,&n);
enqueue(&a,x,y);
enqueue(&a,0,0);
getchar();
for(i=1; i<maxs; i++)
{
for(j=1; j<maxs; j++)
{
scanf("%c",&mg[i][j]);
}
getchar();
}
search(x,y,m,n,&a,mg);
printf("%d\n",length);
return 0;
}。