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