人工智能电脑鼠搜迷宫实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

北京科技大学实验报告

学院:自动化学院专业:智能科学学技术班级:

姓名:学号:实验日期:2017年11月6日

实验名称:人工智能电脑鼠搜迷宫实验

实验目的:掌握电脑鼠的基本操作及智能搜索算法操作。

实验仪器:KEIL MDK、电脑鼠、J-Link、VS

实验原理:所谓“电脑鼠”,英文名叫做Micromouse,是一种具有人工智能的轮式机器人,是由嵌入式微控制器、传感器和机电运动部件构成的一种智能行走装置的俗称。当电脑鼠放入起点,按下启动键之后,他就必须自行决定搜索法则并且在迷宫中前进,转弯,记忆迷宫墙壁资料,计算最短路径,搜索终点等功能。电脑鼠更结合了机械、电机、电子、控制、光学、程序设计和人工智能等多方面的科技知识。本实验中,通过红外传感器检测电脑鼠所处位置状态,通过智能算法保存地图并实现地图的搜索,通过pid等控制算法控制电机,达到电脑鼠搜索迷宫并计算最短路径等功能。

实验内容与步骤:

实验内容

1)KEIL MDK的安装

2)电脑鼠硬件的检查及调整

3)智能搜索算法的编写

4)算法的调试与优化

5)实验结果

实验步骤

(一)KEIL MDK的安装

1双击运行Ke i l MDK 4.12 安装程序,出现软件安装界面,如图所示:

2点击Next,勾选安装协议;

3选择安装路径,建议安装在C 盘,运行速度快些

4 填入用户信息,个人用户随意填入即可;

点击Next 就进入实质的安装过程了,Wait for a Whle…

5点击Finish,Keil MDK 就完成安装了,可以发现桌面上生成了名为“Keil uVis ion4”的可执行文件快捷方式。

(二)检查和调整电脑鼠的硬件

1.电机检查:在电脑鼠程序文件中找到Motor.c文件,直接为两侧电机赋相同的速度值,用G-link连接电脑鼠和电脑,传入程序,打开电脑鼠放在地面上,如果电脑鼠能正常直线行进,即证明两侧电机正常工作。如果有电机有问题,拆下原来的电机换新的再次进行电机检查即可。

2.传感器检查:用G-link连接电脑鼠和电脑,打开传感器查询模式,用手逐渐靠近每一个传感器,如果相应的传感器值由小变大,那么此传感器工作正常。且每个传感器在手指位于相同距离时,回传的传感器值近似相等即证明传感器都正常工作,如果有传感器有问题,拆下原来的传感器换新的再次进行传感器检查即可。

传感器回传值查询界面

(三)智能搜索算法的编写

在含底层驱动的程序的基础上加上算法,实现智能搜索,把电脑鼠变成一只真正的智能的老鼠。

1.常见的算法形式

右手法则

电脑鼠在前进的方向上存在两条和两条以上的支路时,优先考虑向右转,其次向前,最后才考虑向左。

左手法则

与右手法则相似,只不过是优先考虑左转,其次是向前,最后才考虑向右。

右手法则示意图左手法则示意图

求心法则

求心法则就是每当电脑鼠有至少两个方向可以选择时,则优先转向离中心点最近的方向前进。

如何确定哪个方向更能接近目标呢?如图5-4 所示,把迷宫可以分为四个对等的区域(1、2、3、4)。可以观察出,在区域 1 中,电脑鼠向右和向上运动更能接近中心。在区域 2 中电脑鼠向左和向上更能接近中心。同样还可以很容易观察出区域3 和区域 4 最容易接近中心的方向。

如果电脑鼠可供选择前进的方向包含了两个都有可能是离迷宫中心最近的迷宫分区示意求心法则示意图

方向,优先选择可以直线前进的反向,其次选择只用转90度的方向前进。

如果可前进的方向都是远离中心的方向时,优先选择直线运行方向,其次选择转弯90度的方向。其搜索示意图如图所示。

