跳到主要内容

第 4 周

让机器人学会感知

读取真实的传感器数值,找出阈值,并给机器人做校准,好让它感知到的东西靠得住。

  • 70 至 85 分钟
  • 任务: 在不断变化的条件下读取传感器,找出一个阈值,并把它校准到在这个房间里读数可靠为止。

机器人已经会走、也会照指令做事了,这一周学生要给它装上感官。他们会认识触碰、距离、光线和颜色四种传感器,并明白传感器读数是一个机器人能测出来的数字。他们会发现:阈值是一个分界点,能把数字变成「近还是远」「亮还是暗」;每个传感器都有探测极限;读数还会来回小幅跳动(噪声),所以要多测几次,并针对这个房间、这台机器人做校准。读数和校准之后,他们要编写一个由传感器触发的停车程序:机器人一边前进一边用距离传感器在墙前刹住,这样阈值终于控制了一个真实的动作。至于用循环和条件贯穿整个任务的完整自动行为,下周才登场。

这一周结束时,你将能够

  • 说出触碰、距离、光线和颜色传感器的名称,以及它们各自测量什么
  • 读出传感器数值,并说明读数是一个数字,而不是「是」或「否」
  • 找出一个能把近和远、或者亮和暗分开的阈值
  • 说明什么是探测极限和噪声,以及为什么要多测几次
  • 校准传感器,让它的读数在这个房间、这台机器人上都靠得住

学习

机器人可以拥有的四种感官

机器人靠传感器感知世界。常见的有四种:触碰传感器(有没有被按下?)、距离传感器(最近的东西有多远?)、光线传感器(有多亮?)和颜色传感器(这个表面是什么颜色?)。

每种传感器只测一样东西。距离传感器分不出颜色,颜色传感器也测不出距离。为一件活儿挑对传感器,本身就是机器人学的一部分。

例如:触碰:门铃按钮; 距离:汽车倒车时的提示音; 光线:在暗处会自动变暗的手机屏幕; 颜色:按颜色分拣回收物的机器

读数是一个数字,不是「是」或「否」

大多数传感器不会只说「是」或「否」,它们给出的是一个数字,叫作传感器读数。距离传感器可能读出 12 厘米;光线传感器可能读出亮度 47。

既然是数字,读数就会随着外界的变化平滑地变化。你把墙挪近一些,距离的数字就变小;房间变亮一些,光线的数字就变大。

例如:距离传感器:12 厘米、30 厘米、85 厘米; 光线传感器:从 10(暗)到 90(很亮); 触碰传感器是个例外:它通常只读出按下或没按下

阈值把数字变成判断

阈值是你自己挑的一个分界数字,用来区分两种情况。如果你挑 15 厘米,那么小于 15 的读数就算「近」,大于 15 的就算「远」。

机器人没法替你挑阈值:你得观察那些读数,挑一个能把你关心的两种情况干净利落分开的数值。这一周你只负责找出并记下阈值;下一周机器人才会拿它们来作出反应。

例如:近与远的分界定在 15 厘米; 亮与暗的分界定在亮度 40; 循线机器人在黑线和白地板之间的分界

探测极限:每个传感器都有量程

没有哪个传感器什么都能感知。距离传感器超过一定量程就不管用了:它也许在 2 米以内读得挺准,再远就是一堆废数。它还能感知到的那个最远的点,就是它的探测极限。

传感器还有个「最近」的极限:把墙贴得离距离传感器太近,读数也会变得古怪。摸清这些极限,你就知道哪里可以信它,哪里不能。

例如:读不出大约 2 米以外的距离传感器; 需要表面贴得很近、几乎挨着的颜色传感器; 被一扇特别亮的窗户搞糊涂的光线传感器

噪声:为什么只测一次不够

把距离传感器对准一堵不动的墙,连着读几次。你可能会得到 30、31、30、29、31:明明什么都没变,数字却在小幅跳动。这种跳动就叫噪声。

有了噪声,只测一次就可能被骗。做科学和做机器人的人都会多测几次,取中间值或平均值,这比单独一个数字可靠得多。

