В рамках регионального этапа хакатона “Кубок РТК: Высшая лига”, который проходил 12-13 октября в Москве, наша команда MISIS_alpha разработала автономного робота с функцией распознавания дорожных знаков и возможностью следовать по маршруту, используя эти знаки. Этот проект объединил в себе современные технологии компьютерного зрения и автономной навигации.
О соревнованиях
Организаторами соревнований выступили ГНЦ РФ ЦНИИ РТК. Хакатон длился два дня и проходил на специально оборудованном полигоне, имитирующем реальные задачи, отражающие одну из проблем больших вызовов Стратегии научно-технологического развития Российской Федерации.
Полигон включал задания, направленные на проверку алгоритмов технического зрения и навигации роботов. Роботы, запрограммированные участниками, должны были за отведенное время последовательно выполнить задачи в автономном режиме. Это позволяло оценить не столько механические характеристики робота, сколько его «интеллектуальные» способности.
Задача хакатона
Основная цель: обеспечить автономное передвижение робота в условиях городской среды. Робот должен был самостоятельно добраться до точки, обозначенной ArUco-маркером, используя распознавание дорожных знаков и светофора.
Технологии и инструменты
Для реализации проекта мы использовали следующие технологии:
- Lego Mindstorms ev3 — для создания базовой конструкции робота.
- Python — основной язык программирования.
- OpenCV — для реализации алгоритмов компьютерного зрения.
- Raspberry Pi 4 — для обработки данных с камеры.
Выбор инструментов
Мы остановились на платформе Lego Mindstorms, так как она оказалась интуитивно понятной и легко интегрируемой с Raspberry Pi 4. Это позволило сократить время на прототипирование и сосредоточиться на алгоритмах автономного управления.
Реализованный функционал
1. Распознавание дорожных знаков:
- Использовались алгоритмы из библиотеки OpenCV для анализа изображений с камеры.
2. Поддержка ArUco-маркеров:
- Для идентификации финиша маршрута.
3. Распознавание сигналов светофора:
- Включена обработка цветовых индикаторов, определяющих разрешение движения.
Работа в команде
Наша команда состояла из четырёх человек, и мы распределили задачи следующим образом:
- Разработка кода для камеры (OpenCV): Егорова Кристина, Зеленцова Фаина.
- Разработка кода для моторов: Плешевич Милена, Муромцев Александр.
Каждый из участников внёс свой вклад в успешную интеграцию всех компонентов системы.
Технические аспекты
Работа с камерой
Код для обработки изображений был написан на Python с использованием OpenCV. Основные задачи включали:
Распознавание дорожных знаков.
Обнаружение ArUco-маркеров.
Определение состояния светофора.
Управление движением
На стороне моторов реализовано:
Управление скоростью и направлением движения в зависимости от входных данных.
Калибровка поворотов, точное выполнение манёвров, необходимых для достижения заданной цели.
Тестирование и результаты
Тестирование кода
Мы провели серию тестов, чтобы убедиться в корректности работы всех компонентов. Камера успешно распознавала знаки и светофоры, а робот выполнял автономные манёвры без внешнего вмешательства.
Демонстрация
Важность и перспективы
Проект важен тем, что позволяет продемонстрировать возможности создания автономных решений на основе доступных инструментов, таких как Lego Mindstorms и OpenCV. Он подчеркивает, как простые технологии можно использовать для обучения, разработки сложных систем, включая распознавание дорожных знаков и автономное управление роботом.
sunsexsurf
код скриншотами? Вы б хоть гитхаб бы дали, чтоль...
на левом скриншоте не понял, зачем делать
from cv2 import aruco
, но при этом в коде продолжать использоватьcv2.aruco