STEM强化学习方法

工程教育领域有许多优秀的课程,但围绕这些课程构建的课程往往存在一个严重缺陷——各个主题之间缺乏良好的连贯性。 有人可能会反对:这怎么可能?

在制定培训计划时,每门课程都会注明先决条件和必须学习的明确顺序。 例如,为了构建和编程一个原始的移动机器人,您需要了解一点力学来创建其物理结构; 欧姆/基尔霍夫定律层面的电学基础知识、数字和模拟信号的表示; 使用向量和矩阵进行运算,以描述机器人在空间中的坐标系和运动; 数据表示、简单算法和控制传输结构等方面的编程基础知识来描述行为。

所有这些都包含在大学课程中吗? 当然有。 然而,通过欧姆/基尔霍夫定律,我们得到了热力学和场论; 除了矩阵和向量的运算之外,还必须处理约旦形式; 在编程中,研究多态性 - 解决简单的实际问题并不总是需要的主题。

大学教育是广泛的——学生走得很宽泛,往往看不到他所接受的知识的意义和实际意义。 我们决定转变大学教育的 STEM(科学、技术、工程、数学)范式,创建一个基于知识连贯性的课程,以提高未来的完整性,也就是说,意味着对科目的深入掌握。

学习一个新的学科领域可以比作探索一个当地区域。 这里有两个选择:要么我们有一张非常详细的地图,其中有大量需要研究的细节(这需要大量时间),以便了解主要地标在哪里以及它们之间的关系; 或者您可以使用原始计划,其中仅标明要点及其相对位置 - 这样的地图足以立即开始朝正确的方向前进,并在您前进时澄清细节。

我们在冬季学校测试了强化 STEM 学习方法,该学校是我们与麻省理工学院的学生在以下机构的支持下共同举办的: JetBrains 研究。

材料准备


学校课程的第一部分是为期一周的主要领域课程,包括代数、电路、计算机架构、Python 编程和 ROS(机器人操作系统)简介。

这些方向的选择并非偶然:它们相互补充,旨在帮助学生乍一看看似不同的事物(数学、电子和编程)之间的联系。

当然,主要目标不是进行大量讲座,而是让学生有机会在实践中应用新学到的知识。

在代数部分,学生可以练习矩阵运算和求解方程组,这对于研究电路很有用。 了解了晶体管的结构以及在此基础上构建的逻辑元件后,学生可以看到它们在处理器设备中的使用,并且在学习了Python语言的基础知识后,可以用它为真正的机器人编写程序。

STEM强化学习方法

达基敦


学校的目标之一是尽可能减少模拟器的工作。 因此,准备了大量的电子电路,学生必须用真实的元件将其组装在面包板上并在实践中进行测试,并且选择 Duckietown 作为项目的基地。

Duckietown 是一个开源项目,涉及名为 Duckiebots 的小型自主机器人及其行驶的道路网络。 Duckiebot 是一个配备 Raspberry Pi 微型计算机和单个摄像头的轮式平台。

基于此,我们准备了一系列可能的任务,例如构建路线图、搜索物体并在它们旁边停下来等等。 学生还可以提出自己的问题,不仅编写程序来解决它,还可以立即在真实的机器人上运行它。

教学


讲座期间,教师使用预先准备的演示文稿来展示材料。 有些课程被录制成视频,以便学生可以在家观看。 在讲座期间,学生们在计算机上使用材料,提出问题,并一起或独立地解决问题,有时是在黑板上。 根据作业结果,分别计算每个学生在不同科目的评分。

STEM强化学习方法

让我们更详细地考虑每个科目的课堂教学。 第一门课是线性代数。 学生们花了一天时间学习向量和矩阵、线性方程组等。 实践任务是交互式构建的:提出的问题单独解决,老师和其他学生提供评论和提示。

STEM强化学习方法

第二科目是电和简单电路。 学生学习电动力学的基础知识:电压、电流、电阻、欧姆定律和基尔霍夫定律。 实际任务部分是在模拟器中完成或在电路板上完成,但更多的时间花在构建真实电路,例如逻辑电路、振荡电路等。

STEM强化学习方法

下一个主题是计算机体系结构——从某种意义上说,是连接物理和编程的桥梁。 学生学习基础知识,其意义更多是理论意义大于实践意义。 作为练习,学生在模拟器中独立设计算术和逻辑电路,并完成任务获得积分。

