Когда тестировала алгоритм следования за человеком, было просто вау: студентка ОмГУ о создании робота-уборщика для парка

Дата публикации: 7.09.2022

Мы уже рассказывали, как прошло закрытие Student Labs сезона 2022. В лаборатории этого года победила команда «Робот-уборщик», разработавшая автономно работающее устройство, которое будет ездить по парку 30 лет ВЛКСМ и собирать мелкий мусор с дорожек.

«Трамплин» решил провести серию небольших интервью с призёрами проекта, чьи приложения и устройства разработаны на благо города. 

О роботе, работе над ним и его тестировании рассказала член команды Анастасия Тарасова.

Анастасия Тарасова

Расскажешь о себе как о разработчике? Где учишься?

— Я студентка четвёртого курса факультета цифровых технологий и кибербезопасности ОмГУ, до объединения факультетов в вузе училась на факультете математики и информационных технологий. 

Глобальной разработки у меня не было, но участвовала в лаборатории deeplay по анализу данных, как раз перед Student Labs. Тогда нам скинули большой массив данных, из которых собирали фичи и зависимости. С этим мы работали три месяца и на основе результатов предсказывали будущее так, чтоб расставленные по позициям игроки получили больше золота. Работали над этим три месяца и достигли желаемого результата. У нас были только историческая данные, с которыми и работали.

В универе проводили лабораторные работы по программированию на Java и C++. 

Расскажи о своей команде. Кто и за что отвечал?

— Я разработала алгоритм навигации и работала с компьютерным зрением. Куат Курпенов занимался автоматизацией картографирования и помогал с кодом, вместе дорабатывали навигацию. Алихан Абитеев разрабатывал сервер, занимался маршрутизацией данных с робота на ноутбук и обратно. Вова Иванов был важным связующим звеном, он оказывал моральную поддержку и работал с администрацией парка, чтобы мы могли провести тестовые заезды, и тестировал робота. 

Ещё у нас было два frontend-разработчика Юля Жмакина, Костя Лотов и дизайнер Катя Кипкаева, а самым главным в проекте был Юрий Рыженко. Он занимался hardware-разработкой и сборкой. 

Кроме Юрия были и другие менторы. Илья Сиганов помогал нам с компьютерным зрением и алгоритмами. Ещё был Алексей Власов, который нас консультировал по GPS и навигации, и Никита Карацев, наш product-менеджер.

Давай перейдём к роботу. Можешь рассказать о проекте?

— По сути робот-уборщик — удобная платформа. Устройство может стать роботом «подай-принеси» чтобы носить бумажки в другой кабинет. Мы создали автопилот, выполняющий задачи самостоятельно. 

Идея была Юрия. Он ходил с сыном в парк и увидел много мусора. Тогда он подумал, почему нельзя сделать сбор бычков, упаковок и бутылок автоматизированным. Решил собрать студентов, чтобы реализовать задумку. Так и появился проект в студенческой IT-лаборатории.

Где устройство будет использоваться?

— Предполагалось, что в парке им. 30-летия ВЛКСМ, но когда мы проводили тестовые заезды на улице, выявили недостатки: жёсткая платформа без амортизации, повороты только тракторным методом. Робот тяжело проезжает по кочкам, поэтому должна быть другая реализация платформы. Ещё нужно улучшить камеру, потому что она не предназначена для солнца.

Чем оборудован робот?

— Четырьмя колёсами с мотором, двумя камерами, из которых одна навигационная, а вторая мусорная. Есть компас, акселерометр, ноутбук, Bluetooth-модуль для ручного управления и два больших автомобильных аккумулятора, которых хватает на 10 часов работы.

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

Сначала были колёса с другими драйверами, с которыми робот медленно ехал, из-за чего пришлось заняться перепайкой. Потом мы поменяли микроплаты, колёса и всё заработало. 

Как робот ориентируется в пространстве?

— С помощью камер и модели распознавания объектов. Никакие датчики в этом не помогают.

На какой системе софт стоит?

— На ноутбуке Linux, также тестировали и на Windows. Весь код писали на Python. 

На первой ОС просто удобнее, потому что во второй есть проблемы взаимодействия с железом, а в Linux удобно подключаться напрямую к видеокарте ноутбука. 

На чём написали скрипт управление? Почему выбрали этот язык?

— Выбрали Python, потому что он хорошо работает с библиотеками машинного обучения. 

Мы спрашивали у менторов, и они сказали, что лучше использовать библиотеку ZeroMQ. С помощью этой библиотеки можно работать с многопоточностью, при этом исполняются программы синхронно на разных языках программирования. Так управление железом можно написать на С++, а распознавание объектов на Python и это будет работать без конфликтов. 

Компьютерное зрение написали на Python, а сам скрипт на Java, C++. Всё это будет взаимодействовать с помощью этой библиотеки, которую в будущем подключим.

Какие главные сложности в работе можешь выделить?

— Были проблемы с многопоточностью. Сначала мы хотели сделать так, чтобы программа работала в два процесса, где один отвечает за обработку видео, а второй работает с основным скриптом. Оказалось, что мультипроцессинг в Python не может взаимодействовать с видеокартой. У нас вычисления на CPU, а надо на GPU. В итоге мы решили использовать потоки в Python и всё заработало.

И ещё были проблемы с подключением к библиотеке pySerial, работающей с портами микроконтроллеров, потому что порты нужны для управления колёсами и вращения камеры. 

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

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

Сейчас у нас реализовано два алгоритма автопилота. Первый объезжает препятствия, а второй следует за человеком. Робот смотрит вперёд, затем находит человека в кадре, посылает сигнал первому потоку для передачи данных. Алгоритм смотрит кадр, есть ли там человек, выделяет его прямоугольником. Он нацеливается на человека так, чтобы тот стоял ровно перед роботом, а не где-то сбоку. Если есть место, он едет до человека, а если его слишком мало, будет стоять на месте и ждать. Также и с препятствиями. 

Как робот рассчитывает расстояние до человека и других объектов?

— По пикселям. Например, мы знаем размер изображения 640х480. Если человек находится близко к низу кадра, считаем пиксели до края, а если прям в краю, он туда не едет. 

Вы говорили, что тестировали робота в парке. Расскажи о результатах и выводах

— Тогда мы просто выехали на улицу, включили алгоритм следования за человеком, но ничего не работало. Решили, может быть, что-то случилось с камерой. Оказалось, что камера настолько светочувствительная, что на изображении всё белое. Поставили в тень, стало получше.

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

Что планируете делать дальше?

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

Когда я тестировала алгоритм следования за человеком, было просто вау. Он видит меня и едет за мной. Я это писала и это работает. 

Далее много чего планируется, например, переделать конструкцию для робота, что-то прикрутить и улучшить. Ещё хотим улучшить камеру и сделать стереозрение. Планов много.

Автор: Ярослав Загородников

Читайте также:

Поделиться:
Появилась идея для новости? Поделись ею!

Нажимая кнопку "Отправить", Вы соглашаетесь с Политикой конфиденциальности сайта.