迷宫探路智能化机器人的研究与应用 第2页

迷宫探路智能化机器人的研究与应用 第2页
if(iIr>50 && iIr<120)
  {
    driveb(-23,-21);wait(0.250000);stop();/*防止有些时候靠得太近*/
    iIr=analogport(5);
    while(iIr<=125)
      {iIr=analogport(5);driveb(13,11);}
    stop(); 
  }
}
(4)行进过程中的方向校正————三重校正
问题及原因:
机器人的两个主轮运行相应的参数不一致,运行过程中的功率也不是很稳定,使得运行过程中出现偏离跑道中央,导致撞墙。
(A)磁极校正
a)原理:
当机器人朝不同的方向时,通过对应的i 值,确定相应正方向变量iOrient值的范围,从而使机器人在这个范围内运行运行,使机器人始终走在跑道正中。以正北方向为例,实现的程序片段如下
 while(i= =1)
  {
   while(!(iOrient>=358 || iOrient<=2))
    { iOrient=GetOrient();
     if(iOrient>2 && iOrient<180)
                {
                   adjust(0, -10, 0.05);
                   }
               if(iOrient>180 && iOrient<358)
                {
                   adjust(0, 10, 0.05);
                 } 
    }
   break;
  }  
b)单独使用出现的问题:
迷宫中的磁场不均匀,使得有些地方的指南针的返回值与理论值出现严重的偏差,导致出现错误校正。
    c) 解决方案:配合前红外校正。
(B)前红外校正
         a)原理:
         利用机器人前红外传感器的返回值,确定机身是否有偏转。
                     左偏———testf= =1——向右校正
                     右偏———testf= =2——向左校正
                      testf=ir_detector();
                      if(testf= =1)
                        {adjust(0,15,0.05); }
                      else if(testf= =2)
                        {adjust(0,-15,0.05); }
         b)单独使用的缺陷:
     在路口处,前面无侧墙时,由于两面不对称,当其向某一方向偏差时,该方向上的红外信号将无法被反射,或者反射很弱,导致前红外校正testf 不能有正确的返回值。
     c)解决方案:侧红外校正。
(C)侧红外校正
     a)原理:
        当机器人偏离角度过大时,可以使用两侧的红外传感器来做出快速的大角度校正!
             rr=read1(2);
    lr=read2(1);
             if(rr= =0)
           {adjust(0,15,0.05); }
             if(lr= =0)
           {adjust(0,-15,0.05); }
b)缺陷:
和前红外校正一样,当它处于路口处时,无法反射红外信号。
    如果仅仅是对于校正来说,这是一个缺陷,但是从整体上来说,却是一个很好的互补! 因为,它可以在“路口中断”处得到很好的利用。
(5) 引入时间参数
首先,测出了机器人在正常区域内行进时,每3秒钟内程序可能执行的校正次数的最大值:18次。
然后将程序运行的系统时间以3秒为一份分割,在每一份内记录程序执行校正命令的次数。当它大于20次时,说明此时机器人正处于上述的矛盾校正中,这时可以命令机器人先向前推进一步再执行校正程序,如此反复,直到走出使机器人左右摆动的“磁场混乱”区域,跳出矛盾。
times=0;
      while(times<20)
        {tim_1=seconds();
         while((tim_2-tim_1)<3.0 && times<20)
         {
          turnjz();times++;;
          tim_2=seconds();
        }
       if(times>=20)break;else times=0;
               }
              driveb(13,13);wait(0.7);stop();
(6)红外测距卡与红外传感器之间的矛盾解决
由于前红外的感应范围大于红外测距卡,因此,在正前方有墙的时候,又会出现两者相互抵制的矛盾现象
设定前红外校正的范围
              if(iIr<60)/*红外校准及其执行范围*/
        {testf=ir_detector();
        if(testf==1)
        {adjust(0,15,0.05);bumpcheck( );times++;}
        else if(testf==2)
        {adjust(0,-15,0.05);bumpcheck( );times++;}}
(7)路口中断
在路口处需要进一步探测,并做出相应的行为(比如转弯),必须使机器人及时停在节点路口的正中间以便准确执行下一步命令。
  (A)路口种类及相应的返回值www.751com.cn       6                         
iIr >=100      testr= =3       testl==3       7                         
iIr <100      testr= =3       testl==3
  iIr <100      testr= =0    

上一页  [1] [2] [3] [4] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有