Состав команды
Каждый из членов команды занял свою роль в команде в соответствии со своим опытом работы в предыдущих проектах, интересами и предпочтениями.
Николай Торопов
|
|
Юрий Счетчиков
|
|
Максим Маршалов
|
|
Дмитрий Скопцов
|
Рабочий процесс
Рабочий процесс состоял из двух различных этапов:
-
эскизное планирование: выбор основных способов прохождения заданий, принятие ключевых решений, составление плана работ;
-
работа по недельным циклам с коррекцией планов.
Для организации работы использовались следующие инструменты:
-
openproject - программное обеспечение для управления задачами и для планирования;
-
gitlab - сервер, развёрнутый на нашем оборудовании, обеспечивающий хранение исходных кодов, как программных, так и электронных схем и документации (включая данный документ), обеспечивая автоматическую сборку и развёртывание некоторых материалов.
Эскизное планирование
Перед началом подготовки к соревнованиям были сделаны ключевые решения и выбраны наиболее непроработанные элементы, требующие наиболее быстрой проверки:
-
возможность применения 3d-камеры;
-
обнаружение синих шаров на синем фоне.
Кроме того было найдено и заказано необходимое оборудование.
В результате проверок был сделан выбор в пользу обычных видеокамер вместо 3d-камеры, а также распределены работы в соответствии с возможностями посещения бассейна.
Недельные циклы, привязанные к доступу в бассейн
В связи с тем, что команда имела возможность попадать в бассейн университета только по вторникам, план был разбит на недельные этапы с завершением во вторник.
Задачи по этапам были распределены в соответствии с приоритетами.
Как создавалась "Водомерка"
Общая информация
Рис. 3. Вид сбоку
|
Рис. 4. Вид сверху
|
Рис. 5. Для соревнований
|
"Водомерка" - катамаран для автономного выполнения работ на закрытых, спокойных акваториях.
Аппарат прошёл как лабораторные испытания в опытовом бассейне СПбГМТУ, так и испытания в реальных условиях. Были проведены промерные работы на закрытых акваториях Санкт-Петербурга и Ленинградской области.
Также аппараты были предоставлены на Открытом Первенстве Санкт-Петербурга по Морской Робототехнике в апреле 2024 года, где школьники получили возможность эксплуатации катамарана для выполнения задания.
Технические характеристики катамарана
габариты: 726 × 448 × 283 мм; масса 10 кг; автономность: 3 часа; максимальная скорость: 1 м/с на воде; мореходность: до 2 баллов; средства связи: WiFi 2.4 ГГц, кабельное подключение по Ethernet.
Рис. 6. Карта глубин озера, полученная катамараном
|
Рис. 7. Серийные корпуса катамаранов
|
Рис. 8. Команда школьников запускает катамаран
|
Корпусная часть
Корпус изготовлен методом горячего формования ABS пластика. Технология выбиралась с учётом возможности серийного производства. Корпус состоит из двух деталей, которые соединены нержавеющими винтами с герметизацией шва силиконовым герметиком. |
|
Двигатели - два бесщёточных мотора постоянного тока F2838 350KV с их стандартными трёхлопастными винтами. Выбор данной модели обусловлен доступностью, экономической целесообразностью, и отсутствием необходимости их герметизировать. |
|
Электроника, за исключением двигателей, аккумуляторов и камер, находиться в основной герметичной коробке. Платы расположены на одном уровне по высоте, что даёт возможность быстрой замены. Аккумуляторы помещены в отдельные герметичные боксы. |
|
Система технического зрения состоит из трёх камер, вперёд смотрящая камера является основной для движения, боковая необходима для контроля прохождения и упрощения выполнения манёвров, вниз смотрящая применяется для поиска подводных объектов. Для уменьшения бликов на камеры была установлена поляризационная плёнка. |
|
Кубомёт расположен в передней части, на одном из поплавков катамарана, под достаточно большим углом относительно воды, чтобы куб мог скатиться. Корпус распечатан на 3D принтере, удерживающий элемент работает на сервоприводе. |
|
Шаролов представляет собой простую конструкцию, закрывающую нишу между поплавками катамарана, образуя замкнутое пространство. Была обыграна конструкция аппарата, позволившая минимизировать усилия на разработку отдельного устройства. |
|
Пробоотборник расположен в задней части катамарана. Для подъёма пробоотборника спроектирована лебёдка состоящая из двигателя с редуктором и индуктивного концевика, который необходим для определения верхнего положения пробоотборника. Вместо разматывания троса применяется система сброса - пробоотборник падает на дно. |
|
Безопасность как пользователя так и аппарата обеспечивается следующими средствами: предупреждающие наклейки на опасных и хрупких местах аппарата, аварийный магнитный выключатель, позволяющий экстренно отключить аппарат, электронные средства: предохранитель по входу питания, защита от перегрузки, защиты от короткого замыкания. |
Электроника
"Сердцем" (или же "спинным мозгом") электроники аппарата является коммутационная плата (А6), разработанная специально для катамарана. Она обеспечивает ряд важных функций:
-
стабилизацию и преобразование питания;
-
преобразование интерфейсов (интерфейсы приводятся к USB);
-
обеспечение унификации соединения с компьютером верхнего уровня (от ПК верхнего уровня требуется только USB);
-
обеспечение функционирования систем реального времени (за счёт встроенного микроконтроллера).
Для обеспечения перемещения аппарата применяются два бесколлекторных двигателя, управляемых при помощи драйверов (ESC).
Для навигации аппарат использует магнитный компас Rion DCM250B, а также ориентацию по камерам.
Контроль и управление происходит с помощью микрокомпьютера Nvidia Jetson Nano B01 и отладочной платы с микроконтроллером STM32f103c8t6.
Разработка коммутационной платы катамарана
Рис. 10. Внешний вид платы (рендер)
|
Рис. 11. Реальное фото платы
|
Основные характеристики платы
|
Особенности:
Перспективы:
|
Программное обеспечение нижнего уровня
Использованный стек технологий: Stm32CubeIde, Stm32CubeProgrammer, PulseView.
Функции:
-
Реализация Slave-роли в протоколе Modbus RTU;
-
Управление периферией: движители, кубомет, шаролов, пробоотборник;
-
Самодиагностика: измерение тока, напряжение, внутренняя температура;
-
Реализация независимой автоматической системы управления пробоотборником;
-
Опрос и калибровка магнитного компаса по интерфейсу RS-485.
Программное обеспечение верхнего уровня
Общие сведения
Стек технологий: ROS2, ROS bag, Gazebo (plankton), SMACH, OpenCV.
В разработке широко использовался фреймворк ROS2, и связанные с ним технологии: запись и проигрывание log-файлов (bag), симулятор Gazebo, пакет машины состояний SMACH.
Машина состояний
Машина состояний - одна из ключевых концепций в нашем решении. Использование пакета SMACH позволяет независимо разрабатывать и отлаживать различные состояния, повторно использовать их, а также визуализировать прохождение аппаратом маршрута. Оперирование конечным набором состояний позволило прозрачно переносить придуманный "на бумаге" алгоритм в программу.
Симулятор
Во время подготовки к соревнованиям из-за отсутствия постоянного доступа в бассейн для тестовых запусков исполнения миссии было принято решение использовать симулятор Gazebo, как наиболее интегрированный с ROS2 и наиболее знакомый разработчикам. Для симуляции работы в воде использовался плагин plankton.
Была создана физическая модель катамарана, приближенная к реальному устройству, была смоделирована работа трёх камер, аналогичных установленным на катамаран.
Кроме того, была создана модель бассейна, где были расставлены объекты заданий (шары, нефтяное пятно, точка на дне и плакаты на стенах).
В симуляции отрабатывали этапы прохождение миссии: проход через ворота, сближение с объектами, удержание точки и прочие элементы необходимые для выполнения заданий.
Рис. 12. Прохождение задания в симуляторе. Слева видна машина состояний SMACH. Справа - работа системы технического зрения.
|
Рис. 13. Этапы алгоритма
|
Техническое зрение
В связи с трудностью выделения синего цвета шаров на синем фоне, было проведено несколько экспериментов, и выявлено, что синие шары лучше всего выделяются в цветовом пространстве YUV, а для жёлтых буев, красного, круга и чёрного круга лучше подходит пространство HSV. Нами используется слеюущий алгоритм:
-
преобразование RGB-изображений в YUV и HSV-пространства;
-
по заранее выбранным границам для каждого объекта и для каждого из цветовых компонентов мы бинаризуем изображения;
-
проводим медианную фильтрацию изображений;
-
выделяем контуры изображений;
-
проводим фильтрацию по площади, по сложности контура и т.д.
-
выделяются "точки интереса" - нужные нам объекты, включая "виртуальные" (например - центр между буями).
Этот метод обработки изображений имеет свои преимущества перед обработкой изображений при помощи нейросетей, так как не требует долгого машинного обучения на dataset`ах, и не требует от микрокомпьютера заметной вычислительной мощности.
К тому же наша команда имеет достаточно скромный опыт в работе с нейронными сетями, а использовать готовые решения мы посчитали нецелесообразным.
Рис. 14. Изображение буя
|
Рис. 15. Маска изображения
|
Рис. 16. Маска изображения корректированная
|
Рис. 17. Выделение буёв по маске
|
Заключение
При разработке аппарата мы старались придерживаться двух основных принципов: opensource и ориентации на практические работы. Нашу приверженность первому принципу мы подтверждаем выкладыванием всех исходных материалов (включая данный текст) в общий доступ.
Второй принцип мы подтвердили нашими работами на открытой воде. В следующем году мы планируем расширить работы и привлечь к ним больший круг людей. Мы надеемся, что работы над пробоотборником для соревнований позволят нам создать реальный пробоотборник для выполнения экологических работ на акваториях нашей страны.
Планы
Не всё из задуманного у нас получилось, как по причинам недостаточного времени, так и потому, что только в процессе работы стали понятны альтернативные пути разработки. После соревнований мы планируем разработать катадиоптрическую камеру, а также перейти на более совершенную навигацию на базе оптоволоконного компаса.
Благодарности
Особая благодарность: УОИР и лично И.В. Кожемякину, сотрудникам университета К.Д. Овчинникову и В.А. Рыжову, руководителю бассейна А.И. Полякову.
Тренерам: Андрею Синишину и Михаилу Чемоданову.
Старшим выпукникам СКБ: Арине Алеевской, Максиму Базанову, Роману Бруку, Антону Кречину, Артемию Одышеву, Андрею Рыжкову, Ивану Шестакову.
Спонсорам: