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

LiDAR и Point Clouds

2005 год. DARPA Grand Challenge. Стэнфорд Stanley побеждает: 5 LiDAR на крыше, 131 миля по Мохаве без водителя. Velodyne HDL-64E - 64 лазерных луча, 1.3 млн точек в секунду. Начало эпохи. LiDAR превратил автономное вождение из лабораторного эксперимента в реальность.

  • Waymo One: 5 Velodyne Alpha Prime LiDAR + real-time segmentation при 100 км/ч - 20 млн миль с пассажирами в США
  • Boston Dynamics Spot: 5 stereo depth cameras + LiDAR для indoor SLAM в промышленных объектах и шахтах
  • Apple iPhone 12 Pro: solid-state LiDAR для AR face mesh и room scanning - 40 млн устройств с LiDAR в кармане
  • HERE Technologies: мобильное картографирование LiDAR-фургонами - 3D HD maps 110 стран для autonomous driving

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

В 2005 году команда Себастьяна Трана из Стэнфорда выиграла DARPA Grand Challenge - первое в истории автономное прохождение 132 миль пустыни Мохаве. Пять LiDAR на крыше Stanford Stanley были нестандартным решением: большинство команд делали ставку на камеры и радар. Velodyne, основанный Дэвидом Холлом в гараже в 2005 году, разработал HDL-64E специально для DARPA. Эта победа определила архитектуру автономных автомобилей на следующие 15 лет. В 2007 году команда CMU (Boss) выиграла DARPA Urban Challenge - уже в городских условиях с другими машинами.

LiDAR: принцип работы и типы сенсоров

**2005 год. DARPA Grand Challenge. Стэнфорд Stanley побеждает: 5 LiDAR на крыше, 131 миля по Мохаве без водителя.** Velodyne HDL-64E - 64 лазерных луча, 1.3 млн точек в секунду. Начало эпохи автономного вождения. LiDAR (Light Detection And Ranging) - это не одна технология, а семейство сенсоров с разной физикой и архитектурой.

**TOF vs FMCW:** Time of Flight (TOF) измеряет время `t` между отправкой и получением импульса. Расстояние `d = c * t / 2`, где `c` - скорость света. FMCW (Frequency Modulated Continuous Wave) излучает непрерывную волну с модуляцией частоты и вычисляет расстояние из частотного сдвига эхо. FMCW даёт скорость объекта (Doppler) без дополнительных измерений и лучше работает в солнечный день.

ТипПримерЛучиТочек/секЦенаОсобенность
Mechanical (rotating)Velodyne HDL-64E641.3 млн$75K+360° FOV, проверен годами
Mechanical (rotating)Ouster OS1-1281282.6 млн$8KКомпактный, ROS 2 ready
Solid-state (MEMS)Livox Mid-360non-uniform240K$600Без вращения, долговечный
Solid-state (Flash)Luminar Irisscan pattern300K$500 (авто)Дальность 250 м, FMCW

LiDAR TOF сенсор отправляет импульс. Эхо возвращается через 100 нс (наносекунд). Чему равно расстояние до объекта? (скорость света = 3*10^8 м/с)

Структура облака точек и обработка

**Point cloud - это не 3D модель. Это набор точек в пространстве без связей между ними.** Каждая точка - кортеж `(x, y, z, intensity, ring, timestamp)`. Нет нормалей, нет треугольников, нет топологии. PointNet не знает что точки соседние. Алгоритмы должны строить связи явно - через k-NN, voxel grid или KD-дерево.

**Coordinate frames:** в роботике критически важно различать фреймы. `sensor_frame` - начало в центре LiDAR. `base_link` - начало в центре робота. `map` - глобальный фрейм. Трансформации между фреймами хранит TF2 дерево в ROS 2. Путаница фреймов - частый источник багов в навигации.

**Open3D vs PCL:** Open3D (Python/C++) - современный выбор для прототипирования и ML интеграции. PCL (C++) - промышленный стандарт с богатой библиотекой алгоритмов, лучшая производительность для embedded. В ROS 2 оба доступны: `pcl_ros` для PCL, `open3d_ros_helper` для Open3D.

Voxel downsampling с voxel_size=0.1 м применяется к point cloud из 1 млн точек. Что происходит с точностью геометрии мелких объектов?

Регистрация: ICP, NDT и LiDAR SLAM

