跳到主要内容

家长与教师指南

第 6 周:调试与可靠性

课时长度:70 至 85 分钟

学习目的

学生要把自己做出来的反应式机器人变得靠得住。他们会明白,调试就是弄清楚实际结果为什么和预期结果不一样,而问题一共分三大类:机械类(某个实体部件出了岔子)、程序类(指令写错了或漏了)和传感器类(读数、阈值或校准不对)。他们要在专门设计的调试任务里练手,认识变量和计数器这两样用来存放和跟踪数值的工具,还要做可靠性试验:把同一件任务做三遍,逐次记录预期与实际,用来证明机器人是真的管用。

预期的学生成果

这一周结束时,学生将能够:

  • 把调试解释成:弄清楚实际结果为什么和预期结果不一样
  • 从症状分辨出机械、程序和传感器三类问题
  • 在程序里用变量或计数器来存放或跟踪一个数值
  • 做一次可靠性试验:把同一件任务做三遍,并记录预期与实际
  • 诊断一台不听话的机器人,并说明该怎么修

建议的节奏

About 70 至 85 分钟. Adjust to your group - these are guides, not limits.

步骤重点分钟
调试与三大问题家族预期结果与实际结果,以及机械、程序和传感器三类问题。15 min
预测问题属于哪一族先读每一个症状,在动手排查之前先预测它属于哪一族。5 min
「问题侦探」任务诊断并修好机械、程序和传感器三类问题,每次只改一样。18 min
障碍物计数器用一个变量当计数器,跟踪躲开了多少障碍物。12 min
三次运行的可靠性试验把同一件任务跑三遍,记录预期与实际以及「一致吗?」。15 min
知识检测关于调试、问题家族、计数器和可靠性的五道题。8 min
反思写一写你找到的一个问题,以及那三遍运行让你明白了什么。7 min

开始之前

场地布置

  • 为每位学生或每组打印三次运行测试记录表和「问题侦探」表。
  • 把上周那些反应式机器人(或模拟器任务、卡片程序)准备好,随时可以拿来调试。
  • 布置一个可重复的测试用例:划出起跑线,并固定墙或障碍物的距离,让每一遍运行都真正一模一样。

提前准备

  • 提前每一族各埋一个问题:把轮子拧松(机械)、改掉一个转向数字(程序)、把阈值设坏(传感器)。
  • 练一练在你的套件或模拟器里读取实时传感器数值,这样才好指导学生调整阈值。
  • 想好在你们的设备上学生要怎样给计数器「加 1」,并自己先把障碍物计数器程序跑一遍。

材料

  • 三次运行测试记录表(可打印)(套件, 模拟器, 不插电)
  • 「问题侦探」活动纸,含三大问题家族(可打印)(套件, 模拟器, 不插电)
  • 记录结果用的铅笔和纸(套件, 模拟器, 不插电)
  • 第 5 周做的一台反应式机器人,至少带一个传感器(套件)
  • 卷尺或直尺,用来在每次运行时布置出同样的测试用例(套件, 不插电)
  • 装有浏览器模拟器的电脑或平板(模拟器)
  • 前几周用过的纸板机器人、程序卡片和地板胶带赛道(不插电)
  • 便利贴或计数表,用来当计数器可选(不插电)

安全

  • caution拧轮子、挪线缆或检查机械部件之前,先把机器人关掉。(套件)
  • caution运行过程中,让测试区和障碍赛道上别有手、脚和杂物。(套件, 不插电)
  • info如果要重做纸质保险杠或模型部件,请使用儿童安全剪刀,并在大人陪同下进行。(不插电)
  • info常常保存你的程序和测试记录,免得刷新浏览器把结果弄丢。(模拟器)

怎样组织这节课

  1. 1.在碰任何机器人之前,先讲清楚预期与实际的区别,以及三大问题家族。
  2. 2.让学生先根据症状预测问题属于哪一族,再动手排查;别让他们瞎捣鼓。
  3. 3.坚持每次只改一样、然后重跑一遍,这样才知道到底是什么把问题解决的。
  4. 4.给完整的三次运行可靠性试验留出时间;碰巧成功的一次算不上证据。

常见误解

  • 「跑通过一次,就算修好了」:可靠性需要多次一致的运行,而不是一次。
  • 以为所有问题都出在代码里:很多其实是机械问题(轮子松、线缆拖地)或传感器问题(阈值不对)。
  • 一次改好几样,结果谁也说不清到底是哪一改起了作用。
  • 以为变量和计数器是两码事:计数器不过就是一个拿来计数的变量。

可以问的问题

  • 你原本预期会发生什么?实际又发生了什么?
  • 它是每一遍都以同样的方式出错,还是只是偶尔?这说明它属于哪一族?
  • 你改动的那「一样」东西是什么?它和你的预测对上了吗?
  • 你凭什么说你的机器人是可靠的,而不是碰巧走运?

课堂与分组的调整

降低难度

一次只给学生一个埋好的问题,并直接告诉他们属于哪一族,让他们专心练习修复和三次运行测试,不必同时去判断家族。

提高难度

同时埋下两个来自不同家族的问题,或者要求做一个能触发动作的计数器(比如躲开 3 个障碍物后就停),并且这个功能同样要经受可靠性测试。

小组与全班

In pairs or small groups, give each student a role that rotates - driver (builds or types), navigator (reads the plan), and recorder (fills the worksheet) - so everyone participates. For a whole-class demo, run one shared robot or simulator on the board, have students predict together, then let groups repeat it on their own path. Groups can also mix paths: one builds on the kit while another checks the same idea in the simulator or unplugged, then they compare results.

