База знаний/Компьютерное зрение·Новость·26 июля 2026 г.

SLAM: Полное инженерное руководство по автономной навигации беспилотных систем

Введение За последние двадцать лет технология SLAM (Simultaneous Localization and Mapping) стала одной из ключевых в робототехнике, автономном транспорте и беспилотной авиации. Сегодня она применяется в автономных автомобилях, промышленных роботах, складских системах, сервисных роботах, космических аппаратах и современных БПЛА. Практически каждый автономный аппарат сталкивается с одной фундаментальной проблемой: определением собственного положения в пространстве. Пока работает спутниковая навигация (GPS, ГЛОНАСС, Galileo, BeiDou), задача кажется простой. Однако в помещениях, тоннелях, густой городской застройке, лесу или при намеренном подавлении спутниковых сигналов эта возможность исчезает. Тогда единственным источником информации остаются собственные датчики аппарата. Именно здесь начинается область применения SLAM.

Администратор

ПоделитьсяВКонтактеTelegramMAX
SLAM: Полное инженерное руководство по автономной навигации беспилотных систем

Содержание

Часть 1. Почему миру понадобился SLAM

«Беспилотник без навигации — это всего лишь дистанционно управляемая модель. Автономным он становится только тогда, когда способен ответить на вопрос: "Где я нахожусь?" без помощи человека.»

Введение

За последние двадцать лет технология SLAM (Simultaneous Localization and Mapping) стала одной из ключевых в робототехнике, автономном транспорте и беспилотной авиации. Сегодня она применяется в автономных автомобилях, промышленных роботах, складских системах, сервисных роботах, космических аппаратах и современных БПЛА.

Практически каждый автономный аппарат сталкивается с одной фундаментальной проблемой: определением собственного положения в пространстве.

Пока работает спутниковая навигация (GPS, ГЛОНАСС, Galileo, BeiDou), задача кажется простой. Однако в помещениях, тоннелях, густой городской застройке, лесу или при намеренном подавлении спутниковых сигналов эта возможность исчезает. Тогда единственным источником информации остаются собственные датчики аппарата.

Именно здесь начинается область применения SLAM.

Глава 1. Почему GPS не является универсальным решением

Существует распространенное мнение, что современный беспилотник постоянно определяет свои координаты по GPS. На практике это верно лишь частично.

Глобальные навигационные спутниковые системы обладают рядом фундаментальных ограничений.

Основные недостатки GNSS

  • зависимость от спутникового сигнала;
  • низкая мощность принимаемого сигнала;
  • чувствительность к помехам;
  • возможность спуфинга (подмены координат);
  • ухудшение точности в городской среде;
  • невозможность работы в помещениях.

Для гражданских приемников типичная точность составляет 1–3 м, а при неблагоприятных условиях ошибка может значительно увеличиваться.

Для автономного полета этого часто недостаточно.

Представим беспилотник, которому необходимо зависнуть возле линии электропередачи для инспекции изолятора. Ошибка в несколько метров уже может привести к столкновению.

Почему нельзя использовать только инерциальную систему

Следующая идея кажется очевидной:

«Если спутники недоступны, достаточно установить хороший гироскоп.»

К сожалению, физика работает иначе.

Любая инерциальная система содержит ошибки измерения.

Даже самый качественный MEMS-гироскоп имеет:

  • шум;
  • температурный дрейф;
  • смещение нуля (Bias);
  • случайные ошибки.

На каждом измерении ошибка крайне мала.

Но проблема заключается в том, что инерциальная навигация основана на интегрировании измерений.

Если датчик ошибся совсем немного сегодня, то завтра эта ошибка станет больше.

Через минуту — еще больше.

Через несколько минут она превращается в десятки метров.

Именно поэтому говорят:

Инерциальная навигация обладает неограниченно растущей ошибкой.

Простой пример накопления ошибки

Представим идеальный эксперимент.

Беспилотник неподвижно висит в воздухе.

На самом деле его скорость равна:

0 м/с

Однако акселерометр измерил небольшую погрешность:

0.02 м/с²

Для человека эта величина кажется ничтожной.

Но компьютер начинает интегрировать ускорение.

Через несколько секунд появляется ложная скорость.

Затем скорость снова интегрируется.

Возникает ложное перемещение.

В итоге навигационная система начинает считать, что аппарат улетел на несколько метров, хотя он все это время оставался неподвижным.

Это явление называется инерциальным дрейфом (Inertial Drift).

Почему дорогие самолеты могут летать без GPS?

Возникает закономерный вопрос.

Если инерциальная система настолько неточна, каким образом авиалайнеры или ракеты могут использовать ее часами?

Ответ заключается в классе используемых датчиков.

В массовых БПЛА применяются MEMS IMU, стоимость которых составляет десятки или сотни долларов.

В авиации используются:

  • волоконно-оптические гироскопы (FOG);
  • кольцевые лазерные гироскопы (RLG);
  • высокоточные кварцевые акселерометры.

Такие системы обладают дрейфом в десятки и сотни раз меньшим, но стоят на порядки дороже и значительно тяжелее.

Для большинства беспилотников подобное решение экономически и конструктивно нецелесообразно.

Логическая ловушка навигации

Попробуем сформулировать задачу иначе.

Чтобы построить карту местности, необходимо знать собственное положение.

Но чтобы определить собственное положение, нужна карта.

Получается замкнутый круг.

Именно этот парадокс долгое время считался одной из центральных проблем мобильной робототехники.

SLAM решает его, одновременно уточняя и карту окружающей среды, и положение самого аппарата. По мере движения новые наблюдения позволяют корректировать как модель мира, так и собственные координаты, уменьшая накопленные ошибки.

Почему именно камеры стали главным датчиком

Казалось бы, лидар выглядит более точным инструментом.

Однако камеры обладают рядом преимуществ:

  • очень высокая информативность;
  • небольшая масса;
  • низкая стоимость;
  • отсутствие подвижных частей;
  • возможность работы на больших дистанциях;
  • возможность применения алгоритмов компьютерного зрения.

Современная камера разрешением 1920×1080 содержит более двух миллионов пикселей в каждом кадре. Каждый кадр — это огромный объем информации о структуре окружающей среды.

Именно поэтому большинство современных систем автономной навигации строится вокруг визуальной информации, а инерциальные датчики используются для повышения устойчивости и точности.

Что такое SLAM?

SLAM (Simultaneous Localization and Mapping) — это совокупность алгоритмов, которые позволяют роботу или беспилотнику:

  • строить карту окружающей среды;
  • одновременно определять собственное положение на этой карте;
  • непрерывно уточнять и карту, и координаты по мере движения.

Ключевое слово здесь — одновременно.

Карта не является заранее известной, а положение аппарата не считается заранее известным. Оба результата появляются в процессе совместной оценки.

Именно это делает SLAM одной из самых сложных и одновременно наиболее важных технологий современной автономной робототехники.

Где SLAM применяется сегодня

Сегодня SLAM лежит в основе множества реальных систем:

  • автономные инспекционные дроны;
  • складские мобильные роботы;
  • автономные автомобили;
  • строительные и горнодобывающие машины;
  • сервисные роботы;
  • устройства дополненной реальности;
  • исследовательские планетоходы.

В беспилотной авиации SLAM особенно востребован там, где использование GNSS ограничено или невозможно: в помещениях, под мостами, в тоннелях, в густой городской застройке и при работе в условиях радиоэлектронных помех.

Литература и официальные ресурсы

Базовые статьи

  • Durrant-Whyte, H., Bailey, T. Simultaneous Localization and Mapping (SLAM): Part I & II — классический обзор технологии.
  • Cadena, C. et al. Past, Present, and Future of Simultaneous Localization and Mapping (IEEE Transactions on Robotics, 2016) — один из наиболее авторитетных современных обзоров.

Полезные проекты

  • OpenCV — библиотека компьютерного зрения.
  • ORB-SLAM3 — одна из самых известных открытых реализаций Visual SLAM.
  • OpenVINS — открытая реализация Visual-Inertial Navigation System.

В следующей части мы начнем разбирать внутреннюю архитектуру SLAM буквально "по винтикам", начиная с датчиков и потока данных внутри системы.

Часть 2. Архитектура SLAM: как дрон понимает, где он находится

«SLAM — это не один алгоритм. Это конвейер из десятков взаимосвязанных алгоритмов, работающих одновременно и обрабатывающих тысячи операций в секунду.»

В предыдущей части мы выяснили, почему GPS и инерциальной навигации недостаточно для автономного полета. Теперь пришло время заглянуть внутрь самой системы.

Сегодня большинство начинающих инженеров представляет SLAM как «какую-то программу, которая смотрит в камеру». На самом деле современный Visual-Inertial SLAM — это распределенная система реального времени, состоящая из нескольких независимых потоков вычислений.

Именно архитектура определяет, сможет ли беспилотник зависнуть в одной точке, вернуться по пройденному маршруту или продолжить полет после полной потери GPS.

Архитектура современного SLAM

Практически любой современный SLAM состоит из нескольких подсистем.

Датчики

┌──────────────┼──────────────┐

│ │ │

Камера IMU Лидар

│ │ │

└──────────────┼──────────────┘

Синхронизация времени

Front-End (Одометрия)

Local Mapping (Локальная карта)

Loop Closure (Поиск совпадений)

Graph Optimization (Оптимизация)

Итоговая карта и координаты

Эта схема кажется простой, однако за каждым блоком скрываются тысячи строк кода и сложная математика.

Front-End — "глаза" системы

Front-End — самая быстро работающая часть SLAM.

Его задача — ответить на вопрос:

Что изменилось между двумя соседними кадрами?

Он работает с частотой камеры:

  • 30 FPS
  • 60 FPS
  • 90 FPS
  • иногда 120 FPS

Каждые 10–30 миллисекунд он должен:

  • получить изображение;
  • убрать оптические искажения;
  • найти ключевые точки;
  • сопоставить их с предыдущим кадром;
  • вычислить перемещение камеры.

Если Front-End не успевает работать в реальном времени, весь SLAM перестает быть пригодным для полета.

Back-End — "мозг" системы

Back-End не занимается обработкой каждого кадра.

Его задача намного сложнее.

Он отвечает за:

  • уменьшение накопленной ошибки;
  • оптимизацию траектории;
  • корректировку карты;
  • объединение всех измерений.

Именно здесь работают такие библиотеки, как:

  • g2o
  • GTSAM
  • Ceres Solver

Именно они делают SLAM точным.

Почему нужен отдельный поток IMU

Многие думают:

Камера снимает 60 кадров.

Значит этого достаточно.

На практике — нет.

Представим:

Камера снимает

60 кадров/сек.

Между кадрами проходит

16 миллисекунд.

Для человека это мгновение.

Для квадрокоптера — огромный промежуток времени.

За 16 миллисекунд аппарат уже успевает:

  • накрениться;
  • изменить скорость;
  • начать поворот;
  • получить порыв ветра.

Если ждать следующего кадра, управление станет нестабильным.

Поэтому IMU работает отдельно.

Типичная частота:

200–1000 Гц.

Промышленные системы:

2000–8000 Гц.

Именно IMU сообщает контроллеру:

«Дрон уже начал вращаться.»

Еще до того, как камера это увидит.

Почему нужна синхронизация времени

Представьте:

  • Камера сделала снимок в 12:00:00.000
  • А IMU записал данные 12:00:00.012
  • Разница всего 12 миллисекунд.
  • Но при скорости 20 м/с
  • аппарат уже сместился почти на 24 сантиметра.

Получается, что камера и гироскоп "видели" разные положения. Это приводит к ошибкам.

Поэтому профессиональные системы синхронизируют датчики с точностью до микросекунд.

Почему дешевый USB не подходит

Очень распространенная ошибка начинающих разработчиков.

Берут:

  • USB-камеру;
  • USB-IMU.

Подключают их к Raspberry Pi. И пытаются собрать SLAM. Результат почти всегда неудовлетворительный. Почему? USB не гарантирует постоянную задержку.

Например:

Кадр №1: 18 мс

Кадр №2: 25 мс

Кадр №3: 31 мс

Кадр №4: 16 мс

Такой "джиттер" разрушает точность системы. Именно поэтому профессиональные камеры имеют аппаратную синхронизацию.

Что происходит после получения кадра

Первый этап обработки вовсе не поиск объектов.

Сначала выполняется калибровка изображения.

Камера никогда не снимает идеально.

Объектив создает:

  • бочкообразную дисторсию;
  • подушкообразную дисторсию;
  • хроматические аберрации.

Поэтому каждый кадр проходит этап Undistortion. После него прямые линии снова становятся прямыми.

Почему калибровка так важна

Представим стену здания. В реальности она идеально ровная. Но объектив сделал ее слегка изогнутой. Если использовать такое изображение напрямую, алгоритм решит, что камера повернулась. Ошибка будет накапливаться. Поэтому любая серьезная система сначала проходит процедуру калибровки.

Самая популярная библиотека:

  • OpenCV Camera Calibration

Калибровка камеры

Во время калибровки определяется несколько параметров.

Внутренние параметры

Матрица камеры:

fx

fy

cx

cy

где:

fx - Фокусное расстояние по X.

fy - Фокусное расстояние по Y.

cx - Координата центра изображения.

cy - Координата центра изображения.

Эти четыре числа знает практически каждый алгоритм SLAM. Без них невозможно вычислить положение камеры.

Коэффициенты дисторсии

Кроме матрицы вычисляются коэффициенты:

k1

k2

k3

p1

p2

Они описывают, насколько объектив искажает изображение.

После этого каждый кадр автоматически исправляется.

Почему объектив важнее мегапикселей

Начинающие инженеры часто ищут камеры с максимальным разрешением.

Но для SLAM гораздо важнее:

  • глобальный затвор (Global Shutter);
  • отсутствие смаза при движении;
  • стабильная экспозиция;
  • качественная оптика;
  • высокая частота кадров.

Например, камера с разрешением 1,6 Мп и глобальным затвором часто обеспечивает более надежную навигацию, чем 12-Мп камера с роллинг-затвором.

Rolling Shutter — главный враг Visual SLAM

Большинство бытовых камер использует Rolling Shutter.

В этом режиме строки матрицы считываются последовательно.

Во время быстрого движения изображение "скручивается":

Реальный столб

Rolling Shutter

/

Для человека это почти незаметно. Для алгоритмов SLAM — серьезная проблема.

Поэтому профессиональные системы предпочитают камеры с Global Shutter, где весь кадр фиксируется одновременно.

Камеры, которые чаще всего используют в робототехнике

Бюджетный уровень

  • Arducam Global Shutter Camera

Подходит для экспериментов с Raspberry Pi и Jetson.

Средний класс

  • Luxonis OAK-D Lite

Особенности:

  • стереокамера;
  • встроенный IMU;
  • аппаратный ускоритель Myriad X;
  • поддержка нейросетей.

Профессиональный уровень

  • Stereolabs ZED X Mini

Используется на автономных роботах и тяжелых БПЛА.

Почему архитектура SLAM напоминает человеческое восприятие

Интересно, что современные системы во многом повторяют работу человеческого мозга.

  • Глаза (камеры) получают изображение.
  • Вестибулярный аппарат (IMU) сообщает об ускорениях и поворотах.
  • Кратковременная память (Front-End) анализирует последние изменения.
  • Долговременная память (Back-End и карта) хранит накопленную модель окружающего мира.
  • Механизм узнавания (Loop Closure) позволяет понять: «Это место я уже видел».

Именно благодаря сочетанию этих подсистем робот постепенно формирует устойчивое представление о мире, а не просто обрабатывает отдельные кадры.

Литература и ресурсы

  • OpenCV Calib3D Documentation
  • Kalibr Calibration Toolkit — один из наиболее распространенных инструментов для совместной калибровки камер и IMU.
  • ROS 2 Documentation — основная программная среда для современных робототехнических систем, в которой интегрируется большинство SLAM-решений.

Примечание автора. В следующих главах имеет смысл постепенно добавлять собственные схемы, диаграммы потоков данных и иллюстрации работы алгоритмов. Это сделает руководство не просто текстом, а полноценным техническим пособием.

Часть 3. Feature Detection — как беспилотник выбирает ориентиры в окружающем мире

«Для человека дерево — это дерево. Для алгоритма SLAM дерево — это набор устойчивых геометрических признаков, которые можно обнаружить снова через секунду, минуту или километр полета.»

Самое большое заблуждение о SLAM

Большинство людей думает, что алгоритм анализирует всё изображение целиком.

На самом деле это не так.

Представьте обычный кадр Full HD.

Разрешение:

1920 × 1080

Это более 2 миллионов пикселей.

Если сравнивать каждый пиксель каждого кадра с предыдущим, даже современные процессоры не смогут выполнять вычисления в реальном времени.

Поэтому SLAM делает совсем иначе.

Он задает вопрос:

Какие точки изображения являются наиболее информативными?

Именно они становятся ориентирами.

Что такое Feature?

Feature (ключевая точка, особенность, ориентир) — это участок изображения, который:

  • легко обнаружить;
  • легко найти повторно;
  • трудно спутать с другим объектом.

Именно такие точки становятся "маяками" для навигации.

Какие точки плохие?

Рассмотрим несколько примеров.

Однородная поверхность

██████████████████

██████████████████

██████████████████

██████████████████

Например:

  • белая стена;
  • голубое небо;
  • снег;
  • вода.

Все пиксели одинаковые.

Алгоритм не понимает, куда произошло смещение.

Прямая линия

──────────────

──────────────

──────────────

Например:

край крыши.

Если изображение сдвинуть вдоль линии, определить величину смещения практически невозможно.

Это называется проблемой апертуры (Aperture Problem).

Лучший ориентир — угол

Рассмотрим такой объект.

██████

Теперь всё иначе.

Если угол сместился:

  • вправо;
  • вверх;
  • вниз;
  • влево,

его положение определяется однозначно.

Именно поэтому большинство алгоритмов ищет именно углы.

Почему окно дома лучше дерева?

Представим два объекта.

Первый:

  • дерево.

Второй:

  • окно здания.

Дерево постоянно меняется:

  • ветер;
  • листья;
  • тени;
  • снег;
  • дождь.

Окно:

  • всегда одинаковое;
  • имеет контраст;
  • содержит множество углов.

Поэтому городская среда значительно удобнее для Visual SLAM.

Какие признаки ищет алгоритм?

Современные алгоритмы предпочитают:

✔ углы

✔ пересечения линий

✔ текстуры

✔ резкие переходы яркости

✔ дорожную разметку

✔ кирпичную кладку

✔ края дорожных знаков

✔ болты

✔ трещины

✔ вентиляционные решетки

✔ выступающие элементы конструкции

Какие признаки практически бесполезны?

Плохо подходят:

❌ облака

❌ вода

❌ однотонная трава

❌ песок

❌ снег

❌ туман

❌ стекло

❌ зеркала

Как компьютер понимает, что перед ним угол?

Вот здесь начинается настоящая математика.

Представим маленькое окно изображения:

□□□□□

□□■□□

□■■■□

□□■□□

□□□□□

Теперь попробуем сдвинуть его.

Если изображение почти не изменилось — это плохая точка.

Если изменилось сильно — это хороший ориентир.

Именно эта идея лежит в основе большинства классических детекторов.

Harris Corner Detector

В 1988 году появился алгоритм, который до сих пор считается классикой.

Идея очень красивая.

Берется маленькое окно изображения.

Оно последовательно сдвигается:

Для каждого смещения вычисляется изменение яркости.

Получаются три варианта.

1. Изменений почти нет

██████

██████

██████

Это однородная область.

Такие точки сразу отбрасываются.

2. Изменения только в одном направлении

██████

......

......

Это край объекта.

Он тоже плохо подходит.

3. Изменения происходят всегда

███...

███...

...███

Вот это угол.

Именно такие точки Harris считает наиболее ценными.

Почему Harris сегодня используют редко?

У него есть недостатки.

Он плохо переносит:

  • изменение масштаба;
  • поворот камеры;
  • сильное изменение освещения.

Для современных БПЛА этого недостаточно.

FAST — самый популярный детектор

