当前位置:首页 > 名师导学 > 专家点拨 > 关于巡线的细节处理

关于巡线的细节处理

发表日期:2017-03-27 14:48:09文章编辑:信息管理员浏览次数: 标签:亮宁机器人    

    老师们从网站或QQ群里下载的亮宁机器人巡线程序,都只是一个巡线的框架,并没有考虑场地、摩擦力的大小,环境光照条件以及场地线形等细节的处理。所以,作者在这撰文,重点分析巡线程序应该解决的一些问题。

 一、测光值的细节

1、为何要取平均值?测光值时,要求测量黑值和白值,然后取平均值,作为机器人是看到黑线还是白线的分界线。因为中间值离黑值和白值相差一样远,使黑白分明,且不会因一点点波动,就会影响对黑白判断的失误。

2、多个眼睛的值为何不相同?模拟地面灰度传感器除了个体传感器,阻值的误差导致传感器取值不同之外,还与五光传感器安装的位置受环境光影响不同有关。所以我们测值的结果,不同传感器的分界值会有不同。

3、一般光线分界值在什么范围内?亮宁机器人的地面循线传感器有两种。一种的白值在400~500之间,黑值在600~800之间,分界值在500~600之间。上下有点偏差,但都很正常。另一种白值在100~200之间,黑值在300~400之间,平均值在150~250之间。同样允许有些偏差。

4、为什么五个传感器有一个与众不同?如果五个传感器所测的值相差太大,特别是其中一个远不同于其他四个,则主要原因是该灰度传感器的光敏元件歪斜所致,如图1所示,将其小心拨正就是。我们应该始终保持光敏元件的受光面与地面平行。

5、为何所测量的分界值每次都不一样?因为光照条件、地面材质不同,会使每次所测得的分界值有所不同。但也不致相差太远。如果发现变化太大,就要注意场地白色区域是否干净,放在黑线上时,传感器是否在黑线正上方。特殊情况下测得的光值就是不正确的。

6、是否每次巡线都要测光值?如果场地没有改变材质,环境光线没有大的改变,就不必要重测光值。对于亮宁机器人,细微的改变,不会影响运行结果。所谓大的改变,一般为是否拉窗帘,是否开白炽灯,是否由木质场地改灯箱布,是否由晴转阴等。

 

二、路口的处理细节

  关于路口的处理,程序段通常是以下这种基本形式:

if (n>2)

{

   t++;    //路口计数

   if (t<=4 || t==8||t==10)

   {

      motor(40,40);delay(100);  //14号、8号,10号路口直行

   }

   else if (t==5||t==7)    

   {

      motor(-40,40);delay(300);  //57号路口左转

   }

   else if (t==6||t==9)

   {

      motor(40,-40);delay(300);  //6,9号路口右转

   }

   else

   {

     motor(0,0);while(1);       //11号路口停车并终止程序

   }

}

场地图1.jpg

本文讨论的路线图

   但如果就用上面的程序运行,其结果是成功率很低。这是为什么呢?

   机器人从起点出发,途径一段很长的路,到达5号路口才转弯。不难想像,这时机器人走得很顺,速度很快。当其检测到5号路口时,往往会冲出十字路口。这时我们应该将机器人后退一小段时间再转弯,不然会脱线或回头走。

 

当机器人经过67号路口时,因为前面刚刚转弯过来,或经过一段弧线,机器人速度还没跑上来,又要转弯了。这时机器人看到黑线立即转弯,导致转弯后找不到左右转弯的路线面往回走。所以,我们应该在机器人看到黑线后向前走一小段再转弯。于是5号路口与7号路口要分别对待的现象。

9号路口,却因转弯前经过两段直线,可能状况不会出现上述两个极端的情形,我们可以不予理会。

上面的分析,只是一般情况的分析。具体情况,要视走线的情况,经过观察发现问题。例如场地摩擦比较大,机器人的速度始终上不来,我们就要把大部分情况都视同短距离助跑的现象来对待,反倒长距离不用管它。

即使是直行,我们也要分别对待。因为起先只是为了越过黑线,不让机器人对同一路口 反复计数,所以时间尽量短,以免脱线。也就要根据当时的速度快慢来决定延时的时间长短。

上面的程序段修改如下:

ltu 1.png

两种转弯脱线的示意图

if (n>2)

{

   t++;    //路口计数

   if (t==2||t==3||t==4)

   {

      motor(40,40);delay(70);  //24直行,时间短

   }

   else if (t==1||t==8||t==10)

   {

      motor(30,30);delay(100);    //1,8,10号直行时间长

   }

   else if (t==5)    

   {

      motor(-30,-30);delay(50);

      motor(-40,40);delay(300);  //5号路口左转处理,先后退

   }

   else if (t==7)

   {

      motor(30,30);delay(100);

      motor(-40,40);delay(300);  //7号路口左转,先前进

   }

   else if (t==9)

   {

      motor(-40,40);delay(300);  //9号不做处理

   }

   else if (t==6)

   {

      motor(30,30);delay(100);

      motor(40,-40);delay(300);  //6,9号分别处理

   }

   else

   {

     motor(0,0);while(1);       //11号路口停车并终止程序

   }

}

 以上程序各个时间的长短,也只是一个假定。具体的数值不宁在临场进行调试。

 

 

  

 

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

浅析心理暗示在青少年行为教育中的作用(图文)

在与许许多多学生家长交流的过程中发现,不少家长都觉得孩子难管难教,特别是处于青春期的孩子,家长们更是感到头痛。所以,本文作者在这里发表个人看法,讨论一下心理暗示在教育孩...

日期:2019-04-24

不忘初心,方得始终

不忘初心,方得始终——对知识应用能力的执着追求 长沙市一中戴胜军 从事教师这行三十多年,我了解到许多教育教学中长期存在的不足和缺陷,也一直尝试用一己之力改变...

日期:2018-06-30

机器人教育中的责任心培养

本文已发表在《创意与发明》2016年第7期上在近年从事机器人教育教学工作中,我发现当代中小学生普遍存在责任心的缺失问题,引发了我对当前教育的担忧和诸多思考。一、缺失责任...

日期:2018-06-13

论中小学机器人教练员应该具备的基本素质

【摘 要】本文重在提示中小学机器人教练员建立必要的自信心和自我重塑,提出机器人教练员一些必须具备的基本素质,提醒可能成为机器人教练员的老师和目前处于探索阶段的机器...

日期:2018-03-19

亮宁机器人特有的符号系统(图文)

使用亮宁机器人的师生,可能注意到了这样一个特色,即亮宁机器人有自己特有的一套符号系统。如果还没有发现这一特色的师生,那我们就随本文来理解为什么我们要有这套特有的符号系...

日期:2018-01-19

亮宁可视化编程平台V2.2第6讲(图文)

第6讲 循环程序 我们先来看看顺序结构的程序实例。我们先用可视化系统设置如下: 上述设置的程序运行结果是八个LED灯同时被点亮。 我们看不出八个灯的点亮语句的顺序...

日期:2017-10-09