Хабрахабр

[Из песочницы] Подход интенсивного обучения STEM

В мире инженерного образования существует много отличных курсов, но зачастую программа обучения, построенная на них, обладает одним серьезным недостатком — отсутствием хорошей связности между различными темами. Можно возразить: как же так?

К примеру, для того чтобы собрать и запрограммировать примитивного мобильного робота, нужно знать немного механики для создания его физической конструкции; основы электричества на уровне законов Ома/Кирхгофа, представления цифровых и аналоговых сигналов; операции с векторами и матрицами для того, чтобы описать системы координат и перемещения робота в пространстве; основы программирования на уровне представления данных, простейших алгоритмов и конструкций передачи управления и т.п. Когда формируется программа обучения, для каждого курса указываются пререквизиты и четкий порядок, в котором надо изучать дисциплины. для описания поведения.

Конечно есть. Есть ли все это в университетских курсах? Однако к законам Ома/Кирхгофа мы получаем термодинамику и теорию поля; помимо операций с матрицами и векторами приходится разбираться с Жордановыми формами; в программировании изучать полиморфизм — темы, которые не всегда нужны для решения простой практической задачи.

Мы решили перевернуть парадигму университетского обучения STEM (от слов Science, Technology, Engineering, Math) и сделать такую программу, которая опирается на связность знаний, допуская наращивание полноты в будущем, то есть подразумевает интенсивное освоение предметов.
Изучение новой предметной области можно сравнить с изучением некоторой местности. Университетское обучение экстенсивно — учащийся идет широким фронтом и зачастую не видит смысла и практической значимости знаний, которые получает. И тут есть два варианта: либо перед нами очень подробная карта с огромным количеством деталей, которые требуется изучить (а это занимает много времени), для того чтобы понять, где находятся основные ориентиры и как они друг с другом соотносятся; или же можно воспользоваться примитивным планом, на котором обозначены лишь главные точки и их взаимное расположение — такой карты достаточно, для того чтобы сразу начать двигаться в нужном направлении, уточняя детали по ходу движения.

Подход интенсивного обучения STEM мы обкатали на зимней школе, которую провели совместно со студентами MIT при поддержке JetBrains Research.

Подготовка материала

Первой частью программы школы была неделя занятий по основным направлениям, которые включали в себя алгебру, электрические цепи, архитектуру компьютера, программирование на Python и знакомство с ROS (Robot Operating System).

Направления были выбраны не случайно: дополняя друг друга, они должны были помочь студентам увидеть связь между, казалось бы, разными, на первый взгляд, вещами — математикой, электроникой и программированием.

Конечно, основной целью было не прочитать много лекций, а дать возможность студентам самим применить только что полученные знания на практике.

Узнав об устройстве транзистора и логических элементах, построенных на его базе, учащиеся могли увидеть их применение в устройстве процессора, а после изучения основ языка Python, написать на нем программу для реального робота. В разделе алгебры студенты могли потренироваться в операциях с матрицами и решении систем уравнений, которые пригодились при изучении электрических цепей.

Duckietown

Одной из задач школы была минимизация работы с симуляторами там, где это возможно. Поэтому был подготовлен большой набор электронных схем, которые студентам предстояло собрать на макетной плате из реальных компонентов и проверить их на практике, а в качестве базы для проектов был выбран Duckietown.

Duckiebot представляет собой колесную платформу, оснащенную микрокомпьютером Raspberry Pi и одной камерой. Duckietown — это открытый проект, включающий в себя небольших автономных роботов, называемых Duckiebot, и сети дорог, по которым они передвигаются.

Также студенты могли предложить собственную проблему и не только написать программу для ее решения, но и незамедлительно запустить ее на реальном роботе. На его основе мы подготовили набор возможных задач, таких как построение карты дорог, поиск объектов и остановка рядом с ними и ряд других.

Преподавание

Во время лекции преподаватели рассказывали материал, используя заранее подготовленные презентации. Некоторые занятия записывались на видео, таким образом у студентов была возможность посмотреть их дома. Во время лекций студенты использовали материалы на своих компьютерах, задавали вопросы, решали задачи совместно и самостоятельно, иногда у доски. По результатам работы был подсчитан рейтинг каждого студента отдельно по разным предметам.

Первым предметом была линейная алгебра. Рассмотрим проведение занятий по каждому предмету более подробно. Практические задания были построены в интерактивном режиме: предложенные задачи решались индивидуально, а преподаватель и другие студенты давали комментарии и подсказки. Студенты в течение одного дня изучали векторы и матрицы, системы линейных уравнений и т.д.

Студенты изучили основы электродинамики: напряжение, ток, сопротивление, закон Ома и законы Кирхгофа. Второй предмет — электричество и простые схемы. Практические задания частично делались в симуляторе или выполнялись на доске, но больше времени уделялось построению реальных схем, таких как логические схемы, колебательные контуры и т.д.

Студенты изучали фундаментальную базу, значение которой скорее теоретическое, нежели практическое. Следующая тема — Архитектура ЭВМ — в некотором смысле мост, соединяющий физику и программирование. В качестве практики студенты самостоятельно проектировали арифметико-логические схемы в симуляторе, за выполненные задания получили баллы.

