Как Яндекс запускает роботов-доставщиков в новых районах и городах
Встретить робота‑доставщика на улицах Москвы — привычное дело. Ещё они развозят заказы в Иннополисе и Мурино, побывали на Красной Поляне и совсем недавно изучили один из районов Алматы. При этом запуск доставки роботом в новом районе или городе — это достаточно сложная процедура. Нужно определить локацию для запуска, записать и отрисовать карты, наладить инфраструктуру, протестировать все процессы, организовать поддержку для роботов.
Но несмотря на такой большой объём работ, весь процесс весьма интересный. Именно о нём я и расскажу в этой статье. Под катом — история о том, как мы поставили робота «на колёса» в Казахстане, показывали ему город для записи данных и учили объезжать арыки.
Но обо всём по порядку.
Выбор локации
Всё начинается с выбора локации для запуска. Для этого проводится анализ множества факторов: бюджетная оценка запуска, потенциал локации, затраты на запуск и возможные доходы. А ещё составляются «тепловые карты», на которых можно посмотреть, в каких зонах люди чаще всего делают заказы на доставку.
Также локацию нужно обследовать на предмет наличия нужной дорожной инфраструктуры: чтобы робот смог передвигаться по улицам, ему нужны тротуары. Также исследуется наличие узких проездов, закрытых территорий, бордюров и съездов, доступность точек интереса и наличие потенциальных сложных зон, таких как, например, овраги или ливнёвки.
У робота есть множество сенсоров, позволяющих считывать окружающую среду: радары, лидары, камеры, парктроники. А для понимания своего местоположения у робота есть датчики, отслеживающие положение, скорость и ориентацию. Об этом уже рассказывала наша коллега в одной из статей на Хабре.
Несмотря на хорошую технологическую оснащённость, робот не умеет подниматься и спускаться по ступенькам, самостоятельно открывать двери, а также проезжать в очень узких местах, которые меньше габаритов робота. Именно для понимания возможности проезда проводится удалённое обследование локации. По итогам выставляется оценка от 1 до 5, где 5 — идеально для робота.
В сентябре 2024 года Яндекс запустил роботов‑доставщиков в Алматы. Конечно же, мы начали с выбора локации. Во‑первых, мы провели анализ потенциальных зон доставки. Выбирали по принципу откуда и куда чаще всего заказывают доставку. В финал попали три зоны:
Во‑вторых, мы провели детальную бюджетную оценку запуска в каждой зоне. И в‑третьих, как только потенциальные затраты стали понятны, нам предстояло выяснить, на какой из локаций для нас более подходящая инфраструктура.
Для проведения разведки сотрудники используют панорамы в Яндекс Картах — не всегда есть возможность посетить локацию вживую в сжатые сроки. Как уже отмечалось выше, локация обследуется по таким параметрам, как узкие проезды, наличие закрытых территорий, крутые спуски, ступеньки. Например, одна из составляющих конечной оценки — оценка тротуаров. Она складывается из двух показателей: наличие узких проездов и наличие бордюров и съездов.
В таблице представлена примерная оценка по двум параметрам (вес и оценки выбраны в случайном порядке — просто для примера).
Таких параметров в таблице около 20, и у каждого свои оценка и вес. Затем результат складывается с остальными критериями и формируется итоговая оценка локации по всем необходимым параметрам.
По нашим локациям мы получили следующие оценки:
Есентай молл → 4,1 из 5
ЖК 4YOU → 4,1 из 5
Золотой квадрат → 4,35 из 5
Таким образом была выбрана локация «Золотой квадрат». Настала пора записывать карты.
Рисуем карту
Создание и обновление карт для роботов‑доставщиков в Яндексе — это многоэтапный процесс, требующий использования множества сложных технологий и алгоритмов. Однако благодаря этому роботы могут безопасно и эффективно передвигаться по городским улицам, доставляя посылки и выполняя другие задачи.
Чтобы запись карт была успешной, нужно наличие нескольких факторов:
Наличие базовых станций. Это стационарные GNSS‑приемники, которые обрабатывают спутниковые сигналы и предоставляют поправочные данные в режиме реального времени. Есть много разных поставщиков, которые предоставляют доступ к сети базовых станций. Один из них CORS.
А так выглядит карта сети базовых станций:
Эти станции расположены в разных точках мира, и у каждой свой радиус покрытия. Например, станция в Алматы покрывает такую площадь:
Антенна, встроенная в корпус робота, получает сигнал от станции, и это помогает нам локализоваться в пространстве. Также мы получаем данные от лидаров в виде лидарного облака — его мы можем совместить с картой местности с помощью этого сигнала от базовой станции.
Наличие хорошего LTE‑сигнала от оператора сотовой связи. Роботы‑доставщики используют SIM‑карты и подключение LTE для надёжной и эффективной коммуникации и навигации. Вот несколько причин, почему это необходимо:
Точная навигация. Роверы оснащены передовыми датчиками, такими как лидары, камеры и радары, которые помогают им ориентироваться в пространстве и избегать препятствий. SIM‑карты и LTE обеспечивают стабильное интернет‑соединение, что позволяет роботам получать актуальные данные для навигации и корректировки маршрутов в режиме реального времени, а также обеспечивают стабильную передачу логов разработчикам. На основании этих данных команда видит, например, изменения в инфраструктуре и правит карты.
Передача данных о заказе. Когда клиент размещает заказ через мобильное приложение или веб‑интерфейс, информация о заказе передаётся роботу в ближайшем распределительном центре. SIM‑карта и LTE обеспечивают быструю и надёжную передачу этих данных, что позволяет оптимизировать процесс доставки.
Отслеживание статуса доставки. Клиенты могут отслеживать статус своей доставки через мобильное приложение, получая уведомления о приближении робота. Для этого опять же необходимо стабильное интернет‑соединение.
Оптимизация маршрутов. Роверы используют алгоритмы планирования маршрута, учитывая трафик, преграды и другие факторы. Для этого требуется постоянный доступ к сети, чтобы получать актуальную информацию и минимизировать время доставки.
Безопасность и контроль. При необходимости получить доступ к содержимому робота можно только с помощью специального кода, который отправляется клиенту через уведомление. Это также требует надёжного интернет‑соединения для безопасной передачи данных.
Таким образом, SIM‑карты и LTE обеспечивают роботу‑доставщику необходимую связь для навигации, передачи данных, отслеживания статуса доставки и оптимизации маршрутов, что делает процесс доставки более эффективным и надёжным.
Наш робот со специальной антенной R3 MVP Sootung Kit. Такая антенна нашему роботу позволяет записать карты. Она работает с очень высокой точностью за счёт использования L2-диапазона и высокочувствительных элементов. Кроме нас данную антенну используют в основном в геодезии. Выглядит она вот так:
Обычные роботы катаются, грубо говоря, не по данным со спутника, а по «зрительной памяти» — по лидарному облаку, полученному в первый картографический проезд. И чтобы переложить это лидарное облако с огромной точностью на карту местности (а для GPS широта обычного тротуара — это погрешность измерения), нужна такая антенна.
Итак, первый шаг в создании карт для роботов‑доставщиков — это сбор данных. Чтобы записать карты в Алматы, мы отправили на картографический проезд робота с антенной. Ещё здесь нам помогают лидары, камеры и GPS. Эти устройства позволяют роботам сканировать окружающую среду и создавать трёхмерные модели местности.
После сбора данных начинается процесс их обработки. Вся собранная информация анализируется с помощью специального ПО, которое позволяет создавать высокоточные HD‑карты. Они содержат информацию о расположении зданий, дорожных знаков, пешеходных переходов и других объектов, которые могут повлиять на движение робота.
Записанное лидарное покрытие проходит постобработку алгоритмами, в ходе которой оно привязывается к определённому местоположению. После того как лидарная карта записана и обработана, необходимо создать векторную карту на основе лидарной.
Векторная карта — это цифровое представление географических данных, где информация о местности, объектах и дорогах представлена в виде математических формул. В отличие от растровых карт, которые представляют собой сетку пикселей, векторные карты состоят из точек, линий и полигонов.
Картографы создают векторные карты с помощью специальных инструментов для ввода, редактирования и управления географическими данными. Вот несколько основных этапов этого процесса:
Выбор программного обеспечения. Это может быть ArcGIS, QGIS, MapInfo или другое специализированное ПО.
Сбор данных. Сначала картограф собирает необходимые данные о географических объектах. Это могут быть спутниковые снимки, аэрофотоснимки, топографические карты или другие источники информации. В нашем случае это записанное лидарное покрытие.
Ввод данных. Картограф вводит данные в систему. Он создаёт точки, линии и полигоны, которые представляют различные географические объекты.
Редактирование и корректировка. После ввода данных картограф редактирует и корректирует их, чтобы обеспечить точность и соответствие реальным объектам. Он может изменять координаты, формы и размеры объектов, а также добавлять новые объекты.
Визуализация. Наконец, картограф визуализирует векторные данные, создавая карты в разных масштабах и проекциях. Он добавляет слои, символы и аннотации, чтобы сделать карту более информативной и понятной.
Также для построения карт нам понадобятся геотиффы — изображения, на основе которых создаётся наша HD‑карта полос. Их можно сравнить со спутниковыми снимками, на основе которых создаются карты в Яндекс Картах, однако они намного детализированнее и точнее, так как снимаются с машины или с робота, а не с околоземной орбиты. Также, в отличие от спутниковых снимков, мы точно знаем положение каждой точки за счёт GPS‑модуля, установленного на машине/роботе, и видим всё на уровне земли: высокие здания не заслоняют обзор (как спутнику), правда, могут быть проблемы с записью в плотном трафике, так как обзор начинают закрывать автомобили.
Существует два типа геотиффа:
Лидарный. По сути, это просто проекция лидарной карты на плоскость земли. Благодаря ему можно точно находить границы зданий, бордюры, отбойники и т. п. А если при проектировании учитывать интенсивность (т. е. яркость отражения) лидарных точек, то зачастую можно увидеть и разметку на дороге (она рисуется светоотражающей краской).
Камерный. Для его построения используются камеры на автомобиле, изображения с которых проектируются на плоскость земли. При этом для определения положения конкретного пикселя по‑прежнему используется лидарная карта. Благодаря ему хорошо читается дорожная разметка. Однако он намного сильнее подвержен шуму из‑за трафика и может содержать «пустоты», где не получилось заснять дорогу ни с одной точки.
Блоклетная карта — это упрощённое представление лидарной карты в виде смеси гауссовых распределений. Простыми словами, мы локально представляем большое лидарное облако точек в виде трёхмерного эллипсоида. Дорожное полотно превращается в набор плоских «лепёшек», столбы — в несколько вытянутых по вертикали эллипсоидов, более сложные объекты (скажем, кусты) — в более сложные композиции.
Такое упрощение позволяет добиться сразу двух целей:
Улучшается качество лидарной локализации. Мы не завязываемся на отдельные точки лидарной карты, которые могут быть шумными и порождать ложные соответствия между текущим лидарным сканом и лидарной картой. Вместо этого мы вычленяем «суть» лидарной карты, которая намного более устойчива и обеспечивает больший радиус сходимости.
Улучшается производительность алгоритмов, затраты на хранение данных на диске и на интернет‑трафик при обновлении карты на флоте. Вместо миллионов точек на машине мы используем десятки тысяч гауссиан, что даёт экономию по всем этим параметрам в десятки или даже сотни раз.
В итоге у нас появляются карты, которые используются роботами для навигации. Они могут быть как двумерными, так и трёхмерными — всё зависит от требований и возможностей робота.
Теперь настала пора «обкатать» полученные карты.
Тестирование
На этапе тестирования роботы проезжают по заданным маршрутам, а мы отслеживаем их поведение. Если возникают какие‑либо проблемы или ошибки, карты корректируются и обновляются. Это позволяет обеспечить максимальную точность и безопасность навигации роботов.
Тестирование карт для робота‑доставщика включает несколько этапов и проводится с целью проверки точности, актуальности и пригодности данных для навигации робота. Вот как это обычно происходит:
Проверка исходных данных. Специалисты анализируют исходные картографические данные, чтобы убедиться в их точности и полноте. Они проверяют наличие всех необходимых объектов (дороги, здания, пешеходные переходы и т. д.) и отсутствие ошибок.
Создание тестовых маршрутов. На основе карты разрабатываются тестовые маршруты для робота. Они должны охватывать различные типы местности, препятствия и условия движения, чтобы проверить работу системы навигации в разных ситуациях.
Испытания в реальных условиях. Робот‑доставщик проходит тестовые маршруты в реальной среде. Во время испытаний специалисты наблюдают за его работой, фиксируют ошибки и отклонения от маршрута, а также оценивают точность позиционирования.
Анализ результатов. После завершения испытаний мы анализируем полученные данные. Специалисты выявляют проблемы и несоответствия между картой и реальным миром, а также определяют пути их устранения.
Повторное тестирование. Если необходимо, проводится повторное тестирование с учётом исправлений и улучшений. Этот процесс повторяется до тех пор, пока карта не будет соответствовать требованиям точности и надёжности.
В Казахстане мы также тестировали все возможные маршруты. И так получилось, что тестирование в Алматы выпало на День города. Это был интересный опыт. Наш робот столкнулся с большим потоком людей и совместно со всеми отметил этот праздник. Реакция людей была незабываемой: они фотографировались с роботом и спрашивали, когда Яндекс запустит доставку в их городе.
Но толпы восторженных людей были не единственным испытанием. В Алматы распространены так называемые арыки — гидротехнические сооружения в виде небольшого оросительного канала. Так как арыки расположены вблизи тротуаров, нужно было убедиться в том, что робот отлично распознаёт такие сооружения и не упадёт в них.
В целом робот‑доставщик по умолчанию может распознавать покрытие дороги с помощью своих датчиков. Например, лидары распознают ямы с помощью лазерных лучей. Если углубиться в детали, то работает это так:
Лидар излучает лазерный луч, который направляется на поверхность дороги.
Лазерный луч отражается от поверхности дороги и возвращается обратно к лидару.
Лидар измеряет время, которое потребовалось лазерному лучу, чтобы пройти до объекта и вернуться обратно.
Используя скорость света и измеренное время, лидар рассчитывает расстояние до поверхности дороги.
Лидар повторяет этот процесс для множества точек на поверхности дороги, создавая трёхмерную карту её профиля.
На основе полученной карты лидар может обнаружить ямы и другие неровности на дороге. Если уровень поверхности резко отличается от ожидаемого, это указывает на наличие ямы. Лидар передаёт собранные данные в систему управления роботом‑доставщиком, которая использует эту информацию для корректировки маршрута и предотвращения столкновений с препятствиями.
В итоге тестирование прошло успешно: День города робот отпраздновал и все арыки успешно задетектил.
Подготовка робота
Собственно, дальше дело техники. Подготовка самих роботов‑доставщиков к запуску включает в себя несколько ключевых этапов, которые обеспечивают их безопасность и эффективность в работе.
Прежде всего каждого робота тщательно тестируют перед выходом на линию. Затем на новой локации мы запускаем их на тестовые проезды в автопилоте, но пока без реальных заказов. Это позволяет выявить возможные проблемы и внести необходимые корректировки.
Ну и чтобы роботы на новой локации окончательно освоились, необходимо обеспечить качественную инфраструктуру для их обслуживания. Нужно найти место, где можно организовать пункт для замены батарей, ремонта в случае поломки. Ну и конечно же, подключить службу технической поддержки.
Запуск и поддержка
После успешного тестирования, обучения роботов, а также создания инфраструктуры можно запускать локацию. Роботы начинают развозить заказы пользователям.
Однако на этом всё не заканчивается. После запуска локации мы мониторим обратную связь от пользователей, а также ключевые метрики. Так происходит с каждой запущенной локацией.
Кроме того, карты для роботов‑доставщиков требуют постоянного обновления. Это связано с тем, что окружающая среда постоянно меняется: появляются новые здания, дорожные знаки и другие объекты. Регулярное обновление карт позволяет роботам адаптироваться к изменениям и продолжать эффективно выполнять свои задачи.
Так как данные робот собирает при каждом своём проезде, поддержка и обновление карт происходит постоянно. Если, например, за ночь перекопали улицу, то робот сделает репорт о том, что нет возможности проехать по заданному маршруту. Специалисты проверят данные и на время дорожных работ закроют данный участок дороги для проезда роботом, а сам робот выберет альтернативный маршрут.
Запуск роботов‑доставщиков в новом городе — сложный, интересный и в чём‑то волнующий процесс, требующий тщательного анализа, планирования и тестирования. Выбор подходящей локации, запись и отрисовывание карт, а также постоянное обновление данных — всё это критически важно для безопасности и эффективности работы роботов.
Теперь и вы знаете, сколько всего нужно сделать, чтобы маленький робот успешно освоил новые места.