迷宫探路智能化机器人的研究与应用 第3页
(B)路口中断准备:
a)原因:
由于迷宫跑道比较狭窄,机器人的运行速度相对较快,为了防止机器人在路口处由于惯性而冲过路口,或者没有及时停在路口中间,给以后的行进造成不利影响。我们尽量使机器人能够提前感知路口的存在,及早做好准备。使机器人能够在路口正中间停住。
b)解决方案:侧红外校正、红外测距卡减速
侧红外校正:即是,在机身快要进入路口时,由于侧红外接收不到信号,可以先执行校正(以排除是由于走偏造成的侧红外接收不到信号),而后,若确定是由于路口而造成的无信号,则可判定为快要进入节点,这时使之向前推进一小步,从而走到路口中间
rr=read1(2);
lr=read2(1);
if(rr= =0 || lr= =0)
{
stop();wait(0.1);
turnjz();
rr=read1(2);
lr=read2(1);
if(rr= =0 || lr= =0)
{ driveb(13,11);wait(0.1);}
}
红外测距卡减速:参见第2点:红外测距卡。
(C)路口中断操作:
根据程序的主要算法:靠右走,我们在执行中断操作时,主要从以下两方面考虑:
右边为空,前面有墙,都执行中断操作。
即 if(iIr>95 || testr= =0 )
break;
(8)转角操作
当已经确定机器人在路口中间停下时,接下来执行相应的转角操作。这里,将涉及到方向值i 的变化,以使得与指南针的校正相匹配。
void turn()/*各方向的转角*/
{
if(testr= =0)
{
drive(0,19);wait(0.5);stop(); /*右转后i自加1,正对下一个方向,之后按着i指示的方向校准*/
i++;
if(i>4)i=1;if(i<1)i=4;
www.751com.cn)i=1;if(i<1)i=4;
}
else
{if(iIr>100 && testl= =3)
{wait(0.2);
drive(0,-19);wait(0.6);stop();wait(0.5);
i--;
if(i>4)i=1;if(i<1)i=4;
drive(0,-19);wait(0.6);stop();
i--;
if(i>4)i=1;if(i<1)i=4;
}
}
}
当机器人根据对i值的控制,执行完方向“转交”命令后,在新的方向上,必须要机身先走出路口,然后再继续执行探测和前进。否则,机器人将会探测到由还未走出路口而造成的错误的信息,从而陷在路口处。
相应程序片段为
j=0;k=0;
iIr=analogport(5);
whi(j-k)>12)
break;
ma_1 =analogport(7);
if(ma_1>200)/*规定走出迷宫条件*/
break;
}
当机器人根据对i值的控制,执行完方向“转交”命令后,在新的方向上,必须要机身先走出路口,然后再继续执行探测和前进。否则,机器人将会探测到由还未走出路口而造成的错误的信息,从而陷在路口处。
相应程序片段为
j=0;k=0;
iIr=analogport(5);
while((iIr<=80 && iIr_1<=80) || testr!=0)/*转后分段前推*/
www.751com.cn
if((j-k)>12)
break;
ma_1 =analogport(7);
if(ma_1>200)/*规定走出迷宫条件*/
break;
}
(9)碰撞检测
作用:这主要用来辅助前几项校正,增加机器人正确无误地行走的保险性。当由于意外前面的几种校正办法都没有解决问题,机器人仍然撞到了墙上时,则碰撞传感器可以进行应急处理,以调整机器人在跑道中的位置。
(10)走出迷宫————地面灰度检测
机器人在迷宫中探索,程序判断它是否走出迷宫的根据就是地面灰度传感器的返回值。我们在迷宫的出口处铺一张黑纸,从而与迷宫内部的地面形成对比,区分他们之间的返回值。
ma_1 =analogport(7);
if(ma_1>200)/*规定走出迷宫条件*/
break;
3.程序综合
以上提到的一些细节问题,仅仅是各自的独立表现形式,要真正地得到一个完整的程序,需要把上面的各个独立的分程序有机地融合在一起,使之相互之间融会贯通和谐连接,共同完成我们的工程目标。
由此得到成功的总程序
(五)成果机器人拓展功能的理论研究(理论拓展部分)
机器人探索迷宫最短路径的理论算法:
1.记录路口
在机器人能够自行走出迷宫的基础上,我们开始探索让机器人再次进入这个迷宫后,可以直接沿最短路径走出。
(1) 理论基础:
设定两个数组a[30],b[4]={0,1,2,3}。对于a[ i ],变量 i 用来记录机器人遇到的路口数目, a[ i ]的取值用来记录机器人在该路口所走的方向。b[4]用来标定路口的方向。
(A)路口方向标定:
如下图,刚进入时为0,向右为1,