В качестве языка программирования был выбран Python 2, поскольку именно он используется в программировании под ROS. Четвертый день — первый день программирования. Затем учащиеся решали похожие задачи самостоятельно, впоследствии решения были оценены преподавателями. Этот день был построен следующим образом: преподаватели рассказывали материал, приводили примеры решения задач, в то время как студенты слушали их, сидя за компьютерами, и повторяли написанное преподавателем на доске или слайде.

Весь учебный день студенты сидели за компьютерами, запуская программный код, о котором рассказывал преподаватель. Пятый день был посвящен ROS: ребята знакомились с программированием роботов. По окончании этого дня студенты были готовы приступить к проектной части школы — решению практических задач. Они смогли самостоятельно запустить основные единицы ROS, а также познакомились с проектом Duckietown.

Описание выбранных проектов

Студентам предложили объединиться в команды по три человека и выбрать себе тему проекта. В итоге были приняты следующие проекты:

Калибровка цветов. 1. Проблема в том, что диапазоны цветов очень чувствительны к освещенности. Duckiebot нуждается в калибровке камеры при смене условий освещения, поэтому существует задача автоматической калибровки. Участники реализовали утилиту, которая выделяла бы на кадре требуемые цвета (красный, белый и желтый) и строила диапазоны для каждого из цветов в формате HSV.

Duck Taxi. 2. В качестве объекта была выбрана яркая желтая уточка. Идея этого проекта в том, чтобы Duckiebot мог остановиться возле некоторого объекта, подобрать его и проследовать по некоторому маршруту.

Построение графа дорог. 3. Цель этого проекта — построить граф дорог без предоставления априорных данных об окружении для Duckiebot, опираясь только на данные с камеры. Существует задача построения графа дорог и перекрестков.

Патрульная машина. 4. Они предложили научить одного Duckiebot, «патрульного», преследовать другого — «нарушителя». Этот проект был придуман самими студентами. Как только распознавание завершится, «нарушителю» посылается сигнал о завершении работы. Для этого был использован механизм распознавания цели по ArUco-маркеру.

Color Calibration

Целью проекта Color Calibration была корректировка диапазона распознаваемых цветов разметки под новые условия освещения. Без таких корректировок распознавание стоп-линий, разделителей полос и границ дороги становилось некорректным. Участники предложили решение, основанное на предобработке шаблонов цветов разметки: красного, желтого и белого.

С использованием этого диапазона на кадре находятся все области, содержащие подходящие цвета, и из них выбирается наибольшая. Для каждого из этих цветов задан предварительный диапазон HSV или RGB-значений. Затем используются статистические формулы, такие как вычисление среднего значения и среднеквадратического отклонения для того, чтобы оценить новый диапазон цвета. Эта область принимается за цвет, который необходимо запомнить.

Описанный подход применялся ко всем трем цветам, в итоге формируя диапазоны для каждого из цветов разметки. Этот диапазон записывается в файлы конфигурации камеры Duckiebot и может быть использован в дальнейшем.

Тесты показали почти идеальное распознавание линий разметки, кроме тех случаев, когда в качестве материалов разметки использовалась глянцевая лента, настолько сильно отражающая источники освещения, что под углом обзора камеры разметка казалось белой независимо от ее изначального цвета.

Duck Taxi

Проект Duck Taxi подразумевал построение алгоритма поиска в городе уточки-пассажира, а затем ее перевозку в необходимую точку. Участники разбили эту задачу на две: детекция и движение по графу.

Как только такая область обнаруживается на очередном кадре, роботу следует приблизиться к ней, а затем остановиться на несколько секунд, имитируя посадку пассажира. Студенты осуществили детекцию уточки, сделав допущение, что уточкой называется любая область на кадре, которую можно распознать как желтую, с красным треугольником (клювом) на ней.

Выходные данные представляются в виде набора команд — поворотов на каждом из следующих перекрестков. Затем, имея заложенный заранее в памяти граф дорог всего duckietown и положение бота, а также, получив в качестве входных данных пункт назначения, участники строят путь из точки отправления в точку прибытия, используя алгоритм Дейкстры для поиска путей в графе.

Graph of Roads

Целью этого проекта было построение графа — сети дорог в Duckietown. Узлами результирующего графа являются перекрестки, и дугами — дороги. Для этого Duckiebot должен исследовать город и анализировать свой маршрут.

Реализация этой идеи оказалась слишком трудоемкой, и на нее не хватило бы времени в рамках школы. В ходе работы над проектом была рассмотрена, но затем отброшена идея делать взвешенный граф, в котором стоимость ребра определяется расстоянием (временем на преодоление) между перекрестками.

Когда все дороги на всех перекрестках пройдены, в памяти бота остается сформированный список смежности перекрестков, который преобразуется в изображение при помощи библиотеки Graphviz. Когда Duckiebot добирается до очередного перекрестка, он выбирает дорогу, выходящую из перекрестка, по которой он еще не двигался.