例如:对着不动的墙测出 30、31、30、29、31; 云飘过时忽高忽低的光线传感器; 测 3 到 5 次,再互相比较

校准与可靠性

校准的意思是核对或调整传感器,让它的读数在这个房间、这台机器人上是准确的。光线传感器在阳光充足的房间和在昏暗的房间读数不一样,所以同一个阈值不可能到处都好使:你得针对身处的这个房间去校准。

校准并测试过的传感器才可靠:你可以信得过它每次都给出同样、正确的答案。可靠性正是关键所在,因为一台感知有误的机器人,做出来的动作也会有误。

例如:分别测一个「暗」读数和一个「亮」读数,把中点定为阈值; 换了房间之后,重新核对距离阈值; 确认颜色传感器在你真正用的那些表面上分得清红和蓝

要认识的词

触碰传感器:
一种能判断自己有没有被按下的传感器,就像按钮或者保险杠。
距离传感器:
一种测量最近的物体有多远的传感器,通常以厘米为单位。
光线传感器:
一种测量环境有多亮或多暗的传感器,光越亮,给出的数字越大。
颜色传感器:
一种读取正前方表面颜色的传感器,比如红色、蓝色或白色。
传感器读数:
传感器在某一刻给出的数字,比如 20 厘米,或者亮度 47。
阈值:
你自己挑的一个分界数字,用来区分两种情况,比如「比 15 厘米还近就算近」。
探测极限:
超过这一点传感器就感知不到了,比如距离传感器读不出大约 2 米以外的东西。
校准:
调整或核对传感器,让它的读数在这个房间、这台机器人上是准确的。
噪声:
什么都没变,读数却还是会小幅跳动,正因如此才要多测几次。
可靠性:
你能有多信得过一个传感器每次都给出同样、正确的读数。
一次测量:
一场测试里的单独一次测量;通常要做好几次,然后互相比较。
基准读数:
在一个已知、稳定的条件下先测出来的读数,用来和其他读数作比较。

注意安全

这一周动手搭建或运行机器人之前,先把这些读一遍。

  • Caution:把机器人放在稳当的平面上,在各个测试点之间搬动它时当心轮子。
  • Caution:给蒙眼扮演「人体传感器」的同学做好引导,并把地面清空,免得有人绊倒。
  • Caution:测试光线传感器时,不要用手电筒直射任何人的眼睛。
  • Note:常常保存你的读数记录,免得刷新浏览器时把数据弄丢。

动手做

选择你的路线

这门课你可以用机器人套件、浏览器模拟器,或者不插电、只用家里的材料来上。挑一条就行,随时可以换,你的成果不会丢。

传感器考察实验

机器人套件

测量条件变化时传感器读数如何随之变化,并找出一个能干净利落分开两种情况的阈值。

  • 挑一个条件一步一步地改(到墙的距离、亮度,或者表面的颜色),每改一步就读一次传感器。
  • 把每个读数都记在记录表上。然后看着这些数字挑一个阈值:一个能把「近和远」或者「亮和暗」分开的分界值。
  • 记住:这一周机器人只负责读数和报告。这些数字是什么意思,由你来判断。

在量好的条件下读真实传感器

你需要:一台带传感器的可编程机器人, 卷尺或直尺, 一堵墙或一个盒子, 「传感器读数记录」活动纸

步骤

  1. 1装上传感器,载入一个能读取传感器并把数值显示或报告出来的短程序(读传感器、等待、停止)。
  2. 2如果是距离传感器:把墙分别放在 10 厘米、20 厘米、40 厘米和 80 厘米处,逐一记录读数。如果是光线传感器:分别在强光下、在房间正常光线下、以及用手遮住时读一次数值。
  3. 3看看你的这些数字,挑一个阈值:比如在哪个距离以内你会说东西「近」,或者亮度低到多少你会说「暗」。
  4. 4把你的阈值写在记录表上,再写一句话说明你为什么挑这个数字。

做成了是什么样:一张读数表,随着墙越来越近,数字明显变小(或者随着变亮,数字明显变大),并挑出了一个能分开近和远的阈值。

