【中学生创客.虚拟机器人】3.1神秘迷宫

第一节 神秘迷宫

首先出现在机器人面前的是一个神秘的迷宫。迷宫错综复杂,机器人在里面会不会晕头转向,迷了方向呢?

一、任务初探

这个任务要求机器人走出魔幻迷宫,来到悬浮桥入口。迷宫俯视图如图 3-1-1 所示。

1.起始位置为左下角蓝色小方块位置,且起始方向为箭头所示方向;

2.从起始位置出发,沿着魔幻迷宫的左墙壁一直搜索前进,直到走出迷宫;

3.在迷宫的出口处有一个色标,机器人可以通过这个色标来判断迷宫出口;

图 3-1-1 迷宫示意图

 

在第二章的学习中,我们学习了障碍传感器的应用,我们可以通过一个障碍传感器来使机器人沿着墙走。但大家也发现了,机器人这样走的很慢,走得不是很流畅,每走一步都要改变前进的方向,那么我们能不能使用多个障碍传感器来使我们的机器人走的更顺畅一些呢?

二、知识汲取

迷宫法则:如果机器人太靠近迷宫的墙壁,则要让它远离墙壁;如果机器人远离墙壁,  则要让他靠近墙壁。机器人就在远离墙壁和靠近墙壁的过程中向前运动。

左迷宫法则:机器人检测它左边的墙壁,如果离左边墙壁太近,则机器人右转;如果机器人离左边墙壁太远,则机器人左转。如果机器人前方也检测到墙壁,则机器人也要右转。

右迷宫法则:机器人检测它右边的墙壁,如果离右边墙壁太近,则机器人左转;如果机器人离右边墙壁太远,则机器人右转。如果机器人前方也检测到墙壁,则机器人也要左转。

三、实践验证

(一)任务分析

该任务中,我们要判断迷宫的出口,可以根据迷宫内部的地面颜色和出口处色块的颜色值不同,用一个灰度传感器来检测。为了减少系统资源的占用,在规则中已经设定了在迷宫区域内,灰度检测值都为 0,在出口处,灰度检测值大于零。

我们已经学过一个障碍传感器沿墙走的方法,但感觉走的路线不是很好,所以在这里,  我们可以尝试用三个障碍传感器检测迷宫的墙壁,来实现左迷宫行走。

(二)搭建迷宫机器人

进入搭建机器人平台,我们可以先从模版里拖出一个初始机器人,初始机器人包括了基本的主机和马达。我们可以在它的基础上进行搭建,节省我们的时间。我们这次要添加的主要是一个灰度传感器,三个障碍传感器。

灰度传感器的搭建方法给以前的课相同,为了方便安装,可以在主机的前部添加一些安装块,安装好后在该灰度的属性设置中,设置端口号为 40(可以自己定),如图 3-1-2 所示:


 图 3-1-2 添加灰度传感器

2.安装三个障碍传感器,如图 3-1-3 所示,

图 3-1-3 添加障碍传感器

属性设置如下表: 

序号

名称

简称

端口

检测距离

1

障碍传感器_左远

左远

31

250

2

障碍传感器_左近

左近

32

250

3

障碍传感器_前中

前中

33

200

3.检查一下四个马达的端口号,确认左边马达端口为 1 号和 2 号,设置为“反转电机”,

右边马达端口号为 3 号和 4 号。另存该机器人名称为“机器人_魔幻寻宝_3_1”。

(三)设计程序

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

机器人出发后,首先要不停的读取底部灰度值,判断机器人是否到达出口。

如果没有到达出口,我们可以让机器人检测迷宫的左边墙壁,如果前中障碍传感器检测到墙壁,表明机器人正前方有墙壁,根据机器人左手运行法则,机器人需要尽快右转;否则,  如果左近障碍传感器检测到墙壁,表明机器人太靠近墙壁了,则机器人往右转;否则,判断左远障碍传感器是否检测到墙壁,如果检测到墙壁,机器人直行;否则,表明机器人离墙壁太远了,机器人需要向左转。

如果机器人底部灰度检测到迷宫出口,则机器人停止。程序流程图如图 3-1-4 所示:

 

图 3-1-4 流程图 

 

2.程序编写

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

根据流程图,我们进行程序的编写。这里,左转、右转时各个马达的能量值需要进行多次调试,以使机器人走的又快又稳,以便拿到比较好的成绩。我们可以将左迷宫程序分成三个判断区域,如图 3-1-5 所示,程序的参考值如表 2-3-1 所示。

图 3-1-5 程序示意图

表 3-1-1 第一个判断模块利用“前中”障碍传感器判断前方是否有障碍

序号

设备

初始值

1

判断条件为障碍传感器

31 端口,值为 1

2

当值为 1(前方有障碍)

直流电机向右偏转运行(具体值请自行调试)

3

当值为 0(前方无障碍)

进入第二个判断模块

  
 表 3-3-1 第二个判断模块利用“左近”障碍传感器判断机器人与墙壁距离是否太近

序号

功能模块

参考值

1

判断条件为障碍传感器

32 端口,值为 1

 

当值为 1(左侧距墙太近)

直流电机向右偏转运行(具体值请自行调试)

2

当值为 0(左侧未检测到墙)

进入第三个判断模块

 
 表 2-3-1 第三个判断模块利用“左远”障碍传感器判断机器人与墙壁距离是否太远

序号

设备

初始值

1

判断条件为障碍传感器

33 端口,值为 1

 

当值为 1(左侧距墙适合)

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

2

当值为 0(左侧距墙太远)

直流电机向左偏转运行(具体值请自行调试)

 

最后将程序以“机器人_魔幻寻宝_3_1”为文件名保存起来。

(四)进入仿真

单击【开始仿真】并选择【新建仿真】,并以此选择任务、机器人、程序,为了便于下一次进入仿真不再重复刚才的步骤,可以将该仿真进行保存,最后单击【保存进入】按钮进入到仿真界面。有可能不会一次就成功,大家一定要有耐心,改变不同的参数,以使机器人能顺利的走出迷宫。当然,成功后,大家也还可以优化程序和参数,使我们能拿到更高的分数。

四、课后提升

1.我们学习的是左手迷宫法则。同学们能不能自己搭建机器人,并编写程序,让机器人能依据右手迷宫法则完成任务。

2.请同学修改障碍传感器的检测距离,看看同样的程序,机器人还能不能完成任务。

网友留言(0 条)

发表评论

验证码