学生要学的是:工程师在动手造之前,是怎样规划机器人这份活儿的。他们先分清自主系统(靠传感器和程序自己作决定)和遥控系统(由人来操控),然后为一项任务写下需求、约束和评判标准,并权衡其中的取舍。他们要画出自主程序的流程图,用矩形表示动作、菱形表示判断,其中还包括一次安全停车;最后跑一次简短的引导练习任务,为下周的结业项目预演。
这一周结束时,你将能够
- 说明自主系统和遥控系统的区别
- 为一项机器人任务写下需求、约束和成功标准
- 描述机器人方案中的一处取舍,并用工程设计流程作出选择
- 画出自主程序的流程图,包含动作方框、判断菱形和一次安全停车
- 跑一次简短的引导自主任务,并把结果与它的成功标准对照
学习
自主与遥控
机器人干活有两种方式。遥控的时候,是人实时操控它,每一个动作都由人来决定。自主的时候,机器人跑自己的程序,靠传感器自己作决定,没有人在操控。
这一周讲的是自主任务,因为下周你要造一台必须自己完成工作的机器人。这意味着所有的判断都得提前规划好,并写进程序里。
例如:自主:扫地机器人、按预定路线行驶的火星车、人行道上的送货机器人; 遥控:遥控汽车、用摇杆操控的航拍无人机、由人看着画面驾驶的救援机器人
需求、约束和评判标准
动手之前先规划。需求是机器人「必须」做到的事:「把方块送到蓝色区域」。约束是你必须在里面施展的限制:「30 秒之内」「只能用一个传感器」「不能比一个鞋盒大」。评判标准是你判断成败的方式:「停在区域之内」以及「一次也没撞到墙」。
先把这些写下来,方案才不会含糊其辞。如果你都说不清机器人到底有没有把活儿干成,那说明你的标准还不够明确。
例如:需求:「找到目标并停下」; 约束:「一分钟之内完成」; 标准:「在离目标 5 厘米以内停住」
取舍与工程设计流程
好处几乎不可能一次全占。取舍就是放弃一点这个,去换更多的那个。跑得快的机器人可能来不及读传感器就撞上;把它放慢,就是用速度换可靠性。往往没有唯一「正确」的答案:你要挑一个最贴合自己需求和约束的取舍。
工程师用工程设计流程来应付这件事:规划、制作、测试、改进,然后再来一轮。每走完一圈就是一次迭代。你还要考虑效率:在不打破标准的前提下,用更少的步骤、更短的时间或更少的能量把活儿干完。
例如:快 对 稳; 程序简单 对 能应付更多障碍; 步骤更少(效率高)对 检查更仔细
流程图:先把程序画出来,再动手写
流程图就是把你程序的步骤画成一张图。动作写在矩形里(「向前走」「停」)。判断写在菱形里,提一个是或否的问题(「前面有墙吗?」),「是」和「否」各引出一条箭头。箭头把各个方框连起来,你就能顺着看出机器人要走的路。
先画流程图,你就能在动手之前发现问题。一张好的自主流程图,总是包含一个不停查看传感器的循环,以及一个明确的收尾,而那正是安全停车该待的地方。
例如:矩形 = 动作; 菱形 = 一次是或否的判断; 箭头 = 步骤的先后顺序
安全停车与负责任的机器人技术
自主机器人是自己作决定的,所以它需要一种安全停下来的办法:一段编好的行为,在任务完成或者有东西(或有人)挡路时把它停住。没有安全停车,自主机器人可能会一直往墙上或人身上撞。
这正是负责任的机器人技术的一部分:多想想安全,也想想什么时候该由人来掌控。自主机器人特别擅长枯燥重复的活儿,但只要涉及风险(靠近人群,或者一旦出错就可能伤到人),就得有人能监督、能接管、能一键关停。
负责任的设计者还会考虑隐私:带摄像头或麦克风的机器人会收集关于人的信息,所以只收集这份工作真正需要的那些。他们会为失败做好打算:万一系统坏了,谁来负责?它出故障时会安全地停下来,还是照样往前冲?他们也会判断,哪些活儿机器人只该协助人、而不该独自掌控:机器人可以给护士递一件器械,但医疗判断得由人来作。
最后,好的机器人在设计时会顾及不同的用户和需求:使用者可能年幼也可能年长,可能读不懂同一种语言,也可能需要更大的按钮、声音或灯光。为真实而多样的人去设计,本身就是负责任地做机器人的一部分。
例如:扫地机器人在楼梯边缘停下并后退; 有人走到前面时,送货机器人会暂停; 测试时有人把手放在停止按钮旁边随时待命; 家用机器人只录它需要的内容,而且录之前会先征求同意; 警示同时用灯光和声音,好让更多人能注意到
现实世界里的自主机器人
自主机器人已经在干实实在在的活儿了,而且几乎都是枯燥、脏累或危险的活儿,也几乎都有人在旁边监督。看看真实的例子,有助于你规划自己的任务:每一个都在感知世界、用程序作决定、然后行动,而且都有一种安全停下来的办法。
读这些例子时,留意第 1 周那个模式:输入(传感器)、处理(判断)、输出(动作),再加上一次安全停车和一个随时能介入的人。
例如:仓库配送机器人把货架送到工人面前,同时感知其他机器人以免相撞; 火星车自己走完规划好的路线,因为从地球发来的指令要好几分钟才能到; 农业机器人在作物行间穿行,检查庄稼或者除草; 搜救机器人钻进废墟或浓烟,那些地方对人来说太危险了; 水下检测机器人去检查管道、船体和线缆,那些地方潜水员没法安全抵达; 工厂里的机械臂在安全护栏后面,一遍又一遍精准地焊接和组装同一个零件; 机器人手术器械让外科医生的动作更稳、更精细,而全程掌控的始终是医生本人
要认识的词
- 自主:
- 靠自己行动:机器人用传感器和程序决定该做什么,不需要有人操控。
- 遥控:
- 由人实时地、一步步地操控,比如用摇杆或手机应用。
- 需求:
- 机器人「必须」做到、才算完成任务的事,比如「到达卸货区」。
- 约束:
- 你必须在里面施展的限制条件,比如时间、尺寸、材料或预算。
- 评判标准:
- 你用来判断成败的尺度,比如「在离墙 5 厘米以内停住」或者「30 秒内跑完」。
- 取舍:
- 放弃一点某样好东西,去换来更多的另一样,比如开慢一点来换取更可靠。
- 工程设计流程:
- 工程师们反复走的那个循环:规划、制作、测试、改进。
- 迭代:
- 在设计循环里走完的一圈:测试你的方案或机器人,找出问题,再把它改好。
- 效率:
- 用更少的东西把活儿干好:更少的步骤、更短的时间,或者更少的能量。
- 安全停车:
- 一段编好的行为,在任务完成或者有东西挡路时,让机器人安全地停下来。
- 负责任的机器人技术:
- 多想想安全,也想想什么时候该由人、而不是机器人来掌控。
- 流程图:
- 程序的分步示意图,用方框表示动作、用菱形表示判断。
注意安全
这一周动手搭建或运行机器人之前,先把这些读一遍。
- Caution:练习跑动时,保持测试区域通畅,并随时准备好在机器人跑出路线时把它停住;让手指远离转动的轮子。
- Caution:永远要编好一次安全停车,让自主机器人在任务完成或有东西挡路时停下来,而不是硬顶着往墙上或人身上撞。
- Caution:保持地板上的胶带赛道通畅,免得演示任务时有人绊倒。
- Note:常常保存你的程序和日志,免得刷新浏览器把方案弄丢。
动手做
选择你的路线
这门课你可以用机器人套件、浏览器模拟器,或者不插电、只用家里的材料来上。挑一条就行,随时可以换,你的成果不会丢。
写一份任务方案
机器人套件把一件小小的自主任务变成一份方案:需求、约束、成功标准,以及你不得不权衡的一处取舍。
- 挑一件小的自主任务,比如「开到区域里停下」或者「一直找到目标为止」。把它写在「任务规划书」的最上面。
- 填写规划书:需求(它「必须」做到什么)、约束(时间、尺寸、只有一个传感器之类的限制)和评判标准(你要怎样判断成败)。然后点明一处你不得不权衡的取舍,比如速度与可靠性。
为你的套件机器人规划一次任务
你需要:「任务规划书」活动纸, 作参考用的套件机器人, 一个做了标记的区域或一小段路线
步骤
- 1挑一件你的套件这周真能做到的任务,比如开到胶带标出的区域里然后停下。
- 2先写需求,再写你的套件带来的约束(它的速度、它仅有的一个传感器、你手头的场地)。
- 3写下可衡量的成功标准,然后点明一处取舍,比如开慢一点好把传感器读稳。
做成了是什么样:一份填好的规划书,至少有两条需求、两条约束、两条可衡量的标准,以及点明的一处取舍。
- 需求写明了机器人「必须」做到什么
- 约束列出了真实存在的限制
- 标准是可衡量的(一个数字,或者一个明确的是与否)
- 点明了一处取舍
安全:这一步是在纸上做的;规划的时候把机器人关着。
如果不管用
- 需求和约束看着一个样
- - 需求是一件要干的活儿(「到达区域」);约束是一条限制(「30 秒之内」)。把每一行都归到其中一类里去。
再往前一步:再加一个更难的第二版任务,并列出它带来了什么新的需求。
画出任务流程图
机器人套件把任务方案变成一张流程图,其中要有动作方框、至少一个判断菱形、一个查看传感器的循环,以及一次安全停车。
- 在流程图页上,从一个「开始」方框出发,到一个「安全停车」方框结束。动作放进矩形里,每一次是或否的判断放进菱形里,并配上一条「是」箭头和一条「否」箭头。
- 你的自主流程图必须不停地查看传感器(也就是一个循环),而且必须终结于一次安全停车:任务完成时或者有东西挡路时,机器人就停下来。
给你的套件任务画流程图
你需要:流程图页, 你已经填好的「任务规划书」
步骤
- 1按顺序写下任务的各个步骤:开始,然后是各个动作(向前走等等)。
- 2为传感器的检查加一个判断菱形,比如「前面有墙吗?」,并配上一条「是」的路径和一条「否」的路径。
- 3让「否」那条路径绕回去,继续行驶和检查;把「是」那条路径接到「安全停车」方框。
做成了是什么样:一张从「开始」到「安全停车」的流程图,包含动作方框、至少一个判断菱形、一条绕回去的循环,以及一个明确的结束。
- 动作都画在矩形里
- 至少有一次判断画成了菱形,并配有「是」和「否」的箭头
- 有一个循环在不停地查看传感器
- 以安全停车收尾
安全:这是纸上的一步;现在还不需要让任何机器人跑起来。
如果不管用
- 流程图永远停不下来
- - 每张自主流程图都需要一个出口:从某个判断引一条箭头到「安全停车」方框。
再往前一步:再加一个判断菱形,让机器人能应付两种不同的传感器读数。
引导式自主练习任务
机器人套件跑一次简短的自主任务(开到一个区域、对一个障碍物作出反应、然后安全停下),为下周的结业项目做预演。
- 直接照着你的流程图把程序搭出来:一段行驶的顺序指令、一个不停查看传感器的循环、一个对障碍物作出反应的条件,以及机器人到达区域或碰到障碍物时的安全停车。
- 跑一遍,对照你的成功标准看结果,并记下一处你想改进的地方;那个「改进」的步骤就是一次迭代,也正是你下周要大量去做的事。
在你的套件机器人上跑这次练习任务
你需要:带一个传感器的机器人套件, 做了标记的区域或一小段路线, 你的流程图
步骤
- 1布置一小段路线:一条起跑线、一个要抵达的区域,还有一个挡在路上的障碍物。
- 2编写一段前进的顺序指令、一个查看距离或触碰传感器的循环、一个对障碍物作出反应的条件,以及到达区域时的安全停车。
- 3从起跑线跑一遍,对照你的成功标准检查一下,并记下一处改进。
做成了是什么样:套件机器人开到区域、对障碍物作出反应,并安全地停下来,而不是硬顶过去。
- 到达了区域
- 对障碍物作出了反应,而不是视而不见
- 安全地停下(没有继续往前开)
- 记下了一处改进
安全:保持测试区域通畅,机器人运行时手指要离轮子远一点。 随时准备好,一旦机器人跑出路线就把它停下。
如果不管用
- 机器人对障碍物视而不见
- - 检查传感器阈值,以及循环是不是一直在读传感器,就像第 6 周做可靠性时那样。
- 机器人冲过了区域
- - 把行驶速度降下来,或者在停车之前加一次距离检查:这就是拿速度换可靠性的取舍。
再往前一步:把障碍物挪到新位置,确认机器人照样会作出反应并停下。
给机器人编程
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.
引导式练习任务程序
照着你的流程图搭出来的自主练习程序:向前行驶、一个不停查看传感器的循环、一个对障碍物作出反应的条件,以及在区域处的安全停车。
添加积木块
事件与执行
移动
控制
数据
输出
变量与计数器
你的程序
- 前进
- 机器人(箭头指向它的朝向)
- 终点区(虚线框)
- 墙(灰色,带 X)
地图:一片 4 × 3 的网格。 机器人从第 1 列、第 2 行出发,朝向右。 终点区在第 4 列、第 2 行。 有 1 面墙。
就绪.
可以运行了。 · 0 steps
机器人状态
- 列
- 1
- 行
- 2
- 朝向
- 右
- 前方距离
- 1 格
- 触碰
- 没有接触
- 在线上
- 否
- 光线
- 80
- 在终点区内
- 否
- 碰撞次数
- 0
- 步数
- 0
机器人在第 1 列、第 2 行,朝向右。 前方距离:1 格。 触碰:没有接触。 在线上:否。 光线: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.
怎样验证:跑一遍引导式练习任务,把发生的情况和你写在规划书上的每一条成功标准逐条对照。
测试与改进
练习任务与它的标准对照
每次都从同一个起点跑这次引导式练习任务。每跑一遍,都记下发生了什么,并对照规划书上的成功标准检查一遍。
要测量的:每一条成功标准是否达成,以及结业项目里该改什么
| Run | 到达区域了吗?(是/否) | 对障碍物作出反应了吗?(是/否) | 安全停下了吗?(是/否) | 该改进什么 |
|---|---|---|---|---|
知识检测
回答这几题,检验一下你能否规划一次自主任务、并看懂一张流程图。
1. 一台送货机器人靠自己的传感器和程序,自己开到了卸货区,全程没人操控。这台机器人是:
2. 「机器人必须到达蓝色区域」和「它必须在 30 秒之内完成」。哪一条是需求,哪一条是约束?
3. 在流程图里,菱形代表什么?
4. 你的机器人跑得快,可有时来不及读传感器就撞了。你把它放慢,好让它读得稳。这个选择属于:
5. 自主机器人的程序里为什么需要一次安全停车?
已答 0 / 5
反思
你的反思会自动保存。
下周预告
下周就是结业项目了:你要设计、搭建或模拟、编程、测试并改进一台机器人,让它完成一项你自己挑的、有用的任务,用的正是你今天练过的这套规划方法。
- 把你的任务规划书和流程图留着:结业项目里可以直接沿用,也可以在它们的基础上升级。
- 把结业项目的五个任务方向(配送、搜救、检测、分拣、无障碍辅助)浏览一遍,想想你会选哪个。
- 给你的套件充好电或者把模拟器加入收藏夹,再把前几周的纸板和材料都收拢起来。
完成第 7 周
完成以下内容,即可结束本周并解锁下一周:
- 完成任务规划书,写明需求、约束、评判标准和一处取舍 (not done yet)
- 画出任务流程图,含一个判断菱形和一次安全停车 (not done yet)
- 跑一遍引导式练习任务,并对照它的标准做记录 (not done yet)
- 知识检测至少答对 5 题中的 4 题 (not done yet)
- 写下你的反思 (not done yet)