重点看:
  • 在不同条件下至少记录了四个读数
  • 读数变化的方向说得通
  • 挑出了一个阈值数值,并用一句话说明了理由

安全:让机器人待在桌上或地上,免得你看显示屏时它掉下去。

如果不管用

读数上蹿下跳,就是稳不下来
- 那就是噪声:每个距离上测三次,取中间那个值。
不管怎么弄,距离读数都卡在一个很大的数字上
- 你可能已经超出了传感器的探测极限,或者对着空处;把它正对着一米以内的一堵平整的墙。

再往前一步:换到另一个房间,把你的那些条件重新测一遍,看看你的阈值还管不管用、要不要重新校准。

第 4 周实验

传感器考察实验

把一件物体放在不同的距离上,再分别试试浅色和深色的表面。读取实时的传感器数值,记进你的表格,并挑一个阈值。传感器给出的是一次测量,也就是一个数字,而不是对这件物体是什么的理解。

布置这次测试

物体距离

How many cells ahead of the robot the object sits. Beyond 5 cells the sensor cannot see it.

表面

深色表面反射的光更少,所以光线传感器读出来的数字更小。

传感器实时读数

你一改动设置,这些数值就会立刻更新。同样的设置,每次都是同样的数字。

距离
2 格
触碰
未按下
光线
80 / 100
在线上

你的数据表

Record at least three readings. Try different distances, an edge-of-range reading, the same reading twice, a light surface, and a dark surface.

我设定的距离光线备注删除
还没有任何读数。先在上面布置一次测试,再按「添加当前读数」。

0 readings recorded.

挑一个阈值

A threshold is the number your robot compares against to decide. Here: if the distance is at or below your threshold, the robot calls the object NEAR.

填一个阈值数字,就能看到机器人此刻会作出什么判断。

记录至少三个读数并填入一个阈值,就能完成这个实验。

这一页上的所有内容都只保存在这台设备上。

校准与阈值挑战

机器人套件

靠多测几次来对付噪声,然后校准出一个在这个房间里可靠好用的亮暗(或远近)阈值。

  • 挑一个稳定的条件,什么都别动,对着同一样东西连读几次;留意数字跳动了多少。这个跳动就是噪声。
  • 在一个明显「低」的条件和一个明显「高」的条件下各测一次(暗对亮,或者近对远)。把阈值定在中间,好把两者干净利落地分开。
  • 检验你的阈值:确认低条件的读数都落在一边、高条件的读数都落在另一边。如果不是,就调一调,这就是校准。

在真实传感器上校准阈值

你需要:一台带光线或距离传感器的可编程机器人, 彩色或深浅不同的卡片,或者一堵墙, 「传感器读数记录」活动纸

步骤

  1. 1对着同一个不动的目标读五次,把五个数字都记下来,好看清噪声。
  2. 2对着一个明显「暗」的表面(或一堵远墙)读三次,再对着一个明显「亮」的表面(或一堵近墙)读三次。
  3. 3把阈值定在暗平均值和亮平均值正中间。
  4. 4检验一下:给传感器看几个深色和浅色的表面,确认每个都落在阈值的正确一侧。要是有落错边的,就调一调。

做成了是什么样:一个校准好的阈值,能在这个房间里经过多次检验,正确地把深色和浅色(或近和远)的表面分开。

重点看:
  • 记录了五个噪声读数
  • 记录了暗平均值和亮平均值
  • 在两者之间定下了一个阈值
  • 测试表面分类正确,或者把阈值调到分类正确为止

安全:移动机器人去测试各种表面时,让线缆远离轮子。

如果不管用

某个表面有时会落错边
- 可能两个条件靠得太近,也可能噪声太大;挪一挪阈值,或者换对比更强烈的表面。
整批读数比先前整体偏移了
- 房间的光线变了:现在就重新校准,这正是校准重要的原因。

再往前一步:把机器人搬到更明亮或更昏暗的地方,为那个房间校准一个新的阈值。

给机器人编程

