【中学生创客.虚拟机器人】3.4胜利在望

第四节 胜利在望

机器人绕过了狭长的盘山小路,来到了宝物所在的一个平台上。宝物就在机器人的正前方,闪着璀璨的光芒,似乎在对你说,快来取我吧!别急,要拿到宝物还有最后一关。

一、任务初探

如图 3-4-1 所示,宝物被三个大小不同的正方形包围着,这三个正方形的中心点是同一个地方,也是宝物的所在位置。但是这个中心点的位置是不固定的,每次开始仿真时随机出现,但保证是在机器人起始位置的正前方。宝物看得到,却摸不着,机器人可以穿过宝物而不被挡住,也没办法用障碍传感器检测到宝物。

任务要求机器人从起始点出发,沿着起始方向直行,在进入宝物所在位置时,停止三秒钟,任务则宣告完成。

同学们,在这种情况下,我们还能不能用时间控制法来拿到宝物呢。

图 3-4-1 任务场景图

二、知识汲取

(一)变量

1.变量的值在程序运行时可以有所变化,可以根据需要多次赋值。变量在使用之前需要声明。在该图形化编程语言中,变量可分为四种类型,分别是“int 整型”、“float 浮点型”、“string 字符串”、“bool 逻辑”。图 3-4-2 为“int 整型”变量声明图标。

 

2.变量根据作用范围,可分为全局变量和局部变量。全局变量可以在整个程序中被访问调用修改。局部变量只能在定义它的程序段里被访问调用修改。在同个作用域中不能使用相同的变量名。每个变量声明容器可以声明四个变量,如果超过四个,则可以用多个变量声明容器。图 3-4-3 为全局变量声明容器。

3.变量可以在程序中被赋值。赋值时,值的类型应与该变量声明时的数据类型一致, 或者是可以相互转化的数据类型。赋值时,既可以是一个具体的数值,也可以是一个表达式。 如果一个变量声明为 int 整型变量,则赋予它的值也需要是一个 int 整型数值。

4.变量可以在它的作用域中被引用。如果要引用变量,那就需要有一个引用变量图标。

三、实践验证

(一)任务分析

因为每次仿真运行时机器人与宝物的距离是不定的,所以该任务不能用最简单的时间控制法,而且宝物无法用红外障碍传感器检测到。但是包围宝物的三个正方形的边框色为红色,  且有一定的宽度,那我们可以用灰度传感器检测红色边框线,当检测到第三根线时,即进入最小的正方形内,也就到达了宝物的位置。

(二)搭建机器人

进入搭建机器人平台,我们可以先打开上节课中搭建好的机器人。给该机器人前部添加一个灰度传感器。搭建方法不再累述,灰度端口号设为 31,参考图如图 3-4-6 所示。另存该机器人名称为“机器人_魔幻寻宝_3_4”。

(三)设计程序

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

机器人在出发后就要检测经过红色边框线的次数,如果少于三次,那么就要检测是否遇到红色边框线,每遇到一次就给次数加  1,并且要保证机器人经过一条红色边框线只加一次。否则机器人直行。如果机器人经过红色边框线的次数为  3  次,则机器人停止前进,任务结束。

2.程序编写

在离线主界面中点击【编写程序】进入程序编辑窗口,单击【新建】按钮新建程序,选择机器人为“机器人_魔幻寻宝_3_4”。

编写程序时,要先测出灰度传感器在红色边框线的值。为了方便起见,在规则中限定除红色边框线外的所有地方的灰度值都为 0,因此,可以取红色边框值的一半来作为判断值。程序主要由一个条件循环模块和条件判断模块组成,如图 3-4-8 所示。程序的参考值如表

 

表 3-4-1 条件循环模块利用变量判断前方到达宝物所在位置

序号

功能模块

参考值

1

循环条件为判断穿过红色边框

的次数

次数小于 3

2

次数小于 3

进入条件判断模块

3

次数不小于 3

直流电机停止并延时 3 秒

 

表 3-4-1 条件判断模块利用灰度传感器判断穿过红色边框线次数

序号

功能模块

参考值

 

 

1

判断条件为灰度传感器是否检

测到红色边框

灰度大于 20

2

如果检测到红色边框线

次数加 1,并且让直流电机前进一点,保证

机器人越过该条红色边框线((具体值请自行调试)

3

没有检测到红色边框线

直流电机前进(具体值请自行调试)

 

(四)进入仿真

单击【开始仿真】并选择【新建仿真】,并以此选择任务、机器人、程序,并输入仿真包文件名,最后单击【保存进入】按钮进入到仿真界面。

如果机器人穿过宝物后不停下来,任务可是算失败的哦。当然,机器人只要数对了边框线,经过努力,一定能完成任务。

四、课后提升

在前面的练习中,我们使用了“while 循环”模块。如果事先知道循环次数的情况下, 我们也可以使用“for 次数循环”模块。请同学们自己研究一下“for 次数循环”模块,修改程序,看是否能成功的完成任务。

网友留言(0 条)

发表评论

验证码