迷宫探路智能化机器人的研究与应用
摘 要:机器人在随机的复杂的多级迷宫里自行找到出路,需要始终坚持一个“靠右原则”,利用智能机器人AS-UII型号,加上扩展配件:红外接收扩展卡,数字指南针,红外测距卡,地面灰度检测卡 这些扩展的性能完成机器人对周围环境信息的获得,通过其微处理系统对信息数据进行处理,执行相应的任务,能够准确分析迷宫出路,快速自行走出人类智力的效率无法快速分析的多极复杂迷宫。
关键词:迷宫节点,靠右法则,校正,记录节点,最短路径
前 言:
迷宫本是一种智力游戏,但当其运用于现实生活中时,又会带来许多军事,科技,以及经济等方面的价值。军事方面诸葛亮的“八阵图”以及数学方面的“中国邮递员问题”,其基本结构均归于迷宫,因此,深入认识迷宫问题,对选择最优化路径,提高工作效率节省消耗等方面都具有重大的价值。在计算机未发明之前,人类无法同时处理大量数据,尤其在记忆功能方面,因此,在当前计算机技术高度发达的情况下,充分利用机器人的数据处理能力,用其来代替人类去探索迷宫,将有很可行的实用价值。
众所周知,迷宫,其实是现实中错综复杂地域环境的一种在实验室中的虚拟。此类机器人的扩展可用在军事(比如敌方领地的探测等),室内火灾现场的救人和逃离,复杂管道中的各种工作,古文明遗迹的机器人探索(比如金字塔中迷宫的探索和考察,以及危险环境中的机器人探路等),野外考察的预先探路和路径开辟,空间机器人探索等多方面领域。亦可附加其他各种功能以用于不同领域。是一切现代高级机器人所应该具备的最基本的新型功能和素质。
一、研 究 过 程
(一)实现目标
通过对机器人的扩展组装、命令程序的构思和编写,以及各参数的调试后,将机器人自 任何 迷宫的入口放入,机器人可根据对环境的探测,分析获得数据,执行相应的命令,最终能够自行找到通向出口的路径走出迷宫;并在此基础上,构思总结出对这类机器人的功能的拓展方案,以及这些方案的算法理论。
(二)研究材料与仪器性能介绍
1.能力风暴智能机器人AS-UII 型号性能指标
外形尺寸: 直径φ=220 mm 高H=150 mm
质量: ≈1.1 Kg
单片机工作频率:2MHz
电池供电范围: 5.5—12 V
串口速度:9600 bps
IR振荡频率:37.9KHZ
红外检测距离:>30cm
编码器分辨率:33脉冲/转
轮胎直径:65mm
电池:6V,1200mAh镍氢电池
2.扩展配件
红外接收扩展卡,数字指南针,红外测距卡,地面灰度检测卡
3.迷宫
(1)迷宫类型:直角弯;跑道宽度处处相同(本实验中均为30cm);为随机建成;一入口和一出口;存在出路。
(2)本实验设置:实验地面为瓷砖,出口外地面贴一张黑纸。
(三)理论思路
1.数学模型:树的遍历
本项目的基本数学模型,就是数学图论中的树的遍历。
从理论和实践两个方面来说,都可以把一个迷宫,抽象为图论中的一棵树其结点的度为2或者3。其中迷宫中的每一条路径,都是相应的树的一个分支。
而对迷宫的探测,就是对树的一个遍历的过程。
在我们这个项目里,所采用的靠右走的方法,对应于树的先序遍历。
从上面的对应关系,可以看出,迷宫的最短路径就是
IN—A—C—D—E—G—H—OUT
2.实验方向:
此工程的难点首先在于直径为22㎝的机器人要在宽度仅为30㎝狭窄的迷宫跑道中执行任务,也就是机器人左右两侧距墙都只有4㎝的距离,实验要保证机器人不擦墙在其中行走自如,我们用三种传感器相互巧妙配合,精心调试,解决此问题。
迷宫走法:始终坚持靠着右墙走的原则(当然,始终靠左也可以),即可走出迷宫。
(四)实验步骤
1.实验部分总述
我们解决迷宫探路整个问题的算法如下:
流程图:
2.原理与细节分步
(1)设定磁极参数
在用指南针进行磁极校正时,四个方向的返回值并不是严格地成相差90°的关系,而是具有相应大小的波动偏差。在机器人停在某一方向上的时候,其返回的数值也不是唯一而是跳动变化的。
原因:指南针装置内部的质量问题与误差波动;周围磁场并不均匀。
由此,我们做出如下的设计:
设定一个参数i :
iOrient=GetOrient();
if (iOrient>=358 || iOrient<=2) i=1 指北
if(iOrient>=84 && iOrient<=88) i=2 指东
if (iOrient>=176 && iOrient<=180) i=3 指南
if (iOrient>=264 && iOrient<=268) i=4 指西
通过改变参数 i ,使各个方向的iOrient 值与其正确匹配。
(2)红外测距卡
(A)原理:通过发射与接收之间的的时间差,来计算与障碍物的距离。
(B)出现的问题:
a, 机器人处理命令的速度较低,不能及时地处理返回的数据。
b, 红外测距卡的有效测距范围有下限,当超过下限时,其返回值与距离的关系将反转,以至于无法做出正确的判断。
c, 在运行过程中,由于机器人前进的速度太快,以至于红外测距卡不能及时、连续地返回变化着的距离所对应的数值。
(C)处理方法:
将其运行过程分成两阶段处理:
减速———停止
在距离落入规定范围值时,先使机器人减速,以较慢的速度接近障碍物(墙)。从而有利于测距卡适时地返回距离的变化,然后在执行“停”的命令。
if(iIr<60) driveb(23,21);
if(iIr>60) driveb(13,11);
if(iIr>80) stop();
(3)意外擦枪擦墙
问题及原因:
即使红外测距装置稳定工作,在其过程中由于惯性,机器人仍然会向前冲出一小段距离,以至于使得机身过分地靠近前墙。这样机器人在转弯后,机身更加靠近这一侧的墙,而不是处于跑道中央,容易出现擦墙问题,使机器人的运行出现严重阻碍。
解决方案:
利用红外测距卡,使机器人先后退一段,再以很慢的速度接近,从而得到一个很好的距离感。(之所以先后退,是由于测距卡的有效距离有下限。后退之后能够排除机器人进入下限后而造成的错误命令)。
void Ijz()/*保持与前墙的距离*/1047