Разработайте программу, которая позволит роботу автономно ориентироваться в пространстве, преодолевать препятствия и планировать маршрут.
Профиль посвящен разработке, программированию и управлению роботами. Участники разрабатывают программу, которая позволяет роботу самостоятельно ориентироваться в неизвестной среде, определять свое положение и строить детальную карту окружающей среды. Они внедряют современные алгоритмы планирования маршрутов, чтобы робот находил оптимальный путь к цели, учитывая препятствия и внешние условия.
Задача не только развивает навыки программирования и алгоритмического мышления, но и способствует глубокому пониманию принципов робототехники и навигации. Участники получают уникальный опыт в решении сложных и актуальных технологических задач, связанных с автономным движением.
«Главным преимуществом нашего решения было то, что оно действительно работало. Мы смогли прямо на финале продемонстрировать перед экспертами умения нашего робота. Кроме того, мы нашли отличный от других способ передачи и развертывания решений на сервере — это ускорило работу и сделало ее более эффективной. Во многом справиться с заданием помог опыт, который мы получили в финале НТО прошлого года. Мы были готовы решать мелкие проблемы “на лету”, много работать и тестировать разные способы решения задачи — понимали, что найти оптимальный вариант с первого раза не получится».
Федор Шпилевой. 2025. Победитель
Участникам предстоит решать два тура: инженерный и предметный.
Для решения задач II этапа необходимо собрать команду: чем сплоченнее она будет, тем выше шансы на успех в финале. Участникам советуют развивать профессиональные и коммуникативные навыки: общаться, учиться распределять задачи, узнавать сильные стороны членов команды.
Участникам предстоит решать специализированные задачи, связанные с управлением группой мобильных роботов. Особое внимание будет уделено проблемам технического зрения. Для выполнения заданий не понадобятся реальные роботы — в симуляциях будут использоваться их математические модели.
Для успешного решения задач потребуются навыки программирования на C/C++ и Python. Работа над задачами II этапа и изучение образовательных материалов профиля помогут участникам подготовиться к финалу.
В течение нескольких дней командам предстоит решать большую инженерную задачу. Она посвящена автономной навигации робота в закрытом помещении при помощи камеры.
Сценарий финала приближен к реальной ситуации: в системе ядерного реактора обнаружена неисправность. Доступ людей к оборудованию невозможен из-за высокого уровня радиации, но требуется срочно локализовать поломку и устранить её. Для этого на станцию отправляется мобильный робот с бортовой камерой. Он должен в автономном режиме исследовать территорию, построить карту коридоров и найти точное место неисправности.
Начиная со II этапа участникам необходимо объединиться в команды. Тем, у кого команды нет, организаторы профиля помогут ее найти (подробнее о командообразовании и том, как искать команду).
Чем больше компетенций в команде, тем выше ее эффективность.
Участникам понадобятся следующие компетенции:
Навык программирования на Python и С++.
Знание алгоритмов обработки изображения, работа с OpenCV.
Знание алгоритмов поиска пути.
Знание алгоритмов планирования движения, расчета траектории.
Знание алгоритмов управления (П-, ПД-, ПИД-регуляторы).
Умение работы с датчиками робототехнических систем.
Умение организации беспроводного соединения по Bluetooth с робототехнической системой.
Для участия во II и заключительном этапах понадобится команда из 3-4 человек:
Роль 1. Математик-алгоритмист — подбирает и разрабатывает алгоритмы управления, распределения заданий, поиска пути и т.д.
Роль 2. Программист С/C++ — программирует системы управления роботом для решения задач коммуникации, движения, навигации, работы с датчиками, одометрии и т.д.
Роль 3. Программист Python — программирует высокоуровневые системы управления (распределение задач, поиск пути и т.д.), обработки изображения, решения задач коммуникации.
Роль 4. Капитан команды — распределяет задачи, расставляет приоритеты, распределяет ресурсы, разрешает споры.
Рекомендации:
Участникам предстоит запрограммировать несколько систем одновременно, причём на разных языках. Теоретически все задачи может выполнить один человек, но значительно эффективнее распределить работу между несколькими участниками, чтобы процессы шли параллельно.
Если в команде нет отдельного специалиста по алгоритмам, каждому программисту придется взять на себя часть этой работы. При распределении ролей важно учитывать не только уровень владения конкретным языком программирования, но и способность участника разрабатывать определенные алгоритмы.
Роль капитана команды, как правило, совмещается с одной из технических функций.
Курс: Программирование на языке С++
О протоколах передачи данных
Введение в компьютерное зрение
Документация OpenCV
Курс “Добрый, добрый Python - обучающий курс от Сергея Балакирева
Видео курса “Control of Mobile Robots” (англ.)
Сборник задач НТО. Интеллектуальные робототехнические системы. 2024/2025 гг.