Идея была в том, чтобы дополнить каждый перекресток ArUco-маркером, содержащим идентификатор перекрестка, чтобы отслеживать порядок проезда перекрестков.
Схема работы разработанного участниками алгоритма показана на рисунке. Предложенный участниками алгоритм не подходит для произвольного Duckietown, но хорошо работал на небольшом городе, состоящем из четырех перекрестков, используемом в рамках школы.

Patrol Car

Цель данного проекта — поиск, преследование и задержание бота-нарушителя в городе Duckietown. Бот-патрульный должен двигаться по внешнему кольцу дороги в городе в поисках заранее известного бота-нарушителя. После обнаружения нарушителя патрульный бот должен следовать за нарушителем и заставить его остановиться.

Команда предложила оснастить каждого бота в городе сзади уникальным маркером — так же как реальные автомобили имеют номера государственной регистрации. Работа началась с поиска идеи детекции бота на кадре и распознавания в нем нарушителя. Они и ранее использовались в duckietown, так как с ними просто работать и они позволяют определить ориентацию маркера в пространстве и расстояние до него. Для этого были выбрали ArUco-маркеры.

По умолчанию Duckiebot движется в полосе и останавливается на стоп-линии. Далее потребовалось сделать так, чтобы патрульный бот двигался строго по внешнему кругу без остановок на перекрестках. За каждый из описанных этапов отвечает одно из состояний конечного автомата робота. Затем с помощью дорожных знаков определяет конфигурацию перекрестка и делает выбор о направлении проезда перекрестка. Для того чтобы избавиться от остановок на перекрестке, команда изменила автомат состояний так, чтобы при подъезде к стоп-линии бот сразу переходил в состояние проезда перекрестка прямо.

Командой было сделано предположение, что патрульный бот может иметь доступ по SSH к каждому из ботов в городе, то есть иметь некоторую информацию о том, какие данные для авторизации и какой id имеет каждый бот. Следующим шагом было решение задачи остановки бота-нарушителя. Таким образом, после обнаружения нарушителя, патрульный бот стал подключаться по SSH к боту-нарушителю и выключать его систему.

После подтверждения того, что команда выключения была выполнена, патрульный бот тоже останавливался.
Алгоритм работы патрульного робота можно представить в виде следующей схемы:

Работа над проектами

Работа была организована в формате похожем на Scrum: каждое утро студенты планировали задачи на текущий день, а вечером отчитывались о проделанной работе.

Чтобы помочь студентам следовать выбранным планам, в комнатах, где происходила работа над проектами, постоянно находились преподаватели из России и Америки, которые отвечали на вопросы. В первый и завершающий дни студенты подготовили презентации, описывающие поставленную задачу и способы ее решения. Общение происходило преимущественно на английском языке.

Результаты и их демонстрация

Работа над проектами длилась одну неделю, по истечении которой студенты представили свои результаты. Все подготовили презентации, в которых рассказали, чему они научились в этой школе, какие самые важные уроки вынесли, что им понравилось или не понравилось. После этого каждая команда представила свой проект. Все команды справились с поставленными задачами.

А команда, занимавшаяся графом дорог, даже в последний день перед демонстрацией проекта старалась доработать и исправить свои алгоритмы. Команда, реализующая калибровку цветов, завершила работу над проектом быстрее других, поэтому они успели подготовить и документацию к своей программе.

Заключение

После завершения школы мы попросили студентов оценить прошедшие активности и ответить на вопросы о том, насколько школа соответствовала их ожиданиям, какие навыки они приобрели и т.д. Все студенты отметили, что они научились работать в команде, распределять задачи и планировать свое время.

И здесь сформировались две группы оценок: для одних курсы не представляли большой трудности, другие оценили их как максимально сложные. Студентам также предложили оценить полезность и сложность пройденных курсов.

Следует отметить, что курс по программированию (Python) практически всеми был отмечен как несложный, но полезный. Это значит, что школа заняла правильную позицию, оставаясь доступной для новичков в той или иной области, но также предоставляя материалы для повторения и закрепления опытным студентам. Самым сложным, по мнению студентов, оказался курс «Архитектура ЭВМ».

Когда студентов спросили о недостатках и достоинствах школы, многие ответили, что им понравился выбранный стиль преподавания, в рамках которого преподаватели оперативно и индивидуально предоставляли помощь и отвечали на возникшие вопросы.

В качестве недостатков студенты отметили нехватку предоставленных знаний, которые потребовались при работе с ботом: при подключении, понимании основ и принципов его работы. Еще учащиеся отметили, что им понравилось работать в режиме ежедневного планирования своих задач и самостоятельно устанавливать дедлайны.

Таким образом, следует сохранить общие положения при организации следующей школы, приняв во внимание и по возможности устранив недостатки, которые отметили студенты и преподаватели, возможно, изменив перечень курсов или время их преподавания. Практически все студенты отметили, что школа превзошла их ожидания, и это говорит о правильно выбранном направлении организации школы.

Авторы статьи: команда лаборатории алгоритмов мобильных роботов в JetBrains Research.

S. P. Теперь он будет посвящён образовательным проектам компании JetBrains. У нашего корпоративного блога новое имя.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть