跳到主要内容

姓名:______________________________

日期:____________________

第 5 周

让机器人作出反应

把传感器与循环、条件结合起来,让机器人自己对周围的世界作出反应。

70 至 85 分钟

要点

循环:不用重写也能重复

第 3 周你是把每一步一条条排着写下来的。这样也行得通,但要是想让机器人查一百次传感器,你总不能把同一步写上一百遍。循环就是那种替你重复步骤的积木块。

无限循环和「重复直到」循环

无限循环会把里面的步骤一遍遍地重复下去,自己永远不停:一直跑到你把程序停掉。机器人靠无限循环来持续观察世界,比如「一直循环:读传感器并作出反应」。

条件非真即假(布尔)

条件是一个关于外界的问题,答案只能是「是」或「否」;在编程里我们说「真」或「假」。一个只可能是真或假的值,就叫布尔值。

「如果」和「如果/否则」:选择该做什么

「如果」积木块只有在条件为真时才执行里面的步骤。「如果墙很近,就向右转」的意思是:只有真的有墙靠近了机器人才转弯,否则就跳过这个转弯。

避障 = 循环 + 传感器 + 如果/否则

现在把这些拼到一起。避障就是一个无限循环:读距离传感器,再用「如果/否则」来决定,有东西靠近就避开,否则继续往前开。由于这个循环每秒重复很多次,障碍物一出现,机器人立刻就有反应。

循线:不停查看、随时调整方向

循线要用一个朝向地面的光线或颜色传感器。深色的线比浅色的地板反射的光更少,所以传感器能分辨出「在线上」和「离开线」。机器人一遍又一遍地查看,并调整方向,让自己始终压在线上。

要认识的词

循环:
一种积木块,它替你把一个或多个步骤重复执行,省得你一遍遍地把它们写出来。
无限循环:
一种一直重复下去的循环,直到你把程序停掉为止。
重复直到:
一种循环,它会一直重复,直到某个条件变成真,然后停下来继续往下走。
条件:
一次关于外界情况的判断,比如「墙近不近?」,答案永远非真即假。
If:
一种积木块,只有条件为真时才执行里面的步骤,条件为假时就跳过。
如果/否则:
一种积木块:条件为真时执行一组步骤,为假时执行另一组步骤。
布尔值:
一种只能取两个值之一的数据:真或假。条件给出的答案就是布尔值。
避障:
一种行为:机器人不断循环、读取距离传感器,一旦有东西靠近就避开。
循线:
一种行为:机器人不停查看光线或颜色传感器,并调整方向,始终压在标出的线上。
反应式行为:
机器人根据自己实时感知到的情况改变做法,而不是照着一张固定的清单走。

你的活动

避障程序

目标:编程让机器人不断循环、读取距离传感器,并用「如果/否则」在有东西靠近时转弯、在前方畅通时前进。

  1. 套路始终一样:无限循环,读距离传感器,然后「如果/否则」:有东西靠近就转弯,否则就往前走。
  2. 先定好你的「靠近」规则(比如「小于 10 厘米就算近」)。然后把循环搭起来,让机器人在整个运行过程中一直都在作出反应。

写下发生了什么:

循线探索

目标:用光线或颜色传感器,配合「重复直到」和「如果」,让机器人始终沿着标出的线行进。

  1. 循线是一种不停查看的行为:一遍又一遍地读光线或颜色传感器,并调整方向,让自己始终压在线上。
  2. 一条简单的规则就够用了:如果传感器在线上,就往一边打弯;否则就往另一边打。再把它包进一个「重复直到」循环里,等机器人到达终点标记时结束。

写下发生了什么:

预测

动手测试之前,先写下你的猜测。

运行避障程序之前:机器人碰到墙时,你预测它会怎么做?为什么?

预测一下:如果把读传感器从循环里拿出来,机器人的反应会有什么变化?

测试并记录

避障可靠性测试

把机器人摆在一个障碍物前面,运行程序。记录它有没有及时避开。从同一个起点重复三次。

记录:三次尝试里,机器人成功避开障碍物的有几次

Try有没有避开障碍物?(是/否)它做了什么
   
   
   

知识检测

逐题作答。选择题请把最合适的答案圈出来。

  1. 判断这句话是对还是错。

    无限循环过几秒钟就会自己停下来。

    圈出一个:     /  

  2. 循环在程序里起什么作用?

    • A.它让机器人跑得更快
    • B.它把一个或多个步骤重复执行,省得你一遍遍地写出来
    • C.它让机器人停下来
    • D.它给机器人加一个新传感器
  3. 无限循环和「重复直到」循环有什么区别?

    • A.无限循环跑一次;「重复直到」循环跑两次
    • B.无限循环会一直重复到你停掉程序;「重复直到」循环会一直重复到某个条件变成真
    • C.它们完全一样
    • D.无限循环需要传感器,「重复直到」循环不需要
  4. 像「墙近不近?」这样的条件,答案只能是:

    • A.一个以厘米为单位的数字
    • B.真或假(一个布尔值)
    • C.一种颜色
    • D.一个电机转速
  5. 「如果/否则」积木块是干什么的?

    • A.条件为真时执行一组步骤,为假时执行另一组步骤
    • B.它把一个步骤重复十次
    • C.它总是把两组步骤都执行一遍
    • D.它读取传感器
  6. 避障是怎么工作的?

    • A.机器人按照事先一次性告诉它的固定路线行驶
    • B.一个循环读取距离传感器,如果有东西靠近机器人就转弯;否则就往前走
    • C.机器人等着人来操控它绕过每一个障碍物
    • D.机器人一看到障碍物就关机

反思

你的机器人反复在作什么判断?它靠的是什么信息?

为什么会作出反应的机器人要在传感器检查外面套一个循环,而不是只查一次?

描述一台会对世界作出反应的真实机器人,并说出它检查的是什么条件。