编程复杂性
机器人可以设计来执行各种各样的任务。 其中一些任务非常简单,例如打开自动门。 其他的情况可能要复杂得多,比如在城市环境中行驶的自动驾驶汽车。 无论任务有多复杂,都可以将其分解为更简单的任务。 这些任务被称为行为,是机器人编程的基础。
行为是机器人行动的方式,其复杂程度取决于机器人的构造或编程方式。 像 VEX V5 Speedbot 这样的简单移动机器人只有两个马达,而 Clawbot 有四个马达,其中包括用于 Arm 和 Claw 的两个附加马达。 这两个机器人的行为都将涉及转动这些马达来完成设定的目标。 通过更多的设计和编程,你可以从这个简单的行为开始,做更复杂的行为。
以下是 Speedbot 和 Clawbot 机器人行为从简单到复杂的列表。 在括号中,你可以看到组成每个行为的更简单的行为。
-
旋转指定给特定端口的电机
-
向前行驶(使用传动系统旋转左右电机)
-
行驶 5 米(向前行驶,然后停止)
-
抓取远处物体(行走 2 米,旋转爪电机来抓取)
-
取回一个物体并将其放在高架子上(抓住远处的物体,转身,行走 2 米,使用手臂和爪子马达抬起并释放物体)
您可以了解如何将任何更复杂的行为分解为更简单的行为。 这些成为任何复杂任务的基石。
教师提示
-
指导学生将复杂的机器人行为分解为更小、简单的步骤。 该过程称为分解。
-
向学生解释将复杂的行为分解(分解)为更简单的任务是规划和编程的重要部分。
-
如果有足够的课堂时间,允许学生运行他们的自主项目。
拓展你的学习
为了将此活动与计算思维和分解联系起来,要求学生规划或列出机器人完成以下活动将执行的行为步骤:
-
活动一:行走1米,返回起点。
-
活动二:翻转位于机器人前方 60 厘米处的盒子。
-
活动三:拿起一个物体,摇晃它,移动 30 厘米,将物体放在地上,然后返回起点。
激发讨论
学生应该分享他们在上述“扩展学习”活动中列出的行为步骤。 下列每个问题都可以在部分或全部活动之后提出。
问: 每个小组列出了哪些步骤或行为来成功完成此活动?
答: 除了列出完成活动或任务所需的简单机器人行为(前进、后退、左转或右转)之外,学生还需要考虑机器人必须行进的长度以及手臂的运动和速度。 学生应该创建自己的行为列表,以便显示每个步骤。
问: 此活动的解决方案(步骤列表)有何相同点和不同点?
答: 学生将根据他们的解决方案进行比较。 维恩图可能是组织学生分享的步骤的好方法。 如果大多数学生都说出了某个特定的步骤,则将其添加到圆圈重叠的中心。 如果只有一个或几个学生说出某个特定的步骤,则将其添加到一个圆圈或另一个圆圈中。 完成后,中心的步骤应该非常简单,无法进一步分解,而仅在其中一个圆圈中列出的步骤可能并不像它们应该的那样简单。 然而,根据班级将复杂行为分解为最简单步骤的经验,这种模式可能会发生逆转。
问: 与成功的解决方案有相似之处吗? 如果有,它们是什么?
A: 最成功的解决方案是那些包含最多细节和具体性的解决方案。 该机器人采用一种语言进行编程,其具有非常具体的行为,这些行为已被分解为最小的组件。 例如,我们通常会说机器人“行走 1 米然后返回到起点”,但是这种高级描述在编程时并不容易翻译。 你必须进一步分解:向前行驶 1 米,转弯 180 度,再向前行驶 1 米。 但即使这样也可能不够精确,您需要这种程度的细节才能进行编程:将驱动和转弯速度设置为 40%,向前行驶 1 米,等待 3 秒,左转 180 度,等待 1 秒,然后向前行驶 1 米。 我们越是将复杂的行为分解成可供编程的机器人行为,我们就越能更好地完成一个项目。