В 2006 году появился алгоритм FAST (Features from Accelerated Segment Test).

Он до сих пор используется почти во всех системах реального времени.

Почему?

Потому что невероятно быстрый.

Как работает FAST

Представим пиксель.

Вокруг него строится окружность из 16 точек.

○ ○

○ X ○

○ ○

Теперь сравнивается яркость всех соседей.

Если подряд находится несколько значительно более светлых или более темных пикселей, центральная точка признается углом.

Проверка требует всего несколько операций.

На современных процессорах FAST способен находить десятки тысяч точек в секунду.

Почему ORB практически вытеснил остальных

В начале 2010-х разработчики столкнулись с проблемой. FAST прекрасно ищет углы.

Но совершенно не умеет понимать: Это тот же самый угол или другой?

Нужно было научиться "запоминать" найденные точки. Так появился ORB.

Что такое ORB

ORB состоит из двух частей.

Первая:

FAST- ищет углы.

Вторая:

BRIEF - создает цифровой "паспорт" каждой точки.

Получается:

Точка №125

101011010110101010101101010101

Для каждой найденной особенности строится компактный бинарный дескриптор.

Когда появляется следующий кадр, система сравнивает эти последовательности и быстро определяет, является ли найденная точка той же самой.

Почему ORB оказался настолько успешным?

Причин несколько.

Он:

  • очень быстрый;
  • устойчив к поворотам;
  • почти бесплатен вычислительно;
  • не требует GPU;
  • отлично работает на ARM-процессорах.

Именно поэтому ORB стал основой большинства открытых систем Visual SLAM.

Например:

  • ORB-SLAM3

А почему не SIFT?

Многие инженеры слышали: "SIFT гораздо лучше."

Это действительно так.

SIFT способен обнаруживать признаки даже после:

  • сильного изменения масштаба;
  • поворота;
  • изменения освещения.

Но есть проблема. Он значительно тяжелее вычислительно.

Например:

  • ORB может обработать кадр за несколько миллисекунд.
  • SIFT — в несколько раз дольше на том же оборудовании.

Для беспилотника это критично.

SURF

SURF создавался как ускоренная версия SIFT. Он действительно оказался быстрее.

Однако всё равно не смог конкурировать с ORB в системах реального времени.

Современные нейросетевые детекторы

Последние годы классические алгоритмы постепенно дополняются нейросетями.

Наиболее известные решения:

  • SuperPoint
  • DISK
  • R2D2
  • ALIKED

Они способны находить более устойчивые признаки в сложных условиях: при слабом освещении, сильных изменениях масштаба или размытости. Однако цена за это — более высокие требования к вычислительным ресурсам.

Сколько признаков нужно?

Это частый вопрос. Ответ зависит от среды.

Типичные значения:

СредаКоличество признаков
Коридор200–500
Лес1000–3000
Город3000–8000
Индустриальный объект5000–15000

Важно понимать: больше — не всегда лучше. Избыточное количество слабых признаков может замедлить работу системы и увеличить вероятность ложных совпадений.

Практический вывод

Feature Detection — это фундамент Visual SLAM. Если на этом этапе выбраны плохие ориентиры, последующие алгоритмы не смогут компенсировать ошибку. Именно поэтому разработчики уделяют огромное внимание выбору детектора, настройке его параметров и качеству входного изображения.

В современных автономных БПЛА всё чаще используются гибридные подходы: классические детекторы (например, ORB) для работы в реальном времени и нейросетевые модели для сложных сцен или периодической коррекции карты.

Литература и ресурсы

Классические работы

  • C. Harris, M. Stephens. A Combined Corner and Edge Detector (1988).
  • E. Rosten, T. Drummond. Machine Learning for High-Speed Corner Detection (FAST, 2006).
  • E. Rublee et al. ORB: An Efficient Alternative to SIFT or SURF (ICCV 2011).

Официальные ресурсы и код

  • OpenCV Feature Detection Documentation
  • ORB-SLAM3 GitHub
  • OpenCV GitHub

Часть 4. Дескрипторы признаков: как компьютер «узнаёт» один и тот же объект спустя тысячи кадров

«Найти угол — легко. Гораздо сложнее доказать, что этот угол на новом кадре — тот же самый, что и секунду назад.»

Почему Feature Detection недостаточно?

В предыдущей главе мы научили систему находить хорошие ориентиры. Предположим, алгоритм обнаружил 2500 углов.

Возникает новый вопрос:

Как понять, что угол №145 на новом кадре — это тот же угол, который был найден секунду назад?

Для человека задача кажется тривиальной.

Мы мгновенно узнаём:

  • окно дома;
  • дорожный знак;
  • дерево;
  • автомобиль.

Но компьютер не знает, что такое окно. Для него существуют только числа.

Следовательно, каждую найденную точку необходимо превратить в цифровой отпечаток, который можно сравнивать. Этот отпечаток называется дескриптором (Descriptor).

Что такое дескриптор?

Дескриптор — это математическое описание окрестности ключевой точки. Представим, что камера обнаружила угол окна.

Вместо хранения изображения алгоритм записывает его характеристики:

  • распределение яркости;
  • локальные градиенты;
  • взаимное расположение контрастных областей;
  • ориентацию;
  • иногда масштаб.

Получается компактный набор данных, по которому можно узнать этот объект позже.

Аналогия с отпечатком пальца

Дескриптор очень похож на отпечаток пальца человека. Полностью восстановить палец по отпечатку невозможно. Но определить владельца — можно. Точно так же невозможно восстановить изображение по дескриптору.

Но можно определить:

Это та же самая точка или нет?

Почему нельзя сравнивать изображения?

Представим два кадра.

Первый:

+------------+

| окно |

+------------+

Через секунду дрон немного повернулся.

Получилось:

+------------+

| окно |

+------------+

Изменилось:

  • положение;
  • освещение;
  • масштаб;
  • перспектива.

Пиксели уже совершенно другие.

Если сравнить изображения напрямую — совпадение окажется очень плохим.

Поэтому сравниваются не изображения, а дескрипторы.

Каким должен быть хороший дескриптор?

Он обязан быть устойчивым к следующим изменениям.

Поворот

Дрон может повернуться на:

  • 30°
  • 90°
  • 180°

Точка должна остаться узнаваемой.

Масштаб

Аппарат приблизился к зданию.

Окно стало в четыре раза больше.

Дескриптор должен остаться тем же.

Освещение

Солнце зашло за облако.

Яркость изображения изменилась.

Но объект тот же.

Частичное перекрытие

Например,

ветка закрыла половину окна.

Алгоритм всё равно должен узнать объект.

Небольшой шум

Изображение никогда не бывает идеальным.

Есть:

  • шум матрицы;
  • сжатие видео;
  • дождь;
  • снег;
  • пыль.

Дескриптор должен быть устойчивым и к этим факторам.

SIFT — первый по-настоящему мощный дескриптор

В 1999 году Дэвид Лоу предложил алгоритм SIFT (Scale-Invariant Feature Transform), который стал настоящим прорывом.

Идея проста. Вокруг каждой точки строится небольшая область.

Например:

41 × 41 пиксель

Она разбивается на небольшие блоки.

Для каждого блока вычисляются:

  • направление градиента;
  • сила градиента.

Получается гистограмма направлений.

В итоге формируется вектор из:

  • 128 чисел

Именно этот вектор становится дескриптором.

Почему SIFT был революционным?

Он оказался устойчивым одновременно к:

  • масштабу;
  • повороту;
  • изменению освещения;
  • умеренным перспективным искажениям.

В начале 2000-х практически все исследования по компьютерному зрению использовали именно SIFT.

Но была проблема.

Почему SIFT редко используют на дронах?

Вычислительная сложность.

Для каждой точки необходимо вычислить:

  • множество градиентов;
  • несколько гистограмм;
  • нормализацию;
  • дополнительные проверки.

На современном ПК это не проблема. Но на ARM-процессоре беспилотника это означает потерю драгоценного времени.

SURF

Позже появился алгоритм SURF (Speeded-Up Robust Features).

Основная идея — получить почти такую же устойчивость, как у SIFT, но значительно быстрее. SURF действительно ускорил вычисления, однако для современных автономных БПЛА оказался всё равно слишком тяжёлым.

BRIEF — совершенно другой подход

Разработчики задали неожиданный вопрос. А действительно ли нужны длинные векторы из 128 чисел? Можно ли описать точку проще? Ответ оказался положительным.

Как работает BRIEF

Вокруг найденной точки случайным образом выбираются пары пикселей.

Например:

A

B

Если

A > B

записывается

1

Если

A < B

записывается

0

Таких сравнений выполняются сотни.

Например:

101100011010110001010110...

Получается бинарная строка. Именно она становится дескриптором.

Почему бинарные дескрипторы оказались настолько быстрыми?

Потому что компьютеры великолепно работают с битовыми операциями. Сравнение двух бинарных строк выполняется практически мгновенно.

Hamming Distance

Теперь необходимо определить, насколько похожи два дескриптора. Для этого используется расстояние Хэмминга. Представим два дескриптора.

Первый:

10110110

Второй:

10100111

Сравним их.

10110110

10100111

Отличаются три бита. Следовательно,

Hamming Distance = 3

Чем меньше значение, тем выше вероятность, что это одна и та же точка.

Почему ORB победил большинство конкурентов?

ORB объединил две идеи.

FAST

быстро ищет углы.

BRIEF

быстро создаёт бинарные дескрипторы.

Затем добавлены:

  • компенсация поворота;
  • выбор наиболее информативных сравнений;
  • оптимизация скорости.

В результате ORB оказался идеальным компромиссом между скоростью и качеством.

Именно поэтому:

  • ORB-SLAM3
  • OpenCV ORB Documentation

используют именно ORB.

Почему нейросети постепенно вытесняют классические дескрипторы?

Классические методы основаны на правилах, которые придумал человек.

Нейросети делают иначе. Они сами учатся понимать, какие признаки лучше всего подходят для узнавания объектов. Например, если обучить сеть на миллионах изображений, она начинает самостоятельно выбирать наиболее устойчивые особенности.

SuperPoint

Одной из первых успешных моделей стал - SuperPoint.

Особенность алгоритма:

он одновременно выполняет

  • поиск ключевых точек;
  • построение дескрипторов.

Это уменьшает вероятность ошибок, поскольку обе задачи решаются одной моделью.

Официальный репозиторий:

  • SuperPoint (Magic Leap)

SuperGlue — следующий шаг

Найти дескрипторы недостаточно. Теперь нужно понять, какие точки соответствуют друг другу. Для этого была разработана модель SuperGlue. Она рассматривает не каждую точку отдельно, а весь набор признаков, используя архитектуру Transformer и механизм внимания (Attention). В результате значительно уменьшается количество ложных совпадений.

Репозиторий:

  • SuperGlue Pretrained Network

LightGlue

В 2023–2024 годах широкое распространение получил LightGlue.

Его особенность — динамически изменять объём вычислений. Если сцена простая, алгоритм завершает работу быстрее. Если сложная — использует больше вычислительных ресурсов.

Благодаря этому LightGlue стал одним из наиболее популярных современных методов сопоставления признаков.

Репозиторий:

  • LightGlue

Сколько времени занимает создание дескрипторов?

Для современного дрона с камерой 60 FPS весь цикл должен укладываться примерно в 16 мс на кадр. В этот бюджет входят:

  • получение изображения;
  • коррекция дисторсии;
  • поиск ключевых точек;
  • вычисление дескрипторов;
  • сопоставление с предыдущим кадром.

Если система не укладывается в этот интервал, она начинает пропускать кадры, что ухудшает точность навигации.

Именно поэтому выбор алгоритма всегда является компромиссом между качеством и скоростью.

Вывод главы

Feature Detection отвечает на вопрос: Где находятся интересные точки?

Descriptor отвечает на другой вопрос: Какие из этих точек я уже видел раньше?

Без дескрипторов невозможны:

  • Visual Odometry;
  • построение траектории;
  • обнаружение повторного посещения места (Loop Closure);
  • оптимизация карты.

По сути, именно дескрипторы дают SLAM способность "узнавать" окружающий мир.

Основные публикации

  • D. Lowe. Distinctive Image Features from Scale-Invariant Keypoints (IJCV, 2004).
  • E. Rublee et al. ORB: An Efficient Alternative to SIFT or SURF (ICCV, 2011).
  • P. F. Alcantarilla et al. AKAZE Features (BMVC, 2013).

Полезные ресурсы

  • OpenCV Feature2D Documentation
  • OpenCV ORB API
  • SuperPoint GitHub
  • LightGlue GitHub

Часть 5. Feature Matching — как беспилотник понимает, что видит тот же самый мир

«Самая опасная ошибка в SLAM — не потерять ориентир, а перепутать его с другим. Один ложный объект может исказить всю карту.»

После предыдущих глав у нас уже есть две вещи:

✔ найдены ключевые точки

✔ для каждой точки построен дескриптор

Но этого недостаточно. Перед системой стоит новая задача.

Допустим, первый кадр содержит:

  • 3728 ключевых точек

Через 16 миллисекунд появляется следующий кадр.

На нем найдено:

  • 3854 точки

Возникает вопрос: Какая точка нового кадра соответствует точке старого кадра? Именно это называется Feature Matching.

Почему это настолько сложно?

Представим городской квартал.

На изображении находятся:

  • 150 окон
  • 300 кирпичей
  • 40 автомобилей
  • сотни углов

Многие элементы выглядят почти одинаково.

Например:

□□□□□□□□□□□□

□□□□□□□□□□□□

□□□□□□□□□□□□

□□□□□□□□□□□□

Каждое окно практически копия соседнего. Если алгоритм перепутает окна, ошибка сразу попадет в вычисление координат. Через несколько секунд весь SLAM может "сломаться". Поэтому Matching считается одной из самых ответственных частей системы.

Самый простой алгоритм

Допустим, есть дескриптор

101010011101...

Необходимо найти максимально похожий.

Самая очевидная идея — сравнить его со всеми остальными.

Точка №1

сравнить с №1

сравнить с №2

сравнить с №3

...

сравнить с №3854

Так работает алгоритм - Brute Force Matching

Brute Force Matcher

Алгоритм невероятно простой.

Для каждого дескриптора:

вычислить расстояние

найти минимальное

запомнить совпадение

Если используется ORB, то применяется Hamming Distance.

Если SIFT — обычно L2 Distance (Евклидово расстояние).

Почему Brute Force плохо масштабируется?

Представим 5000 признаков.

Количество сравнений становится 5000 × 5000 = 25 миллионов

И это только для одного кадра. При 60 FPS получаем миллиарды сравнений каждую минуту. Даже современному процессору приходится тяжело.

KD-Tree

Инженеры быстро поняли, что искать по всему списку бессмысленно. Можно сначала отсортировать признаки. Так появилась структура

KD-Tree (K-Dimensional Tree).

Идея похожа на телефонный справочник. Если нужно найти Иванова, не нужно читать всю книгу. Мы сразу открываем раздел "И". KD-Tree делает примерно то же самое, но для многомерных векторов.

FLANN

Когда признаков становится десятки тысяч, используют FLANN (Fast Library for Approximate Nearest Neighbors).

Официальный сайт проекта:

  • FLANN Project

FLANN строит специальные поисковые структуры, позволяющие искать ближайшие дескрипторы почти мгновенно. Именно поэтому OpenCV использует FLANN для SIFT и SURF.

Почему "почти правильный" ответ лучше идеального

На первый взгляд странно Почему Approximate? Почему не искать идеально? Потому что робот должен лететь. Если поиск занимает 50 миллисекунд, дрон уже успел изменить положение. Лучше получить совпадение, точность которого 99,8%, но за 2 миллисекунды. Именно поэтому большинство современных систем предпочитает быстрые приближенные методы.

Но Matching ещё не закончен

Представим, мы нашли совпадения.

Точка 15

Точка 284

Отлично? Нет. Половина совпадений всё ещё ложная.

Почему появляются ложные совпадения?

Представим бизнес-центр. Все окна одинаковые.

Алгоритм получает

Для компьютера это почти одинаковые изображения. Он легко может перепутать окно третьего этажа с окном пятого. Если использовать эти данные, дрон "телепортируется" на несколько метров.

Cross Check

Первый способ борьбы. Представим. Из первого кадра

  • точка A нашла соответствие B.

Теперь запускаем поиск наоборот. Из второго кадра

  • точка B должна найти A.

Если получилось

A → B

B → A

совпадение считается надежным.

Если

A → B

B → C

оно удаляется. Эта проверка называется Cross Check.

Lowe Ratio Test

Самый известный фильтр ложных совпадений. Предложен Дэвидом Лоу. Представим, есть два кандидата.

  • Лучший - 0.18
  • Второй 0.19

Они почти одинаковые. Значит, алгоритм не уверен. Такую точку лучше удалить.

Теперь другой пример.

  • Лучший 0.18
  • Второй 0.71

Здесь разница огромная. Совпадение почти наверняка правильное. Именно это и проверяет- Lowe Ratio Test.

Геометрическая проверка

Даже этого недостаточно. Допустим, осталось 800 совпадений. Среди них

20 ложных.

Можно ли их найти?

Да.

Именно здесь появляется

самый известный алгоритм

компьютерного зрения —

RANSAC

Почему RANSAC считается гениальным?

Представим,

после Matching

мы получили

1000 совпадений

Но среди них

150 ошибочных.

Если использовать их все,

получится неправильная модель движения.

RANSAC делает иначе.

Он случайным образом выбирает минимальный набор соответствий, строит по нему гипотезу о движении камеры и затем проверяет, сколько остальных точек согласуются с этой гипотезой.

Если большинство совпадений подтверждают модель, она считается хорошей. Если нет — алгоритм пробует другую случайную комбинацию.

Пример работы RANSAC

Представим,

после сопоставления получили такие точки.

  • ● ● ● ●
  • ● ●

X

  • ● ●

X

  • ● ● ●

Где

правильные совпадения,

а

X

ошибочные.

RANSAC автоматически отбросит выбросы (Outliers),

оставив только согласованные точки.

Именно поэтому он используется практически во всех системах Visual SLAM.

Почему RANSAC настолько важен для дронов?

Представим FPV-дрон,

летящий

120 км/ч.

Камера вибрирует.

В кадре появляются:

  • смаз движения;
  • блики;
  • тени;
  • вращающиеся винты.

Даже лучший дескриптор начинает ошибаться.

Без RANSAC

ошибочные совпадения мгновенно разрушат навигацию.

Именно поэтому практически каждый современный SLAM вызывает RANSAC

сотни раз в секунду.

Что происходит после RANSAC?

Теперь остаются только

хорошие соответствия.

Например:

780 надежных совпадений

Именно они становятся входными данными

для следующего этапа.

От совпадений к движению

Теперь возникает главный вопрос.

Если известно,

что

эта точка

переместилась сюда

можно ли определить,

как двигалась камера?

Ответ —

да.

Именно это делает

Visual Odometry.

Она вычисляет:

  • перемещение по X;
  • перемещение по Y;
  • перемещение по Z;
  • поворот по Roll;
  • поворот по Pitch;
  • поворот по Yaw.

Получается полная шестимерная поза камеры (6DoF).

Сколько совпадений необходимо?

На практике всё зависит от сцены.

УсловияХороших совпадений
Плохая текстура (стены, бетон)50–150
Лес300–1000
Город1000–5000
Индустриальный объект3000–10000

Важно не абсолютное количество, а их пространственное распределение. Если все точки сосредоточены в одном углу изображения, оценка движения будет менее устойчивой.

Современные методы сопоставления

Классические методы постепенно дополняются нейросетями.

Сегодня всё чаще используются:

  • SuperGlue
  • LightGlue
  • LoFTR

В отличие от традиционных алгоритмов, они учитывают контекст всей сцены и способны находить соответствия даже там, где классические дескрипторы работают нестабильно.

Практический пример: ORB-SLAM3

Конвейер обработки в ORB-SLAM3 выглядит следующим образом:

Камера

Поиск ORB-признаков

Создание ORB-дескрипторов

Brute Force (Hamming)

Lowe Ratio Test

RANSAC

