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

Компьютерное зрение для роботов

2024 год. Figure 01 - гуманоидный робот BMW, выполняет задачи на конвейере полностью автономно. Без LiDAR, только камеры и компьютерное зрение. Компьютерное зрение - это не про «видеть», это про понимать 3D мир из 2D проекций в реальном времени.

  • **Waymo One:** fusion LiDAR + 29 камер + SLAM для автономного вождения. Обрабатывает терабайты данных в секунду на кастомных TPU
  • **Amazon Robotics Kiva:** 750 000+ роботов на складах. Visual odometry + QR-маркеры для точной локализации (<1 см) в помещениях без GPS
  • **DJI дроны:** stereo vision + downward visual positioning для hover без GPS. Алгоритм работает на ARM Cortex-A53 при <5 Вт

Исторический контекст

В 1986 году Ханс Моравек из CMU опубликовал первую работу по visual odometry для автономных роботов, используя stereo cameras и сопоставление feature points для оценки движения. Его система работала на 1 кадр каждые несколько секунд на суперкомпьютере того времени. Та же математика - Essential matrix, RANSAC, feature matching - сегодня работает при 60 FPS на смартфоне. SLAM как термин был введён Смитом, Селфом и Чессманом в 1986-1990 годах. ORB-SLAM (2015, Mur-Artal et al.) стал де-факто стандартом open-source visual SLAM.

Стерео-зрение: глубина из двух камер

**Boston Dynamics Spot, 2019. Пять пар стерео-камер на каждой ноге позволяют роботу в реальном времени оценивать глубину и обнаруживать препятствия.** Принцип тот же, что у человеческого бинокулярного зрения: одна и та же точка 3D-пространства проецируется в разные пиксели левой и правой камеры. Разница позиций (диспарантность/disparity) обратно пропорциональна расстоянию.

МетодТочностьВремя (GPU)Ограничения
Block Matching (BM)±5-10%~1 мсАртефакты на однородных поверхностях
Semi-Global BM (SGBM)±2-5%~10-50 мсРазмытые края при сложной текстуре
Deep learning (PSMNet)±1-2%~30-100 мсТребует GPU, плохо работает за пределами обучающих данных
LiDAR fusion±0.5-1%~5 мсДорогой LiDAR, сложная синхронизация

Стерео-камеры с baseline B=10 см и фокусным расстоянием f=500 px. Объект на расстоянии 1 м имеет disparity d. Чему равно d?

Depth Estimation: LiDAR, ToF и монокулярный AI

**Tesla Autopilot, 2021. Компания отказалась от LiDAR в пользу 8 камер + нейросеть для depth estimation.** Стерео-камеры - не единственный путь к глубине. LiDAR (Light Detection And Ranging) измеряет время полёта лазерного импульса напрямую. ToF (Time of Flight) камеры - матрица таких датчиков. Монокулярный depth estimation через нейросети - самый сложный подход.

**LiDAR vs камеры:** LiDAR даёт точные абсолютные расстояния (±2 см на 100 м) но дорог ($10K+), работает плохо в дождь/снег, разрежённое точечное облако. Камеры дешевы, высокое разрешение, но depth estimation неточный без дополнительной информации. Waymo и Cruise используют LiDAR+камеры fusion для максимальной надёжности.

Tesla использует монокулярные камеры без LiDAR. Что является главным ограничением монокулярного depth estimation?

Детекция объектов: от YOLO до PointNet

**Amazon Robotics, 2023. Более 750 000 роботов на складах распознают и перемещают товары через object detection в реальном времени.** 2D детекция (YOLOv8, RT-DETR) работает с RGB изображением. Для роботики важна 3D позиция объекта: комбинация 2D bounding box + depth map даёт 3D bounding box. Для point cloud (LiDAR) используют специализированные сети: PointNet, VoxelNet, CenterPoint.

**Глубина в центре bounding box:** медиана лучше среднего (устойчивее к выбросам), но для объектов с прозрачными частями или сложной геометрией дает неточный результат. Более точный подход - сегментация объекта (instance segmentation) и depth только внутри маски.

YOLO детектирует объект в пикселях (cx=320, cy=240). Depth map показывает Z=2.0 м. Camera matrix: fx=fy=700, cx=320, cy=240. Какова 3D позиция X?

Visual SLAM: строим карту и локализуемся одновременно

**Mars Perseverance, 2021. Ровер использует Visual SLAM для автономной навигации - без GPS, только камеры и IMU.** SLAM (Simultaneous Localization And Mapping) - задача построения карты среды и одновременного определения позиции в ней. Visual SLAM использует только камеры как сенсоры. Два подхода: feature-based (ORB-SLAM3) и direct/dense (LSD-SLAM, DSO).

**Loop closure:** главная проблема visual odometry - накопление ошибок позы. После 100 метров ошибка может составить 1-5 м. Loop closure detection (DBoW2, NetVLAD) обнаруживает что робот вернулся в ранее посещённое место и корректирует всю накопленную ошибку через pose graph optimization (g2o, GTSAM).

SLAM строит точную карту - чем больше данных, тем точнее

Без loop closure ошибка SLAM растёт неограниченно со временем (odometry drift). Точность определяется не объёмом данных, а частотой и качеством loop closures.

Visual odometry оценивает относительное движение между кадрами. Маленькая ошибка в каждой оценке накапливается: после 1000 шагов с ошибкой 0.1% накопленная ошибка составляет ~1 м. Loop closure обнаруживает возврат и глобально оптимизирует весь граф поз, распределяя ошибку равномерно по всей траектории.

Visual odometry накапливает ошибку позиции со временем. Что называется «loop closure» и зачем это нужно?

Компьютерное зрение для роботов: главное

  • Stereo vision: disparity d из двух камер, глубина Z = f*B/d. SGBM баланс скорость/качество
  • Depth sources: stereo, LiDAR (точно, дорого), ToF, монокулярный AI (нет абсолютного масштаба)
  • 3D object detection: YOLO bounding box + depth map -> 3D позиция через back-projection
  • Visual SLAM: ORB-SLAM3 - feature detection, Essential matrix, pose graph. Loop closure исправляет drift
  • Без loop closure ошибка позиции растёт неограниченно; с ней - ограничена loop closure frequency

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

  • Tesla утверждает что 8 камер достаточно для безопасного автономного вождения. Waymo использует LiDAR + камеры. Какие конкретные сценарии (тип погоды, освещения, ситуации) выявляют принципиальную разницу между этими подходами?

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

  • rob-03
  • rob-05
  • arvr-04
  • sci-04
  • rob-06
  • cv-01
Компьютерное зрение для роботов

0

1

Войти