第四天是编程的第一天。 选择 Python 2 作为编程语言是因为它是 ROS 编程中使用的语言。 这一天的结构如下:教师介绍材料,给出解决问题的例子,而学生则坐在电脑前听,并重复老师在黑板或幻灯片上写的内容。 然后学生自己解决类似的问题,然后由老师对解决方案进行评估。

第五天专门讨论 ROS:这些人学习了机器人编程。 整个上课时间,学生们坐在电脑前,运行老师讲的程序代码。 他们能够独立运行基本的 ROS 单元,并且还被介绍到 Duckietown 项目。 这一天结束时,学生们已经准备好开始学校的项目部分——解决实际问题。

STEM强化学习方法

所选项目的描述

学生被要求组成三人小组并选择一个项目主题。 结果,通过了以下项目:

1. 颜色校准。 Duckiebot需要在光照条件变化时对相机进行校准,因此存在自动校准任务。 问题是颜色范围对光非常敏感。 参与者实现了一个实用程序,可以突出显示框架中所需的颜色(红色、白色和黄色),并以 HSV 格式为每种颜色构建范围。

2.鸭子出租车。 这个项目的想法是 Duckiebot 可以停在一个物体附近,捡起它并沿着特定的路线行驶。 选择一只亮黄色的鸭子作为对象。

STEM强化学习方法

3. 构建路线图。 有一项任务是构建道路和交叉路口图。 该项目的目标是在不向 Duckiebot 提供先验环境数据的情况下,仅依靠摄像头数据来构建路线图。

4.巡逻车。 这个项目是学生自己发明的。 他们建议教一个 Duckiebot(“巡逻者”)去追赶另一个“Duckiebot”(“违规者”)。 为此,使用了使用 ArUco 标记的目标识别机制。 一旦识别完成,就会向“入侵者”发送信号以完成工作。

STEM强化学习方法

颜色校准

颜色校准项目的目标是调整可识别标记颜色的范围以适应新的照明条件。 如果没有这样的调整,停车线、车道分隔线和道路边界的识别就会变得不正确。 参与者提出了一种基于预处理标记颜色模式的解决方案:红色、黄色和白色。

这些颜色中的每一种都有预设的 HSV 或 RGB 值范围。 使用此范围,找到包含合适颜色的帧的所有区域,并选择最大的区域。 该区域作为需要记住的颜色。 然后使用计算平均值和标准差等统计公式来估计新的颜色范围。

这个范围记录在Duckiebot的相机配置文件中,供以后使用。 所描述的方法适用于所有三种颜色,最终形成每种标记颜色的范围。

测试显示,标记线几乎可以完美识别,但标记材料使用光面胶带的情况除外,这种胶带反射光源的强度如此之大,以至于从相机的视角来看,标记显示为白色,无论其原始颜色如何。

STEM强化学习方法

鸭子出租车

鸭子出租车项目涉及构建一种算法来搜索城市中的鸭子乘客,然后将其运送到所需地点。 参与者将这个问题分为两个:检测和沿图移动。

学生们通过假设鸭子是框架中任何可以被识别为黄色的区域来进行鸭子检测,鸭子上有一个红色三角形(喙)。 一旦在下一帧中检测到这样的区域,机器人就应该接近它,然后停止几秒钟,模拟乘客的着陆。

然后,将整个鸭子镇的道路图和机器人的位置预先存储在内存中,并接收目的地作为输入,参与者构建一条从出发点到到达点的路径,使用Dijkstra算法在图中查找路径。 输出以一组命令的形式呈现 - 在以下每个交叉路口转弯。

STEM强化学习方法

道路图

该项目的目标是构建一个图表 - Duckietown 的道路网络。 结果图的节点是交叉点,弧线是道路。 为此,Duckiebot 必须探索城市并分析其路线。

在该项目的工作过程中,曾考虑过创建加权图的想法,但后来被放弃了,其中边的成本由交叉点之间的距离(行进时间)决定。 事实证明,这个想法的实施过于劳力密集,而且学校内部没有足够的时间。

当 Duckiebot 到达下一个十字路口时,它会选择从它尚未走过的十字路口出来的道路。 当所有交叉口的所有道路都通过后,生成的交叉口邻接列表将保留在机器人的内存中,并使用 Graphviz 库将其转换为图像。