Visual Odometry

Локальная карта

Именно эта последовательность позволила ORB-SLAM3 стать одним из наиболее успешных открытых проектов в области Visual SLAM.

Практический вывод главы

Feature Matching — это «фильтр доверия» всей системы. На этом этапе определяется, какие наблюдения действительно относятся к одному и тому же объекту, а какие являются случайными совпадениями.

Ошибки здесь особенно опасны: даже несколько ложных соответствий могут привести к неверной оценке движения, что затем повлияет на карту, траекторию и последующую локализацию.

Поэтому современные системы используют не один алгоритм сопоставления, а целый каскад проверок: быстрый поиск кандидатов, тест Лоу, взаимную проверку, RANSAC и, всё чаще, нейросетевые методы сопоставления.

Что дальше?

Следующая глава будет одной из ключевых во всём руководстве. Мы подробно разберём Visual Odometry — как по нескольким сотням совпавших точек вычисляются шесть степеней свободы движения камеры, что такое Essential Matrix, Fundamental Matrix, PnP, эпиполярная геометрия, почему возникает проблема масштаба у монокулярных камер и каким образом SLAM впервые начинает определять собственное положение в пространстве.

Рекомендуемая литература

  • David G. Lowe. Distinctive Image Features from Scale-Invariant Keypoints (IJCV, 2004).
  • Martin A. Fischler, Robert C. Bolles. Random Sample Consensus (RANSAC) (1981).
  • Richard Hartley, Andrew Zisserman. Multiple View Geometry in Computer Vision — фундаментальная книга по многовидовой геометрии.

Полезные ресурсы

  • OpenCV Feature Matching Documentation
  • OpenCV findFundamentalMat (RANSAC)
  • LoFTR GitHub

Примечание автора: начиная со следующей части мы переходим от обработки изображений к пространственной геометрии. Именно там происходит главное «волшебство» SLAM — из двумерных изображений система начинает восстанавливать трёхмерное движение беспилотника. Это один из самых математически насыщенных, но и самых важных разделов всего руководства.

Часть 6. Visual Odometry — как беспилотник вычисляет собственное движение

«До этого момента SLAM только наблюдал мир. Теперь он начинает понимать, как сам перемещается в пространстве.»

Самый важный этап всего SLAM

Если попросить инженеров назвать одну технологию, без которой Visual SLAM невозможен, большинство ответит:

Visual Odometry (VO).

Именно здесь впервые появляются координаты дрона.

До этого момента система лишь:

✔ находила признаки

✔ строила дескрипторы

✔ сопоставляла признаки

Но она совершенно не понимала,

куда полетел беспилотник.

Теперь начинается настоящая навигация.

Что такое Visual Odometry?

Visual Odometry (визуальная одометрия) — это вычисление собственного перемещения по последовательности изображений.

Название произошло от автомобильного одометра.

Автомобильный одометр считает:

Сколько проехали колеса?

Visual Odometry отвечает на другой вопрос:

Насколько изменилась картинка вокруг камеры?

Очень простой пример

Представим,

камера смотрит на дом.

Первый кадр

Дом

███

███

Камера

Через секунду

дрон пролетел

2 метра вправо.

Получился второй кадр.

Дом

███

███

Камера

Все объекты сместились.

Возникает вопрос:

Можно ли определить движение камеры только по этим изменениям?

Ответ —

да.

Именно это делает Visual Odometry.

Как человек определяет движение?

Представьте,

что вы едете в автомобиле.

Близкие деревья

"летят"

очень быстро.

Далекие горы

почти неподвижны.

Мозг мгновенно понимает:

машина движется.

Компьютер делает практически то же самое.

Почему движение видно?

Представим

одну точку.

Кадр №1

Через секунду

Кадр №2

Точка сместилась.

Если таких точек

1000,

можно вычислить,

как двигалась камера.

Но есть проблема...

Рассмотрим два изображения.

Кадр №1

Дом

Кадр №2

Дом

Что произошло?

Вариант 1

Камера полетела вправо.

Вариант 2

Дом поехал влево.

По одному изображению

ответить невозможно.

Поэтому Visual Odometry всегда предполагает,

что окружающий мир неподвижен,

а движется именно камера.

Это одно из фундаментальных допущений SLAM.

Что такое 6DoF?

В реальном мире камера может двигаться

не только вперед.

У нее есть

шесть степеней свободы.

Перемещение

X

← →

Y

↑ ↓

Z

вверх вниз

Вращение

Roll

наклон крыла

Pitch

нос вверх

нос вниз

Yaw

поворот

налево

направо

Получается

6 параметров.

Именно их должна вычислить Visual Odometry.

Откуда взять глубину?

Вот здесь появляется первая серьезная проблема.

Камера —

двумерная.

Изображение —

плоское.

Но мир —

трехмерный.

Как узнать расстояние?

Монокамера

Если камера одна,

то сразу узнать глубину невозможно.

Она определяется

по движению.

Например.

Первый кадр.

Дом

Второй.

Дом

По изменению перспективы

можно вычислить

расстояние.

Но только после того,

как камера уже начала двигаться.

Именно поэтому монокулярный SLAM не знает абсолютного масштаба сразу после запуска.

Почему монокулярный SLAM не знает размеров мира?

Представим фотографию.

На ней автомобиль.

Что можно сказать?

Он может быть:

игрушкой

или

настоящим грузовиком.

По одному снимку определить невозможно.

Поэтому монокамера знает

форму сцены,

но не знает ее абсолютный масштаб.

Если алгоритм решил,

что дерево высотой

5 метров,

он также мог бы решить,

что это дерево высотой

50 метров.

Геометрия останется одинаковой.

Это называется

Scale Ambiguity.

Как проблему масштаба решают современные системы?

Есть несколько способов.

IMU

Самый популярный.

Инерциальные датчики измеряют реальные ускорения.

Поэтому система начинает понимать

реальные размеры движения.

Именно так работают

Visual-Inertial SLAM.

Стереокамера

Если камер две,

расстояние определяется

почти мгновенно.

Точно так же,

как человек видит глубину двумя глазами.

RGB-D

Если используется

камера глубины,

например

Intel RealSense D455

то расстояние вообще измеряется напрямую.

Эпиполярная геометрия

Это один из самых красивых разделов компьютерного зрения.

Представим.

Камера сделала

два снимка.

Получились

две точки наблюдения.

Камера 1 ●

\

\

Дом

/

/

Камера 2 ●

Каждая точка изображения

образует луч.

Пересечение лучей

дает положение объекта

в пространстве.

Но есть еще более важное следствие.

Эпиполярное ограничение

Если точка была найдена

на первом изображении,

то на втором

она может находиться

не где угодно.

Она обязана лежать

на определенной линии.

Эта линия называется

эпиполярной линией.

Получается,

вместо поиска

по всему изображению

алгоритм ищет

только вдоль одной линии.

Это уменьшает вычисления

в сотни раз

и резко снижает вероятность ложных совпадений.

Fundamental Matrix

Эпиполярную геометрию описывает

матрица

F

Она связывает

две камеры.

Если известна

Fundamental Matrix,

можно вычислить,

где должна находиться

каждая точка

на следующем кадре.

В OpenCV это реализовано функцией:

  • findFundamentalMat()

Essential Matrix

Если камера откалибрована

(а для SLAM это обязательное условие),

используется не Fundamental Matrix,

а более точная

Essential Matrix.

Она содержит информацию только о взаимном положении камер, без влияния внутренних параметров объектива.

В OpenCV:

  • findEssentialMat()

После её вычисления вызывается:

  • recoverPose()

Именно эта функция возвращает:

  • матрицу вращения (Rotation Matrix);
  • направление переноса (Translation Vector).

Это и есть первое приближение к положению камеры между двумя кадрами.

Почему Translation Vector не всегда означает реальное расстояние?

Это одна из самых распространённых ошибок новичков.

После вызова recoverPose() многие ожидают получить ответ:

«Дрон пролетел ровно 2,35 метра».

Но этого не происходит.

Для монокамеры вектор переноса показывает направление движения, а его длина известна только с точностью до масштаба.

Например:

t =

0.72

0.15

0.68

Это не означает,

что дрон пролетел

72 сантиметра.

Это означает лишь,

что он двигался

примерно в этом направлении.

Абсолютный масштаб появится только после объединения с IMU, стереокамерой или датчиком глубины.

Триангуляция

Теперь начинается настоящая трёхмерная геометрия.

Представим,

две камеры увидели один и тот же фонарь.

Камера 1

\

\

  • Фонарь

/

/

Камера 2

Пересечение лучей позволяет вычислить координаты объекта:

X

Y

Z

Этот процесс называется триангуляцией.

Именно так из двумерных изображений рождается трёхмерная карта мира.

Почему ошибки неизбежны?

В реальности лучи почти никогда не пересекаются идеально.

Причины:

  • шум матрицы;
  • неточная калибровка;
  • вибрации;
  • ошибки сопоставления;
  • несовершенная оптика.

Поэтому вместо точного пересечения используются методы оптимизации, которые находят наиболее вероятное положение точки.

Этим мы займёмся в следующих главах, когда будем разбирать Bundle Adjustment и Pose Graph Optimization.

Практический пример: ORB-SLAM3

На этапе Visual Odometry система выполняет следующий конвейер:

ORB Features

Feature Matching

RANSAC

Essential Matrix

recoverPose()

Triangulation

Первичная 3D-карта

Оценка движения камеры (6DoF)

Каждый из этих этапов должен укладываться в миллисекунды, иначе беспилотник не сможет работать в реальном времени.

Вывод главы

Visual Odometry — это первый этап, на котором SLAM перестаёт быть системой обработки изображений и становится системой навигации.

Именно здесь двумерные пиксели превращаются в:

  • трёхмерные точки;
  • траекторию движения;
  • оценку положения камеры;
  • основу для построения карты.

Однако полученная траектория ещё далека от идеала. Ошибки постепенно накапливаются, и без специальных методов коррекции дрон со временем начнёт «уплывать» от реального положения.

Что будет дальше?

Следующая часть посвящена Bundle Adjustment (BA) — алгоритму, который многие называют «сердцем современного SLAM». Мы подробно разберём, почему Visual Odometry неизбежно ошибается, как BA одновременно уточняет координаты всех трёхмерных точек и всех положений камеры, почему эта задача сводится к огромной нелинейной оптимизации и как библиотеки Ceres Solver, g2o и GTSAM позволяют уменьшить ошибки с метров до сантиметров.

Основная литература

  • Richard Hartley, Andrew Zisserman. Multiple View Geometry in Computer Vision — фундаментальная книга по эпиполярной геометрии.
  • Scaramuzza D., Fraundorfer F. Visual Odometry: Part I & II — один из лучших обзоров по визуальной одометрии.
  • Szeliski R. Computer Vision: Algorithms and Applications.

Полезные ресурсы

  • OpenCV Calib3D Module
  • ORB-SLAM3 GitHub
  • OpenVINS GitHub

Часть 7. Bundle Adjustment — алгоритм, который превращает хаос измерений в точную карту

«Visual Odometry говорит: "Я думаю, что дрон находится здесь". Bundle Adjustment отвечает: "Давайте пересчитаем всё ещё раз и выясним, где он находится на самом деле".»

Почему Visual Odometry недостаточно?

В предыдущей главе мы научились вычислять положение камеры между двумя кадрами.

Предположим, дрон летит над промышленной площадкой.

Через каждую 1/60 секунды Visual Odometry вычисляет новую позу:

Кадр 1

X = 0.00

Кадр 2

X = 0.31

Кадр 3

X = 0.63

Кадр 4

X = 0.95

Кадр 5

X = 1.27

Всё выглядит идеально.

Но каждая оценка содержит небольшую ошибку.

Например:

Ошибка кадра

±0.5 %

±0.8 %

±0.3 %

±0.6 %

Каждая ошибка почти незаметна.

Но через несколько тысяч кадров происходит следующее.

Вместо:

120 метров

алгоритм получает

124 метра

Через десять минут полёта ошибка может достигать десятков метров.

Почему возникает ошибка?

Представим простейшую ситуацию.

Есть три камеры.

Камера 1

Камера 2

Камера 3

Все они наблюдают один фонарь.

Visual Odometry вычислила:

Фонарь

X = 12.1

Y = 4.8

Z = 1.6

Но в следующем кадре тот же самый фонарь оказался немного в другом месте.

Получилось:

X = 12.3

Y = 4.7

Z = 1.5

Какое значение правильное?

Ни одно.

Обе оценки содержат шум.

Самая гениальная идея Bundle Adjustment

Вместо того чтобы верить последнему измерению,

BA говорит:

Давайте одновременно пересчитаем ВСЕ камеры и ВСЕ точки.

Не одну.

Не две.

А сразу всю карту.

Это фундаментальное отличие BA от обычной фильтрации.

Почему алгоритм называется Bundle Adjustment?

Название появилось ещё в фотограмметрии.

Представим фотоаппарат.

Каждый пиксель изображения соответствует лучу света.

Получается целый "пучок лучей" (Bundle).

Камера

\

\

\

/

/

/

Bundle Adjustment изменяет положение камер и точек так, чтобы все лучи пересекались максимально точно.

Что именно оптимизируется?

Одновременно корректируются:

1. Координаты всех камер

X

Y

Z

Roll

Pitch

Yaw

2. Координаты всех точек

X

Y

Z

3. Иногда параметры камеры

Например:

  • фокусное расстояние;
  • коэффициенты дисторсии;
  • внутренние параметры.

Это называется Self Calibration.

Представьте огромную таблицу

Допустим,

дрон пролетел

500 метров.

Получилось:

Камер

4200

И найдено

3D-точек

280 000

Каждая точка наблюдается

примерно

20 раз.

Получается более

5 миллионов наблюдений.

И всё это Bundle Adjustment пересчитывает одновременно.

Что такое Reprojection Error?

Это самое важное понятие всей главы.

Допустим,

SLAM считает,

что точка находится здесь.

Но камера увидела её немного левее.

×

Расстояние между ними —

это ошибка перепроецирования (Reprojection Error).

●-----------×

Чем она меньше,

тем лучше построена карта.

Практически все современные SLAM стремятся минимизировать именно эту ошибку.

Как вычисляется Reprojection Error?

Предположим,

мы знаем:

  • положение камеры;
  • положение точки.

Можно вычислить,

куда эта точка должна попасть на изображении.

Получили

(842, 510)

Но реально камера увидела её

(846, 508)

Ошибка составляет

4 пикселя

BA пытается сделать так,

чтобы ошибка стала

0.5 пикселя

или даже

0.2 пикселя

Именно поэтому хорошие карты выглядят настолько точными.

Почему задача невероятно сложная?

Представим.

Есть

4000 камер

и

300000 точек.

Нельзя изменить только одну камеру.

Потому что изменятся все лучи.

Нельзя изменить только одну точку.

Потому что её наблюдают десятки камер.

Получается гигантская взаимосвязанная система.

Изменение одной переменной влияет на тысячи других.

Нелинейная оптимизация

Из-за перспективной проекции задача не имеет простого аналитического решения.

Поэтому используются методы численной оптимизации.

Наиболее известные:

  • Gauss–Newton
  • Levenberg–Marquardt
  • Dogleg Method

Именно они последовательно уменьшают ошибку, пока не будет достигнут минимум.

Почему Levenberg–Marquardt стал стандартом?

Представьте, что вы спускаетесь с горы в густом тумане.

Если делать слишком большие шаги, можно сорваться.

Если слишком маленькие — идти придётся очень долго.

Алгоритм Левенберга–Марквардта автоматически регулирует размер шага:

  • далеко от решения — делает осторожные шаги;
  • рядом с минимумом — ускоряет сходимость.

Поэтому он используется практически во всех промышленных системах SLAM.

Sparse Matrix — главный секрет скорости

Если записать всю систему в виде обычной матрицы, её размер может достигать миллионов строк и столбцов.

Но есть важное наблюдение.

Каждая камера видит только небольшую часть всех точек.

Следовательно, большинство элементов матрицы — нули.

Например:

█ 0 0 0 0

0 █ 0 0 0

0 0 █ 0 0

0 0 0 █ 0

Такие матрицы называют разрежёнными (Sparse Matrices).

Современные алгоритмы работают только с ненулевыми элементами, что позволяет ускорить вычисления на порядки.

Schur Complement — хитрость, изменившая SLAM

В начале 2000-х стало ясно, что оптимизировать одновременно миллионы переменных слишком дорого.

Тогда начали применять Schur Complement.

Идея проста:

вместо одновременной оптимизации камер и точек,

сначала временно исключаются точки,

а вычисления ведутся только для камер.

После этого положение точек восстанавливается автоматически.

Этот приём уменьшает объём вычислений в несколько раз и используется практически во всех современных реализациях Bundle Adjustment.

Локальный и глобальный Bundle Adjustment

На практике никто не запускает полную оптимизацию после каждого кадра.

Используются два режима.

Local Bundle Adjustment

Оптимизируются:

  • последние 10–30 ключевых кадров;
  • несколько тысяч ближайших точек.

Работает постоянно.

Занимает:

10–50 мс

Global Bundle Adjustment

Пересчитывается вся карта.

Может включать:

  • десятки тысяч кадров;
  • миллионы точек.

Время работы:

от нескольких секунд до нескольких минут.

Обычно запускается после обнаружения Loop Closure, когда система понимает, что вернулась в уже знакомое место.

Библиотеки, которые используют инженеры

Практически все современные проекты используют готовые оптимизаторы.

Ceres Solver

Разработан Google.

Особенности:

  • автоматическое дифференцирование;
  • высокая точность;
  • удобный API.

Официальный сайт:

  • Ceres Solver

g2o

Самая известная библиотека в мире SLAM.

Используется в:

  • ORB-SLAM;
  • LSD-SLAM;
  • DSO;
  • многочисленных исследовательских проектах.

Репозиторий:

  • g2o GitHub

GTSAM

Разработана исследователями из Georgia Tech.

Особенно популярна в:

  • автономных автомобилях;
  • Visual-Inertial SLAM;
  • робототехнике.

Официальный сайт:

  • GTSAM

Как это работает в ORB-SLAM3?

Каждый новый ключевой кадр запускает цепочку:

Новый KeyFrame

Добавление новых 3D-точек

Local Bundle Adjustment

Уточнение координат камер

Уточнение координат точек

Уменьшение ошибки перепроецирования

Обновлённая локальная карта

Пока Front-End продолжает обрабатывать новые кадры, Back-End в отдельном потоке оптимизирует карту. Именно разделение этих задач позволяет системе работать в реальном времени.

Практическое значение для БПЛА

Представьте тяжёлый беспилотник зависает на высоте 200 метров без GPS.

Камера постоянно получает новые изображения.

Каждая оценка движения немного шумит.

Без Bundle Adjustment ошибка будет накапливаться:

  • сначала сантиметры;
  • затем десятки сантиметров;
  • затем метры.

С BA все прошлые наблюдения постоянно переоцениваются. Если дрон снова увидел знакомые ориентиры, система может скорректировать накопленные ошибки и вернуть оценку положения ближе к реальности.

Именно поэтому качественный SLAM способен удерживать стабильную локальную карту в течение длительного времени даже при отсутствии спутниковой навигации.

Вывод главы

Bundle Adjustment — это механизм, который превращает последовательность приблизительных оценок в согласованную геометрическую модель окружающего мира.

Без него Visual Odometry быстро деградирует из-за накопления ошибок. С ним карта становится значительно точнее, а траектория — устойчивее.

Именно Bundle Adjustment является одной из главных причин, почему современные системы SLAM способны работать не минуты, а часы.

Часть 8. Loop Closure — как беспилотник понимает, что уже был здесь раньше

«Настоящий SLAM начинается не тогда, когда робот строит карту, а тогда, когда он способен узнать место, которое видел час назад, с другого ракурса и при другом освещении.»

Почему даже Bundle Adjustment не спасает?

После предыдущей главы может показаться, что проблема решена.

Есть:

  • Visual Odometry;
  • Bundle Adjustment;
  • тысячи ориентиров;
  • точная локальная карта.

