姓名:______________________________
日期:____________________
第 5 周
让机器人作出反应
把传感器与循环、条件结合起来,让机器人自己对周围的世界作出反应。
70 至 85 分钟
要点
循环:不用重写也能重复
第 3 周你是把每一步一条条排着写下来的。这样也行得通,但要是想让机器人查一百次传感器,你总不能把同一步写上一百遍。循环就是那种替你重复步骤的积木块。
无限循环和「重复直到」循环
无限循环会把里面的步骤一遍遍地重复下去,自己永远不停:一直跑到你把程序停掉。机器人靠无限循环来持续观察世界,比如「一直循环:读传感器并作出反应」。
条件非真即假(布尔)
条件是一个关于外界的问题,答案只能是「是」或「否」;在编程里我们说「真」或「假」。一个只可能是真或假的值,就叫布尔值。
「如果」和「如果/否则」:选择该做什么
「如果」积木块只有在条件为真时才执行里面的步骤。「如果墙很近,就向右转」的意思是:只有真的有墙靠近了机器人才转弯,否则就跳过这个转弯。
避障 = 循环 + 传感器 + 如果/否则
现在把这些拼到一起。避障就是一个无限循环:读距离传感器,再用「如果/否则」来决定,有东西靠近就避开,否则继续往前开。由于这个循环每秒重复很多次,障碍物一出现,机器人立刻就有反应。
循线:不停查看、随时调整方向
循线要用一个朝向地面的光线或颜色传感器。深色的线比浅色的地板反射的光更少,所以传感器能分辨出「在线上」和「离开线」。机器人一遍又一遍地查看,并调整方向,让自己始终压在线上。
要认识的词
- 循环:
- 一种积木块,它替你把一个或多个步骤重复执行,省得你一遍遍地把它们写出来。
- 无限循环:
- 一种一直重复下去的循环,直到你把程序停掉为止。
- 重复直到:
- 一种循环,它会一直重复,直到某个条件变成真,然后停下来继续往下走。
- 条件:
- 一次关于外界情况的判断,比如「墙近不近?」,答案永远非真即假。
- If:
- 一种积木块,只有条件为真时才执行里面的步骤,条件为假时就跳过。
- 如果/否则:
- 一种积木块:条件为真时执行一组步骤,为假时执行另一组步骤。
- 布尔值:
- 一种只能取两个值之一的数据:真或假。条件给出的答案就是布尔值。
- 避障:
- 一种行为:机器人不断循环、读取距离传感器,一旦有东西靠近就避开。
- 循线:
- 一种行为:机器人不停查看光线或颜色传感器,并调整方向,始终压在标出的线上。
- 反应式行为:
- 机器人根据自己实时感知到的情况改变做法,而不是照着一张固定的清单走。
你的活动
避障程序
目标:编程让机器人不断循环、读取距离传感器,并用「如果/否则」在有东西靠近时转弯、在前方畅通时前进。
- 套路始终一样:无限循环,读距离传感器,然后「如果/否则」:有东西靠近就转弯,否则就往前走。
- 先定好你的「靠近」规则(比如「小于 10 厘米就算近」)。然后把循环搭起来,让机器人在整个运行过程中一直都在作出反应。
写下发生了什么:
循线探索
目标:用光线或颜色传感器,配合「重复直到」和「如果」,让机器人始终沿着标出的线行进。
- 循线是一种不停查看的行为:一遍又一遍地读光线或颜色传感器,并调整方向,让自己始终压在线上。
- 一条简单的规则就够用了:如果传感器在线上,就往一边打弯;否则就往另一边打。再把它包进一个「重复直到」循环里,等机器人到达终点标记时结束。
写下发生了什么:
预测
动手测试之前,先写下你的猜测。
运行避障程序之前:机器人碰到墙时,你预测它会怎么做?为什么?
预测一下:如果把读传感器从循环里拿出来,机器人的反应会有什么变化?
测试并记录
避障可靠性测试
把机器人摆在一个障碍物前面,运行程序。记录它有没有及时避开。从同一个起点重复三次。
记录:三次尝试里,机器人成功避开障碍物的有几次
| Try | 有没有避开障碍物?(是/否) | 它做了什么 |
|---|---|---|
知识检测
逐题作答。选择题请把最合适的答案圈出来。
判断这句话是对还是错。
“无限循环过几秒钟就会自己停下来。”
圈出一个: 对 / 错
循环在程序里起什么作用?
- A.它让机器人跑得更快
- B.它把一个或多个步骤重复执行,省得你一遍遍地写出来
- C.它让机器人停下来
- D.它给机器人加一个新传感器
无限循环和「重复直到」循环有什么区别?
- A.无限循环跑一次;「重复直到」循环跑两次
- B.无限循环会一直重复到你停掉程序;「重复直到」循环会一直重复到某个条件变成真
- C.它们完全一样
- D.无限循环需要传感器,「重复直到」循环不需要
像「墙近不近?」这样的条件,答案只能是:
- A.一个以厘米为单位的数字
- B.真或假(一个布尔值)
- C.一种颜色
- D.一个电机转速
「如果/否则」积木块是干什么的?
- A.条件为真时执行一组步骤,为假时执行另一组步骤
- B.它把一个步骤重复十次
- C.它总是把两组步骤都执行一遍
- D.它读取传感器
避障是怎么工作的?
- A.机器人按照事先一次性告诉它的固定路线行驶
- B.一个循环读取距离传感器,如果有东西靠近机器人就转弯;否则就往前走
- C.机器人等着人来操控它绕过每一个障碍物
- D.机器人一看到障碍物就关机
反思
你的机器人反复在作什么判断?它靠的是什么信息?
为什么会作出反应的机器人要在传感器检查外面套一个循环,而不是只查一次?
描述一台会对世界作出反应的真实机器人,并说出它检查的是什么条件。