
Встретить робота‑доставщика на улицах Москвы — привычное дело. Ещё они развозят заказы в Иннополисе и Мурино, побывали на Красной Поляне и совсем недавно изучили один из районов Алматы. При этом запуск доставки роботом в новом районе или городе — это достаточно сложная процедура. Нужно определить локацию для запуска, записать и отрисовать карты, наладить инфраструктуру, протестировать все процессы, организовать поддержку для роботов.
Но несмотря на такой большой объём работ, весь процесс весьма интересный. Именно о нём я и расскажу в этой статье. Под катом — история о том, как мы поставили робота «на колёса» в Казахстане, показывали ему город для записи данных и учили объезжать арыки.
Но обо всём по порядку.
Выбор локации
Всё начинается с выбора локации для запуска. Для этого проводится анализ множества факторов: бюджетная оценка запуска, потенциал локации, затраты на запуск и возможные доходы. А ещё составляются «тепловые карты», на которых можно посмотреть, в каких зонах люди чаще всего делают заказы на доставку.
Также локацию нужно обследовать на предмет наличия нужной дорожной инфраструктуры: чтобы робот смог передвигаться по улицам, ему нужны тротуары. Также исследуется наличие узких проездов, закрытых территорий, бордюров и съездов, доступность точек интереса и наличие потенциальных сложных зон, таких как, например, овраги или ливнёвки.
У робота есть множество сенсоров, позволяющих считывать окружающую среду: радары, лидары, камеры, парктроники. А для понимания своего местоположения у робота есть датчики, отслеживающие положение, скорость и ориентацию. Об этом уже рассказывала наша коллега в одной из статей на Хабре.
Несмотря на хорошую технологическую оснащённость, робот не умеет подниматься и спускаться по ступенькам, самостоятельно открывать двери, а также проезжать в очень узких местах, которые меньше габаритов робота. Именно для понимания возможности проезда проводится удалённое обследование локации. По итогам выставляется оценка от 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‑модуля, установленного на машине/роботе, и видим всё на уровне земли: высокие здания не заслоняют обзор (как спутнику), правда, могут быть проблемы с записью в плотном трафике, так как обзор начинают закрывать автомобили.
Существует два типа геотиффа:
-
Лидарный. По сути, это просто проекция лидарной карты на плоскость земли. Благодаря ему можно точно находить границы зданий, бордюры, отбойники и т. п. А если при проектировании учитывать интенсивность (т. е. яркость отражения) лидарных точек, то зачастую можно увидеть и разметку на дороге (она рисуется светоотражающей краской).
-
Камерный. Для его построения используются камеры на автомобиле, изображения с которых проектируются на плоскость земли. При этом для определения положения конкретного пикселя по‑прежнему используется лидарная карта. Благодаря ему хорошо читается дорожная разметка. Однако он намного сильнее подвержен шуму из‑за трафика и может содержать «пустоты», где не получилось заснять дорогу ни с одной точки.

Блоклетная карта — это упрощённое представление лидарной карты в виде смеси гауссовых распределений. Простыми словами, мы локально представляем большое лидарное облако точек в виде трёхмерного эллипсоида. Дорожное полотно превращается в набор плоских «лепёшек», столбы — в несколько вытянутых по вертикали эллипсоидов, более сложные объекты (скажем, кусты) — в более сложные композиции.