Почему тогда существует еще один огромный модуль?

Ответ очень простой.

Представим полет.

Старт

100 метров

300 метров

600 метров

1000 метров

Возвращение домой

Каждый метр полета содержит небольшую ошибку.

Например,

не

1 метр,

а всего

0,2 %

Через километр получится уже несколько метров накопленного дрейфа.

Когда дрон вернется домой,

его карта будет выглядеть так.

Реальность

□────────────□

SLAM

□───────────╮

Начало и конец маршрута не совпадут.

Хотя в реальности это одно место.

Именно это и исправляет Loop Closure

Loop Closure отвечает только на один вопрос.

"Я уже видел это место раньше?"

Не

"где я?"

Не

"куда лечу?"

А именно

узнавание места.

Почему задача настолько сложная?

Представим.

Утром дрон сфотографировал здание.

Через час

он снова прилетел туда.

Но теперь:

  • солнце находится с другой стороны;
  • появились тени;
  • машины припаркованы иначе;
  • люди ушли;
  • дверь открыта;
  • деревья качаются.

Для человека очевидно,

что это то же самое место.

Для компьютера —

совсем нет.

Человек узнает место мгновенно

Посмотрите на свою квартиру.

Вы узнаете ее:

  • ночью;
  • днем;
  • зимой;
  • после ремонта;
  • даже если переставить мебель.

Почему?

Потому что мозг не сравнивает пиксели.

Он узнает

структуру сцены.

Именно этому пытается научиться SLAM.

Place Recognition

Первый этап Loop Closure называется

Place Recognition

(распознавание места).

Алгоритм должен ответить:

Среди десятков тысяч кадров

есть ли похожий?

Почему нельзя сравнивать все изображения?

Представим.

Дрон летал

30 минут.

Получилось

60 FPS

×

1800 секунд

=

108 000 кадров

Если каждый новый кадр сравнивать

со всеми предыдущими,

получится

миллиарды сравнений.

Это невозможно.

Bag of Words

В начале 2000-х инженеры заимствовали идею

из поисковых систем.

Представим текст.

Вместо хранения всей книги

можно хранить только частоту слов.

Например.

война

34

солдат

82

дрон

127

танк

11

Получается компактное описание документа.

Эта идея получила название

Bag of Words

Как это работает для изображений?

Вместо слов используются

визуальные признаки.

Например.

Есть

миллион ORB-дескрипторов.

Их объединяют

в словарь.

Получается

например

Слово №125

окно

Слово №338

угол

Слово №441

кирпич

Слово №932

дверная ручка

Конечно,

компьютер не знает,

что это окно.

Это просто номера кластеров признаков.

Но идея остается такой же.

Построение Visual Vocabulary

Сначала собирается огромная база изображений.

Например,

миллионы фотографий.

Из них извлекаются

ORB-дескрипторы.

Затем применяется

кластеризация

(K-Means).

Получается

дерево слов.

Например.

Все признаки

1000 групп

100 групп

10 групп

Visual Word

Так строится

Visual Vocabulary.

DBoW2

Самая известная реализация

Bag of Words

для SLAM —

DBoW2

Именно ее использует

ORB-SLAM2

и

ORB-SLAM3.

Репозиторий:

  • DBoW2 GitHub

Как работает поиск?

Представим.

Получен новый кадр.

Из него извлекли

3000 признаков.

Каждый признак заменили

номером слова.

Получилось

что-то вроде:

125

337

18

441

441

812

932

125

Фактически

получилась

"статья"

из визуальных слов.

Теперь можно сравнить

ее

со всеми предыдущими кадрами

очень быстро.

TF-IDF

Bag of Words использует

тот же принцип,

что и Google.

Редкие признаки

ценнее,

чем распространенные.

Например.

Угол кирпича

встречается

почти везде.

Он малоинформативен.

А вот

редкая вентиляционная решетка

может встретиться

только один раз.

Следовательно,

ее вес будет гораздо выше.

Это называется

TF-IDF

(Term Frequency – Inverse Document Frequency).

Кандидат найден

Представим.

Из

100 000 кадров

система выбрала

5 наиболее похожих.

Это еще

не означает,

что Loop Closure найден.

Нужна проверка.

Геометрическая проверка

Теперь запускается

тот же RANSAC,

который мы изучали ранее.

Если совпадения

действительно

образуют одну и ту же геометрию,

значит

место найдено.

Если нет —

ложное совпадение.

Почему ложные Loop Closure опаснее всего?

Представьте.

Дрон летит

вдоль одинаковых складов.

□ □ □ □ □ □

Все здания одинаковые.

Если алгоритм решит,

что склад №12 —

это склад №2,

карта буквально "сложится".

Ошибка может составить

десятки метров.

Именно поэтому

геометрическая проверка

обязательна.

Что происходит после обнаружения Loop Closure?

Вот теперь начинается

магия.

Предположим,

карта выглядела так.

Начало

□───────────────╮

□ Конец

Loop Closure говорит:

Начало и конец —

одно место.

Теперь система должна

свести карту.

Получается

□──────────────□

Весь маршрут

перестраивается.

Все камеры

немного перемещаются.

Все точки

немного корректируются.

И ошибка,

которая копилась

полчаса,

почти исчезает.

Pose Graph

Теперь карта

уже представляет собой

не просто набор точек.

Она становится

графом.

Узел графа —

это

положение камеры.

●────●────●────●

Ребро —

измерение

между двумя камерами.

Когда найден

Loop Closure,

добавляется

новое ребро.

Получается.

●────●────●────●

│ │

└───────────────┘

Теперь граф

становится замкнутым.

Pose Graph Optimization

После добавления нового ребра

запускается

глобальная оптимизация.

Используются

те же библиотеки:

  • g2o
  • GTSAM
  • Ceres Solver

Но теперь оптимизируются

не точки,

а вся траектория.

Почему ORB-SLAM3 считается настолько надежным?

Потому что

Loop Closure

работает

в отдельном потоке.

Пока

Front-End

обрабатывает

новые кадры,

Loop Thread

ищет

повторные места.

Если они найдены,

Back-End

перестраивает карту,

не останавливая полет.

Что происходит на практике?

Представим квадрокоптер, выполняющий инспекцию солнечной электростанции.

Он пролетает вдоль первого ряда панелей, затем второго, третьего и, наконец, возвращается к месту старта.

Если Loop Closure отсутствует, траектория постепенно «уплывает», и к концу миссии карта может оказаться смещенной на несколько метров.

Если же система распознает место старта и подтверждает это геометрически, вся накопленная ошибка распределяется по траектории. В результате координаты становятся значительно ближе к реальным, а карта замыкается без заметного разрыва.

Современные системы распознавания мест

Bag of Words по-прежнему широко применяется благодаря своей скорости, однако сегодня активно используются и нейросетевые методы.

Наиболее известные:

  • NetVLAD — формирует глобальный дескриптор сцены, устойчивый к изменениям ракурса и освещения.
  • OpenVPRLab — современная платформа для исследований в области Visual Place Recognition.
  • CosPlace — модель для распознавания мест в крупных городах и на больших расстояниях.

Именно такие подходы постепенно приходят на смену классическим словарям визуальных признаков.

Практический вывод

Можно сказать, что:

  • Visual Odometry отвечает: «Куда я только что переместился?»
  • Bundle Adjustment отвечает: «Давайте уточним всю историю движения.»
  • Loop Closure отвечает: «Я снова оказался в уже знакомом месте.»

Без Loop Closure любая система со временем превращается в очень хорошую одометрию с неизбежным дрейфом.

С Loop Closure она становится настоящей системой Simultaneous Localization and Mapping.

Часть 9. Visual-Inertial SLAM (VIO) — как камера и IMU вместе удерживают дрон без GPS

«Камера видит мир, но видит редко. IMU ничего не видит, но чувствует каждое движение. Только вместе они позволяют дрону зависать в воздухе там, где GPS давно перестал работать.»

Самый главный вопрос

Вернемся к задаче, с которой начиналось наше руководство.

Представьте квадрокоптер.

Высота:

200 метров

GPS отсутствует.

ГЛОНАСС отсутствует.

Радиомаяков нет.

Ветер:

8 м/с

Порывы —

до

12 м/с

Можно ли удержать аппарат в одной точке?

Ответ —

да.

Но только при условии, что работают сразу несколько систем.

Главная из них —

Visual-Inertial SLAM.

Почему одной камеры недостаточно?

Представим, камера работает с частотой

30 FPS

Это означает:

новый кадр приходит каждые

33 миллисекунды

Для человека это мгновение.

Для квадрокоптера — вечность.

Что происходит за 33 миллисекунды?

Представим небольшой порыв ветра.

За

33 мс

аппарат уже успел:

  • накрениться;
  • изменить скорость;
  • начать вращение;
  • сместиться на несколько сантиметров.

Но камера еще ничего не увидела.

Получается,

контроллер "слеп".

А теперь посмотрим на IMU

Современный инерциальный модуль работает:

400 Гц

1000 Гц

2000 Гц

То есть новое измерение приходит каждые

1 миллисекунду

или даже быстрее.

Получается интересная картина.

Камера говорит:

Где я был 30 миллисекунд назад.

IMU говорит:

Что происходит прямо сейчас.

Камера и IMU идеально дополняют друг друга

Именно поэтому инженеры часто используют такую аналогию.

Камера —

это

глаза.

IMU —

это

вестибулярный аппарат человека.

Попробуйте закрыть глаза.

Вы всё равно ощущаете:

  • поворот головы;
  • ускорение;
  • наклон.

Это делает внутреннее ухо.

Точно так же работает IMU.

Что находится внутри IMU?

Типичный модуль содержит два основных датчика.

Гироскоп

Измеряет угловую скорость.

Например.

Roll

12°/с

Pitch

−4°/с

Yaw

18°/с

Он отвечает на вопрос:

Насколько быстро вращается аппарат?

Акселерометр

Измеряет ускорение.

Например.

X

0.18 g

Y

−0.03 g

Z

1.02 g

Он отвечает:

Какие силы сейчас действуют на дрон?

Почему IMU недостаточно?

Представим идеальный эксперимент.

Дрон неподвижен.

На самом деле

скорость

0

Но акселерометр измерил

0.015 м/с²

Крошечная ошибка.

Контроллер начинает интегрировать.

Через минуту появляется ложная скорость.

Через пять минут —

ложное положение.

Это называется

дрейф IMU.

А камера?

У камеры противоположная проблема.

Она практически не имеет накопленного дрейфа.

Если дрон снова увидел тот же угол здания,

камера мгновенно понимает:

Я снова здесь.

Но между кадрами она ничего не знает.

Получается удивительная ситуация.

КамераIMU
Очень точнаяМенее точная
МедленнаяОчень быстрая
Не любит темнотуНе зависит от света
Нет накопленного дрейфаОшибка постепенно растет

Получается,

недостатки одной системы

идеально компенсируются достоинствами другой.

Sensor Fusion

Объединение датчиков называется

Sensor Fusion.

Это одна из самых сложных задач современной робототехники.

Как происходит объединение?

Представим временную шкалу.

0 мс

IMU

IMU

IMU

IMU

IMU

IMU

Камера

IMU

IMU

IMU

IMU

Камера

Пока камера молчит,

контроллер использует IMU.

Как только приходит новый кадр,

камера корректирует накопившийся дрейф.

Preintegration — одно из важнейших открытий

Раньше использовали все измерения IMU по отдельности.

Это было очень дорого вычислительно.

В 2015 году группа Кристиана Форстера (ETH Zurich) предложила алгоритм IMU Preintegration.

Суть идеи:

вместо обработки сотен отдельных измерений между двумя кадрами они объединяются в одно компактное инерциальное ограничение.

Это резко уменьшило вычислительную нагрузку и стало стандартом практически для всех современных VIO-систем.

Работа:

Forster et al. "IMU Preintegration on Manifold" (RSS 2015) — одна из наиболее цитируемых статей в этой области.

Как выглядит поток данных?

IMU

├──────────────┐

│ │

▼ │

Preintegration │

Камера───────────┘

Feature Tracking

Совместная оптимизация

6DoF

Именно эта схема лежит в основе большинства современных VIO.

EKF или Factor Graph?

Сегодня существуют две основные школы.

Первая

Extended Kalman Filter

(EKF)

Это развитие классического фильтра Калмана.

Он постоянно поддерживает

текущее состояние системы.

После каждого нового измерения

оно немного корректируется.

Преимущества:

  • высокая скорость;
  • небольшие требования к памяти;
  • отлично подходит для микроконтроллеров.

Недостатки:

  • трудно учитывать большое количество старых наблюдений;
  • накопление ошибок выше.

Вторая школа

Factor Graph

Именно она сейчас доминирует.

Вместо фильтра

строится граф.

Каждый узел —

положение камеры.

Каждое ребро —

измерение.

Получается огромная сеть ограничений.

●────●────●────●

│ │ │

●────●────●────●

Теперь оптимизируется

не последнее измерение,

а вся история движения.

Именно поэтому современные проекты,

такие как ORB-SLAM3,

OpenVINS

и VINS-Fusion,

используют факторные графы.

Самые известные Visual-Inertial системы

VINS-Mono

Один из наиболее известных открытых проектов.

Особенности:

  • одна камера;
  • IMU;
  • Loop Closure;
  • глобальная оптимизация.

Репозиторий:

VINS-Mono

GitHub

VINS-Fusion

Следующее поколение.

Поддерживает:

  • несколько камер;
  • GPS;
  • IMU;
  • Loop Closure.

Репозиторий:

VINS-Fusion GitHub

OpenVINS

Один из наиболее чисто реализованных академических проектов.

Особенности:

  • MSCKF;
  • высокая скорость;
  • отличная документация.

Репозиторий:

OpenVINS GitHub

Basalt

Современная система Visual-Inertial SLAM от исследователей ETH Zurich.

Особенности:

  • высокая производительность;
  • поддержка стереокамер;
  • оптимизация под современные процессоры.

Репозиторий:

Basalt GitHub

Почему DJI зависает так стабильно?

Хотя внутренние алгоритмы DJI не опубликованы, по патентам, научным публикациям и поведению аппаратов можно сделать обоснованный вывод, что современные профессиональные дроны используют комбинацию нескольких источников данных:

  • IMU высокой частоты;
  • барометр;
  • GNSS;
  • камеры визуального позиционирования;
  • иногда стереокамеры или датчики глубины.

Все эти данные объединяются системой оценки состояния (state estimation), которая непрерывно уточняет положение аппарата. Конкретная архитектура является коммерческой тайной, поэтому утверждать использование определённого алгоритма (например, ORB-SLAM3 или VINS-Mono) нельзя.

А можно ли зависать на 200 метрах без GPS?

Теперь возвращаемся к самому интересному вопросу.

Теоретически — да.

Но только при соблюдении нескольких условий.

Необходимы:

  • Хорошая текстура под дроном (дороги, здания, поля с выраженной структурой).
  • Достаточное освещение.
  • Качественная камера с глобальным затвором.
  • Хорошо откалиброванная IMU.
  • Высокопроизводительный вычислитель (например, NVIDIA Jetson Orin, Qualcomm RB5 или аналогичный).
  • Современный VIO/SLAM.

Если же под аппаратом:

  • снег;
  • вода;
  • густой туман;
  • однородное поле;
  • ночное небо,

визуальная навигация резко ухудшается, поскольку системе становится трудно находить устойчивые ориентиры.

Что будет в следующей главе?

До этого момента мы рассматривали камеры как основной источник информации.

Однако существует другой класс систем, который всё чаще применяется в промышленной робототехнике и автономных автомобилях — LiDAR SLAM.

В следующей части мы подробно разберём:

  • почему лидар способен работать ночью и в условиях слабого освещения;
  • как устроены современные 16-, 32-, 64- и 128-лучевые лидары;
  • что такое ICP (Iterative Closest Point), NDT (Normal Distributions Transform) и LOAM (Lidar Odometry and Mapping);
  • чем Visual SLAM отличается от LiDAR SLAM;
  • почему самые надёжные автономные платформы используют гибридный подход Visual–LiDAR–Inertial SLAM.

Это позволит понять, почему в современных автономных системах камеры и лидары всё чаще работают совместно, а не конкурируют друг с другом.

Часть 10. LiDAR SLAM — когда беспилотник «видит» мир лазером вместо камеры

«Камера видит цвета. LiDAR видит расстояния. Именно поэтому ночью лидар часто оказывается полезнее человеческого зрения.»

Почему инженеры начали использовать LiDAR?

К этому моменту мы уже подробно изучили Visual SLAM.

Он прекрасно работает:

  • днем;
  • в городе;
  • над дорогами;
  • внутри помещений.

Но теперь представим другую задачу.

Беспилотник инспектирует линию электропередачи ночью.

Камера видит вот это:

████████████

████████████

████████████

Практически ничего.

Для Visual SLAM работа становится крайне сложной.

Теперь включается LiDAR.

Через доли секунды появляется трехмерное облако точек.

Освещение больше не имеет значения.

Что такое LiDAR?

LiDAR (Light Detection and Ranging) — это активный дальномер.

Он не наблюдает отраженный солнечный свет.

Он сам излучает лазерный импульс.

Как измеряется расстояние?

Работает очень просто.

Лазер испускает короткий импульс.

LiDAR

Дом

Измеряется время,

за которое импульс вернулся обратно.

Используется известная формула:

Расстояние =

скорость света

×

время

/

2

Деление на два необходимо,

потому что луч проходит путь

туда

и обратно.

Насколько это быстро?

Скорость света:

299 792 458 м/с

Если объект находится

в

100 метрах,

луч возвращается примерно через

667 наносекунд

То есть менее одной миллионной доли секунды.

Из одной точки получается карта

Представим,

LiDAR сделал

одно измерение.

Затем повернулся

на

0,2°.

Получилась следующая точка.

Еще поворот.

  • • •

Через доли секунды

получается

облако из миллионов точек.

Point Cloud

Так называется основной результат работы лидара.

Не изображение.

Не фотография.

А множество координат.

Например.

P1

X=4.12

Y=8.54

Z=2.17

---------

P2

X=4.16

Y=8.61

Z=2.18

И так

сотни тысяч раз.

Почему Point Cloud лучше фотографии?

Представим стену.

Фотография:

██████████

Что известно?

Только цвет.

Теперь облако точек.

X

Y

Z

Известны реальные координаты поверхности.

Поэтому можно измерить:

  • расстояние;
  • объем;
  • угол;
  • уклон;
  • высоту.

Типы лидаров

Сегодня существует несколько архитектур.

Механический LiDAR

Самый известный.

Вращается вся головка.

Например:

  • Ouster OS1
  • Velodyne Alpha Prime

Преимущества:

  • большой угол обзора;
  • высокая дальность;
  • отличная точность.

Недостатки:

  • подвижные части;
  • масса;
  • стоимость.

Solid-State LiDAR

Никаких вращающихся элементов.

Сканирование производится электронным способом.

Например:

  • Livox Mid-360
  • Hesai XT32M2X

Преимущества:

  • компактность;
  • надежность;
  • меньшая цена;
  • высокая виброустойчивость.

Именно такие лидары всё чаще устанавливаются на БПЛА.

Сколько лучей бывает?

Очень часто можно услышать:

16 Beam

32 Beam

64 Beam

128 Beam

Это означает количество одновременно работающих лазерных каналов.

16 лучей

Подходит:

  • небольшим роботам;
  • простым БПЛА;
  • картографированию.

64 луча

••••••••••••••

••••••••••••••

••••••••••••••

Получается уже очень плотная карта.

Именно такие системы долгое время использовались в автономных автомобилях.

Но как построить карту?

Получили

два облака точек.

Первое.

●●●●

●●●●

Через секунду —

второе.

●●●●

●●●●

Теперь нужно определить,

насколько сместился лидар.

ICP

Самый известный алгоритм.

Iterative Closest Point

Идея ICP

Представим два облака.

Первое.

Второе.

Необходимо

сдвигать,

вращать

и поворачивать

второе облако,

пока точки максимально не совпадут.

Получается.

●○

●○

●○

Это и есть

ICP.

