Kolibri on Nostr: Как устроен робот-доставщик Яндекса: от ...
Как устроен робот-доставщик Яндекса: от восприятия до планирования движения
https://bastyon.com/index?s=8a3f1ffe14de5d14e0f786df4f48368f5310f0f25297dceb502b6779c3c3fe23&ref=PPuoSzXpSnY1Q4w1MLeVdLcbaUpVDCwpBp
#Архитектура #технологии
Чтобы разобраться, как работает робот‑доставщик, давайте рассмотрим архитектуру технологии в целом. Для начала выделим пять основных составляющих, которые делают робота умным и способным доставлять заказы быстро и безопасно:
Сенсоры. Помогают роботу видеть мир вокруг и понимать собственное движение.
Восприятие. Превращает данные с сенсоров в понятную для робота картину мира, выделяя важные объекты вокруг.
Карты. Содержат подробную информацию о местности, по которой передвигается робот.
Локализация. Помогает роботу точно определить, где он находится на карте в каждый момент времени.
Поведение. «Мозг» робота, который решает, как действовать в разных ситуациях, и выбирает лучший путь.
Теперь рассмотрим детальнее каждый из основных элементов системы.
Сенсоры
Сенсоры, установленные на роботе‑доставщике, можно разделить на две группы: для восприятия окружающего мира и для нахождения положения робота в нём. К первой группе относятся сенсоры, помогающие сканировать окружающую среду и распознавать объекты, например лидары, камеры, радары и парктроники. Ко второй группе относятся датчики, отслеживающие положение, скорость и ориентацию робота: IMU, GNSS и датчики вращения колёс.
Сенсоры восприятия
LiDAR (Light Detection and Ranging) — метод дистанционного зондирования, основанный на использовании лазерного излучения для определения расстояния до объектов.
Оснащённый 64 лазерными лучами, лидар формирует детализированное трёхмерное облако точек с диапазоном видимости до 30 метров. Благодаря высокой плотности данных мы не только точно измеряем расстояние до объектов, но и легко классифицируем их по форме.
Робот оснащён четырьмя fisheye‑камерами, расположенными таким образом, чтобы получить полный, 360-градусный обзор без слепых зон. При подготовке данных мы преобразуем fisheye‑изображения в сферическую проекцию. Это позволяет корректно объединить все кадры в общую панораму без искажений.
Радар дополняет возможности лидара, используя радиоволны и эффект Доплера, чтобы измерять скорость объектов на расстоянии до 150 метров. Это особенно полезно, когда робот проезжает пешеходный переход, так как радары позволяют заранее обнаружить приближающиеся машины и оценить их скорость.
Парктроники используют ультразвуковые датчики для обнаружения объектов на близком расстоянии, что обеспечивает дополнительную безопасность в ближней зоне робота.
Сенсоры позиционирования и движения
GNSS (Global Navigation Satellite System) — глобальная система спутниковой навигации, которая используется для определения местоположения на земной поверхности. Она объединяет несколько спутниковых систем, включая американскую GPS, российскую ГЛОНАСС, европейскую Galileo и китайскую BeiDou.
Инерциальный измерительный модуль (IMU) — это компактное электронное устройство, объединяющее акселерометр и гироскоп. Он позволяет определять линейное ускорение и угловую скорость робота в пространстве.
Датчики вращения колёс — это высокоточные датчики, установленные на колёсах робота. Регистрируют мельчайшие повороты колёс, позволяя точно измерять пройденное расстояние и скорость движения.
И раз уж мы разобрались, какую полезную информацию собирают сенсоры, давайте рассмотрим, что с этими данными делают наши алгоритмы.
Восприятие aka Perception
Главная цель системы восприятия — распознать объекты вокруг робота, которые могут повлиять на его движение. Эти объекты делятся на динамические (например, люди, машины, самокаты) и статичные (например, здания, столбы, деревья).
В случае с динамическими объектами требуется точное предсказание направления и скорости, чтобы своевременно реагировать, например, на едущие в сторону робота машину или самокат.
В случае со статичными объектами важнее определить их размер, так как распознанные статичные объекты принимают непосредственное участие в формировании траектории движения робота. Например, корректное распознавание статики важно в ситуации, когда робот едет по узкому тротуару, где ему приходится сильно прижиматься к стенам домов.
Робот‑доставщик воспринимает окружающий мир с помощью 3D‑детекции объектов и карты занятости (occupancy grid). 3D‑детекция позволяет роботу определять тип каждого динамического объекта (например, человек или автомобиль), его точное местоположение, габариты, направление движения и скорость. Карта занятости разбивает пространство на небольшие ячейки размером 5×5 см, каждая из которых хранит тип занятости и высоту препятствий.
HD-карты
Карты High Definition (HD) — это карты высокой детализации. Они включают в себя трёхмерное представление окружающей среды в виде плотного лидарного облака для локализации, а также векторный слой, содержащий данные о дорожной инфраструктуре (например, светофоры, пешеходные переходы, границы дорог и тротуаров), которые помогает планировать траектории движения робота.
Лидарный слой
Лидарный слой HD‑карты — это детальная трёхмерная модель окружающей среды, которая состоит из плотного облака точек, имеющего привязку к абсолютным координатам.
Создание этого слоя полностью автоматизировано. Для запуска робота‑доставщика на новом месте достаточно один раз проехать по всем тротуарам и пешеходным дорожкам в ручном режиме, выгрузить данные и запустить процесс оптимизации, который на выходе выдаст плотное облако для локации. Если какие‑то тротуары проходят близко к дороге, то для ускорения записи можно использовать беспилотный автомобиль — его лидарные облака также подойдут для создания такого слоя.
Лидарные облака, из которых строится слой карты, подвергаются предварительной фильтрации. Из них удаляются точки, принадлежащие динамическим объектам, таким как автомобили или пешеходы (с их детекцией помогает система восприятия). Благодаря этому мы получаем надёжную основу для локализации робота, которая редко меняется.
Векторный слой
Векторный слой HD‑карты создаётся картографами на основе лидарных данных и изображений с камер. Слой хранит информацию о границах зон для движения робота в виде полигонов с разбивкой на типы зон. Мы выделяем следующие типы: пешеходные переходы, тротуары, велодорожки, зоны смешанного пользования (например, парковки или дворовая территория).
Также в карте хранится информация о положении светофоров, об их связи друг с другом и о том, какие манёвры они контролируют. Это позволяет определять состояние тех светофоров, которые встретятся роботу на пути, но которые не будет видно из‑за людей или машин.
И наконец, сейчас в карте дополнительно хранятся полосы для робота в пределах допустимых зон для его движения, велосипедные полосы для предсказания поведения велосипедистов и агентские полосы — прогнозируемые траектории движения автомобилей. Эти данные помогают роботу эффективно планировать максимально безопасный маршрут с учётом особенностей городской среды и ожидаемого поведения других участников движения.
Все объекты в векторном слое рисуются с сантиметровой точностью. Это в том числе делает невозможным использование готовых HD‑карт, точность которых ниже. И дальнейшие работы в проекте идут по пути уменьшения количества сущностей в векторном слое, упрощения формата, переноса детекции части сущностей в модуль восприятия, а также по пути автоматизации создания векторного слоя с помощью ML‑алгоритмов.
Пока же векторный слой карты позволяет существенно разгрузить вычисления на борту и упростить систему восприятия. Но чтобы использовать информацию из этого слоя, робот должен уметь определять своё положение на карте. И с этим ему помогает модуль локализации.
Локализация
Главная цель локализации — определить положение, ориентацию, скорость и ускорение робота в пространстве. Для этого мы комбинируем данные с различных сенсоров.
GNSS (Global Navigation Satellite System). Предоставляет данные о положении робота на поверхности Земли, например в виде классических широты и долготы. Однако GNSS может давать некорректные результаты в ситуациях, когда связь со спутником ослаблена, зашумлена или в принципе отсутствует: при плохих погодных условиях, в городской застройке, в тоннелях.
IMU (Inertial Measurement Unit). Предоставляет данные об ускорении и угловой скорости робота. Эта информация критически важна для точной локализации, хотя показания могут колебаться при сильных наклонах или вибрациях корпуса робота.
Колёсная одометрия. Используя данные с датчиков вращения колёс, мы оцениваем скорость движения робота, преодолённое им расстояние и изменения ориентации. Этот метод обеспечивает высокую точность на коротких дистанциях, но со временем ошибки могут накапливаться, особенно при проскальзывании колёс или движении по неровным поверхностям. Зимние условия представляют особую сложность для одометрии, поскольку увеличивают вероятность ошибок из‑за скользких поверхностей и изменения сцепления.
А ещё нам помогает лидарная локализация, которая позволяет определять положение робота благодаря лидарному слою из HD‑карты и текущему снимку с лидара.
Эта задача называется point‑cloud registration, и существует множество алгоритмов её решения. В нашем случае для робота используется алгоритм NDT (Normal Distribution Transform).
Всё вместе — EKF!
Учитывая, что у каждого метода локализации есть свои погрешности, мы используем Extended Kalman Filter (EKF) для объединения показаний всех сенсоров и получения наиболее точного результата.
Какие особенности нашей задачи делают EKF подходящим решением?
Измерения неточные: каждый сенсор в определённых условиях может давать погрешности.
Измерения избыточные: положение робота определяется по GNSS и ICP, скорость/ускорение — по колёсам и IMU, ориентация — по одометрии и ICP.
Измерения несогласованные: данные от различных сенсоров поступают в разные моменты времени и представляют собой как абсолютные, так и относительные измерения.
Чтобы правильно учесть и абсолютные знания о локализации, и информацию об относительном перемещении, EKF на каждом такте работы совершает два действия. Во‑первых, прогнозирует новое положение робота, а также параметры скорости, ускорения и ориентации на основе известного предыдущего состояния робота и некоторой модели движения. Во‑вторых, актуализирует прогноз, используя данные от сенсоров и лидарной локализации. Полученная оценка становится отправной точкой для следующего такта работы EKF.
Теперь, когда мы разобрались, как робот воспринимает окружающий мир и определяет своё положение в нём, давайте перейдём к самой интересной части — узнаем, как робот принимает решения и планирует действия.
Планировщик движения & управление
После того как компоненты восприятия, локализации и HD‑карт предоставили полную информацию о среде, следующим шагом становится планирование движения робота‑доставщика и управление движением. Планировщик движения строит оптимальный маршрут на основе полученных данных, предсказывает возможные траектории других участников, а система управления отвечает за точное следование этому маршруту, корректируя движение робота в реальном времени.
Построение маршрута (Routing)
Любая поездка робота‑доставщика начинается с появления двух точек, через которые надо проехать: отдельный сервис на бэкенде сообщает роботу, где забрать заказ и куда его доставить. Затем начинается планирование маршрута с учётом данных HD‑карт, включая дорожную инфраструктуру (переходы, тротуары, велодорожки) и потенциальные препятствия (ремонтные работы, снежные заносы, узкие места). А ещё мы учитываем местоположение и планируемые траектории других роботов‑доставщиков, чтобы они могли благополучно разъехаться в узких местах.
На основе этой информации строится взвешенный граф, где вес ребра зависит от различных факторов. Для поиска оптимального пути применяется алгоритм A*.
Предсказания
Итак, у нас есть глобальный маршрут — пора ехать. Но вспоминаем ПДД: прежде чем сделать первый шаг, нужно хорошенько осмотреться. Мы уже знаем о статичных препятствиях из HD‑карт и только что получили свежую информацию от системы восприятия. К тому же мы в курсе, где находятся другие участники движения и с какой скоростью они перемещаются.
Но и этого мало! Чтобы безопасно проложить путь, нам нужно предугадать, куда могут направиться все эти движущиеся объекты, чтобы своим движением не создавать им помех. Поэтому для каждого движущегося объекта мы пытаемся предсказать возможные траектории движения. В этом нам помогает система предсказания движения.
Сейчас эта система представляет собой сложный набор правил, которые опираются на информацию из трекера (класс, направление и скорость объекта), и данные из HD‑карт (например, где находятся полосы движения).
Планировщик движения (Motion planner)
Оценив все потенциальные препятствия, робот переходит к планированию локального маршрута — обычно на ближайшие 20 метров вдоль глобального пути. В этом процессе участвуют два планировщика:
Mesh planner — строит траекторию движения.
Speed planner — определяет скорость движения на различных участках траектории.
Как и при построении глобального маршрута, здесь также используется алгоритм A*, но с учётом дополнительных факторов: физических ограничений робота, пересекающих путь людей, машин и статичных объектов, ограничений скорости из соображений безопасности и других параметров.
Управление (Control)
После построения траектории следовать ей непросто из‑за множества факторов: неровностей дороги, изменяющегося трения, неполных данных с датчиков. Эти ошибки могут сбить робота с курса, поэтому необходима система управления для постоянной корректировки движения.
Наш подход к управлению роботом‑доставщиком включает два основных компонента:
PID‑регулятор для продольного управления (аналог педали газа). Этот метод поддерживает заданную скорость робота, эффективно корректируя отклонения и обеспечивая стабильное движение.
Pure Pursuit для поперечного управления (аналог руля). Этот метод вычисляет линейную и угловую скорость робота, чтобы достичь целевой точки траектории, расположенной впереди его текущего положения.
Таким образом, компонента Control обеспечивает принятие решений на всех уровнях: от глобального планирования маршрута до локального маневрирования, позволяя роботу‑доставщику эффективно и безопасно выполнять свои задачи.
Итак, мы рассмотрели основные составляющие системы робота‑доставщика: от сенсоров до алгоритмов принятия решений. Однако это ещё не всё! У робота есть много не менее важных и интересных элементов: калибровка сенсоров, взаимодействие со светофорами и различные дополнительные детекторы (например, детектор ям), а еще блюр лиц и автомобильных знаков для защиты персональных данных.
https://bastyon.com/index?s=8a3f1ffe14de5d14e0f786df4f48368f5310f0f25297dceb502b6779c3c3fe23&ref=PPuoSzXpSnY1Q4w1MLeVdLcbaUpVDCwpBp
#Архитектура #технологии
Чтобы разобраться, как работает робот‑доставщик, давайте рассмотрим архитектуру технологии в целом. Для начала выделим пять основных составляющих, которые делают робота умным и способным доставлять заказы быстро и безопасно:
Сенсоры. Помогают роботу видеть мир вокруг и понимать собственное движение.
Восприятие. Превращает данные с сенсоров в понятную для робота картину мира, выделяя важные объекты вокруг.
Карты. Содержат подробную информацию о местности, по которой передвигается робот.
Локализация. Помогает роботу точно определить, где он находится на карте в каждый момент времени.
Поведение. «Мозг» робота, который решает, как действовать в разных ситуациях, и выбирает лучший путь.
Теперь рассмотрим детальнее каждый из основных элементов системы.
Сенсоры
Сенсоры, установленные на роботе‑доставщике, можно разделить на две группы: для восприятия окружающего мира и для нахождения положения робота в нём. К первой группе относятся сенсоры, помогающие сканировать окружающую среду и распознавать объекты, например лидары, камеры, радары и парктроники. Ко второй группе относятся датчики, отслеживающие положение, скорость и ориентацию робота: IMU, GNSS и датчики вращения колёс.
Сенсоры восприятия
LiDAR (Light Detection and Ranging) — метод дистанционного зондирования, основанный на использовании лазерного излучения для определения расстояния до объектов.
Оснащённый 64 лазерными лучами, лидар формирует детализированное трёхмерное облако точек с диапазоном видимости до 30 метров. Благодаря высокой плотности данных мы не только точно измеряем расстояние до объектов, но и легко классифицируем их по форме.
Робот оснащён четырьмя fisheye‑камерами, расположенными таким образом, чтобы получить полный, 360-градусный обзор без слепых зон. При подготовке данных мы преобразуем fisheye‑изображения в сферическую проекцию. Это позволяет корректно объединить все кадры в общую панораму без искажений.
Радар дополняет возможности лидара, используя радиоволны и эффект Доплера, чтобы измерять скорость объектов на расстоянии до 150 метров. Это особенно полезно, когда робот проезжает пешеходный переход, так как радары позволяют заранее обнаружить приближающиеся машины и оценить их скорость.
Парктроники используют ультразвуковые датчики для обнаружения объектов на близком расстоянии, что обеспечивает дополнительную безопасность в ближней зоне робота.
Сенсоры позиционирования и движения
GNSS (Global Navigation Satellite System) — глобальная система спутниковой навигации, которая используется для определения местоположения на земной поверхности. Она объединяет несколько спутниковых систем, включая американскую GPS, российскую ГЛОНАСС, европейскую Galileo и китайскую BeiDou.
Инерциальный измерительный модуль (IMU) — это компактное электронное устройство, объединяющее акселерометр и гироскоп. Он позволяет определять линейное ускорение и угловую скорость робота в пространстве.
Датчики вращения колёс — это высокоточные датчики, установленные на колёсах робота. Регистрируют мельчайшие повороты колёс, позволяя точно измерять пройденное расстояние и скорость движения.
И раз уж мы разобрались, какую полезную информацию собирают сенсоры, давайте рассмотрим, что с этими данными делают наши алгоритмы.
Восприятие aka Perception
Главная цель системы восприятия — распознать объекты вокруг робота, которые могут повлиять на его движение. Эти объекты делятся на динамические (например, люди, машины, самокаты) и статичные (например, здания, столбы, деревья).
В случае с динамическими объектами требуется точное предсказание направления и скорости, чтобы своевременно реагировать, например, на едущие в сторону робота машину или самокат.
В случае со статичными объектами важнее определить их размер, так как распознанные статичные объекты принимают непосредственное участие в формировании траектории движения робота. Например, корректное распознавание статики важно в ситуации, когда робот едет по узкому тротуару, где ему приходится сильно прижиматься к стенам домов.
Робот‑доставщик воспринимает окружающий мир с помощью 3D‑детекции объектов и карты занятости (occupancy grid). 3D‑детекция позволяет роботу определять тип каждого динамического объекта (например, человек или автомобиль), его точное местоположение, габариты, направление движения и скорость. Карта занятости разбивает пространство на небольшие ячейки размером 5×5 см, каждая из которых хранит тип занятости и высоту препятствий.
HD-карты
Карты High Definition (HD) — это карты высокой детализации. Они включают в себя трёхмерное представление окружающей среды в виде плотного лидарного облака для локализации, а также векторный слой, содержащий данные о дорожной инфраструктуре (например, светофоры, пешеходные переходы, границы дорог и тротуаров), которые помогает планировать траектории движения робота.
Лидарный слой
Лидарный слой HD‑карты — это детальная трёхмерная модель окружающей среды, которая состоит из плотного облака точек, имеющего привязку к абсолютным координатам.
Создание этого слоя полностью автоматизировано. Для запуска робота‑доставщика на новом месте достаточно один раз проехать по всем тротуарам и пешеходным дорожкам в ручном режиме, выгрузить данные и запустить процесс оптимизации, который на выходе выдаст плотное облако для локации. Если какие‑то тротуары проходят близко к дороге, то для ускорения записи можно использовать беспилотный автомобиль — его лидарные облака также подойдут для создания такого слоя.
Лидарные облака, из которых строится слой карты, подвергаются предварительной фильтрации. Из них удаляются точки, принадлежащие динамическим объектам, таким как автомобили или пешеходы (с их детекцией помогает система восприятия). Благодаря этому мы получаем надёжную основу для локализации робота, которая редко меняется.
Векторный слой
Векторный слой HD‑карты создаётся картографами на основе лидарных данных и изображений с камер. Слой хранит информацию о границах зон для движения робота в виде полигонов с разбивкой на типы зон. Мы выделяем следующие типы: пешеходные переходы, тротуары, велодорожки, зоны смешанного пользования (например, парковки или дворовая территория).
Также в карте хранится информация о положении светофоров, об их связи друг с другом и о том, какие манёвры они контролируют. Это позволяет определять состояние тех светофоров, которые встретятся роботу на пути, но которые не будет видно из‑за людей или машин.
И наконец, сейчас в карте дополнительно хранятся полосы для робота в пределах допустимых зон для его движения, велосипедные полосы для предсказания поведения велосипедистов и агентские полосы — прогнозируемые траектории движения автомобилей. Эти данные помогают роботу эффективно планировать максимально безопасный маршрут с учётом особенностей городской среды и ожидаемого поведения других участников движения.
Все объекты в векторном слое рисуются с сантиметровой точностью. Это в том числе делает невозможным использование готовых HD‑карт, точность которых ниже. И дальнейшие работы в проекте идут по пути уменьшения количества сущностей в векторном слое, упрощения формата, переноса детекции части сущностей в модуль восприятия, а также по пути автоматизации создания векторного слоя с помощью ML‑алгоритмов.
Пока же векторный слой карты позволяет существенно разгрузить вычисления на борту и упростить систему восприятия. Но чтобы использовать информацию из этого слоя, робот должен уметь определять своё положение на карте. И с этим ему помогает модуль локализации.
Локализация
Главная цель локализации — определить положение, ориентацию, скорость и ускорение робота в пространстве. Для этого мы комбинируем данные с различных сенсоров.
GNSS (Global Navigation Satellite System). Предоставляет данные о положении робота на поверхности Земли, например в виде классических широты и долготы. Однако GNSS может давать некорректные результаты в ситуациях, когда связь со спутником ослаблена, зашумлена или в принципе отсутствует: при плохих погодных условиях, в городской застройке, в тоннелях.
IMU (Inertial Measurement Unit). Предоставляет данные об ускорении и угловой скорости робота. Эта информация критически важна для точной локализации, хотя показания могут колебаться при сильных наклонах или вибрациях корпуса робота.
Колёсная одометрия. Используя данные с датчиков вращения колёс, мы оцениваем скорость движения робота, преодолённое им расстояние и изменения ориентации. Этот метод обеспечивает высокую точность на коротких дистанциях, но со временем ошибки могут накапливаться, особенно при проскальзывании колёс или движении по неровным поверхностям. Зимние условия представляют особую сложность для одометрии, поскольку увеличивают вероятность ошибок из‑за скользких поверхностей и изменения сцепления.
А ещё нам помогает лидарная локализация, которая позволяет определять положение робота благодаря лидарному слою из HD‑карты и текущему снимку с лидара.
Эта задача называется point‑cloud registration, и существует множество алгоритмов её решения. В нашем случае для робота используется алгоритм NDT (Normal Distribution Transform).
Всё вместе — EKF!
Учитывая, что у каждого метода локализации есть свои погрешности, мы используем Extended Kalman Filter (EKF) для объединения показаний всех сенсоров и получения наиболее точного результата.
Какие особенности нашей задачи делают EKF подходящим решением?
Измерения неточные: каждый сенсор в определённых условиях может давать погрешности.
Измерения избыточные: положение робота определяется по GNSS и ICP, скорость/ускорение — по колёсам и IMU, ориентация — по одометрии и ICP.
Измерения несогласованные: данные от различных сенсоров поступают в разные моменты времени и представляют собой как абсолютные, так и относительные измерения.
Чтобы правильно учесть и абсолютные знания о локализации, и информацию об относительном перемещении, EKF на каждом такте работы совершает два действия. Во‑первых, прогнозирует новое положение робота, а также параметры скорости, ускорения и ориентации на основе известного предыдущего состояния робота и некоторой модели движения. Во‑вторых, актуализирует прогноз, используя данные от сенсоров и лидарной локализации. Полученная оценка становится отправной точкой для следующего такта работы EKF.
Теперь, когда мы разобрались, как робот воспринимает окружающий мир и определяет своё положение в нём, давайте перейдём к самой интересной части — узнаем, как робот принимает решения и планирует действия.
Планировщик движения & управление
После того как компоненты восприятия, локализации и HD‑карт предоставили полную информацию о среде, следующим шагом становится планирование движения робота‑доставщика и управление движением. Планировщик движения строит оптимальный маршрут на основе полученных данных, предсказывает возможные траектории других участников, а система управления отвечает за точное следование этому маршруту, корректируя движение робота в реальном времени.
Построение маршрута (Routing)
Любая поездка робота‑доставщика начинается с появления двух точек, через которые надо проехать: отдельный сервис на бэкенде сообщает роботу, где забрать заказ и куда его доставить. Затем начинается планирование маршрута с учётом данных HD‑карт, включая дорожную инфраструктуру (переходы, тротуары, велодорожки) и потенциальные препятствия (ремонтные работы, снежные заносы, узкие места). А ещё мы учитываем местоположение и планируемые траектории других роботов‑доставщиков, чтобы они могли благополучно разъехаться в узких местах.
На основе этой информации строится взвешенный граф, где вес ребра зависит от различных факторов. Для поиска оптимального пути применяется алгоритм A*.
Предсказания
Итак, у нас есть глобальный маршрут — пора ехать. Но вспоминаем ПДД: прежде чем сделать первый шаг, нужно хорошенько осмотреться. Мы уже знаем о статичных препятствиях из HD‑карт и только что получили свежую информацию от системы восприятия. К тому же мы в курсе, где находятся другие участники движения и с какой скоростью они перемещаются.
Но и этого мало! Чтобы безопасно проложить путь, нам нужно предугадать, куда могут направиться все эти движущиеся объекты, чтобы своим движением не создавать им помех. Поэтому для каждого движущегося объекта мы пытаемся предсказать возможные траектории движения. В этом нам помогает система предсказания движения.
Сейчас эта система представляет собой сложный набор правил, которые опираются на информацию из трекера (класс, направление и скорость объекта), и данные из HD‑карт (например, где находятся полосы движения).
Планировщик движения (Motion planner)
Оценив все потенциальные препятствия, робот переходит к планированию локального маршрута — обычно на ближайшие 20 метров вдоль глобального пути. В этом процессе участвуют два планировщика:
Mesh planner — строит траекторию движения.
Speed planner — определяет скорость движения на различных участках траектории.
Как и при построении глобального маршрута, здесь также используется алгоритм A*, но с учётом дополнительных факторов: физических ограничений робота, пересекающих путь людей, машин и статичных объектов, ограничений скорости из соображений безопасности и других параметров.
Управление (Control)
После построения траектории следовать ей непросто из‑за множества факторов: неровностей дороги, изменяющегося трения, неполных данных с датчиков. Эти ошибки могут сбить робота с курса, поэтому необходима система управления для постоянной корректировки движения.
Наш подход к управлению роботом‑доставщиком включает два основных компонента:
PID‑регулятор для продольного управления (аналог педали газа). Этот метод поддерживает заданную скорость робота, эффективно корректируя отклонения и обеспечивая стабильное движение.
Pure Pursuit для поперечного управления (аналог руля). Этот метод вычисляет линейную и угловую скорость робота, чтобы достичь целевой точки траектории, расположенной впереди его текущего положения.
Таким образом, компонента Control обеспечивает принятие решений на всех уровнях: от глобального планирования маршрута до локального маневрирования, позволяя роботу‑доставщику эффективно и безопасно выполнять свои задачи.
Итак, мы рассмотрели основные составляющие системы робота‑доставщика: от сенсоров до алгоритмов принятия решений. Однако это ещё не всё! У робота есть много не менее важных и интересных элементов: калибровка сенсоров, взаимодействие со светофорами и различные дополнительные детекторы (например, детектор ям), а еще блюр лиц и автомобильных знаков для защиты персональных данных.