当前位置:首页 > 知识基础 > 疑难分析 > 复杂路径的处理技巧

复杂路径的处理技巧

发表日期:2016-10-31 20:56:37文章编辑:浏览次数: 标签:    

   所谓复杂路径,是指路径上含有多种不同轨迹线,有的地方是直线,有的地方是圆滑曲线,又有些地方是急弯轨迹等的路径,如下图。

   本题要求机器人从A点出发,沿ABCDEF的路线停止到F点。

复杂路径的处理技巧

一、三眼循线与五眼循线

   亮宁机器人地面寻线传感器集成了五个光电传感器,对于线路弧度不大的曲线或直线轨迹,用中间2,3,5三个光电传感器即可以完成循线,而左右两个光电传感器则可以专门用来识别不同的路口。程序段如下:

void line()

{

     check();

     if (l==0) motor(0,30);

     else if (r==0) motor(30,0);

            else if (m==0) motor(30,30);

    if (ll==0 && rr==1 ) {左转弯处理}

    if (rr==0) && ll==1 {右转弯处理}

    if (rr+ll=0) {停车处理}

}

      如果路径多弯道,且弧度比较大,则需要使用通常所写的五眼循线程序。本网站上和《中小学机器人》教程上常见,且本文下面还会提到,这里不再赘述。

二、分段循线
    下面是一般的五眼的程序,大家注意观察引入的变量sp、sp1和它们的作用。

#include <LNDZ.h>

......

int sp=35,sp1=30;

void check()

{

   ......

}

void init()

{

     ....  

void repeat()

{

      check();

      if (n==4)    //此为仅一眼看到线的情形;

      {

             if (ll==0) motor(-sp1,sp1);

             else if (l==0) motor(0,sp1);

                    else if (r==0) motor(sp1,0);

                           else if (rr==0) motor(sp1,-sp1);

                                  else motor(sp,sp);

        }

        if (n==3)   //此为两眼同时看到线的情况

        {

              if (ll+l==0) {左转变处理}

              else if (rr+r==0){右转弯处理}

                      else if (m+l==0) motor(sp1/2,sp1);

                              else if (m+r==0) motor(sp1,sp1/2); 

        }

        if (n<3)  //判断交叉路口,如果误判,就改条件为n<2,特别是新款的寻线传感器。

        {

                 t++;

                 if (t==1) {sp=25;sp1=32;}     //B点之后,放慢前进 的速度,增大方向调整的力度;

                 if (t==2) {sp=35;sp=30;}       //C点之后,是直线和小弧度曲线,直行速度加快,调整力度减小

                 if (t==3) {sp=28;sp1=35;}     //类上

                 if (t==4){sp=35,sp1=30}

                 if (t==5){motor(0,0);while(1);}

                 delay(80);                 //防止对路口重复计数

       }

}

    上述程序,虽然我们并没有把程序进行阶段性编写,但我们却针对不同的路况进行了速度上的调整。当路径弧度大时,我们采用慢进快调的方式,提高循线精度,以时间换取稳定性;当路况较为平坦时,快进后慢调,赢得时间。

    当然上述程序中的速度参数,只是一个参考值,使用者要根据场地条件修改这些值以适应不同的场合。

 

如没特殊注明,文章均为亮宁电子原创,转载请注明出处
相关新闻

亮宁新主板奇怪现象的处理

新版亮宁机器人,有时会出现一些奇怪的现象。如音调不对,延时时间不对,屏幕不显示等问题,但其他却又功能正常。这是因为师生有一项操作失误造成的。但我们也能很快恢复其正...

日期:2023-11-06

无路口停车技术分析

一、预备知识 用于机器人巡线的地图上,终点的位置往往被设计成一个路口,方便机器人判断和停车。如果在终点的位置没有路口,仅仅是一根线,那么以前判断路口停车的方法便不再...

日期:2017-08-27

360可连续旋转伺服电机的调整

亮宁机器人套件提供了只能转动180度的伺服电机和360度可连续旋转的伺服电机两种。其中360度可连续旋转的伺服有一个零位调整的问题,即我们用work(0)设置电机停止转动时,我们会发现大部分电机这时可能没有停下来,而...

日期:2016-10-31

伺服电机的正确使用

伺服电机在自动控制中的作用功不可没,在机器人制作中也是很重要的一员。所以本文针对伺服电机的使用作一些说明。亮宁机器人套装提供了两种不同的伺服电机,蓝色180度伺服电机和黑色360度伺服电机,它们在功能上和...

日期:2016-10-31

奇怪的现象

几位同学在机器人搭建过程发现下面这奇特的现象,却不知为什么? 将两个减速电机的红线与红线、黑线与黑线分别相联(如图1),准备将二者并联接到电机驱动电路做成四驱车,偶然发现,在未接电源转动其中一个电机时,另一电...

日期:2016-10-31

机器人不走直线的解决方法

部分师生在使用亮宁机器人时提出一个同样的问题,机器人搭建好后,无法沿直线前进,总是偏向左或偏向右。本文就这个形成的原因分析如下。 写下面的程序下载至机器人,做为查找原因的程序:(其实,在使用新搭建的机...

日期:2016-10-31