Почему ICP работает медленно?

Представим.

Одно облако содержит

300 000 точек

Второе —

столько же.

Для каждой точки

нужно найти

ближайшую.

Получаются

десятки миллиардов сравнений.

Поэтому современные реализации используют:

  • KD-Tree;
  • Octree;
  • GPU.

Point-to-Point ICP

Самый простой вариант.

Минимизируется расстояние между точками.

●----------○

Работает хорошо,

но чувствителен к шуму.

Point-to-Plane ICP

Более современный вариант.

Минимизируется расстояние

не до точки,

а до поверхности.

────────────

Получается значительно быстрее

и точнее.

Практически все современные проекты используют именно этот подход.

NDT

Еще один популярный алгоритм.

Normal Distributions Transform

Вместо хранения отдельных точек

пространство разбивается

на кубики.

В каждом кубике

строится

нормальное распределение.

Получается гладкая математическая модель.

Почему NDT иногда лучше ICP?

Представим лес.

ICP пытается совместить

миллионы листьев.

NDT описывает

весь участок

несколькими распределениями.

Поэтому вычислений

становится меньше.

LOAM — революция 2014 года

Настоящий прорыв произошел после публикации статьи:

LOAM (Lidar Odometry and Mapping).

Авторы предложили разделить вычисления.

Быстрый поток.

LiDAR

Odometry

100 Гц

Медленный поток.

LiDAR

Mapping

10 Гц

Получилось одновременно:

  • быстро;
  • точно.

Эта идея до сих пор используется во многих современных системах.

Современные наследники LOAM

Сегодня существует целое семейство алгоритмов.

A-LOAM

Упрощенная открытая реализация LOAM.

Репозиторий:

  • A-LOAM GitHub

FAST-LIO2

Один из самых быстрых современных LiDAR–IMU SLAM.

Особенности:

  • объединение IMU и LiDAR;
  • работа в реальном времени;
  • высокая устойчивость.

Репозиторий:

  • FAST-LIO2 GitHub

LIO-SAM

Одна из лучших современных систем.

Использует:

  • LiDAR;
  • IMU;
  • факторные графы;
  • GTSAM.

Репозиторий:

  • LIO-SAM GitHub

Почему LiDAR не заменил камеры?

Может показаться,

что лидар лучше во всем.

Но это не так.

Представим белую стену.

Для камеры:

██████████

Почти нет текстуры.

Visual SLAM испытывает трудности.

Лидар измерит её форму идеально.

Теперь посмотрим на дорожный знак.

Камера сразу распознает:

  • текст;
  • цвет;
  • символы.

Лидар увидит только плоскую пластину.

Поэтому эти технологии решают разные задачи.

Сравнение технологий

ХарактеристикаVisual SLAMLiDAR SLAM
Работа ночьюОграниченаОтличная
Работа в туманеСильно ухудшаетсяЧастично сохраняется
Цветовая информацияЕстьНет
Геометрическая точностьВысокаяОчень высокая
Масса оборудованияНизкаяВыше
СтоимостьНижеЗначительно выше
ЭнергопотреблениеНизкоеВыше

Что используют современные автономные БПЛА?

Наиболее совершенные системы практически никогда не полагаются только на один тип сенсоров.

Типовая архитектура выглядит так:

Камеры

Visual SLAM

├────────┐

│ │

▼ ▼

IMU ───► Sensor Fusion ◄─── LiDAR

State Estimation

Автопилот PX4 / ArduPilot

Управление полётом

Именно такой подход называют мультимодальной навигацией (Multi-Sensor Fusion). Если один датчик временно теряет качество данных (например, камера в сумерках или лидар под сильным дождём), остальные продолжают поддерживать оценку положения аппарата.

Практический вывод

Для задачи, с которой началось наше исследование — удержание беспилотника на высоте около 200 метров без GPS, — лидар не является универсальным решением.

На такой высоте большинство компактных лидаров уже работает на пределе дальности и получает недостаточно плотное облако точек для точного позиционирования относительно земли. Кроме того, масса, энергопотребление и стоимость делают их менее привлекательными для небольших БПЛА.

Поэтому в современных беспилотниках чаще применяется комбинация:

  • Visual-Inertial SLAM — как основной источник локализации;
  • LiDAR — для картографирования, обхода препятствий и повышения надёжности в сложных условиях;
  • барометр, магнитометр и другие датчики — для дополнительной стабилизации.

Часть 11. Аппаратная архитектура автономного БПЛА — какое оборудование действительно необходимо для полета без GPS

«Алгоритм может быть идеальным, но если камера смазывает изображение, а IMU шумит, никакой SLAM не спасет аппарат.»

От алгоритмов к реальному железу

Мы уже подробно рассмотрели:

  • Feature Detection;
  • Visual Odometry;
  • Bundle Adjustment;
  • Loop Closure;
  • Visual-Inertial SLAM;
  • LiDAR SLAM.

Теперь пришло время ответить на главный инженерный вопрос.

Какое оборудование действительно используется в современных системах автономной навигации?

Именно на этом этапе большинство любительских проектов начинает существенно отличаться от промышленных решений.

Полная архитектура автономного дрона

Современный автономный БПЛА можно представить как несколько взаимосвязанных уровней.

Миссия

Планировщик маршрута

Навигация (SLAM/VIO)

State Estimation (EKF)

Автопилот PX4 / ArduPilot

ESC → Двигатели → Винты

SLAM вообще не управляет моторами.

Он только отвечает на вопрос:

"Где сейчас находится аппарат?"

Какие датчики необходимы?

Практически любой современный автономный БПЛА использует следующий набор.

Камера

IMU

Барометр

Магнитометр

GPS (если доступен)

Иногда LiDAR

Иногда Radar

Иногда UWB

Все они поступают в систему оценки состояния.

Камера — самый важный датчик Visual SLAM

От качества камеры зависит больше половины успеха.

Большинство новичков выбирает камеру по разрешению.

Это ошибка.

Для SLAM гораздо важнее:

  • глобальный затвор;
  • низкий уровень шума;
  • высокая частота кадров;
  • хороший динамический диапазон;
  • стабильная экспозиция.

Rolling Shutter — главный враг дрона

Большинство дешевых камер используют

Rolling Shutter.

Что происходит?

Матрица считывается построчно.

────────────

────────────

────────────

────────────

Если дрон быстро вращается,

верх изображения уже снят,

а низ —

еще нет.

Получается

искривление объектов.

Например.

Настоящая башня

Rolling Shutter

/

/

/

/

SLAM воспринимает такие искажения как движение сцены.

Ошибка резко возрастает.

Global Shutter

Профессиональные камеры работают иначе.

Все пиксели экспонируются одновременно.

██████████

██████████

██████████

Никаких перекосов.

Именно поэтому почти все промышленные системы используют Global Shutter.

Лучшие камеры для Visual SLAM

Sony IMX296

Очень популярный промышленный сенсор.

Особенности:

  • Global Shutter;
  • высокая чувствительность;
  • хорошая работа ночью.

Документация:

  • Sony IMX296

Sony IMX568

Одно из самых современных решений.

Преимущества:

  • высокая скорость;
  • низкий шум;
  • широкий динамический диапазон.

FLIR Blackfly S

Один из стандартов исследовательских лабораторий.

Особенности:

  • аппаратная синхронизация;
  • Global Shutter;
  • высокая стабильность.

Официальный сайт:

  • FLIR Blackfly S

Почему объектив не менее важен?

Даже лучшая камера бесполезна,

если установлен дешевый объектив.

Критические параметры:

  • минимальная дисторсия;
  • высокая резкость по краям;
  • отсутствие люфта;
  • фиксированное фокусное расстояние.

IMU — сердце системы

Если камера —

глаза,

то IMU —

вестибулярный аппарат.

Большинство современных модулей включает:

Гироскоп

+

Акселерометр

Иногда добавляют

магнитометр.

MEMS или FOG?

Существует несколько классов IMU.

MEMS

Используются почти во всех БПЛА.

Преимущества:

  • компактность;
  • низкая цена;
  • небольшой вес.

Недостаток —

дрейф.

FOG (Fiber Optic Gyroscope)

Используют интерференцию света в оптоволокне.

Преимущества:

  • чрезвычайно малый дрейф;
  • высокая точность.

Недостатки:

  • высокая стоимость;
  • большие размеры;
  • большее энергопотребление.

FOG чаще применяется в авиации, морских системах и высокоточных инерциальных навигационных комплексах, чем на малых квадрокоптерах.

Популярные IMU

Bosch BMI088

Один из наиболее популярных датчиков для дронов.

Особенности:

  • хорошая виброустойчивость;
  • низкий шум.

Документация:

  • Bosch BMI088

InvenSense ICM-42688-P

Очень распространен в современных полетных контроллерах.

Особенности:

  • высокая частота измерений;
  • низкое энергопотребление.

Документация:

  • ICM-42688-P

Analog Devices ADIS16470

Промышленный класс.

Используется:

  • роботами;
  • наземной техникой;
  • автономными платформами.

Документация:

  • ADIS16470

Барометр

Многие недооценивают этот датчик.

На практике именно он удерживает высоту гораздо стабильнее, чем IMU.

Наиболее популярны:

  • Bosch BMP388;
  • Infineon DPS310.

Барометр не знает абсолютной высоты над уровнем моря с высокой точностью, но отлично фиксирует относительные изменения высоты.

Магнитометр

Используется для определения курса.

Однако рядом с:

  • линиями электропередачи;
  • металлическими конструкциями;
  • мощными электродвигателями;
  • средствами радиоэлектронной борьбы,

его показания могут существенно искажаться.

Поэтому современные системы стараются не делать магнитометр единственным источником информации о курсе.

Вычислительная платформа

Теперь переходим к самому дорогому компоненту.

Raspberry Pi 5

Подходит:

  • обучение;
  • небольшие роботы;
  • эксперименты.

Недостаток —

недостаточная производительность для сложного Visual SLAM с нейросетями.

NVIDIA Jetson Orin Nano

Сегодня одна из самых популярных платформ.

Преимущества:

  • GPU;
  • CUDA;
  • TensorRT;
  • поддержка ROS2.

Официальный сайт:

  • Jetson Orin Nano

NVIDIA Jetson Orin NX

Используется во многих промышленных проектах.

Позволяет одновременно выполнять:

  • Visual SLAM;
  • обнаружение объектов;
  • планирование маршрута;
  • нейронные сети.

Qualcomm RB5

Очень интересная альтернатива.

Особенности:

  • низкое энергопотребление;
  • встроенный AI Accelerator;
  • хорошая интеграция с камерами.

Официальный сайт:

  • Qualcomm Robotics RB5 Platform

Полетный контроллер

SLAM не заменяет автопилот.

Обычно используются:

PX4

Открытая архитектура.

Поддерживает:

  • MAVLink;
  • ROS2;
  • внешние системы навигации.

Официальный сайт:

  • PX4 Autopilot

ArduPilot

Еще одна популярная открытая система.

Поддерживает:

  • самолеты;
  • квадрокоптеры;
  • наземных роботов;
  • катера.

Официальный сайт:

  • ArduPilot

Как все соединяется?

Полная схема современного автономного БПЛА выглядит так.

Камера

Visual Front-End

Visual-Inertial SLAM

▲ │

│ ▼

IMU State Estimation

Барометр ──────┤

Магнитометр ──────┤

GPS ─────────┤ (если доступен)

MAVLink ODOMETRY

PX4 / ArduPilot

Контроллер PID

ESC ×4

Двигатели

Самая распространенная ошибка начинающих

Многие считают:

"Достаточно купить дорогую камеру."

Это неверно.

SLAM — это система.

Если хотя бы один компонент работает плохо, страдает вся цепочка.

Типичные проблемы:

  • вибрации двигателя передаются на IMU;
  • объектив плохо закреплен;
  • камера не синхронизирована с IMU;
  • неправильная калибровка внутренних параметров камеры;
  • плохая временная синхронизация между датчиками.

На практике именно калибровка и синхронизация часто оказываются важнее, чем выбор самой дорогой камеры или вычислителя.

Практический пример конфигурации

Для создания экспериментального автономного квадрокоптера с удержанием позиции без GPS сегодня можно рассматривать следующий стек:

КомпонентРекомендуемый вариант
КамераFLIR Blackfly S или модуль на Sony IMX296 (Global Shutter)
IMUBMI088 или ICM-42688-P
ВычислительNVIDIA Jetson Orin Nano
Полётный контроллерPixhawk с PX4
ПОROS 2 + ORB-SLAM3 или OpenVINS
ДополнительноБарометр, магнитометр, при необходимости лидар для обхода препятствий

Такой комплект соответствует современной исследовательской архитектуре и позволяет экспериментировать с автономной навигацией в условиях отсутствия GPS.

Часть 12. От камеры до моторов. Как данные SLAM управляют беспилотником

«Большинство начинающих инженеров думают, что SLAM управляет дроном. На самом деле он лишь отвечает на один вопрос: "Где я?". Управление — это задача автопилота.»

Главный миф автономной навигации

Когда говорят:

"Дрон летает на SLAM"

это не совсем верно.

На самом деле SLAM вообще не знает:

  • что такое двигатель;
  • что такое ESC;
  • что такое PID;
  • сколько оборотов у моторов.

Для него существует только математика.

На выходе SLAM получает одну очень маленькую структуру данных.

Например:

Position

X = 124.38

Y = -17.24

Z = 203.17

Rotation

Roll = 0.8°

Pitch = -2.3°

Yaw = 187.2°

Всего шесть чисел.

Но именно они становятся основой управления всем беспилотником.

Кто действительно управляет двигателями?

Настоящим пилотом является

Flight Controller

Например:

  • PX4
  • ArduPilot

Автопилот принимает решения:

  • увеличить тягу;
  • уменьшить обороты;
  • наклониться вперед;
  • остановить аппарат;
  • выполнить миссию.

Как выглядит полный путь данных?

Представим полет.

Камера делает снимок.

Через несколько миллисекунд начинается длинная цепочка вычислений.

Камера

SLAM

Оценка положения

Автопилот

Контроллер

ESC

Двигатели

На первый взгляд всё выглядит просто.

Но внутри происходит десятки отдельных процессов.

Разделим систему на уровни

Современная архитектура напоминает операционную систему.

Каждый уровень отвечает только за свою задачу.

Уровень 1

Датчики.

Камера

IMU

Барометр

GPS

LiDAR

Уровень 2

Обработка данных.

Visual SLAM

Visual Inertial SLAM

LiDAR SLAM

Уровень 3

State Estimation

Именно здесь объединяются:

  • SLAM;
  • IMU;
  • GPS;
  • барометр;
  • магнитометр.

Получается единое положение аппарата.

Уровень 4

Контроллер полета.

PX4

или

ArduPilot.

Уровень 5

Низкоуровневое управление.

PWM

DShot

CAN

Уровень 6

ESC.

Уровень 7

Моторы.

Почему нужен ROS?

Представим,

каждый модуль написан

разными инженерами.

SLAM —

одной командой.

Навигация —

другой.

Планировщик —

третьей.

Нужно как-то обмениваться сообщениями.

Именно для этого используется

ROS 2

(Robot Operating System).

Официальный сайт:

  • ROS 2 Documentation

ROS — это не операционная система

Несмотря на название,

ROS не заменяет Linux.

Он работает поверх Ubuntu и предоставляет инфраструктуру обмена сообщениями между программами.

Можно представить его как очень быструю "почтовую службу" между процессами.

Что такое Node?

В ROS всё состоит из независимых узлов.

Например.

Camera Node

SLAM Node

Planner Node

PX4 Node

Каждый процесс работает отдельно.

Если один модуль перезапустить,

остальные продолжают работать.

Topics

Как передаются данные?

Через

Topics

Например.

Камера публикует изображения.

/camera/image

SLAM подписывается

на этот канал.

После обработки

создает новый.

/odom

Теперь навигация

подписывается

на

/odom.

Получается

цепочка.

Пример обмена

Камера

/camera/image

ORB-SLAM3

/odom

Planner

/trajectory

PX4

Никаких прямых соединений.

Только публикация сообщений.

Что такое TF?

В любой момент времени

существует сразу несколько координатных систем.

Например.

Мир

Дрон

Камера

IMU

Каждая имеет свои координаты.

Почему это важно?

Представим.

SLAM говорит.

Камера

X = 3

Автопилот спрашивает.

Где находится центр аппарата?

Оказывается,

камера закреплена

не по центру.

Она смещена.

Например.

15 см вперед

4 см вправо

3 см вниз

Следовательно,

координаты камеры

и корпуса

различаются.

TF Tree

ROS постоянно хранит дерево преобразований.

Например.

world

base_link

camera

imu

Благодаря этому

каждый модуль понимает,

где находится любой датчик.

Как SLAM передает координаты PX4?

Через сообщения

MAVLink.

Наиболее важное —

ODOMETRY

Именно оно содержит:

Положение

+

Ориентацию

+

Скорость

+

Угловые скорости

Автопилот воспринимает эти данные

как внешнюю навигационную систему.

Что происходит дальше?

Представим,

SLAM сообщил:

X

125.12

Через

20 миллисекунд

получаем:

125.16

Контроллер понимает,

что аппарат сместился

на

4 сантиметра.

Теперь он вычисляет,

какой наклон нужен,

чтобы вернуть аппарат обратно.

PID-регулятор

Самый известный алгоритм управления.

Он постоянно вычисляет:

Ошибка

Коррекция

Ошибка

Коррекция

Например.

Нужно удерживать

координату

X=0

Но SLAM сообщил:

X=0.14

Получаем ошибку.

Контроллер немного уменьшает тягу

одной пары двигателей

и увеличивает другой.

Аппарат возвращается обратно.

Почему всё должно работать быстро?

Представим задержку.

SLAM работает

не за

20 миллисекунд,

а за

Получается.

Ветер

Аппарат уже улетел

SLAM только заметил

Контроллер начинает исправлять

ошибку,

которая уже давно устарела.

Появляются колебания.

Поэтому задержка —

один из важнейших параметров.

Частоты работы разных систем

СистемаТипичная частота
IMU400–2000 Гц
Контур стабилизации PX4250–1000 Гц
Камера30–120 Гц
Visual SLAM20–60 Гц
Планировщик маршрута1–20 Гц
Обновление миссии<1 Гц

Из таблицы видно,

что SLAM далеко не самый быстрый модуль.

Поэтому он не управляет моторами напрямую.

Внешняя навигация (External Vision)

И PX4, и ArduPilot поддерживают режим,

в котором GPS полностью заменяется внешней системой позиционирования.

Источником могут быть:

  • ORB-SLAM3;
  • OpenVINS;
  • VINS-Fusion;
  • Motion Capture;
  • UWB.

Для автопилота это просто другой источник координат.

Как выглядит полный программный стек?

Камера

ROS Camera Driver

ORB-SLAM3 / OpenVINS

/odom /tf

MAVROS / Micro XRCE-DDS

PX4

EKF2 / Estimator

Position Controller

Attitude Controller

Rate Controller

ESC

Двигатели

Архитектура современных автономных БПЛА

Практически все современные исследовательские и промышленные платформы строятся по одному принципу:

  • Front-End — обработка изображений и поиск признаков.
  • Back-End — оптимизация карты и траектории.
  • State Estimator — объединение данных всех датчиков.
  • Mission Planner — принятие решений и построение маршрута.
  • Flight Controller — непосредственное управление полётом.

Такое разделение позволяет независимо улучшать каждый компонент системы.

Практический пример

Рассмотрим зависание квадрокоптера на высоте 200 метров без GPS.

За одну секунду происходит примерно следующее:

  • IMU выдаёт 1000–2000 измерений.
  • Камера передаёт 30–60 кадров.
  • VIO вычисляет десятки оценок положения.
  • EKF объединяет все данные.
  • Контур управления PX4 сотни раз корректирует тягу двигателей.

Пилот видит лишь неподвижный аппарат в небе, но внутри него каждую секунду выполняются тысячи вычислений.

Вывод главы

SLAM — это лишь один, хотя и критически важный, компонент автономной навигации.

