Как собрать подводного робота в 11-м классе

Выпускники Яндекс Лицея Даниил Стукун и Арсений Лиунша сейчас учатся в 11-м классе — и уже много лет подряд участвуют в соревнованиях по робототехнике. В этом году их подводный робот занял первое место на Национальной технологической олимпиаде. Спросили у ребят, как им это удалось, что находится у робота «под капотом» и для чего его можно использовать

погружаемся
подводный робот
форсаж
пятёрка по роботостроению
photo_2025-03-21 09.42.20 1.webp

Расскажите о вашем роботе. Какие функции он выполняет?

    Это микро-ТНПА — телеуправляемый необитаемый подводный аппарат. Его основная цель — обследование труб на кораблях.

    Сначала робота подводят к трубе и запускают внутрь неё при помощи манипулятора. Далее он проводит осмотр и при помощи установленной камеры выводит увиденное на экран ноутбука. А там уже программа в автоматизированном режиме определяет повреждения и степень коррозии судна.

    Такой робот будет полезен не только компаниям, занимающимся перевозками по воде, но и коммунальным предприятиям — ведь им тоже нужно отслеживать состояние труб.

Аппарат может пригодиться и в исследовательских экспедициях, где необходимо, например, заплывать в узкие подводные пещеры.

Вау! А как он устроен? За счёт чего может работать под водой?

    Герметичность корпуса обеспечивают уплотнительные кольца — важно не только правильно их поставить, но и контролировать их чистоту. А стержни по бокам сжимают корпус и плотно прижимают эти кольца к конструкции.

    Определение поломок в трубе происходит за счёт компьютерного зрения. Организаторы предоставили табличку с фигурами — их нужно было распознать и сгруппировать, чтобы на компьютере отображались не только сами повреждения, но и их тип и общее найденное количество.

Арсений: Распознавание объектов и их визуализация работают с помощью библиотеки OpenCV. Для распознавания дыр я использовал модель YOLO11. Я подготовил набор данных примерно из 100 фотографий, разметил, где на них находятся дыры, потом поставил нейросеть на обучение — и спустя 5 минут получилась модель, которую я применял на олимпиаде.

1.webp

    Управление роботом осуществляется при помощи микроконтроллеров внутри пульта и самого аппарата. И там и там установлены плата Arduino Nano и микросхема MAX232. Последняя преобразовывает сигнал с пульта управления из одного интерфейса связи в другой, чтобы обеспечить передачу информации на большие расстояния.

    Сигнал передаётся так: микроконтроллер внутри пульта считывает нажатие кнопки и выдаёт соответствующий сигнал в формате UART. Далее он преобразовывается через микросхему в формат RS-232. В самом роботе сигнал преобразовывается обратно в UART и только потом считывается микроконтроллером для выполнения каких-либо действий.

2.webp

Как пришла идея создания робота?

    Это было конкретное ТЗ на олимпиаде. Легенда миссии такая: одна компания хочет внедрить подводных роботов для диагностики состояния судна, так как эта задача может быть слишком опасной для водолазов.

    Было также дано полное описание задач и результата: как это должно быть сделано, что должно происходить при нажатии тех или иных кнопок, какие схемы и чертежи нужно сдать в качестве документации. В общем, полноценное техническое задание, как в реальной жизни.

Можно ли было добавить что-то от себя?

    Можно, но чуть-чуть. Например, задача конструктора полностью уникальна: нет описания, как должен выглядеть робот. Были даны ограничения только по размеру, чтобы робот мог пролезать в трубу. А как он будет перемещаться и где в нём будут закреплены детали — это полностью решает конструктор.

    Даниил: Я, как программист микроконтроллера, от себя добавил дополнительные кнопки ускорения и замедления — с ними можно проще и быстрее пройти трубу. Если робот застрял там, где не нужно, можно нажать ускорение, а где-то, наоборот, стоит замедлиться, чтобы лучше что-то распознать.

    К тому же при запуске робота на соревновании учитывается время попытки. Если баллы у двух команд за выполнение миссии и документацию одинаковые, смотрят на этот показатель.

И в такой ситуации ускорители могли бы нас здорово выручить.

