当前位置:文档之家› 人工智能电脑鼠搜迷宫实验

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

北京科技大学实验报告学院:自动化学院专业:智能科学学技术班级:姓名:学号:实验日期: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步。

与静止转弯区别开来的是,电机的步数在其他的函数中赋值好了,在转弯函数中只要一开始将一个电机停止转动就可以了,而不用一开始就将两个电机都停止,然后对电机的步数进行赋值,这样的话,就可以节省一些不必要的时间。

利用第一种方式虽然可以缩短探索迷宫所需的时间,但是不一定能够得到整个迷宫的地图资料。

若找到的路不是迷宫的最优路径,这将会影响电脑鼠最后冲刺的时间。

冲刺函数的实现是建立在等高图已经建立好的基础上的。

当电脑鼠要进行冲刺的时候,调用冲刺函数时,首先会调用等高图制作函数将等高图制作好。

然后该函数通过等高图和墙壁信息来进行电脑鼠的行进控制。

当然,我们认为电脑鼠在走直道的时候应该会比走弯道的时候,来的更快一点,所以我们没有进行特殊的加权,直接是走直道的。

电脑鼠从起点开始,一直利用等高图信息和墙壁信息进行一格一格的对比,只有当这一格在电脑鼠绝对方向上时,这一格才算记录到进行直道冲刺,同时直道格数加一。

当遇到电脑鼠要转弯的时候,已的步数记录下来了,接下来直接调用行进函数,控制电脑鼠走完记录好的步数后,即走到电脑鼠要转弯的地方后,再进行转弯,然后接着继续进行上一步的动作。

3.算法优化寻路是小车在运行的整个过程中进行的第一个操作,目的是让小车在迷宫中探索,同时记录已经走过的路径信息,直到小车找到终点就可以结束探索寻路的过程。

当然也可以在找到终点后继续探索整个迷宫,尽可能多地收集迷宫的信息,以便后期进行最短路径分析计算时能够运用更多的信息,找到更佳的最短路径,得到更好的成绩。

寻路算法的2个关键点,一是在岔路口的转弯策略以及小车运行的稳定性。

转弯策略决定了从小车开始运行到找到终点的时间长短。

良好的转弯寻路策略可以大量减少不必要的寻路时间。

小车运行的稳定性对于寻路过程也十分重要,所以小车的行进和转弯的过程一定要在机械和软件方面都调节到最稳定的状态。

二是正确使用堆栈,整个选路算法的运行过程中会大量地使用堆栈的人栈和出栈操作,如果对人栈和出栈的条件判断不正确,有可能造成数据紊乱,最好使用调试版上的数码管实时显示堆栈栈顶的数据,发现有错误就在程序中寻找错误,直到整个寻路算法稳定为止。

行进过程中:电脑鼠行进速度决定了迷宫搜索以及冲刺的时间,但是如果速度过快,电脑鼠容易在转弯处碰壁,影响其稳定性。

为了兼顾速度和稳定,通过反复实验,对搜索速度和直线冲刺速度做了调整。

转弯过程中:电脑鼠转弯包括原地转弯和前进中转弯2种方法。

原地转弯就是电脑鼠先停在原地,然后一个电机正转另一个电机反转来实现原地转弯。

前进中转弯,就是一个电机快转,另一个慢转,通过两轮速度差来实现前进中转弯。

由于原地转弯在转弯前需要先停止,所以前进中转弯相对于原地转弯效率更高,本文也选择此方法用于电脑鼠在迷宫中转弯。

连续转弯的过程:要求电脑鼠只小迷宫方格内完成转弯动作。

为了保持电脑鼠在连续转弯时具有较高的速度,本文通过增加最大转弯半径的方法来提升连续转弯速度。

实验数据:1)传感器阈值2)电机速度3)步长实验数据处理:调整实验数据,使电脑鼠能够正常搜索迷宫。

实验结果与分析:实验结果:经过我们小组的努力和尝试,电脑鼠可以顺利完成走迷宫任务。

实验分析:这学期我们学习人工智能这门课程相配电脑鼠实验。

首先我们小组互相帮助,很快完成了软件的安装,一款新软件对我们来说蛮陌生的,不知道怎么样进行调试,不知道该调试什么。

我们小组有一个同学参加了智能车的比赛,有一些相应的经验,我们先打开 watch Windows 界面,由远及近对每一个传感器进行判断,想要确保其无硬件问题。

通过实验我们发现,由远及近sensor的值会越来越大,确立都无误后,我们进行传感器的值调试。

传入测试程序后发现效果还不错,可到下次课在进行调试时,不知道怎么了,小鼠无法跑。

后来把小鼠放到3面围挡的墙处,进行调试。

总之,通过小组的合作,小鼠基本已顺利完成了走迷宫任务,让我对算法有了更深的理解,对调试的方法也有了一些经验和技巧。

相关主题