Сам по себе он не умеет управлять дроном. Его задача — максимально точно определить положение аппарата в пространстве и передать эту информацию системе управления.

Именно совместная работа SLAM, State Estimation, автопилота и контуров управления делает возможным устойчивый полёт без GPS.

Часть 13. Создание собственного автономного комплекса: от эксперимента до промышленного прототипа

«Самый сложный этап в SLAM — не написать алгоритм. Самый сложный этап — заставить все компоненты работать вместе в реальном мире: камера, IMU, вычислитель, автопилот, вибрации, задержки и окружающая среда.»

1. С чего начинать разработку автономного БПЛА

Главная ошибка начинающих инженеров:

Сначала купить железо, потом думать о программном обеспечении.

Правильный подход обратный.

Сначала определяется задача.

Например:

Задача А

Удержание позиции без GPS.

Требования:

  • зависание;
  • медленный полет;
  • возврат в исходную точку.

Достаточно:

  • VIO;
  • IMU;
  • барометр;
  • PX4.

Задача Б

Автономный облёт объекта.

Требуется:

  • карта;
  • избегание препятствий;
  • планирование маршрута.

Нужно:

  • SLAM;
  • LiDAR или стереокамера;
  • вычислитель мощнее.

Задача В

Полностью автономная миссия.

Например:

  • поиск объекта;
  • распознавание;
  • принятие решений.

Добавляются:

  • нейронные сети;
  • AI Vision;
  • планировщик поведения.

2. Архитектура экспериментального комплекса

Начнем с реалистичной системы исследовательского уровня.

Камера

NVIDIA Jetson

ROS 2 + SLAM/VIO

MAVLink

PX4 Controller

ESC

Моторы

3. Выбор вычислительной платформы

Уровень 1 — учебный

Raspberry Pi 5

Подходит для:

  • ROS 2;
  • простых алгоритмов;
  • обучения.

Ограничения:

  • сложный SLAM будет работать медленно;
  • нет мощного GPU.

Уровень 2 — оптимальный для разработки

NVIDIA Jetson Orin Nano

Это фактически современный стандарт для робототехники.

Возможности:

  • CUDA;
  • TensorRT;
  • ускорение нейросетей;
  • обработка камер.

Официальная информация:

NVIDIA Jetson Orin Nano Developer Kit

Подходит для:

  • ORB-SLAM3;
  • VINS-Fusion;
  • OpenVINS;
  • YOLO;
  • Deep Learning.

Уровень 3 — промышленный

NVIDIA Jetson AGX Orin

Используется в:

  • роботах;
  • автономных автомобилях;
  • промышленных системах.

Преимущества:

  • высокая производительность;
  • большой запас вычислений.

Недостатки:

  • цена;
  • энергопотребление.

4. Камерный модуль для SLAM

Здесь нельзя экономить.

Камера должна иметь:

Global Shutter

Обязательно для быстрого движения.

Стабильный FPS

Например:

30–60 кадров/сек.

Хорошую синхронизацию

Критично:

камера должна быть синхронизирована с IMU.

Популярные решения

Intel RealSense

Очень распространённая камера в робототехнике.

Например:

Intel RealSense.

Используется:

  • роботами;
  • дронами;
  • лабораторными платформами.

Официальный проект:

Intel RealSense SDK

Плюсы:

  • готовые драйверы;
  • глубина;
  • ROS-поддержка.

Минусы:

  • не все модели имеют Global Shutter.

Luxonis OAK-D

Интересное решение.

Внутри:

  • стереокамеры;
  • нейронный ускоритель;
  • глубина.

Официальный сайт:

Luxonis OAK-D

Подходит для:

  • компактных роботов;
  • небольших БПЛА.

FLIR Blackfly S

Профессиональный вариант.

Плюсы:

  • Global Shutter;
  • промышленное качество;
  • точная синхронизация.

5. Выбор IMU

Для дрона IMU должна быть:

  • низкий шум;
  • высокая частота;
  • хорошая виброустойчивость.

Хорошие варианты:

Bosch BMI088

Один из самых популярных IMU в робототехнике.

Используется во многих автопилотах.

InvenSense ICM-42688

Современный MEMS-сенсор.

Плюсы:

  • высокая частота;
  • низкое энергопотребление.

6. Полётный контроллер

Сам вычислитель SLAM не должен управлять моторами.

Для этого нужен отдельный контроллер.

Pixhawk

Самое распространенное семейство.

Использует:

  • PX4;
  • ArduPilot.

Почему разделяют?

Потому что:

Jetson может зависнуть.

Linux может перезагрузиться.

SLAM может упасть.

Но автопилот должен продолжать удерживать аппарат.

7. Программное обеспечение

Теперь собираем стек.

Операционная система

Обычно:

Ubuntu Linux.

Например:

  • Ubuntu 22.04;
  • ROS 2 Humble.

ROS 2

Основной коммуникационный слой.

Отвечает за:

  • передачу изображений;
  • координаты;
  • TF;
  • управление узлами.

SLAM

Варианты:

ORB-SLAM3

Один из самых известных.

Поддерживает:

  • Monocular;
  • Stereo;
  • RGB-D;
  • Visual-Inertial.

Репозиторий:

ORB-SLAM3 GitHub

OpenVINS

Лучше подходит для чистой VIO.

Особенности:

  • высокая скорость;
  • хорошая документация.

Репозиторий:

OpenVINS GitHub

VINS-Fusion

Хороший компромисс.

Поддерживает:

  • несколько камер;
  • GPS;
  • IMU.

8. Калибровка — самый недооцененный этап

Можно купить оборудование на тысячи евро,

но плохая калибровка уничтожит результат.

Существует несколько типов калибровки.

Внутренняя калибровка камеры

Определяются:

  • фокусное расстояние;
  • центр изображения;
  • дисторсия.

Например:

fx = 520.4

fy = 519.8

cx = 320.1

cy = 240.7

Калибровка камеры и IMU

Нужно узнать:

где находится IMU относительно камеры.

Например:

Camera

10 см вперед

IMU

Используется:

  • Kalibr.

Репозиторий:

Kalibr GitHub

9. Вибрации — главный враг SLAM

Дрон является очень сложной платформой.

Источники вибрации:

  • моторы;
  • пропеллеры;
  • рама;
  • резонансы.

Что происходит?

IMU получает:

не движение,

а вибрацию.

Например:

Настоящее:

ускорение = 0.01g

Измерение:

ускорение = 0.4g

SLAM начинает думать:

аппарат резко движется.

Как бороться?

Используют:

  • балансировку винтов;
  • демпферы;
  • мягкое крепление IMU;
  • фильтры.

10. Первый запуск: только симуляция

Никогда не начинайте сразу с реального полета.

Сначала:

Gazebo

Симулятор физики.

Позволяет:

  • создать дрон;
  • добавить камеру;
  • проверить SLAM.

PX4 SITL

Software In The Loop.

Автопилот работает полностью виртуально.

Схема:

Gazebo

PX4

ROS2

SLAM

11. Реальная последовательность разработки

Правильный порядок:

Этап 1

Запустить камеру.

Проверить:

  • FPS;
  • задержку;
  • качество изображения.

Этап 2

Запустить SLAM на компьютере.

Проверить:

  • строится ли карта;
  • нет ли дрейфа.

Этап 3

Добавить IMU.

Проверить VIO.

Этап 4

Подключить PX4.

Передавать:

/odometry

Этап 5

Только после этого:

первый автономный полет.

12. Реальная конфигурация уровня R&D

Пример современной исследовательской платформы:

КомпонентРешение
КомпьютерJetson Orin Nano
КамераOAK-D / FLIR Blackfly
IMUBMI088
АвтопилотPixhawk + PX4
MiddlewareROS 2 Humble
SLAMORB-SLAM3 / OpenVINS
СвязьMAVLink
КалибровкаKalibr

13. Почему это всё сложно на высоте 200 метров?

Возвращаемся к исходной задаче.

На 200 метрах появляются новые проблемы:

Масштаб

Мелкие детали становятся меньше.

Камере сложнее находить признаки.

Ветер

Аппарат постоянно корректирует положение.

Потеря текстуры

Например:

  • поле;
  • снег;
  • вода.

SLAM теряет ориентиры.

Освещение

Солнце:

  • ослепляет камеру;
  • меняет контраст.

Поэтому реальные системы часто используют комбинацию:

Visual-Inertial SLAM

+

Барометр

+

Radar/LiDAR

+

GNSS (если доступен)

+

AI Vision

Главный вывод

Создание автономного БПЛА без GPS — это не один алгоритм.

Это сложная инженерная система, где:

  • камера дает информацию о мире;
  • IMU дает динамику;
  • SLAM строит понимание пространства;
  • EKF объединяет данные;
  • PX4 управляет полетом;
  • моторы реализуют решение.

Именно эта архитектура позволяет современным роботам и беспилотникам работать там, где классическая навигация невозможна.

Часть 14. Сравнение современных SLAM-систем для БПЛА: ORB-SLAM3, VINS-Fusion, OpenVINS, FAST-LIO2 и LIO-SAM

«Не существует лучшего SLAM вообще. Существует лучший SLAM для конкретной задачи, сенсоров и вычислительных ограничений.»

1. Почему выбор SLAM-системы так важен

На бумаге все системы делают одно и то же:

  • получают данные сенсоров;
  • оценивают положение;
  • строят карту;
  • уменьшают ошибку.

Но в реальном БПЛА разница огромна.

Одна система может идеально работать внутри помещения.

Другая — на улице.

Третья — на скорости 20 м/с.

Четвертая — при полном отсутствии текстуры.

2. Основные классы SLAM для дронов

Сегодня можно разделить системы на четыре больших класса.

1. Visual SLAM

Использует только камеры.

Пример:

  • ORB-SLAM3.

Плюсы:

  • легкий;
  • дешевый;
  • мало энергопотребление.

Минусы:

  • зависит от освещения;
  • плохо работает без текстуры.

2. Visual-Inertial SLAM (VIO)

Камера + IMU.

Это наиболее распространенный вариант для БПЛА.

Примеры:

  • VINS-Fusion;
  • OpenVINS;
  • ORB-SLAM3 V-I.

3. LiDAR SLAM

Использует лазерный сканер.

Примеры:

  • LIO-SAM;
  • FAST-LIO2.

Плюсы:

  • точная геометрия;
  • работает ночью.

Минусы:

  • цена;
  • вес;
  • энергопотребление.

4. Multi-Sensor Fusion

Комбинация:

  • камеры;
  • IMU;
  • LiDAR;
  • GPS;
  • радар.

Это уровень промышленных систем.

3. ORB-SLAM3

Общая информация

ORB-SLAM3 GitHub

ORB-SLAM3 — одна из самых известных открытых SLAM-систем.

Разработчик:

исследовательская группа Universidad de Zaragoza.

Поддерживаемые режимы

ORB-SLAM3 умеет работать:

Monocular

Одна камера.

Камера

SLAM

Stereo

Две камеры.

Левая камера

+

Правая камера

Позволяет сразу получать глубину.

RGB-D

Камера + датчик глубины.

Например:

RealSense.

Visual-Inertial

Камера + IMU.

Наиболее интересный режим для БПЛА.

Архитектура ORB-SLAM3

Camera

ORB Feature Extraction

Tracking

Local Mapping

Loop Closing

Global Optimization

Сильные стороны

1. Отличный Loop Closure

Одна из лучших сторон системы.

Она хорошо понимает:

"Я уже был здесь."

2. Работа с долгими маршрутами

Можно пройти:

  • несколько комнат;
  • большие здания;
  • городские улицы.

3. Хорошая научная база

Очень много исследований используют ORB-SLAM3 как эталон.

Недостатки

Для дрона:

  • достаточно тяжелый вычислительно;
  • требует хорошей настройки;
  • чувствителен к плохой камере.

На слабом процессоре может появиться задержка.

4. VINS-Fusion

Репозиторий:

VINS-Fusion GitHub

Основная идея

VINS создавался именно для летательных аппаратов.

Главный акцент:

Visual-Inertial Odometry.

Архитектура

Camera

Feature Tracking

IMU Preintegration

Estimator

Pose Output

Преимущества

1. Очень хорошая скорость

Подходит для:

  • квадрокоптеров;
  • роботов;
  • мобильных платформ.

2. Отличная работа с IMU

Это главное преимущество.

Для дрона это критично.

3. Поддержка GPS

Можно плавно переходить:

GPS есть:

используем GPS

GPS пропал:

переходим на VIO

Недостатки

Loop Closure менее развит,

чем в ORB-SLAM3.

То есть:

для коротких полетов —

отлично.

Для огромных карт —

хуже.

5. OpenVINS

Репозиторий:

OpenVINS GitHub

Философия OpenVINS

Это не просто готовый продукт.

Это исследовательская платформа.

Главный алгоритм:

MSCKF

(Multi-State Constraint Kalman Filter)

Как работает MSCKF?

Вместо хранения всей карты система хранит:

  • текущие состояния камеры;
  • ограничения между ними.

Это сильно уменьшает вычисления.

Преимущества

Очень высокая скорость

OpenVINS может работать:

  • на ARM;
  • встроенных компьютерах;
  • маломощных системах.

Хорошая стабильность

Особенно:

  • внутри помещений;
  • на небольших БПЛА.

Недостатки

Нет полноценного SLAM в классическом понимании.

То есть:

  • карта ограничена;
  • Loop Closure отсутствует или ограничен.

Это скорее:

очень хороший VIO.

6. FAST-LIO2

Репозиторий:

FAST-LIO2 GitHub

Теперь переходим к лидарным системам.

Что делает FAST-LIO2 особенным?

Он объединяет:

  • LiDAR;
  • IMU.

То есть:

LIO

=

LiDAR-Inertial Odometry.

Главная идея

Вместо тяжелого сопоставления облаков точек используется:

ikd-tree

динамическое дерево ближайших соседей.

Это позволяет:

  • быстро добавлять точки;
  • быстро искать соответствия.

Преимущества

Очень высокая скорость.

Может работать:

  • на дронах;
  • роботах;
  • автономных машинах.

Где он лучше Visual SLAM?

Например:

Ночь.

Камера:

████████

LiDAR:

  • • • • •
  • • • • •

Недостатки

Нужен хороший LiDAR.

А это:

  • масса;
  • цена;
  • энергопотребление.

7. LIO-SAM

Репозиторий:

LIO-SAM GitHub

Архитектура

Использует:

  • LiDAR;
  • IMU;
  • факторный граф;
  • GTSAM.

Схема:

LiDAR

Feature Extraction

Scan Matching

Factor Graph

Optimization

Map

Преимущества

Очень высокая точность.

Особенно:

  • большие территории;
  • картография;
  • наземные роботы.

Недостатки

Для маленького дрона:

может быть слишком тяжелым.

8. Сравнительная таблица

СистемаСенсорыСкоростьКартаДля БПЛА
ORB-SLAM3Камера/IMUСредняяОтличнаяХорошо
VINS-FusionКамера/IMU/GPSВысокаяСредняяОтлично
OpenVINSКамера/IMUОчень высокаяОграниченнаяОтлично
FAST-LIO2LiDAR/IMUОчень высокаяХорошаяОтлично
LIO-SAMLiDAR/IMUСредняяОтличнаяХорошо

9. Что выбрать для зависания на 200 метрах?

Теперь отвечаем на исходную задачу.

Вариант 1

Бюджетный БПЛА.

Цель:

удержание точки.

Оптимально:

Камера Global Shutter

+

IMU

+

OpenVINS

+

PX4

Вариант 2

Исследовательская платформа.

Stereo Camera

+

IMU

+

ORB-SLAM3

+

Jetson Orin

Вариант 3

Промышленный аппарат.

Stereo Camera

+

LiDAR

+

IMU

+

FAST-LIO2

+

VIO Fusion

10. Почему нельзя просто поставить ORB-SLAM3?

Потому что зависание — это не только координаты.

Нужно знать:

  • положение;
  • скорость;
  • ускорение;
  • углы;
  • угловые скорости.

Для управления важнее не просто:

"где я?"

а:

"куда я движусь?"

Поэтому полноценная система выглядит так:

SLAM

Position

Velocity

Orientation

EKF

PX4

Control

11. Архитектура уровня современных систем

Самый надежный вариант сегодня:

Stereo Camera

Visual SLAM

IMU ────────────────┤

State Estimator

LiDAR SLAM

PX4 Autopilot

Это называется:

Multi-Modal Localization

12. Главный инженерный вывод

Если задача:

"держать дрон в воздухе без GPS на высоте 200 метров"

то лучший подход сегодня:

не чистый SLAM.

А:

Visual-Inertial Navigation + надежный State Estimation + автопилот.

SLAM нужен для:

  • исправления дрейфа;
  • построения карты;
  • долгих автономных миссий.

Но мгновенная стабилизация выполняется связкой:

IMU → EKF → PX4 → Motors

Часть 15. Навигация без GPS: как беспилотники определяют положение при отсутствии спутниковой навигации

«GPS — это не навигация. GPS — это внешний источник координат. Настоящая автономная навигация начинается тогда, когда аппарат способен понимать своё положение самостоятельно.»

1. Почему GPS нельзя считать надежной системой

Спутниковая навигация кажется идеальной:

  • точность несколько метров;
  • глобальное покрытие;
  • низкая стоимость.

Но у неё есть фундаментальная слабость.

Сигнал от спутника чрезвычайно слабый.

На поверхности Земли его мощность примерно сопоставима с уровнем фонового радиошума.

Это означает:

  • его легко заглушить;
  • его легко исказить;
  • его сложно восстановить внутри помещений.

2. Что происходит при потере GPS?

Обычный аппарат делает следующее:

GPS

Координаты

Автопилот

Коррекция положения

После потери:

GPS

X

Автопилот

?

Дрейф

Аппарат начинает зависеть только от:

  • IMU;
  • барометра;
  • магнитометра.

Через некоторое время появляется ошибка.

3. Основные способы навигации без GPS

Современные автономные системы используют комбинацию методов.

Основные направления:

  • Инерциальная навигация.
  • Visual Navigation.
  • LiDAR Navigation.
  • Radar Navigation.
  • Terrain Relative Navigation.
  • Magnetic Navigation.
  • Radio Navigation.
  • AI-based Navigation.

4. Инерциальная навигация (INS)

Это самый старый метод.

Он появился задолго до дронов.

Используется:

  • самолетами;
  • ракетами;
  • кораблями;
  • подводными аппаратами.

Принцип работы

IMU измеряет:

  • ускорение;
  • угловую скорость.

Дальше математика интегрирует движение.

Например:

ускорение:

1 м/с²

через секунду:

скорость:

1 м/с

еще через секунду:

положение:

1 метр

Главная проблема — ошибка накапливается

Это называется:

Dead Reckoning

(счисление пути).

Пример:

идеальная траектория:

──────────────

реальная:

──────────╱

Через минуту ошибка может составлять:

  • метры;
  • десятки метров;
  • сотни метров.

Почему военная техника использует INS?

Потому что у неё стоят не обычные MEMS-датчики.

Используются:

FOG

Fiber Optic Gyroscope.

или

RLG

Ring Laser Gyroscope.

Преимущество:

очень маленький дрейф.

Но стоимость:

от тысяч до десятков тысяч евро.

Для маленького дрона это слишком дорого.

5. Visual Navigation

Теперь переходим к главному направлению.

Дрон использует камеру как навигационный прибор.

Человек делает то же самое.

Если вас высадить в незнакомом городе без карты,

вы ориентируетесь:

  • по зданиям;
  • дорогам;
  • знакам;
  • ориентирам.

Дрон делает похожую работу.

Visual Odometry

Самый простой вариант.

Камера сравнивает:

кадр 1:

Дом

Дерево

Столб

кадр 2:

Дом

Дерево

Столб

И определяет:

как изменилось положение.

Visual Place Recognition

Более сложная задача.

Вопрос:

"Я когда-нибудь уже был здесь?"

Используется:

  • ORB;
  • SIFT;
  • SuperPoint;
  • DINO;
  • NetVLAD.

Современная тенденция — нейросетевое зрение

Классический SLAM:

Признаки

Математика