**Waymo строит HD карты с точностью до 5 см - основа их флота в 5 городах.** Регистрация (registration) - задача выравнивания двух point clouds. ICP (Iterative Closest Point): находим соответствия между точками -> вычисляем трансформацию -> применяем -> повторяем до сходимости. LiDAR SLAM расширяет это до онлайн построения карты с одновременной локализацией.

**LOAM и LIO-SAM:** LOAM (Lidar Odometry and Mapping) выделяет edge и planar features из point cloud вместо работы с полным облаком - в 10x быстрее полного ICP. LIO-SAM добавляет IMU тесно связанным способом и GPS для глобальной коррекции. Это стандартные алгоритмы в Waymo и Apollo для построения HD карт.

ICP сошёлся к трансформации с fitness=0.3 (30% соответствий). Стоит ли доверять результату?

Сегментация: от RANSAC до PointPillars

**Tesla использует только камеры. Waymo - 5 LiDAR + 29 камер + 6 радаров. Разница: Tesla реконструирует 3D из 2D пикселей. Waymo получает 3D напрямую. Два философских лагеря.** Сегментация point cloud - разделение на семантические классы: земля, дорога, пешеход, автомобиль. Каждый подход даёт разный trade-off скорость/точность/robustness.

**SemanticKITTI и IoU:** стандартный benchmark - SemanticKITTI (KITTI sequences с per-point метками). Метрика - mean IoU по 19 классам. RandLA-Net (2020): random sampling + Local Feature Aggregation, 77.4 mIoU. PointPillars (детекция объектов): 62.7 AP на KITTI Car. Для оценки качества своей модели - использовать IoU per class, не accuracy (классовый дисбаланс: земля >> пешеходы).

**LiDAR слепнет в снег:** капли дождя и снежинки отражают лазер как объекты - ложные точки везде. Камеры теряют чёткость. Радар работает в любую погоду, но низкое разрешение. Надёжная система - sensor fusion всех трёх. Именно поэтому Waymo не отказывается от LiDAR несмотря на цену.

Deep learning для point clouds требует фиксированного числа точек на входе

PointNet++ и современные архитектуры (RandLA-Net, PointPillars) нативно работают с переменным числом точек через симметричные операции агрегации

PointNet использует per-point MLP + global max pooling - симметричная функция инвариантна к порядку и числу точек. Max pooling по N точкам даёт вектор фиксированного размера независимо от N. PointPillars делит пространство на pillars и aggregates точки внутри каждого - число точек на pillar разное, но результат всегда одного размера. Ограничение по числу точек есть только если явно добавить padding/truncation для batch processing.

RANSAC plane fitting для ground removal использует distance_threshold=0.2 м. На ровной дороге это даёт хорошие результаты. Что произойдёт на наклонном склоне (угол 15°)?

LiDAR и Point Clouds: главное

  • LiDAR TOF: d = c * t / 2. Mechanical (360° FOV, дорого) vs Solid-state (нет вращения, дешевле). FMCW даёт скорость объекта
  • Point cloud = (x,y,z,intensity,ring,timestamp) без топологии. Voxel downsampling + statistical outlier removal - стандартный препроцессинг
  • ICP регистрация: соответствия -> трансформация -> итерация. Зависит от инициализации. NDT быстрее для крупных облаков. LOAM/LIO-SAM для SLAM
  • Ground removal (RANSAC plane) + Euclidean clustering -> объекты. PointPillars: BEV pseudo-image + 2D CNN, 50+ FPS

LiDAR в контексте курса

LiDAR - центральный сенсор восприятия, соединяющий фильтрацию сенсоров, детекцию объектов и планирование движения. Point clouds питают SLAM, который питает occupancy grid, который питает path planning.

  • LiDAR одометрия — основа для планирования движения в rob-06: 3D occupancy grid из point cloud
  • Sensor fusion — LiDAR + камера + радар в rob-03: расширенный фильтр Калмана для объединения источников
  • 3D object detection — PointPillars выходы - 3D bbox для трекинга объектов в rob-07

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

  • Tesla и Waymo представляют два философских лагеря: vision-only vs LiDAR+fusion. LiDAR слепнет в снег, камеры теряют детали в дожде, радар работает всегда но с низким разрешением. Какая комбинация сенсоров и в каком сценарии (городской трафик, загородное шоссе, зимние условия) даёт наилучший баланс надёжности и стоимости?

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

  • rob-04
  • rob-06
  • cv-05
  • cgeom-05
  • ml-05-evaluation
  • cv-01
LiDAR и Point Clouds

0

1

Войти