寻找最优路径的算法

等高图算法

首先开辟一块8×8的二维数组空间(MapStep[8][8]),其中每一个元素代表迷宫中的一个方格,用以计算后储存各方格至起点的最短路径步数(所谓步数即为路径中经过的方格数)。

当起点坐标处标识为1 时,可以直接达到的相邻方格均为2,再远的方格的等高值依次递增。这样距离越远的地方等高值越大。

以此类推,直到当前坐标没有可前进方向,且堆栈中没有未处理完的分岔点时结束。最终可以得到等高图。等高图的数字即为步数,也就代表其相对应的位置,由于电脑鼠转弯要浪费一定时间,为了寻找一条最优的路径(也就是能最快达到的路径),可以给转弯点加权。可以假设权值为1。即经过转弯前进的坐标等高值是由当前等高值加 2 得到的。具体的加权值可以根据自己电脑鼠转弯性能来决定。

冲刺算法

在搜索方案上,当电脑鼠处于搜索阶段时,电脑鼠速度较慢,以便准确获取迷宫信息;处于冲刺阶段时,电脑鼠已知迷宫信息,所以速度很快。为了保险起见,本设计的搜索方案是:首先慢速搜索到终点,然后沿已走路径返回起点,再沿已走路径快速冲刺到终点,到此已经拥有比赛成绩。电脑鼠在终点处更换搜索法则,进行第二次搜索,从终点搜索到起点,此时已经寻找到最优路径,最后电脑鼠按最优路径冲刺,以求刷新之前的成绩。

2.算法设计

当电脑鼠达到一方格坐标时,应根据传感器检测结果记录下当前方格的墙壁资料,为了方便管理和节省存储空间,每一个字节变量的低四位分别用来存储一个方格四周的墙壁资料,迷宫共有8×8个方格,所以可以定义一个8×8的二维数组变量来保存整个迷宫墙壁资料。

迷宫墙壁资料全部初始化为0,凡是走过的迷宫格至少有一方没有墙壁,即墙壁资料不为0,。这样就可以通过单元格存储的墙壁资料是否为0来确定该单元格是否曾搜索过。

迷宫搜索方法:在没有预知迷宫路径的情况下,电脑鼠必须要先探索迷宫中的所有单元格,直到抵达终点为止。做这个处理的电脑鼠要随时知道自己的位置及姿势,同时要记录下所有访问过的方块四周是否有墙壁。在搜索过程中,还要尽量避免重复搜索已经搜索过的地方。

转弯也是电脑鼠运行时必不可少一部分,同时转弯也分为静止转弯和行进中转弯。静止转弯要求电脑鼠首先要停止,主要用在电脑鼠进行搜索中,这时要求电脑鼠要绝对的稳定,所以采用静止转弯比较好。行进中转弯的特点是消除了静止转弯的要求电脑鼠停止的弊端,可以节省一些时间,主要用在电脑鼠进行冲刺时,这时要求电脑鼠要以竟可能短的时间从起点到达终点,所以行进中转弯可以节省不少的时间。

静止转弯时,对两个电机设置走相同的步数,如当要转左转90°时,设置左电机向后走40步,右电机向前走40步。通过两个电机走的方位不同,来实现静止转弯,但静止转弯的缺点就是,在转弯前首先要让电机停止,然后再对电机的要走的步数进行赋值,这样会浪费一点时间。

行进中转弯时,让一个轮子停止,一个轮子进行运转来实现。如当要左转90°时,设置左电机停止转动,右电机转动80步。与静止转弯区别开来的是,电机的步数在其他的函数中赋值好了,在转弯函数中只要一开始将一个电机停止转动就可以了,而不用一开始就将两个电机都停止,然后对电机的步数进行赋值,这样的话,就可以节省一些不必要的时间。

利用第一种方式虽然可以缩短探索迷宫所需的时间,但是不一定能够得到整个迷宫的地图资料。若找到的路不是迷宫的最优路径,这将会影响电脑鼠最后冲

相关文档
最新文档