Положение

Новый подход:

Изображение

Нейросеть

Описание сцены

Положение

Примеры современных подходов

SuperPoint

Нейросеть для поиска ключевых точек.

Репозиторий:

SuperPoint GitHub

SuperGlue

Нейросеть для сопоставления признаков.

Используется:

  • роботами;
  • автономными системами;
  • исследованиями SLAM.

DINO / Vision Transformers

Новое направление.

Модель понимает:

не отдельные пиксели,

а смысл сцены.

Например:

"это дорога возле здания".

6. Terrain Relative Navigation (TRN)

Очень интересная технология.

Она используется там,

где GPS недоступен.

Идея

Аппарат сравнивает:

реальную поверхность

с заранее подготовленной картой.

Например:

есть карта высот:

100м 105м 110м

90м 95м 102м

Датчики получают:

95м 96м 101м

Система ищет совпадение.

Где применяется?

  • космические аппараты;
  • военная авиация;
  • автономные платформы.

Пример

Посадка аппарата на Марс.

Спутников GPS нет.

Используется:

  • карта поверхности;
  • камеры;
  • сопоставление рельефа.

7. DSMAC — сравнение изображений местности

Еще один старый, но эффективный метод.

DSMAC:

Digital Scene Matching Area Correlation

Принцип:

Есть эталонное изображение:

─────дорога─────

███ лес ███

дом

Камера получает:

─────дорога─────

███ лес ███

дом

Алгоритм определяет:

где находится аппарат.

8. LiDAR Navigation

Если есть лидар:

дрон может строить локальную карту.

Например:

Стена

Дерево

И сравнивать:

где он находится относительно объектов.

9. Radar Navigation

Очень интересное направление.

Радар имеет преимущества:

  • работает ночью;
  • работает в тумане;
  • меньше зависит от освещения.

Используются:

  • миллиметровые радары;
  • FMCW Radar.

Они позволяют видеть:

  • препятствия;
  • поверхность;
  • скорость относительно земли.

10. Магнитная навигация

Очень необычный метод.

Земля имеет магнитное поле.

Но оно не идеально однородно.

Есть:

  • локальные аномалии;
  • изменения структуры пород;
  • искусственные объекты.

Можно создать карту магнитного поля.

Затем:

измерить поле

сравнить с картой

определить положение.

11. UWB-навигация

Если есть возможность установить маяки.

Используется:

Ultra Wide Band.

Схема:

Маяк

\

\

Дрон

/

Маяк

Точность:

примерно:

10–30 сантиметров.

Используется:

  • складами;
  • роботами;
  • промышленностью.

12. Самый перспективный вариант — Sensor Fusion

Будущее не за одним датчиком.

А за объединением.

Например:

Камера

Visual SLAM

IMU ───────────────┐

LiDAR ────────────┤

Radar ────────────┤

Barometer ────────┤

EKF / Factor Graph

Положение аппарата

13. Как выглядит реальный алгоритм автономного дрона

Каждые несколько миллисекунд:

Шаг 1

IMU сообщает:

"Я повернулся вправо."

Шаг 2

Камера сообщает:

"Я вижу те же объекты, но немного смещенные."

Шаг 3

LiDAR сообщает:

"Расстояние до поверхности изменилось."

Шаг 4

EKF объединяет данные.

Получает:

X

Y

Z

Roll

Pitch

Yaw

Velocity

14. Почему современные системы становятся автономными

Раньше логика была:

GPS

Навигация

Управление

Сегодня:

Сенсоры

Восприятие мира

Понимание ситуации

Навигация

Планирование

Управление

Это уже не просто автопилот.

Это робот.

15. Главный вывод для задачи "зависание на 200 метрах без GPS"

Для такой задачи наиболее реалистичная архитектура:

Минимальная:

  • Global Shutter камера;
  • IMU;
  • Visual-Inertial Odometry;
  • PX4 EKF.

Надежная:

  • стереокамера;
  • IMU высокого качества;
  • барометр;
  • LiDAR вниз;
  • AI Vision.

Промышленная:

  • несколько камер;
  • LiDAR;
  • radar;
  • высокоточная IMU;
  • несколько независимых алгоритмов локализации.

Итог

GPS — это только один источник координат.

Настоящая автономность начинается там, где аппарат способен:

  • видеть окружающий мир;
  • строить карту;
  • узнавать места;
  • оценивать собственное движение;
  • прогнозировать ошибку;
  • принимать решения.

Именно SLAM является фундаментом этой автономности.

Часть 16. Искусственный интеллект в SLAM: как нейросети меняют автономную навигацию

«Классический SLAM отвечает на вопрос: "Где я нахожусь?" Новый SLAM с искусственным интеллектом начинает отвечать на более сложный вопрос: "Что находится вокруг меня и что это означает?"»

1. Почему классического SLAM уже недостаточно

Классический SLAM построен вокруг геометрии.

Он видит:

  • точки;
  • линии;
  • плоскости;
  • расстояния;
  • движение камеры.

Например:

Точка 1

X=12.5

Y=4.2

Z=18.7

Для алгоритма это просто координата.

Он не знает:

  • это дерево;
  • это человек;
  • это здание;
  • это автомобиль.

Новый этап развития

Современный автономный аппарат должен понимать не только геометрию, но и содержание сцены.

Например:

Старый SLAM:

"Передо мной объект размером 2×3 метра."

AI-SLAM:

"Передо мной припаркованный автомобиль. Он неподвижен. Его можно использовать как ориентир."

2. Что такое Semantic SLAM

Это направление называется:

Semantic SLAM

или

Семантический SLAM.

Идея:

к карте добавляется не только геометрия,

но и смысл.

Обычная карта:

●────────●

●────────●

Семантическая карта:

┌────────────┐

│ ЗДАНИЕ │

│ │

│ ДВЕРЬ │

│ │

│ ОКНО │

└────────────┘

ДЕРЕВО

3. Как нейросеть добавляется в SLAM

Классическая схема:

Камера

Feature Extraction

SLAM

Координаты

AI-версия:

Камера

Neural Network

Объекты + признаки

SLAM

Семантическая карта

Координаты

4. Object Detection в SLAM

Самое простое применение AI —

распознавание объектов.

Например:

камера видит:

┌─────────────┐

│ │

│ машина │

│ │

└─────────────┘

Нейросеть сообщает:

Class:

car

Confidence:

96%

Популярные модели:

YOLO

Один из самых известных алгоритмов компьютерного зрения.

Используется для:

  • обнаружения объектов;
  • робототехники;
  • автономных систем.

Проект:

Ultralytics YOLO

5. Почему распознавание объектов помогает SLAM

Представим улицу.

Классический SLAM видит:

  • пиксели;
  • углы;
  • текстуры.

Но машины двигаются.

Это проблема.

Например:

Кадр 1

🚗

Кадр 2

🚗

SLAM может решить:

"Камера движется."

Хотя на самом деле:

машина уехала.

Semantic SLAM говорит:

"Этот объект — автомобиль. Он динамический. Не использовать его как ориентир."

6. Dynamic SLAM

Обычный SLAM предполагает:

мир неподвижен.

Но реальный мир:

  • люди ходят;
  • машины ездят;
  • деревья качаются;
  • животные двигаются.

Dynamic SLAM пытается разделить:

Статические объекты

Использовать.

Дом

Стена

Дорога

Динамические объекты

Игнорировать.

Человек

Автомобиль

Животное

7. Deep Visual Odometry

Следующий шаг —

замена классических методов оценки движения камеры.

Классика:

ORB

Matching

Geometry

Pose

Нейросеть:

Image 1

+

Image 2

Neural Network

Motion

Модель учится:

по тысячам примеров:

"какое движение камеры соответствует такому изменению изображения".

Примеры исследований

DeepVO

Одна из первых известных работ.

Идея:

использовать рекуррентные нейросети для оценки движения.

DROID-SLAM

Одна из наиболее современных систем.

Использует:

  • глубокие сети;
  • корреляционные поля;
  • оптимизацию карты.

Репозиторий:

DROID-SLAM GitHub

8. SuperPoint и SuperGlue — мост между классикой и AI

Очень интересный гибридный подход.

Вместо ORB:

используется нейросеть.

SuperPoint

Находит:

  • ключевые точки;
  • дескрипторы.

SuperGlue

Соединяет точки между кадрами.

Схема:

Кадр А

SuperPoint

Признаки

Кадр Б

SuperPoint

SuperGlue

Совпадения

Преимущество:

  • лучше работает при изменении освещения;
  • устойчивее к сложным сценам.

9. NeRF — новая революция в картах

Теперь переходим к очень интересному направлению.

Neural Radiance Fields

(нейронные радиансные поля).

Обычная SLAM-карта:

это точки.

NeRF-карта:

это модель сцены.

Она может восстановить:

  • внешний вид;
  • освещение;
  • объекты;
  • ракурсы.

Идея NeRF

Нейросеть получает:

координату точки

и направление взгляда.

Возвращает:

  • цвет;
  • плотность.

То есть:

(X,Y,Z)

+

направление камеры

Нейросеть

Цвет сцены

Почему это интересно для дронов?

Представим:

дрон обследовал здание.

Обычный SLAM:

дает облако точек.

NeRF:

может создать почти виртуальную копию объекта.

Можно:

  • осматривать объект с другого ракурса;
  • измерять повреждения;
  • сравнивать изменения.

10. Gaussian Splatting — практический прорыв

Последние годы активно развивается:

3D Gaussian Splatting.

В отличие от NeRF:

он работает значительно быстрее.

Идея:

сцена представляется не точками,

а миллионами маленьких 3D-гауссианов.

Каждый имеет:

  • координаты;
  • размер;
  • цвет;
  • прозрачность.

Схема:

Gaussian

◌ ◌

◌ ◌ ◌

Преимущества:

  • быстрое построение;
  • реалистичный рендеринг;
  • подходит для робототехники.

11. AI Planner — следующий уровень

SLAM дает карту.

Но что делать дальше?

Здесь появляется AI-планировщик.

Обычная логика:

Препятствие

Объехать справа

AI:

Обстановка

Анализ ситуации

Выбор поведения

Например:

  • человек впереди;
  • дверь открыта;
  • путь перекрыт.

Система меняет маршрут.

12. Vision-Language Models в роботах

Самое новое направление.

Большие мультимодальные модели начинают использоваться как "мозг" робота.

Например:

Команда:

"Найди красную дверь возле лестницы."

Система:

  • понимает запрос;
  • ищет объект;
  • строит маршрут.

Используются:

  • Vision Transformers;
  • CLIP-подобные модели;
  • большие мультимодальные модели.

13. Но почему AI не заменил классический SLAM?

Потому что есть проблема.

Нейросети:

  • мощные;
  • гибкие;
  • понимают смысл.

Но:

они могут ошибаться.

Например:

AI говорит:

"Это дверь."

Но для управления полетом ошибка координат в 20 сантиметров может быть критичной.

Поэтому сегодня используется гибрид:

Математический SLAM

+

AI восприятие

+

Оптимизация

14. Архитектура будущего автономного дрона

Вероятная архитектура ближайших лет:

Камеры

Neural Perception

┌───────────┴───────────┐

│ │

Semantic SLAM Classical VIO

│ │

└───────────┬───────────┘

World Model

AI Mission Planner

PX4

Motors

15. Что это означает для беспилотников

Через несколько лет автономный аппарат будет обладать не просто навигацией.

Он будет иметь:

Пространственную память

"Я был здесь вчера."

Понимание объектов

"Это человек, это машина, это здание."

Контекст

"Этот путь безопасен."

Планирование

"Лучше облететь препятствие."

Главный вывод

SLAM эволюционирует от простой геометрии к пониманию мира.

Первое поколение:

Где я?

Второе:

Что вокруг меня?

Третье:

Что происходит вокруг меня и какое действие лучше выполнить?

Именно переход от SLAM к Spatial AI станет фундаментом следующего поколения автономных роботов и беспилотных систем.

Часть 17. Практический проект: создание GPS-denied дрона с Visual-Inertial SLAM

«Автономный дрон без GPS — это не камера, прикрученная к квадрокоптеру. Это распределённая вычислительная система, где сенсоры, алгоритмы и автопилот должны работать как единый организм.»

1. Цель проекта

Создадим архитектуру экспериментального БПЛА, способного:

  • удерживать позицию без GPS;
  • выполнять автономный полет по заданным точкам;
  • оценивать свое положение в пространстве;
  • работать при подавлении спутниковой навигации.

Целевая задача:

квадрокоптер массой 2–5 кг, высота работы до нескольких сотен метров, автономная стабилизация и навигация.

2. Общая архитектура системы

Итоговая структура:

Камера

Visual-Inertial SLAM

Оценка положения

EKF

PX4

Контроллеры PID

ESC

Двигатели

Но это только часть системы.

Полная архитектура:

┌───────────────┐

│ Stereo Camera │

└───────┬───────┘

┌───────────────┐

│ Jetson Orin │

│ ROS 2 + SLAM │

└───────┬───────┘

│ MAVLink

┌───────────────┐

│ Pixhawk/PX4 │

└───────┬───────┘

┌───────────────┐

│ Flight Stack │

└───────┬───────┘

Motors

3. Выбор рамы

Для SLAM лучше подходят не самые маленькие аппараты.

Причины:

  • меньше вибраций;
  • больше места для электроники;
  • выше время полета;
  • проще балансировка.

Малый экспериментальный класс

Размер:

250–450 мм.

Плюсы:

  • дешевый;
  • безопаснее для тестов.

Минусы:

  • мало места;
  • сильное влияние вибраций.

Оптимальный класс

Размер:

500–650 мм.

Это наиболее удобная платформа для R&D.

Можно разместить:

  • Jetson;
  • камеры;
  • LiDAR;
  • аккумулятор большой емкости.

4. Выбор вычислителя

Вариант 1. Бюджетный

Raspberry Pi 5.

Подходит:

  • обучение;
  • простые VIO алгоритмы.

Но:

для полноценного SLAM на летящем дроне запас небольшой.

Вариант 2. Оптимальный

NVIDIA Jetson Orin Nano Developer Kit

Почему он популярен:

  • GPU CUDA;
  • TensorRT;
  • низкое энергопотребление;
  • поддержка ROS 2.

На нем можно запускать:

  • ORB-SLAM3;
  • OpenVINS;
  • нейросети обнаружения объектов.

Вариант 3. Промышленный

NVIDIA Jetson AGX Orin Developer Kit

Используется, когда одновременно нужны:

  • SLAM;
  • AI Vision;
  • планирование;
  • обработка нескольких камер.

5. Выбор камеры

Для автономного полета камера — главный сенсор.

Минимальные требования

Разрешение

Не обязательно 4K.

Чаще важнее:

  • стабильность;
  • скорость;
  • качество матрицы.

Частота кадров

Минимум:

30 FPS.

Лучше:

60 FPS.

Global Shutter

Желательно обязательно.

Примеры камер

Intel RealSense

Intel RealSense SDK

Плюсы:

  • готовая экосистема;
  • глубина;
  • ROS-драйверы.

Минусы:

  • не все модели подходят для быстрого движения.

Luxonis OAK-D

Luxonis OAK-D

Особенность:

встроенный нейропроцессор.

Может выполнять:

  • распознавание;
  • глубину;
  • обработку изображения.

FLIR Blackfly S

FLIR Blackfly S

Профессиональный вариант:

  • Global Shutter;
  • промышленная синхронизация;
  • высокая надежность.

6. IMU и размещение датчиков

Критическая ошибка:

ставить IMU где удобно.

Правильно:

IMU должна быть:

  • максимально близко к центру масс;
  • изолирована от вибраций;
  • жестко закреплена.

Типичные датчики:

Bosch BMI088

Bosch BMI088

Популярен благодаря:

  • низкому шуму;
  • хорошей виброустойчивости.

InvenSense ICM-42688

ICM-42688-P

7. Автопилот

Основная задача:

не SLAM.

А управление полетом.

Популярные варианты:

Pixhawk + PX4

PX4 Autopilot

ArduPilot

ArduPilot

Почему нужен отдельный автопилот?

Представим:

Jetson завис.

Linux обновился.

SLAM остановился.

Но:

PX4 продолжает:

  • удерживать крен;
  • держать высоту;
  • выполнять аварийный режим.

8. Программный стек

Теперь собираем программную часть.

Операционная система

Обычно:

Ubuntu 22.04.

Middleware

ROS 2 Humble.

Он отвечает за:

  • обмен сообщениями;
  • координаты;
  • трансформации;
  • управление узлами.

SLAM

Выбор:

Для начала:

OpenVINS.

Почему:

  • легче;
  • быстрее;
  • хорошо подходит для VIO.

Для полноценной карты:

ORB-SLAM3.

9. Калибровка системы

Это один из самых важных этапов.

Камера

Нужно определить:

fx

fy

cx

cy

k1

k2

p1

p2

То есть:

  • фокус;
  • центр;
  • искажения.

Камера + IMU

Нужно определить:

где находится IMU относительно камеры.

Например:

Camera

X + 50 мм

IMU

Инструмент:

Kalibr GitHub

10. Интеграция с PX4

SLAM выдает:

position

orientation

velocity

Например:

X = 15.2 м

Y = 8.7 м

Z = 35.4 м

Yaw = 120°

Эти данные отправляются через:

  • MAVLink;
  • MAVROS;
  • Micro XRCE-DDS.

Схема:

SLAM

Odometry

MAVROS

PX4 EKF2

Position Controller

Motors

11. Испытания

Правильная последовательность:

Этап 1

Статика.

Дрон стоит на столе.

Проверяем:

  • камера;
  • IMU;
  • координаты.

Этап 2

Ручное перемещение.

Носим аппарат руками.

SLAM должен:

  • строить карту;
  • отслеживать движение.

Этап 3

Первое зависание.

Высота:

1–2 метра.

Не 200 метров.

Этап 4

Открытая площадка.

Постепенно:

  • 10 м;
  • 50 м;
  • 100 м.

12. Почему 200 метров — сложная задача

На большой высоте возникают проблемы.

Проблема 1. Мало деталей

На земле:

камень:

100 пикселей.

На высоте:

5 пикселей.

Проблема 2. Однообразная поверхность

Плохо:

  • поле;
  • вода;
  • снег;
  • пустыня.

Хорошо:

  • здания;
  • дороги;
  • лес;
  • инфраструктура.

Проблема 3. Освещение

Солнце меняет:

  • экспозицию;
  • контраст;
  • тени.

13. Практическая архитектура для высоты 200 метров

Более надежный вариант:

Stereo Camera

Visual-Inertial SLAM

IMU ────────────┤

Downward LiDAR ─┤

Barometer ──────┤

EKF

PX4

14. Оценка бюджета прототипа

Экспериментальный уровень

Примерно:

1000–2000 €

Включает:

  • раму;
  • электронику;
  • камеру;
  • вычислитель;
  • автопилот.

R&D уровень

Примерно:

3000–8000 €

Добавляются:

  • качественная камера;
  • Jetson;
  • LiDAR;
  • промышленная IMU.

Промышленный уровень

Может превышать:

10000–50000 €

за счет:

  • сенсорного комплекса;
  • сертификации;
  • надежности;
  • резервирования.

Главный инженерный вывод

Создание GPS-denied БПЛА — это задача не одного алгоритма.

Рабочая система строится вокруг принципа:

"много независимых источников информации → объединение → оценка состояния → управление"

Именно поэтому лучшие автономные аппараты используют не один SLAM, а целую навигационную архитектуру.

Часть 18. EKF и State Estimation — настоящий «мозг» автономного дрона

«SLAM дает аппарату зрение. IMU дает ощущение движения. Но именно State Estimator превращает разрозненные данные в единую картину: где находится дрон, куда он движется и насколько можно доверять этой информации.»

1. Почему одного SLAM недостаточно

Вернемся к исходной задаче:

дрон должен зависнуть на высоте 200 метров без GPS.

Кажется логичным:

Камера → SLAM → координаты → управление.

Но это не работает.

Причина:

SLAM дает положение с задержкой.

Например:

Камера:

30 кадров/сек.

SLAM:

