Делаем беспилотник, год спустя
Привет! Я Роберт, основатель сервиса ЯКурьер. Мы сделали и развиваем платформу, которая решает все задачи логистики. Начиная от SaaS для автоматизации своего подвижного состава с использованием алгоритма для построения оптимального маршрута, заканчивая услугами фулфилмента и доставкой до маркетплейсов. Все это в рамках одного личного кабинета.
Благодаря сильной IT-компетенции, мы выделили небольшой отдел и вот уже больше двух лет мы развиваем беспилотные технологии. Сегодня я хочу рассказать, какие задачи логистики это решает и с какими трудностями мы столкнулись.
Две задачи для реализации беспилота
Внедряя беспилотные технологии, мы поставили перед собой две цели. Задача-максимум — сделать систему беспилотного вождения для организации междугородней доставки. Задача-минимум — автоматизировать логистику на закрытых территориях на базе грузовых электротележек или пассажирских шаттлов.
Мы понимали всю сложность этих задач, осознавали, сколько денег понадобится вложить, но все же мы ввязались в эту авантюру и с нашим скромнейшим бюджетом нам удалось довольно далеко продвинуться. Как это всё начиналось, вы можете прочитать тут
План-минимум родился из понимания того, что не нужно тратить много времени на RnD. На первом этапе достаточно сделать простую платформу, которая будет перемещаться по виртуальным меткам (рельсам) и останавливаться при обнаружении препятствия. Позже мы добавили нейронку, которая исследует окружающий мир и принимает решения. Проблема всех периодически появляющихся платформ в том, что в них пытаются засунуть все и сразу: нейронку, лидары, стереокамеры. Это дико усложняет и, по сути, губит проект.
Железо
Мы начали искать разработчиков железа для определения местоположения платформы в пространстве. Такая система называется РТЛС, по сути это тот же gps/gnss, только автономный, независимый, имеет более высокую точность и может использоваться в помещениях. Система состоит из неподвижных анкеров (или маяков) с заведомо известными координатами и подвижных меток. Она должна обеспечивать извлечение измерительных данных и вычисления локально на метках, то есть на транспортных платформах, где они устанавливаются.
На поиски ушло несколько месяцев. Все, что мы находили в России нам абсолютно не подходило, мы встречались с разными компаниями, но все они нам казались динозаврами из совка: куча патентов, но когда спрашиваешь предназначение коробочки, оказывается, что они сами толком не знают, для чего ее делали.
В итоге мы нашли разработчиков из Китая, которые очень подозрительно самоорганизовались в чате всеми отделами: и коммерция, и разрабы. Мы быстро пришли тому, что их продукт нам подходит, но его нужно доработать для наших нужд.
Доработки
Доработки нужны были в отношении расчета и оценки не только точечного местоположения (мультилатерации), но и контроля ориентации в пространстве. Основная трудность была в том, что одному и тому же набору отдельных отметок положения (точек) соответствует математически бесконечное число траекторий. И точно в срок все было готово. При доставке в Россию, мы очень переживали, что будет не то, работать будет не так или вообще не будет. По деньгам ушло около 150К, но их устройства превзошли все наши ожидания по всем параметрам.
Поработав с кодом, у нас появились собственные алгоритмы и методы расчета пространственных данных, и система позиционирования в целом, которую мы можем достаточно дешево, за несколько дней развернуть где-угодно. Мы умеем создавать 3д-карты пространства и рисовать на них маршруты, по которым будет перемещаться наша платформа.
Система позиционирования
Что сделали:
- сопряжение с вычислительной платформой;
- итерационный алгоритм мультилатерации;
- фильтры Калмана для окончательного вычисления пространственных данных;
- обеспечили устойчивость к нарушению связи с анкерами, вплоть до полного их отсутствия, в зависимости от продолжительности нарушения.
Параллельно с этим нами была приобретена машинка-робот на базе микрокомпьютера Raspberry Pi с минимально необходимой исполнительной периферией, камерой, инфракрасными и ультразвуковыми датчиками. Это робот начального уровня, не оснащенный никакими инерциальными системами, и передвигающийся по принципу танка
Реализовывая такие проекты, важно все продумать наперед, но ты постоянно тратишь время на то, о чем даже не думал. Например, мы долго не могли понять, почему даже на простых маршрутах в виде кругов или скругленных квадратов поведение робота меняется со временем.
Оказалось, что из-за избыточной простоты напряжение питания на ШИМ-драйверах его приводов не стабилизировано, и базовая скорость «плавает», в зависимости от заряда батареи. Также при отсутствии инерциальных датчиков довольно жутко обеспечивать надлежащие углы поворота, как, впрочем, и стабильное движение по прямой и много-много чего еще…
Машинка, что сделали:
- разработали математическую модель;
- интегрировали систему RTLS;
- применили алгоритм итерационной мультилатерации;
- реализовали алгоритм адаптивной фильтрации по Калману;
- разработали алгоритм автоматического управления как для «свободного» движения, так и для ведения по маршруту;
- провели успешные тесты.
И что в итоге?
Теперь у нас есть стабильный, неприхотливый продукт, который может перемещаться, следуя виртуальным меткам и останавливаться, обнаруживая помеху обычным парктроником. Параллельно с этим, мы долго выдумывали и писали свою интеллектуальную сеть. Единственное, что нас отличает от больших корпоратов, это креатив :). Мы придумали, как принято говорить всем стартапам), уникальную нейронку, которая обучается по эволюционным алгоритмам, рассматривающим многообразие видов (паттернов). Что позволяет принимать решение и при возникновении препятствия, объезжать его. Видео презентация работы системы
Главная особенность в том, что она заранее устойчива в условиях открытого мира (Open Set), когда приходится сталкиваться с чем-то непредсказуемым, с тем, чего не было в обучении.
Вторая — способность помнить ранее полученные навыки нам удалось преодолеть так называемое «катастрофическое забывание»!
Третья особенность: мы видим, как нейронка учится. На первом релизе, на дата сете MNIST, она допустила 0,25% ошибок. Мы подружили ее с нашей Toyota Prius, и сеть учится измерять курсовой угол и уровни газ/тормоз по видеопотоку.
Для обеспечения нейронки релевантными видеоданными мы разработали time-domain — фильтр видеопотока, подавляющий статические, малоподвижные области изображений, а также разработали подходящие для этого сверточные пространственные фильтры.
Вместо заключения
Сейчас мы делаем полноразмерную платформу для перемещения грузов. Для этого мы возьмем шасси Портера, добавим немного дизайна, поставим контроллеры для управления и приправим электродвигателем. И второй, более компактный вариант, формата AGV-автоматически управляемая тележка. Имея готовую технологию, уже сейчас, мы можем организовать перемещение грузов, пассажиров на любой закрытой территории: склады, парки, заводы, аэропорты. А вот систему для перемещения грузов между городами мы планируем закончить в 2022 г. Ждем пилотов)
Круто, за этими технологиями будущее. Классно, у вас все получится!
Удачи!!!