Чему и на каких роботах учить на уроках робототехники
Изображение сгенерировано нейросетью
Сегодня в стране действует образовательный проект Минцифры России для школьников 8–11 классов и студентов колледжей «Код будущего». В рамках проекта молодёжь бесплатно учится программированию на курсах от ведущих ИТ-компаний и вузов России. И в скором времени пройдёт стратегическая сессия по внедрению в «Код будущего» с 2025 года обучения робототехнике. Эта учебная программа должна обеспечить массовость, эффективность и соответствие образовательных программ реальным запросам ИТ-отрасли и рынка труда.
На сессии будет:
Обсуждение места робототехники в «Коде будущего» и её роли в системе подготовки ИТ‑специалистов.
Подготовка детального плана внедрения курсов робототехники: целевая аудитория, содержание образовательных программ, необходимое оборудование и программное обеспечение, подготовка преподавателей, механизмы отбора и мотивации участников.
Создание рабочей группы для дальнейшей проработки стратегии и её реализации.
Зарегистрироваться на трансляцию.
И в этой статье я хочу обсудить некоторые вопросы, которые будут подняты на стратегической сессии.
Введение
Стране давно необходимы кадры, которые будут способны внедрять робототехнику во все сферы нашей жизни. Поэтому очень важно вовлекать больше молодёжи в эту отрасль и в вузы на соответствующие специальности. Решить эту задачу не получится без участия крупного бизнеса и без оглядки на то, что происходит в США и Китае.
За последние годы робототехника на Западе пришла к автономным роботам на ROS и роботам с искусственным интеллектом. Мы видим, что это произошло в том числе благодаря огромному количеству курсов по робототехнике с открытым исходным кодом.
Почему так важен открытый исходный код:
обмен опытом по всему миру;
быстрая разработка за счёт использования открытых компонентов;
совместная разработка;
использование лучших практик, проверенных временем;
внедрение новых знаний в образование.
Если мы посмотрим на передовые научные статьи по робототехнике на ведущих зарубежных конференциях, то увидим, что для воспроизведения результатов авторы часто прикладывают исходный код с использованием ROS. Соответственно, чтобы осваивать передовые технологии нужно знать ROS.
Кроме того, ROS помогает воспринимать общую архитектуру робота как систему, состоящую из модулей. Поэтому фреймворк выступает как клей, который соединяет всё воедино. При изучении робототехники через ROS у людей сразу формируется целостная картина, после чего легче углубляться в специализированные области робототехники. Создание сложных роботов становится понятным делом.
Далее мы поговорим о том, как должна быть устроена современная школьная робототехника.
Требования к знаниям после окончания школы
Linux:
Работа в терминале.
Установка программ через apt.
Компиляция программ из исходного кода.
Переменные среды.
Настройка локальной сети.
Работа по SSH.
Python.
Git — ведение совместной разработки.
С и C++.
Docker.
ROS2:
Коммуникация topic, service, action.
Преобразование координат tf2.
ROS2_control.
Автономная навигация Navigation2, AMCL, SLAM, DWA.
Манипуляция Moveit2.
Машина состояния и дерево поведения.
Зрение Opencv, image_transport.
Визуализация состояния робота RVIZ2, RQT.
Parameters.
Сборка робота, желательно довольно большого размера, из подручных средств и программирование его работы с помощью ROS2. Например, автономная навигация с лидаром. Главная цель: дать понять, что роботы это не только игрушки, но и большие устройства, которые могут выполнять полезные задачи. А чтобы научиться их делать и программировать, нужно идти на робото‑техническую специальность в университет.
Экскурсия в университет на робото‑технический факультет, например в РТУ МИРЭА.
Что такое ROS
ROS (Robot Operating System) — это фреймворк с открытым исходным кодом для вашего робота. Он предоставляет услуги, которые вы ожидаете от операционной системы:
аппаратную абстракцию;
управление устройством низкого уровня;
внедрение широко используемых функций и алгоритмов;
передачу сообщений между процессами и управление программными пакетами.
Он также предоставляет инструменты и библиотеки для получения, создания, записи и запуска кода на нескольких компьютерах. ROS не заменяет Windows или Linux, а работает поверх них.
Подробнее об устройстве, архитектуре и применении ROS можно почитать здесь.
Почему важно преподавать ROS в школе?
Этот фреймворк даёт школьнику пример хорошей взрослой программной архитектуры роботов, признанной робототехниками во всём мире.
Позволяет быстро разработать полезного робота.
Программирование на ROS даёт базовые знания и опыт для трудоустройства на вакансии разработчиков роботов.
Студентов со знанием ROS на летнюю практику берёт Центр робототехники Сбера.
В ROS‑чате есть вакансии и постоянно требуются разработчики.
Какой конструктор или технологический стек выбрать?
Какой конкретно конструктор использовать, на самом деле не важно, если он прокладывает мост ко взрослым роботам и ROS. Для этого должно быть можно поставить на него условный Raspberry Pi и писать верхнеуровневые программы. Тут мы приходим к Linux и Python с C++, этому нужно обучать примерно в 8–9 классе.
80% робототехники сейчас приходится на высокоуровневое программирование и искусственный интеллект. То есть буквально 80% инженерных должностей — это программирование сложных алгоритмов (далеко не езда по линии на PID) и machine learning. И эта доля будет только расти. Соответственно, робототехника — это не только программирование микроконтроллеров, а огромный пласт технологий, и чем раньше робототехник с ними соприкоснётся, тем лучше.
Ещё один сложный для понимания момент заключается в том, что современному робототехнику нужно знать слишком много технологий, библиотек, фреймворков, университетских дисциплин и так далее, причём одно наслаивается на другое. Буквально: когда начинающий робототехник приходит на свою первую стажировку по серьёзной задаче, то порог входа для него оказывается слишком высокий, ведь в университете и школе его этому не учили. Выход один: начинать учить необходимым технологиям со школьной парты.
Далее, нужна узкая специализация, а не универсалы робототехники. Например, чтобы самостоятельно написать алгоритм SLAM, нужно знать теорию вероятности, линейную алгебру, компьютерное зрение, библиотеки решателей и графов, С++, прочесть много научных статей, изучить исходный код других SLAM‑алгоритмов. То есть нужно выучиться даже не в бакалавриате, а в специализированной магистратуре, а лучше аспирантуре. Но перед этим нужно понять, что тебе вообще интересен именно SLAM, и потратить на его изучение годы. Соответственно, школьник должен попробовать SLAM, манипуляцию и разные другие области робототехники, чтобы понять, что ему нравится.
Минимальные требования к характеристикам конструктора или робота:
Колёсная база с управлением скоростью через топик cmd_vel типа линейная и угловая скорость.
Одометрия с колес, достаточная для стабильной работы SLAM‑алгоритмов.
IMU.
Lidar.
Wi‑Fi.
GPIO для подключения дополнительных сенсоров.
Бортовой компьютер на Ubuntu 24.04, ноутбук или одноплатник типа Raspberry Pi или Jetson.
Возможность подключить камеру к бортовому компьютеру.
Примеры простых схем компонентов‑протоколов для ROS2 робота:
Подбор примеров роботов и конструкторов для школьников, которые стоит взять за образец:
FishBot ROS, 8200 рублей
Преимущества:
Дешёвый.
Курс можно легко перевести через сервис перевода на русский, и уже готовы хотя бы какие то уроки почти по всему, что нужно.
ESP32 в качестве микроконтроллера. Это значит, что его можно по Wi-Fi связать с ноутбуком и программировать на нём. То есть можно сэкономить на Raspberry Pi.
Есть GPIO для подключения дополнительных сенсоров.
Поддерживает ROS2.
Yahboom MicroROS Robot, 13600 рублей
Преимущества:
Дешёвый.
Курс можно легко перевести через сервис перевода на русский, и уже готовы хотя бы какие то уроки почти по всему, что нужно.
ESP32 в качестве микроконтроллера. Это значит, что его можно по Wi-Fi связать с ноутбуком и программировать на нём. То есть можно сэкономить на Raspberry Pi.
Поддерживает ROS2.
Недостатки:
Linorobot
По сути, это инструкция по сборке робота из подручных средств с примерами исходного кода под ROS и ROS2.
Преимущества:
Дёшево.
Из подручных средств.
Поддерживает ROS2.
Есть руководства.
Робот из пластикового контейнера Articulated Robotics
Руководства.
Преимущества:
Дёшево.
Из подручных средств.
Поддерживает ROS2
Есть руководства.
Робот из гироскутера, 13 000 рублей
Примеры проектов:
Преимущества:
Дёшево.
Почти все детали есть в покупном гироскутере или по частям на AliExpress.
Можно сделать большого робота.
По UART можно подключить к компьютеру и драйвер в ROS.
Недостатки:
Нужно разработать уроки.
Точность энкодеров на датчиках Холла 5 мм, но для большинства проектов это не критично.
Робот с ROS на базе пылесоса
iRobot Roomba
Описание и инструкция по сборке и программированию:
Xiaomi
Как сделать робота на ROS своими руками, руководства от Amperka
Часть 1: шасси и бортовая электроника
Часть 2: дистанционное управление и навигация
Часть 3: распознавание речи для голосового управления
Часть 4: синтез речи и голосовое управление
Преимущества:
Манипулятор
Преимущества:
Недостатки:
Мобильный манипулятор
Четвероногие
Unitree Go2
Преимущества:
Поддержка DDS и ROS2.
Минимальные примеры на Python.
Можно повесить дополнительное оборудование весом до 5 килограммов.
3D-лидар.
Недостатки:
Нет руководств и уроков.
Edu-версия дорогая, но со сторонними прошивками можно управлять и Air-версией.
Mini Pupper 2G
Преимущества:
Руководства под ROS2.
Пример управления голосом с использованием ChatGPT.
Поддержка навигационного стека Navigation2 с лидаром.
Управление жестами.
PuppyPi Hiwonder Quadruped Robot with AI Vision
Сайт производителя.
Xiaomi CyberDog ROS 2
Робот на Android-смартфоне
Страница проекта.
Преимущества:
Недостатки:
Контроллеры отдельно
Вообще роботов на ROS очень много, нужно просто гуглить. На https://robots.ros.org/ перечислена только малая часть.
ROS для младших классов
Видео доклада о добавление в ROS-робот возможности программировать на Blockly.
Курс по ROS
На английском
На русском
Материалы на русском есть, но они не такие подробные, как на английском языке. Так будет всегда, потому что глобальное сообщество общается на английском, на нём же будет появляться всё новое и ничего с этим не сделать. Но с сервисами онлайн-перевода это не проблема.
Это не всё, много можно найти на просторах интернета.
Позже будет выложен авторский курс Алексея Буркова, который был проведён в НГУ от Центра робототехники Сбера.
Возможно, имеет смысл привлечь ROS-сообщество к написанию эталонного курса.
Концепция обучения с помощью руководств
У инженеров, использующих ROS, попросили выбрать из вариантов, какое обучение, по их мнению, наиболее эффективное: руководства, книги или видеоуроки. Победили руководства (tutorial).
Учить ROS1 или ROS2?
ROS2. Материалы под ROS1 относительно просто можно переделать под ROS2. Но в ROS2 есть новые концепции и существенные изменения, которые важны, и их желательно хорошо понимать.
Соревнования на ROS
Эти два вида соревнований можно проводить даже без физических роботов, просто в симуляторе Gazebo:
Autorace — проезд трассы с препятствиями и знаками.
Home Service Challenge — с манипуляцией.
Также есть одноимённое соревнование и обучающий курс Duckietown.
Можно создать в стране автономную лигу Eurobot на ROS, с эталонными открытыми роботами, которые можно использовать как базовый уровень. То есть участники должны выложить в открытый репозиторий CAD-модели, список электроники, электрическую схему, исходный код всех программ и всё, что необходимо для воспроизведения, желательно ещё и статью на Хабре написать.
Статьи про роботов и алгоритмы для Eurobot:
Вовлечение учителей
Без вовлечения и заинтересованности учителей в написании и обновлении курса под современные технологии ничего путного не получится. Как это сделать — отдельный вопрос.
Предложения
Хакатон для учителей
Можно сделать хакатон для учителей, где они из подручных средств соберут и запрограммируют роботов на ROS. Тем самым они получат опыт, избавятся от боязни незнакомого. Попутно сделают руководства и учебные материалы. Хакатон можно провести на площадке Центра робототехники Сбера или РТУ МИРЭА.
Доклады учителей на ROS meetup
На ROS meetup можно выделить день под образовательные проекты, где будут выступать учителя и школьники со своими роботами и курсами по ROS.
Примеры выступления учителей:
Баллы для поступления в вузы за проекты open-source роботов
Можно сделать конкурс open-source роботов среди школьников, за призовые места давать дополнительные баллы для поступления в вузы.
Соревнование по футболу среди четвероногих роботов
Установить ограничение размерности, например, не более Unitree go2. Роботы должны быть полностью автономные. Для упрощения навигации разместить на поле специальные маркеры. Победители обязаны выкладывать свои алгоритмы в open-source и выступать с докладом на ROS meetup, рассказав о том, как воспроизвести их результат. Победителям можно давать дополнительные баллы для поступления в университет.
Соревнования Eurobot Open Source
Роботы должны быть полностью автономные. Правила желательно упростить. Победители обязаны выкладывать свои алгоритмы в open-source и выступать с докладом на ROS meetup, рассказав о том, как воспроизвести их результат. Победителям можно давать дополнительные баллы для поступления в университет.
Зачем обязательно всё выкладывать в open-source? Чтобы следующие поколения робототехников учились на проектах предыдущих и общий уровень рос из года в год.
Нерешенные вопросы
Учителя не могут покупать копеечные электронные компоненты на aliexpress и taobao. Это блокирует для школьников возможность разрабатывать свои проекты роботов из различных современных покупных компонентов.
Цепочка от школьника до специалиста на предприятии
Пример: выпускники школьного кружка по робототехнике → совместный кружок РТУ МИРЭА и Центра робототехники Сбера → летняя практика в Центре робототехники Сбера → стажировка в Центре робототехники Сбера → сотрудник Центра робототехники Сбера или научной группы при университете РТУ МИРЭА.
Итог
Подробнее о стратегической сессии и возможность зарегистрироваться на трансляцию «Актуальный статус и перспективы образовательной робототехники в РФ».
Обсуждение всех этих предложений ведётся в топике ROS‑чата. Приглашаю присоединиться всех неравнодушных.