20–50 расчетов/сек.

А двигатель меняет тягу:

сотни раз в секунду.

Получается:

Двигатели

1000 Гц

PX4

250 Гц

IMU

1000 Гц

SLAM

30 Гц

Если напрямую управлять по SLAM, аппарат будет запаздывать.

2. Что такое State Estimation

State Estimation — это оценка состояния системы.

Состояние дрона можно представить как набор переменных:

[ X = [x,y,z, v_x,v_y,v_z, roll,pitch,yaw, bias] ]

Где:

Положение

x

y

z

Где находится аппарат.

Скорость

vx

vy

vz

Куда он движется.

Ориентация

Roll

Pitch

Yaw

Как он наклонен.

Ошибки датчиков

Например:

смещение IMU.

3. Главная идея EKF

EKF:

Extended Kalman Filter

Расширенный фильтр Калмана.

Это математический механизм объединения нескольких источников информации.

Он постоянно отвечает:

"Какое положение наиболее вероятно с учетом всех измерений?"

4. Почему просто усреднять нельзя

Допустим:

Камера говорит:

X = 10.0 м

IMU говорит:

X = 10.8 м

Барометр:

X = 9.7 м

Кто прав?

Ответ:

зависит от качества каждого датчика.

EKF учитывает:

  • точность;
  • шум;
  • задержку;
  • предыдущие данные.

5. Два этапа EKF

Фильтр работает циклически.

Каждый цикл состоит из:

1. Prediction

Предсказание.

Используем модель движения.

2. Update

Коррекция.

Используем реальные измерения.

Схема:

IMU

Prediction

Предположение

Sensor Update

Новое состояние

6. Prediction — что делает IMU

IMU говорит:

"Я ускорился вперед."

EKF считает:

Через время Δt:

[ v = v_0 + a \cdot t ]

[ x = x_0 + v \cdot t ]

Но проблема:

IMU шумит.

Поэтому ошибка растет.

Через 10 секунд:

идеальная траектория:

──────────

оценка:

────────╱

7. Update — как датчики исправляют ошибку

Теперь приходит SLAM:

Текущее положение:

X=12.3

EKF сравнивает:

с прогнозом:

X=12.8

Разница:

0.5 м

Называется:

innovation

(невязка).

Фильтр решает:

насколько доверять:

  • IMU;
  • SLAM.

8. Ковариация — самая важная часть

Каждый источник данных имеет неопределенность.

Например:

Камера

Ошибка:

±10 см

GPS

Ошибка:

±2 м

IMU

Ошибка:

растет со временем.

EKF хранит это как:

матрицу ковариации.

Упрощенно:

маленькая ошибка

большое доверие

большая ошибка

малое доверие

9. Почему плохая камера ломает всю систему

Представим:

SLAM потерялся.

Но продолжает выдавать координаты.

Например:

Реальность:

X=100

SLAM:

X=140

Если EKF слепо поверит ему,

дрон получит неправильную коррекцию.

Поэтому важны:

  • качество оценки;
  • контроль ошибок;
  • отказоустойчивость.

10. PX4 EKF2

В популярных автопилотах используется собственный State Estimator.

В PX4:

EKF2

Он объединяет:

  • IMU;
  • GPS;
  • барометр;
  • магнитометр;
  • воздушную скорость;
  • внешнюю одометрию;
  • визуальную навигацию.

Документация:

PX4 EKF2 Estimator

11. Внешняя навигация через SLAM

Когда GPS отсутствует:

SLAM становится источником:

External Vision

Поток:

Camera

VIO / SLAM

Odometry

PX4 EKF2

Position Controller

PX4 получает:

  • позицию;
  • ориентацию;
  • скорость.

12. Почему скорость важнее позиции

Это очень важный момент.

Для зависания:

ошибка позиции:

20 см

не всегда критична.

Но если скорость:

2 м/с

то аппарат уже движется.

Поэтому EKF особенно ценит:

  • velocity estimate;
  • angular rate.

13. Дрейф Yaw — самая сложная ошибка

У дрона есть три угла:

Roll

Pitch

Yaw

Roll и Pitch легко корректируются:

гравитацией.

IMU знает:

где низ.

Yaw сложнее.

Почему?

Земное притяжение не дает направления.

Нужен:

  • магнитометр;
  • GPS course;
  • визуальные ориентиры;
  • SLAM loop closure.

Именно ошибка курса часто разрушает автономную навигацию.

14. Почему на 200 метрах сложнее

Представим:

дрон смотрит вниз.

Камера видит:

  • поле;
  • снег;
  • лес.

SLAM начинает терять признаки.

Тогда:

SLAM ↓

а

IMU ↑

начинает накапливать ошибку.

Хорошая система должна:

  • определить ухудшение SLAM;
  • увеличить доверие другим датчикам;
  • не допустить потери управления.

15. Factor Graph — альтернатива EKF

В современных SLAM-системах часто используется другой подход.

Factor Graph

Вместо:

"текущее состояние"

хранится:

вся история.

Например:

Позиция 1

Позиция 2

Позиция 3

Позиция 4

И система оптимизирует всю траекторию.

Используется:

  • ORB-SLAM3;
  • LIO-SAM;
  • GTSAM.

16. EKF против Factor Graph

EKFFactor Graph
СкоростьОчень высокаяНиже
ПамятьМалоБольше
Реальное времяОтличноХорошо
Большие картыОграниченноОтлично
АвтопилотДаОбычно нет

На практике:

SLAM использует Factor Graph.

Автопилот использует EKF.

Они работают вместе.

17. Полная архитектура автономного БПЛА

Камера

VIO / SLAM

Pose + Velocity

EKF2

IMU ─────┤

Baro ────┤

GPS ─────┤

Mag ─────┘

PX4 Controller

Motors

18. Практический вывод для зависания без GPS

Если задача:

"удержание точки на высоте 200 метров"

то минимальная надежная архитектура:

Сенсоры:

  • Global Shutter камера;
  • IMU;
  • барометр.

Алгоритмы:

  • Visual-Inertial Odometry;
  • EKF;
  • контроль качества данных.

Автопилот:

  • PX4;
  • ArduPilot.

Но для реальной надежности:

добавляют:

  • LiDAR;
  • радар;
  • вторую камеру;
  • резервную навигацию.

Главный вывод главы

SLAM — это глаза.

IMU — это чувство движения.

EKF — это мозг, который решает, кому верить.

Автопилот — это мышцы.

Только их совместная работа позволяет беспилотнику удерживаться в пространстве без GPS.

Часть 19. Удержание позиции на высоте 200 метров без GPS: практическая инженерия

«Зависнуть на высоте 2 метров без GPS — это задача компьютерного зрения. Зависнуть на 200 метрах — это уже задача полноценной навигационной системы.»

1. Почему зависание на 200 метрах — особый случай

На первый взгляд задача простая:

Нужно, чтобы дрон стоял на месте.

Но в реальности аппарат постоянно испытывает воздействия:

  • ветер;
  • турбулентность;
  • изменение нагрузки;
  • вибрации;
  • дрейф датчиков;
  • ошибки оценки положения.

Без GPS дрон должен самостоятельно определить:

  • Где он находится?
  • С какой скоростью движется?
  • На какой высоте находится?
  • Как компенсировать внешние воздействия?

2. Что означает "стоять на месте"

Для человека:

"стоять на месте" означает:

координаты почти не меняются.

Для автоматики:

нужно удерживать шесть степеней свободы.

Положение:

X

Y

Z

Ориентация:

Roll

Pitch

Yaw

Полная модель:

6 DOF

=

3 координаты

+

3 угла

3. Почему обычный GPS хорошо решает эту задачу

GPS дает:

X

Y

Z

каждые несколько секунд.

Автопилот сравнивает:

цель:

X=0

Y=0

текущее:

X=1.5

Y=-0.8

и корректирует движение.

Без GPS эти координаты нужно получить самостоятельно.

4. Optical Flow — самый простой способ удержания позиции

Один из первых методов.

Используется:

  • в бытовых дронах;
  • небольших роботах;
  • бюджетных автопилотах.

Принцип

Камера смотрит вниз.

Например:

первый кадр:

┌───────────┐

│ камень │

│ дерево│

└───────────┘

Через секунду:

┌───────────┐

│ камень │

│ дерево │

└───────────┘

Алгоритм видит:

изображение сместилось.

Если картинка ушла вправо:

значит аппарат движется влево.

5. Ограничения Optical Flow

Для высоты 200 метров это становится проблемой.

Почему?

Разрешение земли уменьшается.

На высоте 3 метра:

камень:

████████

На высоте 200 метров:

камень:

.

Камера перестает видеть движение.

Optical Flow хорошо работает:

ВысотаРабота
0.5–10 мОтлично
10–50 мХорошо
50–100 мЗависит от камеры
200 мТребуется другая система

6. Downward Vision — взгляд вниз

Более серьезный вариант.

Используется отдельная камера:

Дрон

Камера

Земля

Она может работать совместно с:

  • VIO;
  • SLAM;
  • AI Vision.

Но проблема остается:

земля должна иметь признаки.

Хорошо:

  • здания;
  • дороги;
  • лес;
  • поля с текстурой.

Плохо:

  • снег;
  • вода;
  • однотонный грунт.

7. LiDAR Altimeter — измерение высоты лазером

Очень распространенный датчик.

Он отвечает не за координаты X/Y,

а за высоту Z.

Принцип:

Дрон

↓ лазер

Земля

↑ отражение

Измеряется время прохождения сигнала.

Преимущества:

  • высокая точность;
  • независимость от GPS;
  • работает ночью.

Недостатки:

дальность ограничена.

Типичные диапазоны:

Малые LiDAR:

0–40 метров.

Промышленные:

сотни метров.

8. Radar Altimeter — высотомер для серьезных систем

Радар имеет преимущество:

он работает там, где камера плохо видит.

Например:

  • туман;
  • дым;
  • ночь;
  • пыль.

Используется:

  • авиацией;
  • военными системами;
  • промышленными БПЛА.

Принцип:

излучение радиоволны:

Дрон

~~~~~~~

Земля

отражение

Измеряется:

  • высота;
  • скорость сближения;
  • структура поверхности.

9. Как удерживать X/Y без GPS на 200 метрах?

Вот главный вопрос.

Высоту определить относительно легко.

Сложность:

горизонтальное положение.

Есть несколько подходов.

Метод 1. Visual-Inertial Odometry

Камера + IMU.

Система оценивает:

"Я сместился на 20 сантиметров."

Схема:

Камера

Признаки

Изменение положения

Коррекция

Это основной современный метод.

Метод 2. LiDAR SLAM

Дрон строит карту:

Здание

Дерево

И понимает:

где находится относительно нее.

Минусы:

  • вес;
  • цена;
  • энергопотребление.

Метод 3. UWB

Устанавливаются маяки.

Например:

Маяк A

Дрон

Маяк B

Дальность измеряется радиосигналом.

Плюсы:

точность:

10–30 см.

Минус:

нужна инфраструктура.

Метод 4. Карта местности

Terrain Relative Navigation.

Дрон сравнивает:

то, что видит,

с заранее известной картой.

Например:

Спутниковая карта:

дорога

лес

река

Камера:

дорога

лес

река

Алгоритм ищет совпадение.

10. Самая надежная схема для 200 метров

Промышленная архитектура:

Камеры

Visual SLAM

IMU ─────────────┤

LiDAR ───────────┤

Radar ───────────┤

Barometer ───────┤

EKF

PX4

11. Что происходит при ветре

Представим:

ветер толкает дрон.

Без коррекции:

Дрон

IMU чувствует:

ускорение.

Но не знает:

это ветер или маневр.

Камера видит:

смещение объектов.

SLAM говорит:

"Я переместился."

EKF объединяет:

IMU + камера + высота

и дает команду:

наклониться против ветра

12. Почему важен контроль качества SLAM

Нельзя всегда доверять камере.

Например:

дрон летит над водой.

SLAM:

ошибка растет

Система должна понять:

"визуальная навигация ненадежна."

Используются признаки:

  • количество ключевых точек;
  • скорость потери трекинга;
  • величина ошибки оптимизации;
  • согласованность с IMU.

13. Практическая конфигурация для зависания 200 метров

Вариант R&D

Stereo Global Shutter Camera

+

IMU BMI088

+

Jetson Orin Nano

+

OpenVINS

+

PX4 EKF2

+

Барометр

Более надежный вариант

Добавить:

Downward LiDAR

+

Radar Altimeter

+

вторую камеру

14. Почему военные и промышленные системы используют много датчиков

Потому что нет идеального сенсора.

Камера:

  • видит мир

− зависит от света

LiDAR:

  • точная геометрия

− плохо работает в некоторых условиях

Radar:

  • работает почти всегда

− меньше деталей

IMU:

  • очень быстрый

− дрейфует

Поэтому используется принцип:

сенсорная избыточность.

15. Главный вывод

Удержание дрона на высоте 200 метров без GPS — это не задача одного SLAM.

Это комбинация:

Visual Navigation

+

IMU

+

EKF

+

Altitude Sensors

+

Flight Controller

SLAM дает понимание положения.

Но стабильный полет появляется только тогда, когда вся система умеет оценивать свои ошибки и переключаться между источниками информации.

Часть 20. Полная архитектура автономного БПЛА уровня Enterprise

«Промышленный автономный дрон отличается от любительского не только количеством датчиков. Главное отличие — способность продолжать работу при отказе одного из элементов системы.»

1. Что такое Enterprise-уровень автономности

Когда говорят о промышленном автономном БПЛА, речь идет не просто о полете без GPS.

Система должна обеспечивать:

  • автономный взлет;
  • навигацию без спутников;
  • обход препятствий;
  • работу в сложной погоде;
  • возврат при отказах;
  • контроль состояния оборудования;
  • безопасную посадку.

Простой дрон:

Пилот

Пульт

Автопилот

Двигатели

Enterprise-дрон:

Миссия

AI Mission Planner

World Model / SLAM

Navigation Stack

Flight Controller

Actuators

2. Главный принцип: разделение функций

В профессиональных системах никогда не смешивают всё в одном компьютере.

Обычно есть минимум три уровня.

Уровень 1. Flight Controller

Это «нервная система».

Например:

  • PX4;
  • ArduPilot;
  • промышленный автопилот.

Задачи:

  • стабилизация;
  • управление моторами;
  • аварийные режимы.

Частота работы:

сотни герц.

Уровень 2. Companion Computer

Это вычислительный мозг.

Например:

  • NVIDIA Jetson;
  • Qualcomm RB5;
  • Intel NUC.

Задачи:

  • SLAM;
  • AI;
  • распознавание;
  • планирование маршрута.

Уровень 3. Cloud / Ground Station

Внешняя система:

  • аналитика;
  • управление парком;
  • хранение карт;
  • обновления.

3. Архитектура современного автономного БПЛА

Полная схема:

Cloud

Mission Control

Companion Computer

┌───────────┬───────────┬───────────┐

│ │ │ │

SLAM AI Vision Planning Mapping

│ │ │ │

└───────────┴───────────┴───────────┘

MAVLink / DDS

Flight Controller

Motor Control

4. Сенсорный комплекс Enterprise-дрона

Профессиональный аппарат обычно имеет не один датчик, а набор.

Камеры

Используются:

  • фронтальные;
  • нижние;
  • боковые;
  • панорамные.

Задачи:

Навигация

VIO / SLAM.

Обнаружение препятствий

AI Vision.

Посадка

Определение:

  • площадки;
  • препятствий;
  • ориентира.

5. Стереозрение

Один из основных элементов.

Две камеры:

Левая камера Правая камера

\ /

объект

Разница между изображениями называется:

disparity

(параллакс).

По ней вычисляется глубина.

Плюсы:

  • пассивный сенсор;
  • нет лазера;
  • высокая скорость.

Минусы:

нужна хорошая текстура.

6. LiDAR в Enterprise-системах

LiDAR дает трехмерное пространство.

Пример:

дерево

  • • • • • • •

дрон

Используется для:

  • построения карты;
  • обхода препятствий;
  • посадки.

Типы:

Solid State LiDAR

Компактные.

Используются:

  • дроны;
  • роботы.

Mechanical LiDAR

Вращающаяся система.

Плюсы:

  • большая дальность.

Минусы:

  • масса;
  • механика.

7. Radar — сенсор плохой погоды

Камеры имеют ограничения.

Туман:

камера ↓

Лидар:

частично ↓

Радар:

работает

Используются:

  • миллиметровые радары;
  • FMCW.

Радар может оценивать:

  • расстояние;
  • скорость;
  • направление движения.

8. AI Vision — переход от обнаружения к пониманию

Старые системы:

«Объект есть.»

Новые:

«Что это за объект и как с ним взаимодействовать?»

Например:

Камера видит:

████████

AI:

Тип: человек

Расстояние: 15 м

Скорость: 1.2 м/с

Направление: навстречу

9. Модели, используемые в робототехнике

YOLO

Обнаружение объектов.

Ultralytics YOLO

Segment Anything Model

Сегментация объектов.

Segment Anything Model (SAM) GitHub

Vision Transformers

Используются для:

  • понимания сцены;
  • классификации;
  • навигации.

10. World Model — новое направление

Следующий уровень после SLAM.

Обычный SLAM:

«Вот координаты стены.»

World Model:

«Это здание. В нем есть вход. Перед ним свободная площадка. Здесь безопасно лететь.»

Система начинает создавать внутреннюю модель окружающего мира.

11. Автономное планирование маршрута

Раньше:

оператор задавал точки:

A → B → C

Теперь:

дрон получает задачу:

"Осмотри линию электропередачи."

Сам:

  • строит маршрут;
  • избегает препятствий;
  • меняет план.

Используются алгоритмы:

A*

Поиск пути.

RRT / RRT*

Rapidly-exploring Random Tree.

Хорошо для трехмерного пространства.

MPC

Model Predictive Control.

Предсказывает:

как будет двигаться аппарат.

12. Пример промышленной архитектуры

Допустим:

дрон инспектирует завод.

До полета

Создается:

  • карта объекта;
  • зона работы;
  • ограничения.

Во время полета

Дрон:

  • Взлетает.
  • Строит локальную карту.
  • Находит объект.
  • Выполняет съемку.
  • Обнаруживает препятствие.
  • Меняет маршрут.

Система:

Задача

Понимание сцены

Планирование

Действие

Проверка результата

13. Отказоустойчивость

Это главное отличие Enterprise.

Обычный аппарат:

сломалась камера → проблема.

Промышленный:

камера 1 отказала.

Система:

  • использует камеру 2;
  • снижает скорость;
  • меняет режим;
  • возвращается.

14. Резервирование навигации

Например:

Основной канал:

Visual SLAM

Резерв:

LiDAR SLAM

Резерв 2:

INS

Резерв 3:

Radar / UWB

15. Пример: Skydio-подход

Skydio построила концепцию вокруг автономного компьютерного зрения.

Главная идея:

не оператор управляет каждым движением,

а аппарат сам понимает:

  • препятствия;
  • траекторию;
  • безопасный путь.

16. Пример: DJI Enterprise-подход

DJI использует комбинацию:

  • камер;
  • датчиков расстояния;
  • AI обработки;
  • собственного автопилота.

Главная идея:

максимальная автоматизация пилотирования.

17. Будущая архитектура автономного роя

Следующий шаг:

не один дрон,

а группа.

Схема:

Drone 1

\

\

Drone 2 ---- Network ---- Drone 3

|

Shared Map

Каждый аппарат:

  • видит часть пространства;
  • передает данные;
  • объединяет карту.

18. Что потребуется для полностью автономного БПЛА

Минимальный промышленный набор:

Вычисление

  • Jetson AGX Orin.

Сенсоры

  • Stereo Global Shutter Camera.
  • IMU высокого класса.
  • LiDAR.
  • Radar.
  • Barometer.

ПО

  • ROS 2.
  • PX4.
  • SLAM.
  • AI Detection.
  • Planner.

19. Главная инженерная формула автономности

Можно выразить так:

Автономность =

Восприятие

+

Локализация

+

Планирование

+

Управление

+

Отказоустойчивость