Build a program from blocks, then run it on the simulator. On the kit path, use the same steps in your robot's app; unplugged, act the blocks out on a floor grid. Your program saves on this device.

传感器停车挑战

编程让机器人一边前进一边盯着距离传感器,然后用你找到的阈值停在墙前的那一格。跑三次,中间调整速度或阈值,并在备注里说明你最终为什么这么设。

就绪

添加积木块

事件与执行

移动

控制

数据

输出

变量与计数器

还没有。

你的程序

  • 前进
第 1 列,第 1 行第 2 列,第 1 行第 3 列,第 1 行第 4 列,第 1 行:墙Goal zone at column 3, row 1Robot at column 1, row 1
  • 机器人(箭头指向它的朝向)
  • 终点区(虚线框)
  • 墙(灰色,带 X)

地图:一片 4 × 1 的网格。 机器人从第 1 列、第 1 行出发,朝向右。 终点区在第 3 列、第 1 行。 有 1 面墙。

就绪.

可以运行了。 · 0 steps

机器人状态

1
1
朝向
前方距离
2
触碰
没有接触
在线上
光线
80
在终点区内
碰撞次数
0
步数
0

机器人在第 1 列、第 1 行,朝向右。 前方距离:2 格。 触碰:没有接触。 在线上:否。 光线:80。 不在终点区内。

日志输出

还没有记录任何内容。

  • Heads up: This program has no safe stop behavior. Add a safe stop so the robot stops when it is done or blocked.

预测

Commit to a guess before you test - then see how close you were. Your predictions save automatically.

怎样验证:把墙放到 40 厘米处,读三次传感器,把中间那个读数和你的预测对照。

怎样验证:什么都别动,连读五次,看看它们是完全一致,还是会小幅跳动(噪声)。

测试与改进

距离与读数对照表

把墙(或者把条件)设到表上列出的每个距离,读取传感器并记下数字。要是数字在跳,就读三次取中间那个。

要测量的:每个设定距离下的传感器读数,以及你会把它算作近还是远

设定距离(厘米)传感器读数算近还是算远?

三次测量的噪声检查

挑一个条件,之后不要再改动它。连着读三次传感器,把每次读数都记下来,看看它跳动了多少。

要测量的:什么都没变的情况下,几次测量之间读数变化了多少(也就是噪声)

第几次测量传感器读数与第 1 次的差值

知识检测

回答这几题,检验一下你是否理解传感器读数、阈值、噪声和校准。

  1. 1. 把每种传感器和它测量的东西连起来。

    为每一项选出配对。

    距离传感器
    光线传感器
    触碰传感器
    颜色传感器
  2. 2. 用你自己的话说说,什么是传感器阈值?

  3. 3. 什么是传感器读数?

  4. 4. 距离传感器对着一堵墙读出 30 厘米,对着一堵更近的墙读出 12 厘米。这说明读数是怎么回事?

  5. 5. 你想让机器人把 15 厘米以内的一切都当作「近」。这个数字 15 叫什么?

  6. 6. 你对着同一堵不动的墙读了五次,得到 30、31、30、29、31。这些数字为什么会跳?

  7. 7. 你的亮暗阈值在教室里好用,到了阳光充足的房间却失灵了。你该怎么办?

已答 0 / 7

反思

你的反思会自动保存。

下周预告

下周机器人不再只是报数字,而要用你找到的阈值,靠循环和条件自己对这些数字作出反应。

  • 把这一周校准好的阈值留着:下周你要用它们让机器人自己作判断。
  • 给你的套件充好电,或者把模拟器加入收藏夹。
  • 想一条简单的规则,比如「如果墙比我的阈值还近,就转弯」,那正是你接下来要搭的东西。

完成第 4 周

完成以下内容,即可结束本周并解锁下一周:

  • 在传感器考察实验中记录不同条件下的传感器读数 (not done yet)
  • 在校准与阈值挑战中挑出并校准一个阈值 (not done yet)
  • 知识检测至少答对 5 题中的 4 题 (not done yet)
  • 写下你的反思 (not done yet)