Робототехника

SLAM

Mars Perseverance проехал 25 км по Марсу без GPS. Waymo такси проехало миллион километров по дорогам США. iPhone знает свою позицию в 3D в любой комнате для AR. Все они решают одну задачу: SLAM. Одновременно строить карту и понимать где ты находишься - без внешних ориентиров. Это одна из ключевых задач робототехники и дополненной реальности.

  • **Mars Perseverance** - Visual SLAM на стереокамерах (Navcam); 25 км по Марсу без GPS; карта строится и уточняется при каждой поездке; ground team верифицирует маршрут по downlinked картам
  • **Apple ARKit / Google ARCore** - Visual-Inertial SLAM (камера + IMU); 60fps на смартфоне; используется в 1B+ устройствах для AR приложений; ORB features + EKF fusion
  • **Waymo Driver** - LiDAR SLAM для финальной локализации; HD-карты как prior; <10cm точность в mapped zones; Boston Dynamics Spot использует Visual SLAM для навигации в помещениях

Проблема SLAM

Робот Mars Perseverance едет по поверхности Марса. GPS нет. Он должен одновременно: (1) определять где находится, (2) строить карту местности. Проблема: для локализации нужна карта, для построения карты нужна локализация. Это и есть SLAM - chicken-and-egg проблема робототехники.

**SLAM** (Simultaneous Localization And Mapping) - совместная оценка позы робота x_{1:t} и карты m при наблюдениях z_{1:t} и управляющих воздействиях u_{1:t}. Байесовская формулировка: P(x_{1:t}, m | z_{1:t}, u_{1:t}). Два подхода: **filter-based** (Extended Kalman Filter, Particle Filter) и **graph-based** (современный стандарт).

В чём главная сложность SLAM по сравнению с чистой локализацией (известная карта) или чистым картографированием (известная поза)?

Graph-SLAM

Современный стандарт SLAM - graph-based подход. Строится граф: узлы = позы робота в моменты t=1,2,..., рёбра = ограничения из одометрии и наблюдений. Задача: найти конфигурацию узлов, минимизирующую нарушение ограничений. Это нелинейная задача наименьших квадратов.

**Factor graph**: pose nodes + factor nodes (ограничения). Оптимизация через **g2o** или **GTSAM** (Georgia Tech Smoothing and Mapping): Gauss-Newton или Levenberg-Marquardt итерации. **Loop closure** - обнаружение что робот вернулся в посещённое место: глобально корректирует накопленный дрейф. Ключевой момент SLAM.

Что такое loop closure в Graph-SLAM и почему это критически важно?

Visual SLAM

Apple ARKit, Google ARCore, Meta Quest - все используют Visual SLAM для отслеживания позиции устройства в пространстве используя только камеру. Никакого LiDAR, GPS, внешних маркеров. Смартфон знает где он находится в 3D-пространстве комнаты.

**Visual SLAM** (V-SLAM): ORB-SLAM3 - современный стандарт с открытым кодом. Шаги: (1) feature extraction (ORB keypoints), (2) feature matching между кадрами, (3) camera pose estimation (PnP), (4) local BA (Bundle Adjustment), (5) loop detection (DBoW3 bag-of-words), (6) global BA при loop closure.

Что такое Bundle Adjustment в Visual SLAM?

LiDAR SLAM

Waymo, Tesla, Cruise - все автономные автомобили используют LiDAR для SLAM. LiDAR даёт точное облако точек (Point Cloud) до 360 метров. Главное преимущество перед Visual SLAM: работает в темноте, при дожде и снеге. Точность локализации Waymo: <10 см в знакомой зоне.

**LiDAR SLAM** алгоритмы: **LeGO-LOAM** (Lightweight Ground-Optimized LiDAR Odometry And Mapping) - разделяет землю и объекты, эффективен. **LOAM** (Lidar Odometry And Mapping) - классика от Zhang Ji. **LIO-SAM** - объединяет LiDAR + IMU. Scan matching: **ICP** (Iterative Closest Point) или **NDT** (Normal Distributions Transform).

SLAM строит идеально точную карту если датчики достаточно хорошие

Любые датчики имеют шум. SLAM - это вероятностная оценка с неопределённостью, которая растёт без loop closure. Waymo достигает <10см точности в знакомых зонах благодаря HD-картам заранее отснятых районов + реальному SLAM для уточнения. В незнакомых местах точность падает до 50-100см.

SLAM оценивает P(pose | observations) - вероятностное распределение, не точку. Без ограничений (loop closure, GPS) неопределённость растёт O(sqrt(t)). Поэтому автономные автомобили используют HD-карты как prior: SLAM только локализует в предзаписанной карте (гибридный подход).

Почему LiDAR SLAM используется в автономных автомобилях вместо более дешёвого Visual SLAM?

Ключевые идеи

  • **SLAM** - совместная оценка позы и карты; chicken-and-egg проблема; Байесовская формулировка P(x_{1:t}, m | z_{1:t}, u_{1:t})
  • **Graph-SLAM** - граф поз + ограничения; loop closure устраняет накопленный дрейф; GTSAM/g2o для оптимизации Levenberg-Marquardt
  • **Visual SLAM** - ORB-SLAM3: features + matching + Bundle Adjustment + DBoW3 loop detection; ARKit/ARCore на смартфонах
  • **LiDAR SLAM** - ICP/NDT scan matching; точнее в тёмных/плохих условиях; стандарт для автономных автомобилей + HD-карты

Связанные темы

SLAM объединяет вероятностные методы, компьютерное зрение и оптимизацию:

  • Path Planning — Карта из SLAM - входные данные для планировщика пути робота
  • Фильтр Калмана — EKF-SLAM - исторически первый подход; Extended Kalman Filter для нелинейных систем

Вопросы для размышления

  • Perseverance едет по Марсу где нет заранее созданных карт. Как loop closure работает если робот никогда не возвращается в точно то же место - как распознать знакомое место по новому ракурсу?
  • Waymo использует HD-карты + SLAM для локализации. Что происходит если дорогу перекрыли на ремонт и HD-карта устарела? Как система обнаруживает расхождение и что делает?
  • ORB-SLAM3 работает на 30fps на CPU. Для AR на смартфоне нужно 60fps при меньшем энергопотреблении. Какие оптимизации Apple применяет в ARKit чтобы достичь этого на A-series Neural Engine?

Связанные уроки

  • prob-04-bayes
SLAM

0

1

Войти