А можно ли как-то ещё усовершенствовать робота

    В первую очередь можно добавить оси перемещения. Сейчас робот может двигаться только вперёд и назад — а хотелось бы, чтобы ещё и влево-вправо и вверх-вниз. Если в трубе будет разветвление, то сейчас аппарат не справится. Нужно научить его поворачивать.

    Это можно реализовать, добавив сервопривод — он будет поворачивать мотор и вместе с ним самого робота. Или можно добавить маленький моторчик, например сзади или спереди аппарата, чтобы тот его полностью поворачивал. Сейчас у робота только один мотор — для движения вперёд-назад, а другой мог бы поворачивать устройство вокруг оси.

Как проходил процесс разработки?

    В нём участвовала команда из четырёх человек. Общее задание на олимпиаде состояло из четырёх частей — соответственно, на одного участника приходилась одна из задач.

    Программист компьютерного зрения (Арсений) отвечал за распознавание повреждений и работу камеры, конструктор — за сборку корпуса робота и соответствующие чертежи. Электронщик занимался пайкой электроники и документацией электронно-принципиальной схемы, а программист МК (Даниил) — написанием кода для микроконтроллеров внутри робота.

Какие навыки и знания пригодились при создании робота? Что в этом плане дал Яндекс Лицей?

    Сборка электроники требует знания C++ и систем Arduino. Конструктору нужно уметь не только строить 3D-модели и создавать чертежи в системах автоматизированного проектирования, но и пользоваться болгаркой, напильником и другими инструментами.

    Также каждый участник олимпиады вне зависимости от роли в команде должен пройти индивидуальный тур по информатике — для этого необходимо знать алгоритмическое программирование и уметь писать код.

    Программистам компьютерного зрения очень пригодится знание Python — этот язык программирования детально изучают весь первый год в Яндекс Лицее.

    Даниил: Первый год в Лицее вообще самый важный. Он создаёт определённый майндсет, даёт глубокие, фундаментальные знания и понимание, как строить алгоритмы и программы. Этого уже достаточно, чтобы начать участвовать в олимпиадах или выполнять инженерные задачи.

    В первый год лицеисты получают всю необходимую теорию. А на втором году, когда переходят к изучению более прикладных вещей — различных библиотек, Flask, HTML, CSS, SQL, — приходится уже самостоятельно искать информацию и разбираться в документации. Это и есть главный навык: не только для инженерных олимпиад, но и вообще в жизни.

А чем увлекаетесь помимо подводной робототехники?

    После этой олимпиады мы принимали участие в Национальной технологической олимпиаде (НТО) по большим данным и машинному обучению — её организовывали Яндекс, VK и ИТМО. А в начале апреля собираемся на олимпиаду по летающей робототехнике.

    Даниил: Мне интересно и программирование на Python, и разработка устройств, и нейросети. В этом году, например, я участвовал в конкурсе «Большие вызовы» на треке «Большие данные и финансовые технологии». На первом этапе нужно было разработать и защитить проект — у меня это приложение с нейросетью, которая по запросу генерировала обучающие курсы, а затем проводила по ним тестирования.

    Победители отборочного тура попадают на смену в образовательный центр «Сириус». Там мы с командой исследовали применимость мультимодальных моделей для предсказания цен активов на российском фондовом рынке. Мы делали нейросеть, которая на основе разных типов данных — картинок, новостей, временных рядов — предсказывала, как акция будет двигаться дальше.

    Арсений: Я тоже принимал участие в «Больших вызовах» — ездил на смену три раза, всегда по направлению «Освоение Арктики и Мирового океана». Все мои проекты были тесно связаны с подводными роботами. Последний заключался в использовании целого роя подводных аппаратов для обследования морского дна и поиска месторождений природного газа и нефти в Арктике. Мне нужно было учесть экстремальные условия — течения, очень низкую температуру и так далее.

Круто! Какие дальнейшие планы?

    Арсений: Мне интересно более низкоуровневое программирование, приближенное к «сырому железу» (bare machine), — системное ПО, операционные системы, программирование микроконтроллеров и роботов. Поэтому хочу поступить в ИТМО на Software Engineering.

    Даниил: Я тоже думаю поступать в ИТМО, но на направления, связанные с машинным обучением и большими данными. А вообще хочу попасть на стажировку в Яндекс и потом там работать. Это для меня самая перспективная компания.

    На олимпиадах я занимаюсь платами и схемами, но в будущем хочу сделать упор именно на машинное обучение. Хотя эти сферы можно и совместить. Например, в роверах Яндекса есть и искусственный интеллект, и много внутренней электроники. Мои знания могли бы помочь мне сделать так, чтобы всё это работало вместе.

ещё по теме