(C)方向的探测返回值:
在三个方向,当探测到前面有墙时,标定为0,无墙时为1,这样用0、1只标明探测结果。R、 L、F三个变量分别用来存放右、左、前三个方向的探测结果(0还是1)。
(D)判断路口:
ⅰ、进入路口:R+L+F>=2
ⅱ、死路口:①正常死路:R+L+F= =0;
②非正常死路:a[ i ]>=4;
对于死路口,用一个参数k来表示,其取值为0,1。遇到一个死路口之后,k=1;从一个路口出来时,k=0。
ⅲ、新路口与原路口:
机器人先从一个路口出来,若在遇到下一个路口之前,没有遇到任何形式的死路口,即k=1,则可以判定为遇到了新路口,此时变量i 执行i ++。若在期间遇到了死路口,即k=1,则可以判定机器人回到了原路口,进行a[ i ]的值的改变。
ⅳ、非正常死路:
当a[ i ]的值大于4的时候,可以判定机器人已经在第i个路口处完成了所有可能的探测,而且该路口所有可能的方向选择都是行不通的,即这个路口判定为非正常死路口,应该关闭,处理方法是,先执行a[ i ]=0,然后再使i――,这样就在记录中删除了这一路口,并撤回到第i—1个路口继续进行探测。
(E)路口处a[ i ]取值的处理:
每当机器人进入一个新路口时,变量i 执行i ++,a[ i ]的初值设为0。
不论是进入新路口,还是回到了原路口,当确定机身处于路口中央时,执行一次a[ i ]++。这时,再判断如果a[ i ]>=4,则判为非正常死路,按照非正常死路的处理方法处理(删除)。若a[ i ]值<4,则按照如下方法处理:
R==0,右面有墙,再执行一次a[ i ]++;
R==1,右面无墙,a[ i ]不变,进入右转命令。
(2) 初步程序
int i=0 ,k=0 ;
int a[30]=0,b[4]={0,1,2,3};
while(1)
{
te www.751com.cn
a[ i ]++;
}
if(a[ i ]==4)
{
a[ i ]=0; i--; k=1;
}
turn();
go( );
其中的turn() 函数用来处理路口处转角的方向:
void turn()
{ if((R+L+F)==0) turnback();
else
{ if(R==0) turnrigth();
else driveahead();
}
函数go() 表示在跑道中的执行函数,其中包括校正、转角、前进等命令。
2.最短路径
(1)原理:
当机器人经过前面的几步后,在第一遍探测迷宫之后,将会等到一个被赋值的数组a[30] 。这时,数组中的每一个元素a[ i ]的取值范围是0、1、2、3。这一连串的数组元素及其取值,就是迷宫最短路径的节点及其相应节点处通向出口的方向。
比如:a[30] ={2,1,3,3,2,1,•••}
其意思就是,从机器人在入口处放入开始,
当其遇到第一个路口时,a[1]==2,说明应该向前直行,指向第二个路口;
当其遇到第二个路口时,a[2]==1,说明应该向右转弯,指向第三个路口;
当其遇到第三个路口时,a[3]==3,说明应该向左转弯,指向第四个路口;
当其遇到第四个路口时,a[4]==3,说明应该向左转弯,指向第五个路口;
当其遇到第五个路口时,a[5]==2,说明应该向前直行,指向第辣个路口;
当其遇到第辣个路口时,a[6]==1,说明应该向右转弯,指向第七个路口;
••••••
(2)相应的程序:
int i =0;
while(1)
{
while(1)
{
test();
go();
if((R+L+F)>=2) break;
}
if(a[ i ]==1) turnright();
if(a[ i ]==2) driveahead();
if(a[ i ]==3) turnleft();
i++; }
二、成果机器人的特点
(一)机器人的应用与优点
1.此机器人的研究成功,是为今后的进一步应用和拓展奠定基础。
2.机器人可在任意迷宫中找到出口,若迷宫有多个出口,则机器人将按照靠右原则,自其中的唯一一个出口走出;若迷宫只有入口而无出口,则机器人将自入口进入后不久会又返回,从入口出来。这也正好适合探索类机器人在实际中应用所应达到的要求。
3.此类机器人可应用在无光,高烟,高辐射,空间狭窄,高度危险,路径错综复杂的环境中代替人类高效率地进行工作,比如火灾现场的救人和逃离,复杂管道内部的操作性工作,亦可应用在军事中和空间探索中。
4.数字指南针、红外测距卡、红外接收扩展卡三套装置相互协调,三重校正,任务的执行准确性高。编制的命令程序能够应对一定的磁场干扰,高概率成功脱离磁场紊乱区。
5.体积小,操纵灵活。
(二)存在的问题与机器人的不足之处
1.每换到一个新的地域环境,都需要从新调节和设置机器人的各项参数,才能让机器人适应环境而走出迷宫。比如,如果将此项目的迷宫地面由瓷砖换成水泥地面,则程序中所有的速度参数和时间参数需要调节重置。
2.机器人虽然能够对抗一定程度磁场干扰,但是如果工作区域干扰磁场的强度比较大,磁场紊乱区域又比较多,则机器人走出迷宫的概率会减至极小。源于本机械装置的数字指南针对强的磁场干扰很敏感。
3.机器人行走中途不能受到干扰和中断,否则机器人亦会陷入混乱状态。比如,地面如果不平坦,将行走中的机器人颠翻,或者迷宫墙上有颗钉子,将机器人刮到而突然使机器人方位大变,都会使机器人执行错误的操作而陷入在迷宫中乱转。
4.机器人零件脆弱,不能禁受重创,不能有物体袭击机器人。
问题总结:机器人的上述问题出现,并不会表明此类机器人无法应用于现实。原因在于我们这次实验所用的硬件性能和品质有限,传感器种类也有限。在今后的应用和拓展中,所用的机器人硬件的性能优劣和传感器的种类直接关系到试验的成功与否。资金和设备适宜,可以做出功能强大的此类“探路机器人”。
三、综 述
以“靠右走”的简约原则应对迷宫的复杂路径,完成迷宫探路,并做出最短路径以及其他拓展功能的理论算法。此项目的研究,将目前此领域的机器人的智能化程度提升到新一高度。
参考文献:
[1]谭浩强 著,C语言程序设计(第二版),清华大学出版社,1999
[2]能力风暴智能机器人大学版AS-UII使用手册 ,上海广茂达伙伴机器人有限公司,2007
[3]能力风暴智能机器人配件使用手册,上海广茂达伙伴机器人有限公司,2007
[4]张洪润 张亚凡 编著,单片机原理与应用,清华大学出版社,2005