参与者提出的算法并不适合随机的 Duckietown,但对于学校内使用的有四个十字路口的小镇效果很好。 这个想法是向每个交叉路口添加一个 ArUco 标记,其中包含交叉路口标识符,以跟踪交叉路口的行驶顺序。
参与者开发的算法图如图所示。

STEM强化学习方法

巡逻车

该项目的目标是在 Duckietown 市搜索、追捕并拘留违规机器人。 巡逻机器人必须沿着城市道路的外环移动,寻找已知的入侵机器人。 检测到入侵者后,巡逻机器人必须跟踪入侵者并迫使其停止。

这项工作始于寻找一种想法来检测框架中的机器人并识别其中的入侵者。 该团队建议为城市中的每个机器人背面配备一个独特的标记 - 就像真正的汽车有州登记号码一样。 为此选择 ArUco 标记。 它们之前已在 duckietown 中使用过,因为它们易于使用,并且允许您确定标记在空间中的方向以及到它的距离。

其次,要保证巡逻机器人严格在外圈内移动,不要在路口停留。 默认情况下,Duckiebot 在车道上移动并停在停车线处。 然后,借助路标,确定路口的布局,并选择路口的通行方向。 对于所描述的每个阶段,机器人有限状态机的一个状态负责。 为了摆脱路口的停车,团队改变了状态机,当接近停车线时,机器人立即切换到直行通过路口的状态。

下一步是解决阻止入侵机器人的问题。 该团队假设巡逻机器人可以通过 SSH 访问城市中的每个机器人,也就是说,拥有一些有关每个机器人的授权数据和 ID 的信息。 因此,在检测到入侵者后,巡逻机器人开始通过 SSH 连接到入侵者机器人并关闭其系统。

确认关机命令完成后,巡逻机器人也停止了动作。
巡逻机器人的运行算法可以表示为下图:

STEM强化学习方法

从事项目工作

工作的组织方式与 Scrum 类似:每天早上,学生们计划当天的任务,晚上报告已完成的工作。

在第一天和最后一天,学生们准备了描述任务以及如何解决它的演示。 为了帮助学生遵循他们选择的计划,来自俄罗斯和美国的老师经常出现在进行项目工作的房间里,回答问题。 交流主要用英语进行。

结果及其演示

这些项目的工作持续了一个星期,之后学生们展示了他们的成果。 每个人都准备了演讲,谈论他们在这所学校学到的东西,他们学到的最重要的课程是什么,他们喜欢或不喜欢什么。 随后,各团队展示了自己的项目。 所有团队都完成了任务。

实施颜色校准的团队比其他团队更快地完成了项目,因此他们也有时间为他们的程序准备文档。 即使在项目演示前的最后一天,研究路线图的团队也试图完善和纠正他们的算法。

STEM强化学习方法

结论

完成学业后,我们要求学生评估过去的活动,并回答有关学校满足他们期望的程度、他们获得了哪些技能等问题。 所有学生都表示,他们学会了团队合作、分配任务和计划时间。

学生还被要求对他们所修课程的有用性和难度进行评分。 这里形成了两组评估:对于一些课程来说,课程没有太大难度,而另一些则认为课程非常困难。

这意味着学校采取了正确的立场,既对特定领域的初学者开放,又为有经验的学生提供重复和巩固的材料。 应该指出的是,几乎每个人都认为编程课程(Python)简单但有用。 据学生反映,最难的课程是“计算机体系结构”。

当学生被问及学校的优势和劣势时,许多人回答说他们喜欢所选择的教学方式,即教师提供及时的个人帮助并回答问题。

学生们还指出,他们喜欢以每日计划任务并设定自己的截止日期的方式工作。 作为缺点,学生们指出缺乏使用机器人时所需的知识:连接时,了解其操作的基础知识和原理。

几乎所有学生都表示学校超出了他们的预期,这表明学校的办学方向是正确的。 因此,在组织下一所学校时,应保持一般原则,考虑并在可能的情况下消除学生和教师指出的缺点,也许改变课程列表或教学时间。

文章作者:团队 移动机器人算法实验室 в JetBrains 研究。

PS 我们的企业博客有了新名称。 现在它将致力于 JetBrains 的教育项目。

来源: habr.com

添加评论