SLAM
SLAM (от англ. Simultaneous Localization and Mapping — одновременная локализация и построение карты) — это вычислительная задача и набор методов, используемых в робототехнике, автономной навигации и компьютерном зрении, которые позволяют мобильному агенту (роботу, беспилотному автомобилю, дрону) строить карту неизвестного пространства и одновременно определять своё положение (координаты и ориентацию) в этой карте в реальном времени. SLAM решает проблему курицы и яйца: для точной локализации необходима карта, а для построения карты — точное знание местоположения.
История возникновения и развития
Концепция SLAM зародилась в конце 1980-х — начале 1990-х годов в рамках исследований по мобильной робототехнике. Одним из ключевых вкладов стала работа Хью Дурранта-Уайта и Джона Леонарда (1990), которые формализовали задачу как проблему стохастической оценки состояния. Термин «SLAM» был введён в 1995 году на Международной конференции по робототехнике и автоматизации в Нагое, Япония, после чего область начала активно развиваться.
В 2000-х годах значительный прогресс был достигнут благодаря применению фильтра Калмана (EKF-SLAM) и метода частиц (FastSLAM). Параллельно развивались визуальные системы SLAM (vSLAM), использующие камеры, и лидарные системы (LiDAR SLAM), работающие на лазерных дальномерах. С 2010-х годов SLAM стал ключевой технологией для автономных автомобилей, дронов и дополненной реальности, чему способствовало распространение дешёвых сенсоров (например, Microsoft Kinect) и мощных вычислителей.
Принцип работы
SLAM основан на итеративном процессе, в котором мобильный агент, движущийся в среде, использует данные с сенсоров (лазерный сканер, камера, одометр, инерциальный измерительный блок — IMU) для решения двух взаимосвязанных задач:
- Локализация: оценка положения агента относительно его окружения.
- Построение карты: фиксация характерных точек или структур среды (ориентиров) в глобальной системе координат.
На каждом шаге алгоритм:
- Получает новые данные с сенсоров.
- Ассоциирует эти данные с уже известными ориентирами (data association).
- Корректирует текущую оценку положения агента и карты, минимизируя ошибки согласования.
Математически задача SLAM сводится к оценке совместного апостериорного распределения вероятностей для траектории агента и карты среды, что обычно решается с помощью вероятностных методов: фильтрации (EKF, UKF, фильтр частиц) или нелинейной оптимизации (graph-based SLAM).
Классификация методов SLAM
Методы SLAM можно классифицировать по типу используемых сенсоров и подходам к решению задачи.
По типу сенсоров
- LiDAR SLAM — использует лазерные сканеры (2D или 3D), которые измеряют расстояния до окружающих объектов с точностью до сантиметров. Наиболее распространённые алгоритмы:
GMapping(вероятностный, на основе фильтра частиц),Hector SLAM,Karto SLAMиCartographer(от Google). LiDAR SLAM обеспечивает высокую робастность, особенно в контролируемом освещении, и широко применяется в промышленных роботах и автономных автомобилях. - Visual SLAM (vSLAM) — основан на изображениях с камер (монокулярных, стерео или RGB-D). Алгоритмы извлекают ключевые точки и дескрипторы (например, ORB, SIFT, SURF), затем оценивают движение (odometry) и карту. Основные методы:
ORB-SLAM(серия 1, 2, 3),VINS-Mono(визуально-инерциальный),LSD-SLAM,DSO. vSLAM дешевле и компактнее LiDAR SLAM, но чувствителен к освещению, текстуре сцены и быстрым движениям. - Смешанные (гибридные) методы — комбинируют данные с лидара, камеры и IMU для компенсации недостатков каждого типа. Пример:
LOAM(Lidar Odometry and Mapping) и его расширенияLIO-SAM,LeGO-LOAM. Они обеспечивают наилучшую точность и робастность в сложных условиях (пыль, дождь, смена освещения).
По подходу к решению
- Фильтрующие методы — основаны на рекурсивной байесовской фильтрации: фильтр Калмана (EKF-SLAM), фильтр частиц (FastSLAM). Подходят для малых карт и медленного движения, но страдают от вычислительной сложности при увеличении числа ориентиров.
- Графовые методы (Graph-based SLAM) — представляют задачу как оптимизацию разреженного графа, где вершины — это позы агента и ориентиры, а рёбра — измерения относительного положения. Решение ищется с помощью методов нелинейной оптимизации (например, Gauss-Newton, Levenberg-Marquardt). Современные реализации (g2o, GTSAM, Cartographer) масштабируются на тысячи вершин и широко используются на практике.
Устройство и компоненты типичной системы SLAM
Система SLAM включает в себя:
- Сенсорный блок — один или несколько внешних датчиков (лидар, камера, IMU, одометрия колёс), которые регистрируют физические параметры среды и движения.
- Модуль предварительной обработки — фильтрует шумы, сжимает данные (например, извлекает ключевые точки из изображения) и осуществляет ассоциацию данных с уже известными ориентирами.
- Ядро SLAM — реализует алгоритм оценки состояния (фильтрацию или графовую оптимизацию). Включает модели движения (кинематическую модель агента) и наблюдения (модель сенсора).
- Модуль постобработки — строит итоговую карту (например, занятости, вероятностную или топологическую) и генерирует траекторию.
- Интерфейс вывода — отдаёт текущую позу и карту для последующего использования: навигация, планирование пути или взаимодействие с пользователем.
Большинство современных реализаций работают на встраиваемых компьютерах (например, Raspberry Pi с нейронными ускорителями, Intel NUC) или на промышленных ПК с GPU.
Применение
SLAM является критически важной технологией для широкого спектра автономных систем.
Робототехника
- Бытовые роботы (роботы-пылесосы, газонокосилки): используют SLAM для построения карты помещения и навигации без внешних ориентиров (маяков). Пример: iRobot Roomba с iAdapt 3.0, Xiaomi Roborock, Ecovacs Deebot.
- Промышленные и складские роботы (AGV, AMR): строят карты складов и цехов для автоматической транспортировки грузов.
- Дроны и беспилотные летательные аппараты (БПЛА): SLAM позволяет летать в незнакомых помещениях (инспекция трубопроводов, шахт) и на открытой местности без GPS.
Автономный транспорт
- Беспилотные автомобили: LiDAR и визуальный SLAM являются частью системы локализации, работающей совместно с GPS/IMU для обеспечения точности до сантиметров. Примеры: Waymo, Cruise, Яндекс.Такси (реализации на основе
Cartographerи собственных алгоритмов). - Беспилотные лодки и подводные аппараты: SLAM используется для построения карт дна и навигации в условиях отсутствия спутниковых сигналов.
Дополненная и виртуальная реальность (AR/VR)
Современные AR-очки (Microsoft HoloLens, Magic Leap, Apple Vision Pro) используют vSLAM (часто с IMU и камерами глубины) для точного отслеживания положения устройства относительно окружающего мира, позволяя размещать виртуальные объекты на реальных поверхностях.
Навигация пешеходов и людей с ограниченными возможностями
SLAM на базе смартфонов (с использованием камеры и инерциальных сенсоров) применяется для навигации внутри зданий, где GPS недоступен. Приложения разрабатываются для музеев, торговых центров и помощи незрячим.
Проблемы и ограничения
Несмотря на значительный прогресс, SLAM имеет ряд фундаментальных ограничений:
- Проблема замкнутого цикла (Loop Closure) — SLAM-системы могут накапливать ошибку дрейфа при длительном движении, если не происходит повторного обнаружения уже известных участков. Алгоритмы поиска замкнутых циклов чувствительны к внешнему виду и могут давать ложные срабатывания.
- Динамическая среда — большинство классических SLAM-алгоритмов предполагают статичность среды. Движущиеся люди, автомобили или переставляемые предметы вносят шум и могут запустить алгоритм. Современные подходы (например, DynaSLAM, MOTSLAM) пытаются детектировать и игнорировать динамические объекты.
- Вычислительная сложность — построение и оптимизация графа могут быть ресурсоёмкими для больших карт (десятки километров), что требует эффективных разреженных структур данных.
- Зависимость от сенсоров — дорогие датчики (LiDAR) пока ограничивают массовое внедрение, а дешёвые (RGB-камера) чувствительны к условиям освещения и текстуре.
Перспективы развития
В настоящее время SLAM активно интегрируется с методами машинного обучения, в частности, с нейронными сетями для извлечения признаков, семантической сегментации и прогнозирования движения. Разрабатываются алгоритмы «полуглобального» SLAM, которые используют априорные знания о среде (например, карты зданий с этажами). По мере удешевления лидаров и распространения стереокамер ожидается широкое внедрение SLAM в серийные потребительские устройства (смартфоны, бытовая техника, дроны).
Источники
- Hugh Durrant-Whyte, Tim Bailey. Simultaneous Localization and Mapping (SLAM): Part I The Essential Algorithms // IEEE Robotics & Automation Magazine, 2006.
- Sebastian Thrun, Wolfram Burgard, Dieter Fox. Probabilistic Robotics. MIT Press, 2005.
- Raúl Mur-Artal, J. M. M. Montiel, Juan D. Tardós. ORB-SLAM: A Versatile and Accurate Monocular SLAM System // IEEE Transactions on Robotics, 2015.
- C. Stachniss, J. J. Leonard, S. Thrun. Mapping and Navigation for Mobile Robots // Springer Handbook of Robotics, 2008.
- Документация и описания библиотек: Cartographer (Google), ORB-SLAM (University of Zaragoza), GMapping (OpenSLAM).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →