Как мы сделали навигацию для мобильных роботов

Всем привет! Мы в PureMind разрабатываем решения на основе алгоритмов машинного обучения и компьютерного зрения. Занимаемся этим с 2016 года. Лучше всего умеем делать такие решения на стыке с оборудованием, т.е. когда сложные алгоритмы вычислять очень надо, а большой сервер использовать невозможно (мобильные роботы, дроны, различные “умные”, носимые девайсы). Один из наших проектов - создание системы автономной навигации для мобильных роботов. Это такое ПО, которое позволяет роботам или другому оборудованию перемещаться самостоятельно. Как автономные машины, только скорости поменьше и условия другие.

Идея

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

Как мы сделали навигацию для мобильных роботов

Реализация

Изучив возможные подходы, выбор пал на использование камеры для ориентации робота в пространстве. Для вычисления алгоритмов навигации, распознавания и вычисления расстояний до объектов приняли решение использовать мобильный GPU вычислитель от NVIDIA. Хотя конечно можно и на базе других платформ.

Как мы сделали навигацию для мобильных роботов

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

Что уже готово

Что продукт уже умеет прямо сейчас:

  • строить карту помещения, понимать где робот на этой карте сейчас находится;
  • загружать заранее заготовленные карты, чтобы можно было легко перемещать робота из одного здания в другое и робот сразу мог в нем ориентироваться;
  • строить маршрут до нужной точки и перестраивать его, если появились препятствия на пути;
  • понимать по одной камере расстояния до объектов;
  • самостоятельно принимать решения о корректировке маршрута или ожидании.

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

Что дальше

Нам видится логичным превращать это все в коробочный продукт, который уже продавать разработчикам роботов. Вроде выглядит удобно - готовое решение, не нужно ничего разрабатывать самим, можно быстро запустить на своем роботе и быстро начать его продавать (а не тратить год-другой на разработку). Но пообщавшись с рынком выяснилось, что разработчиков мобильных роботов можно по пальцам пересчитать, да и продают они по десятку роботов в год. К тому же “железячные” проекты очень ресурсоемки и делаются с привлечением денег инвесторов, которые очень хотят всю интеллектуальную собственность иметь внутри проекта.

Хотелось бы услышать ваше мнение, стоит ли развивать это решение до уровня скачал-настроил-запустил? Будем рады вашим комментариям!

P.S. на самой поломоечной машине решение еще не запущено, ждем от заказчика оборудование.

P.P.S. Если интересны подробности - пишите в комментариях, отдельно расскажу почему выбрали тот или иной подход к решению каждой задачи и какие есть нюансы.

5
7 комментариев