Такое упрощение позволяет добиться сразу двух целей:
-
Улучшается качество лидарной локализации. Мы не завязываемся на отдельные точки лидарной карты, которые могут быть шумными и порождать ложные соответствия между текущим лидарным сканом и лидарной картой. Вместо этого мы вычленяем «суть» лидарной карты, которая намного более устойчива и обеспечивает больший радиус сходимости.
-
Улучшается производительность алгоритмов, затраты на хранение данных на диске и на интернет‑трафик при обновлении карты на флоте. Вместо миллионов точек на машине мы используем десятки тысяч гауссиан, что даёт экономию по всем этим параметрам в десятки или даже сотни раз.
В итоге у нас появляются карты, которые используются роботами для навигации. Они могут быть как двумерными, так и трёхмерными — всё зависит от требований и возможностей робота.
Теперь настала пора «обкатать» полученные карты.
Тестирование
На этапе тестирования роботы проезжают по заданным маршрутам, а мы отслеживаем их поведение. Если возникают какие‑либо проблемы или ошибки, карты корректируются и обновляются. Это позволяет обеспечить максимальную точность и безопасность навигации роботов.
Тестирование карт для робота‑доставщика включает несколько этапов и проводится с целью проверки точности, актуальности и пригодности данных для навигации робота. Вот как это обычно происходит:
-
Проверка исходных данных. Специалисты анализируют исходные картографические данные, чтобы убедиться в их точности и полноте. Они проверяют наличие всех необходимых объектов (дороги, здания, пешеходные переходы и т. д.) и отсутствие ошибок.
-
Создание тестовых маршрутов. На основе карты разрабатываются тестовые маршруты для робота. Они должны охватывать различные типы местности, препятствия и условия движения, чтобы проверить работу системы навигации в разных ситуациях.
-
Испытания в реальных условиях. Робот‑доставщик проходит тестовые маршруты в реальной среде. Во время испытаний специалисты наблюдают за его работой, фиксируют ошибки и отклонения от маршрута, а также оценивают точность позиционирования.
-
Анализ результатов. После завершения испытаний мы анализируем полученные данные. Специалисты выявляют проблемы и несоответствия между картой и реальным миром, а также определяют пути их устранения.
-
Повторное тестирование. Если необходимо, проводится повторное тестирование с учётом исправлений и улучшений. Этот процесс повторяется до тех пор, пока карта не будет соответствовать требованиям точности и надёжности.
В Казахстане мы также тестировали все возможные маршруты. И так получилось, что тестирование в Алматы выпало на День города. Это был интересный опыт. Наш робот столкнулся с большим потоком людей и совместно со всеми отметил этот праздник. Реакция людей была незабываемой: они фотографировались с роботом и спрашивали, когда Яндекс запустит доставку в их городе.

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

В целом робот‑доставщик по умолчанию может распознавать покрытие дороги с помощью своих датчиков. Например, лидары распознают ямы с помощью лазерных лучей. Если углубиться в детали, то работает это так:
-
Лидар излучает лазерный луч, который направляется на поверхность дороги.
-
Лазерный луч отражается от поверхности дороги и возвращается обратно к лидару.
-
Лидар измеряет время, которое потребовалось лазерному лучу, чтобы пройти до объекта и вернуться обратно.
-
Используя скорость света и измеренное время, лидар рассчитывает расстояние до поверхности дороги.
-
Лидар повторяет этот процесс для множества точек на поверхности дороги, создавая трёхмерную карту её профиля.
На основе полученной карты лидар может обнаружить ямы и другие неровности на дороге. Если уровень поверхности резко отличается от ожидаемого, это указывает на наличие ямы. Лидар передаёт собранные данные в систему управления роботом‑доставщиком, которая использует эту информацию для корректировки маршрута и предотвращения столкновений с препятствиями.
В итоге тестирование прошло успешно: День города робот отпраздновал и все арыки успешно задетектил.
Подготовка робота
Собственно, дальше дело техники. Подготовка самих роботов‑доставщиков к запуску включает в себя несколько ключевых этапов, которые обеспечивают их безопасность и эффективность в работе.
Прежде всего каждого робота тщательно тестируют перед выходом на линию. Затем на новой локации мы запускаем их на тестовые проезды в автопилоте, но пока без реальных заказов. Это позволяет выявить возможные проблемы и внести необходимые корректировки.
Ну и чтобы роботы на новой локации окончательно освоились, необходимо обеспечить качественную инфраструктуру для их обслуживания. Нужно найти место, где можно организовать пункт для замены батарей, ремонта в случае поломки. Ну и конечно же, подключить службу технической поддержки.
Запуск и поддержка
После успешного тестирования, обучения роботов, а также создания инфраструктуры можно запускать локацию. Роботы начинают развозить заказы пользователям.
Однако на этом всё не заканчивается. После запуска локации мы мониторим обратную связь от пользователей, а также ключевые метрики. Так происходит с каждой запущенной локацией.
Кроме того, карты для роботов‑доставщиков требуют постоянного обновления. Это связано с тем, что окружающая среда постоянно меняется: появляются новые здания, дорожные знаки и другие объекты. Регулярное обновление карт позволяет роботам адаптироваться к изменениям и продолжать эффективно выполнять свои задачи.
Так как данные робот собирает при каждом своём проезде, поддержка и обновление карт происходит постоянно. Если, например, за ночь перекопали улицу, то робот сделает репорт о том, что нет возможности проехать по заданному маршруту. Специалисты проверят данные и на время дорожных работ закроют данный участок дороги для проезда роботом, а сам робот выберет альтернативный маршрут.
Запуск роботов‑доставщиков в новом городе — сложный, интересный и в чём‑то волнующий процесс, требующий тщательного анализа, планирования и тестирования. Выбор подходящей локации, запись и отрисовывание карт, а также постоянное обновление данных — всё это критически важно для безопасности и эффективности работы роботов.
Теперь и вы знаете, сколько всего нужно сделать, чтобы маленький робот успешно освоил новые места.
Автор: Viktoriia1998