有器材与无器材说明

Every activity this week runs three ways - all three teach the same core idea, so pick whichever fits your room. No specific product is required.

套件

  • 三次运行测试记录表(可打印)
  • 「问题侦探」活动纸,含三大问题家族(可打印)
  • 记录结果用的铅笔和纸
  • 第 5 周做的一台反应式机器人,至少带一个传感器
  • 卷尺或直尺,用来在每次运行时布置出同样的测试用例

模拟器

  • 三次运行测试记录表(可打印)
  • 「问题侦探」活动纸,含三大问题家族(可打印)
  • 记录结果用的铅笔和纸
  • 装有浏览器模拟器的电脑或平板

不插电

  • 三次运行测试记录表(可打印)
  • 「问题侦探」活动纸,含三大问题家族(可打印)
  • 记录结果用的铅笔和纸
  • 卷尺或直尺,用来在每次运行时布置出同样的测试用例
  • 前几周用过的纸板机器人、程序卡片和地板胶带赛道
  • 便利贴或计数表,用来当计数器

疑难排查

这一周活动中常见的问题,以及可以试试的办法。

  • 一口气把「所有地方」都改了,结果不知道原因是哪一处套件Try: 把改动一个一个撤回,只留一处;改一样,跑一遍,看是不是就是它。
  • 拿不准问题属于哪一族套件Try: 跑三遍:每次错得一模一样,多半是程序;每次结果都不同,那就指向机械或者不稳的传感器。
  • 循环永远结束不了模拟器Try: 这是程序类症状:检查「重复直到」的那个条件是不是真有机会变成真。
  • 机器人对墙毫无反应模拟器Try: 在模拟器里读一下传感器数值,看看阈值是不是落在它正确的那一侧:这是传感器问题。
  • 每次「运行」这个机器人的方式都不一样不插电Try: 把每张卡都写成一条精确的指令,让实际结果可以重现:这样才找得出真正的问题。
  • 分不清是卡片的事还是保险杠的事不插电Try: 把卡片一字不差地念出来;要是卡片没错,那问题就是机械上的。
  • 三遍下来结果一点点地在漂套件Try: 检查电池和起始位置:电量渐渐不足,正是造成不可靠的一种机械或供电原因。
  • 对上了两次,第三次失手套件Try: 失手那一遍就是你的线索:那一遍刚跑完就立刻检查传感器读数和实体安装。
  • 明明什么都没改,几遍跑出来却不一样模拟器Try: 检查起点格是不是真的一模一样,以及循环是靠一个明确的条件结束的,而不是碰运气结束的。
  • 每一遍都对得严丝合缝,感觉太容易了模拟器Try: 换一个更难的测试用例(墙更近、弯更急),看看可靠性在哪里开始崩。
  • 换个人来跑,终点就不一样不插电Try: 把卡片重写成精确、没有歧义的步骤,好让实际结果能够重现。
  • 同一个人跑出来的终点也不一样不插电Try: 把起点位置和步幅都标出来,让测试用例每一遍都真正一模一样。
  • 计数器数出来太多了套件Try: 机器人对同一个障碍物加了不止一次 1:要保证每检测到一次才计一次数,而不是每绕一圈循环就计一次。
  • 计数器一直停在 0套件Try: 检查加 1 这一步是不是在「如果有障碍物」那一支里面,而不是在外面:这是程序问题。
  • 计数器数多了模拟器Try: 只要还挨着同一个障碍物,加 1 就每圈触发一次;应该每检测到一个「新的」才计一次。
  • 计数器一直不变模拟器Try: 确认加 1 的积木块在传感器条件里面,而不是在光秃秃的循环里。
  • 笔画画得太多了不插电Try: 只有「转弯躲开」那张卡真的被触发时才画一笔,而不是每走一步都画。
  • 忘了把计数器清零不插电Try: 每开始新的一遍,都要先把计数器归 0:存放的值必须从头开始。

知识检测参考答案

这里的答案只给成人看;学生活动纸上是不显示答案的。

  1. 1. 诊断一下最可能是哪一类问题。

    正确答案:需要重新校准的传感器问题

    原因:同样的代码,加上变了的光线,再加上不对劲的读数,指向的是传感器与校准的问题,而不是程序或机械问题。

  2. 2. 什么是调试?

    正确答案:弄清楚实际结果为什么和预期结果不一样,然后把它修好

    原因:调试是那种侦探工作:找出实际结果为什么和预期结果不一样,然后把那个原因解决掉。

  3. 3. 一台机器人上周还走直线。它的程序没改过,可现在每一遍都往一边打弯。这最可能属于哪一族问题?

    正确答案:机械问题

    原因:代码没改过,机器人却总往同一边偏,那就怀疑机械问题,比如轮子松了或线缆拖地。

  4. 4. 什么是计数器?

    正确答案:一个从某个数字开始、每发生一次事情就加一的变量

    原因:计数器是一个保存累计数目的变量:它从某个数字开始,每发生一次事件就加一。

  5. 5. 在可靠性试验里,「预期结果」指的是什么?

    正确答案:程序运行正确时「应该」发生的事

    原因:预期结果是应该发生的事;你每跑一遍都拿它和实际结果对照,看机器人可不可靠。

  6. 6. 在可靠性试验里,为什么要把同一件任务跑三遍?

    正确答案:为了证明机器人一遍又一遍都能行,而不是碰巧成功了一次

    原因:反复一致的运行才能证明可靠性;如果某一遍的实际结果和预期结果对不上,你就找到了一个要修的问题。