【中学生创客.虚拟机器人】5.3汽车总动员-停靠补充能量

第三节 停靠补充能量

一、任务初探

我们知道,运动需要消耗能量, 机器人的运动同样也需要消耗能量。到现在为止,我们的机器人小车已经开完了赛道二分之一的路程,体内的存储的能量已经消耗一空。因此,在第三段赛道上,设置了一个能量补充站,机器人小车在路过能量补充站的时候,可以停靠并补充能量。想一想,怎样才能使我们的机器人小车在经过能量补充站的时候准确停靠?这里应该使用哪些传感器呢?

这节课,我们的机器人小车还是从上次的终点起步,继续它在赛道上的旅程。在遇见能量补充站的时候,小车将停靠并补充能量。为了让赛车更容易发现能量补充站,能量补充站附近的路面具有一个与普通路面不同的灰度值。这里需要注意的是,小车只有在接触充能点

(蓝色正方形区域)时才能补充能量,并且小车充满能量需要 5 秒钟。

这次的任务可以分为三个部分:在遇见能量补充站之前的靠左行驶,遇见能量补充站后停靠充能,以及离开能量补充站后的靠左行驶。

二、知识汲取

在本节课中,我们将学习子程序的嵌套,即,子程序中再包含一个子程序。

 

(一)子程序嵌套

当子程序的条件循环中有大段的程序时,我们可以把条件循环中的大段程序也编成一个子程序。这样,我们就完成了子程序的嵌套。如图所示的程序中,程序开始时调用子程序   1

搭建示意图

而子程序 1 中使用了一个 while 条件循环,当灰度值大于 50 的时候将调用子程序 2。

三、实践验证

(一)搭建机器人

这里我们的机器人小车,需要装两个障碍传感器以及两个灰度传感器。两个障碍传感器装在车前方的左侧,用来靠左行驶;两个灰度传感器分别装在小车前方的左侧与右侧,用来检查是否到达能量补充站。与之前一样,这四个传感器与之前需要通过安装柱装在车上,并依次命名。最左边两个用来靠左行驶的障碍传感器分别命名为障碍传感器_左远与障碍传感器_左近。两个灰度传感器分别命名为灰度传感器_左外与灰度传感器_右外。

 

序号

设备

端口

检测距离

1

障碍传感器_左远

40

450

2

障碍传感器_左近

41

450

3

灰度传感器_左外

31

-

4

灰度传感器_右外

32

-

 

表 5-3-1 障碍传感器与灰度传感器的属性设置

安装完成后,与前面的章节一样,我们需要设置障碍传感器与灰度传感器的属性以及直流电机的端口。障碍传感器与灰度传感器的属性设置如表 5-3-1 所示;直流电机的端口设置可参考第一节。最后将机器人小车以“机器人_汽车总动员_5_3”为文件名进行保存。

(二)设计程序

1.任务动作分析并绘制流程图

根据前面我们对这次任务的分析,可以将本次任务分为三个阶段:在遇见能量补充站之前的靠左行驶,遇见能量补充站后停靠充能,以及离开能量补充站后的靠左行驶。依照这个思路,我们可以先画出流程图,如图所示。与前面一样,我们可以先编写两个子程序:“靠左行驶”子程序和“停靠补充能量”子程序。小车在第一段与第三段行驶的时候,不断通过检查两个灰度传感器的值来判断是否需要靠左行驶。若没有遇到能量补充站,则继续靠左行驶;若遇到能量补充站,则停靠在能量补充站开始充能。

 

 

 

 

2.程序编写

下面,我们开始进行程序的编写。首先,按照流程图完成主程序。这里为了使程序更加清晰,我们可以将是否路过能量补充站的判断模块和靠左行驶子程序当做一个

整体,打包成另一个子程序,并命名为“判断是否靠左行驶”子程序。

接着,我们进入子程序的编写。首先完成“判断是否靠左行驶”子程序。我们使用一个 while 条件循环模块来查看两个灰度传感器的值,从而判断是否靠左行驶。我们检测了普通赛道地面的灰度值与能量补充站附近赛道地面的灰度值后发现,普通赛道地面的灰度值在 25

到 35 之间,而能量补充站附近赛道地面的灰度值在 50 到 60 之间。那么,我们可以将 while 条件循环中的条件定为,当灰度传感器_左外或者灰度传感器_右外的值在20 与 50 之间的时候,调用“靠左行驶”子程序。而“靠左行驶”子程序的编写可以参考本章的第二节。这样, 我们就完成了“判断是否靠左行驶”子程序的编写,如图所示。

接着,我们要编写第三个子程序“停靠补充能量”,如图。这里我们首先需要左转,使得我们的小车接触充能点(蓝色正方形区域)。接着,由于充满能量需要 5 秒钟时间,所以我们的小车要在这里停止所有直流电机5000 毫秒。能量充满后,小车需要回到赛道继续行驶, 我们可以先做一个后退的动作回到赛道,接着右转回到“停靠补充能量”子程序正确的方向,然后向前行驶离开能量补充站附近的绿色区域(注意,这里最后必须有一个离开绿色区域的步骤,否则就会影响后面的靠左行驶)。这段子程序中各个电机的参数设置以及延时时间,需要同学们自行调试,寻找到最合适的值。

程序编写完成后,以“机器人_汽车总动员_5_3”为文件名进行保存。

(三)进入仿真

接下来,我们进入最后的仿真阶段,打开任务场景、机器人与程序后,进入仿真界面,  同学们就可以验收刚刚的成果了。仿真的过程中,同学们需要不断修改“停靠补充能量”子程序中各个电机参数和延时时间值,让小车可以完美完成停靠补充能量的步骤。需要注意的是,“停靠补充能量”子程序中的最后一步,小车向前行驶一段距离,不能省略。如果没有这一步,小车就依旧停留在能量补充站附近的绿色区域,两个灰度传感器的值均在 50 到 60 之间,那么就不能满足调用“靠左行驶”子程序的条件,小车就会一直在绿色区域打转。并且,最后一步小车向前行驶的延时时间设置也至关重要,稍微偏差一点都有可能导致任务失败。因此,这个地方的调试需要同学们的耐心与细心。

四、课后提升

这一小节的程序编写,我们是分为三个阶段。第一阶段,使用条件判断,若没有到达能量补充站,则靠左行驶;第二阶段,到了能量补充站,则进入能量补充站进行充能;第三阶段是一个与第一阶段一样的子程序。大家有没有发现,这个程序其实有一个缺陷,那就是,  途中只能进一次能量补充站。那么,如果现在我们的机器人小车需要行驶一段更长的路程,  以至于路上需要进好几次能量补充站呢?这时候我们原来的程序就不适用了,请同学们仔细思考,编写一个更完美的程序,使得路上不管有多少个能量补充站,机器人小车都能够停靠补充能量。

网友留言(0 条)

发表评论

验证码