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

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

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

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

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

Глава 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 ограничено или невозможно: в помещениях, под мостами, в тоннелях, в густой городской застройке и при работе в условиях радиоэлектронных помех.

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

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

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

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

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

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

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

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

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

Датчики Камера IMU LiDAR Синхронизация времени 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 не занимается обработкой каждого кадра. Его задача намного сложнее. Он отвечает за:

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

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

Именно они делают 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. После него прямые линии снова становятся прямыми.

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

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

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

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

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

Матрица камеры: 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 году появился алгоритм, который до сих пор считается классикой. Идея очень красивая. Берется маленькое окно изображения.

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

↖ ↗ ↘ ↙ Для каждого смещения вычисляется изменение яркости. Получаются три варианта.

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

██████ ██████ ██████ Это однородная область. Такие точки сразу отбрасываются.

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

██████

......

......

Это край объекта. Он тоже плохо подходит.

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

███... ███... ...███ Вот это угол. Именно такие точки 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) для работы в реальном времени и нейросетевые модели для сложных сцен или периодической коррекции карты.

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

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

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

Глава 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.

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

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

SuperPoint

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

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

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

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

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

LightGlue

В 2023–2024 годах широкое распространение получил LightGlue. Его особенность — динамически изменять объём вычислений. Если сцена простая, алгоритм завершает работу быстрее. Если сложная — использует больше вычислительных ресурсов. Благодаря этому LightGlue стал одним из наиболее популярных современных методов сопоставления признаков. Репозиторий:

  • LightGlue

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

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

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

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

Вывод главы

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

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

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

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

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

Глава 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 впервые начинает определять собственное положение в пространстве.

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

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

Примечание автора: начиная со следующей главе мы переходим от обработки изображений к пространственной геометрии. Именно там происходит главное «волшебство» 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 FeaturesFeature MatchingRANSACEssential MatrixrecoverPose()TriangulationПервичная 3D-картаОценка движения камеры (6DoF)

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

Вывод главы

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

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

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

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

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

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

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

Глава 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 изменяет положение камер и точек так, чтобы все лучи пересекались максимально точно.

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

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

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

X

Y Z Roll Pitch Yaw

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

X

Y

Z

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

Например:

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

Это называется 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.

Официальный сайт:

g2o

Самая известная библиотека в мире SLAM. Используется в:

  • ORB-SLAM;
  • LSD-SLAM;
  • DSO;
  • многочисленных исследовательских проектах.

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

GTSAM

Разработана исследователями из Georgia Tech. Особенно популярна в:

  • автономных автомобилях;
  • Visual-Inertial SLAM;
  • робототехнике.

Официальный сайт:

Как это работает в 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.
Репозиторий:

Как работает поиск?

Представим. Получен новый кадр. Из него извлекли 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

После добавления нового ребра запускается глобальная оптимизация. Используются те же библиотеки:

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

Почему 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. Репозиторий:

FAST-LIO2

Один из самых быстрых современных LiDAR–IMU SLAM. Особенности:

  • объединение IMU и LiDAR;
  • работа в реальном времени;
  • высокая устойчивость.

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

LIO-SAM

Одна из лучших современных систем. Использует:

  • LiDAR;
  • IMU;
  • факторные графы;
  • GTSAM

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

Почему 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

Критерии выбора (Global Shutter, шум, FPS, динамический диапазон, экспозиция) сформулированы в главе 2. В этой главе фиксируем конкретные классы устройств и ошибки интеграции на раме, а не повторяем общую теорию.

Rolling Shutter на борту

Подробный разбор Rolling vs Global Shutter уже дан в главе 2. Здесь достаточно инженерного правила: для Visual SLAM на БПЛА выбирайте Global Shutter и жёсткое крепление камеры. Rolling Shutter на вращении превращает геометрию сцены в ложное движение и быстро разваливает трекинг.

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;
  • внешние системы навигации.

Официальный сайт:

ArduPilot

Еще одна популярная открытая система. Поддерживает:

  • самолеты;
  • квадрокоптеры;
  • наземных роботов;
  • катера.

Официальный сайт:

  • ArduPilot

Как все соединяется?

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

КамераVisual Front-EndVisual-Inertial SLAMIMU State EstimationБарометрМагнитометрGPS (если доступен)MAVLink ODOMETRYPX4 / 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 — это не операционная система

Несмотря на название, 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, вычислитель, автопилот, вибрации, задержки и окружающая среда.»

С чего начинать разработку автономного БПЛА

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

Задача А

Удержание позиции без GPS. Требования:

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

Достаточно:

  • VIO;
  • IMU;
  • барометр;
  • PX4.

Задача Б

Автономный облёт объекта. Требуется:

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

Нужно:

  • SLAM;
  • LiDAR или стереокамера;
  • вычислитель мощнее.

Задача В

Полностью автономная миссия. Например:

  • поиск объекта;
  • распознавание;
  • принятие решений.

Добавляются:

  • нейронные сети;
  • AI Vision;
  • планировщик поведения.

Архитектура экспериментального комплекса

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

КамераNVIDIA JetsonROS 2 + SLAM/VIOMAVLinkPX4 ControllerESCМоторы

Выбор вычислительной платформы

Уровень 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

Используется в:

  • роботах;
  • автономных автомобилях;
  • промышленных системах.

Преимущества:

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

Недостатки:

  • цена;
  • энергопотребление.

Камерный модуль для 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;
  • промышленное качество;
  • точная синхронизация.

Выбор IMU

Для дрона IMU должна быть:

  • низкий шум;
  • высокая частота;
  • хорошая виброустойчивость.

Хорошие варианты:

Bosch BMI088

Один из самых популярных IMU в робототехнике. Используется во многих автопилотах.

InvenSense ICM-42688

Современный MEMS-сенсор. Плюсы:

  • высокая частота;
  • низкое энергопотребление.

Полётный контроллер

Сам вычислитель SLAM не должен управлять моторами. Для этого нужен отдельный контроллер.

Pixhawk

Самое распространенное семейство. Использует:

  • PX4;
  • ArduPilot.

Почему разделяют? Потому что: Jetson может зависнуть. Linux может перезагрузиться. SLAM может упасть. Но автопилот должен продолжать удерживать аппарат.

Программное обеспечение

Теперь собираем стек.

Операционная система

Обычно: 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.

Калибровка — самый недооцененный этап

Можно купить оборудование на тысячи евро, но плохая калибровка уничтожит результат. Существует несколько типов калибровки.

Внутренняя калибровка камеры

Определяются:

  • фокусное расстояние;
  • центр изображения;
  • дисторсия.

Например:

fx = 520.4

fy = 519.8

cx = 320.1

cy = 240.7

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

Нужно узнать: где находится IMU относительно камеры. Например:

Camera10 см впередIMUИспользуется:
  • Kalibr.

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

Вибрации — главный враг SLAM

Дрон является очень сложной платформой. Источники вибрации:

  • моторы;
  • пропеллеры;
  • рама;
  • резонансы.

Что происходит? IMU получает: не движение, а вибрацию. Например: Настоящее: ускорение = 0.01g Измерение: ускорение = 0.4g SLAM начинает думать: аппарат резко движется.

Как бороться?

Используют:

  • балансировку винтов;
  • демпферы;
  • мягкое крепление IMU;
  • фильтры.

Первый запуск: только симуляция

Никогда не начинайте сразу с реального полета. Сначала:

Gazebo

Симулятор физики. Позволяет:

  • создать дрон;
  • добавить камеру;
  • проверить SLAM.

PX4 SITL

Software In The Loop. Автопилот работает полностью виртуально. Схема:

GazeboPX4ROS2SLAM

Реальная последовательность разработки

Правильный порядок:

Этап 1

Запустить камеру. Проверить:

  • FPS;
  • задержку;
  • качество изображения.

Этап 2

Запустить SLAM на компьютере. Проверить:

  • строится ли карта;
  • нет ли дрейфа.

Этап 3

Добавить IMU. Проверить VIO.

Этап 4

Подключить PX4. Передавать: /odometry

Этап 5

Только после этого: первый автономный полет.

Конфигурация уровня R&D

Эталонный комплект (камера Global Shutter, BMI088 / аналог, Jetson Orin Nano, Pixhawk + PX4, ROS 2, ORB-SLAM3 или OpenVINS, калибровка Kalibr) уже сведён в таблице в главе 11. Ниже не дублируем спецификацию — опирайтесь на неё и адаптируйте под раму и бюджет.

Почему это всё сложно на высоте 200 метров?

Возвращаемся к исходной задаче. На 200 метрах появляются новые проблемы:

Масштаб

Мелкие детали становятся меньше. Камере сложнее находить признаки.

Ветер

Аппарат постоянно корректирует положение.

Потеря текстуры

Например:

  • поле;
  • снег;
  • вода.

SLAM теряет ориентиры.

Освещение

Солнце:

  • ослепляет камеру;
  • меняет контраст.
Поэтому реальные системы часто используют комбинацию:
Visual-Inertial SLAM
+
Барометр
+
Radar/LiDAR
+
GNSS (если доступен)
+
AI Vision

Главный вывод

Автономный БПЛА без GPS — это конвейер восприятие → SLAM/VIO → оценка состояния (EKF) → автопилот → актюаторы. Детали слияния и управления разобраны в главе 12 и главе 18; здесь важнее дисциплина интеграции: калибровка, синхронизация, стенд и только потом полёт.

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

Глава 14. Сравнение современных SLAM-систем для БПЛА: ORB-SLAM3, VINS-Fusion, OpenVINS, FAST-LIO2 и LIO-SAM

«Не существует лучшего SLAM вообще. Существует лучший SLAM для конкретной задачи, сенсоров и вычислительных ограничений.»

Почему выбор SLAM-системы так важен

На бумаге все системы делают одно и то же:

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

Но в реальном БПЛА разница огромна. Одна система может идеально работать внутри помещения. Другая — на улице. Третья — на скорости 20 м/с. Четвертая — при полном отсутствии текстуры.

Основные классы SLAM для дронов

Сегодня можно разделить системы на четыре больших класса.

Visual SLAM

Использует только камеры. Пример:

  • ORB-SLAM3.

Плюсы:

  • легкий;
  • дешевый;
  • мало энергопотребление.

Минусы:

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

Visual-Inertial SLAM (VIO)

Камера + IMU. Это наиболее распространенный вариант для БПЛА. Примеры:

  • VINS-Fusion;
  • OpenVINS;
  • ORB-SLAM3 V-I.

LiDAR SLAM

Использует лазерный сканер. Примеры:

  • LIO-SAM;
  • FAST-LIO2.

Плюсы:

  • точная геометрия;
  • работает ночью.

Минусы:

  • цена;
  • вес;
  • энергопотребление.

Multi-Sensor Fusion

Комбинация:

  • камеры;
  • IMU;
  • LiDAR;
  • GPS;
  • радар.

Это уровень промышленных систем.

ORB-SLAM3

Общая информация

ORB-SLAM3 GitHub ORB-SLAM3 — одна из самых известных открытых SLAM-систем. Разработчик: исследовательская группа Universidad de Zaragoza.

Поддерживаемые режимы

ORB-SLAM3 умеет работать:

Monocular

Одна камера. Камера

SLAM

Stereo

Две камеры. Левая камера

+

Правая камера Позволяет сразу получать глубину.

RGB-D

Камера + датчик глубины. Например: RealSense.

Visual-Inertial

Камера + IMU. Наиболее интересный режим для БПЛА.

Архитектура ORB-SLAM3

CameraORB Feature ExtractionTrackingLocal MappingLoop ClosingGlobal Optimization

Сильные стороны

Отличный Loop Closure

Одна из лучших сторон системы. Она хорошо понимает: "Я уже был здесь."

Работа с долгими маршрутами

Можно пройти:

  • несколько комнат;
  • большие здания;
  • городские улицы.

Хорошая научная база

Очень много исследований используют ORB-SLAM3 как эталон.

Недостатки

Для дрона:

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

На слабом процессоре может появиться задержка.

VINS-Fusion

Репозиторий: VINS-Fusion GitHub

Основная идея

VINS создавался именно для летательных аппаратов. Главный акцент: Visual-Inertial Odometry.

Архитектура

CameraFeature TrackingIMU PreintegrationEstimatorPose Output

Преимущества

Очень хорошая скорость

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

  • квадрокоптеров;
  • роботов;
  • мобильных платформ.

Отличная работа с IMU

Это главное преимущество. Для дрона это критично.

Поддержка GPS

Можно плавно переходить:

GPS есть:используем GPSGPS пропал:переходим на VIO

Недостатки

Loop Closure менее развит, чем в ORB-SLAM3. То есть: для коротких полетов — отлично. Для огромных карт — хуже.

OpenVINS

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

Философия OpenVINS

Это не просто готовый продукт. Это исследовательская платформа. Главный алгоритм: MSCKF (Multi-State Constraint Kalman Filter)

Как работает MSCKF?

Вместо хранения всей карты система хранит:

  • текущие состояния камеры;
  • ограничения между ними.

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

Преимущества

Очень высокая скорость

OpenVINS может работать:

  • на ARM;
  • встроенных компьютерах;
  • маломощных системах.

Хорошая стабильность

Особенно:

  • внутри помещений;
  • на небольших БПЛА.

Недостатки

Нет полноценного SLAM в классическом понимании. То есть:

  • карта ограничена;
  • Loop Closure отсутствует или ограничен.

Это скорее: очень хороший VIO.

FAST-LIO2

Репозиторий: FAST-LIO2 GitHub

Что делает FAST-LIO2 особенным?

Он объединяет:

  • LiDAR;
  • IMU.

То есть: LIO

=

LiDAR-Inertial Odometry.

Главная идея

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

  • быстро добавлять точки;
  • быстро искать соответствия.

Преимущества

Очень высокая скорость. Может работать:

  • на дронах;
  • роботах;
  • автономных машинах.

Где он лучше Visual SLAM?

Например: Ночь. Камера: ████████ LiDAR:

  • • • • •
  • • • • •

Недостатки

Нужен хороший LiDAR. А это:

  • масса;
  • цена;
  • энергопотребление.

LIO-SAM

Репозиторий: LIO-SAM GitHub

Архитектура

Использует:

  • LiDAR;
  • IMU;
  • факторный граф;
  • GTSAM

Схема:

LiDARFeature ExtractionScan MatchingFactor GraphOptimizationMap

Преимущества

Очень высокая точность. Особенно:

  • большие территории;
  • картография;
  • наземные роботы.

Недостатки

Для маленького дрона: может быть слишком тяжелым.

Сравнительная таблица

СистемаСенсорыСкоростьКартаДля БПЛА
ORB-SLAM3Камера/IMUСредняяОтличнаяХорошо
VINS-FusionКамера/IMU/GPSВысокаяСредняяОтлично
OpenVINSКамера/IMUОчень высокаяОграниченнаяОтлично
FAST-LIO2LiDAR/IMUОчень высокаяХорошаяОтлично
LIO-SAMLiDAR/IMUСредняяОтличнаяХорошо

Что выбрать для зависания на 200 метрах?

Теперь отвечаем на исходную задачу.

Вариант 1

Бюджетный БПЛА. Цель: удержание точки. Оптимально:

Камера Global ShutterIMUOpenVINSPX4

Вариант 2

Исследовательская платформа.

Stereo CameraIMUORB-SLAM3Jetson Orin

Вариант 3

Промышленный аппарат.

Stereo CameraLiDARIMUFAST-LIO2VIO Fusion

Почему нельзя просто поставить ORB-SLAM3?

Потому что зависание — это не только координаты. Нужно знать:

  • положение;
  • скорость;
  • ускорение;
  • углы;
  • угловые скорости.

Для управления важнее не просто: "где я?" а: "куда я движусь?" Поэтому полноценная система выглядит так:

SLAMPositionVelocityOrientationEKFPX4Control

Архитектура уровня современных систем

Самый надежный вариант сегодня:

Stereo Camera
│
▼
Visual SLAM
│
IMU ────────────────┤
▼
State Estimator
▲
│
LiDAR SLAM
│
▼
PX4 Autopilot
Это называется:
Multi-Modal Localization

Главный инженерный вывод

Если задача: "держать дрон в воздухе без GPS на высоте 200 метров" то лучший подход сегодня: не чистый SLAM. А: Visual-Inertial Navigation + надежный State Estimation + автопилот. SLAM нужен для:

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

Но мгновенная стабилизация выполняется связкой: IMU → EKF → PX4 → Motors

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

Глава 15. Навигация без GPS: как беспилотники определяют положение при отсутствии спутниковой навигации

«GPS — это не навигация. GPS — это внешний источник координат. Настоящая автономная навигация начинается тогда, когда аппарат способен понимать своё положение самостоятельно.»

Почему GPS нельзя считать надежной системой

Спутниковая навигация кажется идеальной:

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

Но у неё есть фундаментальная слабость. Сигнал от спутника чрезвычайно слабый. На поверхности Земли его мощность примерно сопоставима с уровнем фонового радиошума. Это означает:

  • его легко заглушить;
  • его легко исказить;
  • его сложно восстановить внутри помещений.

Что происходит при потере GPS?

Обычный аппарат делает следующее:

GPSКоординатыАвтопилотКоррекция положенияПосле потери:GPSXАвтопилот

?

Дрейф Аппарат начинает зависеть только от:

  • IMU;
  • барометра;
  • магнитометра.

Через некоторое время появляется ошибка.

Основные способы навигации без GPS

Современные автономные системы используют комбинацию методов. Основные направления:

  • Инерциальная навигация.
  • Visual Navigation.
  • LiDAR Navigation.
  • Radar Navigation.
  • Terrain Relative Navigation.
  • Magnetic Navigation.
  • Radio Navigation.
  • AI-based Navigation.

Инерциальная навигация (INS)

Это самый старый метод. Он появился задолго до дронов. Используется:

  • самолетами;
  • ракетами;
  • кораблями;
  • подводными аппаратами.

Принцип работы

IMU измеряет:

  • ускорение;
  • угловую скорость.

Дальше математика интегрирует движение. Например:

ускорение:
1 м/с²
через секунду:
скорость:
1 м/с
еще через секунду:
положение:
1 метр

Главная проблема — ошибка накапливается

Это называется: Dead Reckoning (счисление пути). Пример:

идеальная траектория:
──────────────
реальная:
──────────╱
Через минуту ошибка может составлять:
  • метры;
  • десятки метров;
  • сотни метров.

Почему военная техника использует INS?

Потому что у неё стоят не обычные MEMS-датчики. Используются:

FOG

Fiber Optic Gyroscope. или

RLG

Ring Laser Gyroscope. Преимущество: очень маленький дрейф. Но стоимость: от тысяч до десятков тысяч евро. Для маленького дрона это слишком дорого.

Visual Navigation

Теперь переходим к главному направлению. Дрон использует камеру как навигационный прибор. Человек делает то же самое. Если вас высадить в незнакомом городе без карты, вы ориентируетесь:

  • по зданиям;
  • дорогам;
  • знакам;
  • ориентирам.

Дрон делает похожую работу.

Visual Odometry

Самый простой вариант. Камера сравнивает: кадр 1: Дом Дерево Столб кадр 2: Дом Дерево Столб И определяет: как изменилось положение.

Visual Place Recognition

Более сложная задача. Вопрос: "Я когда-нибудь уже был здесь?" Используется:

  • ORB;
  • SIFT;
  • SuperPoint;
  • DINO;
  • NetVLAD.

Современная тенденция — нейросетевое зрение

Классический SLAM:

ПризнакиМатематикаПоложениеНовый подход:ИзображениеНейросетьОписание сценыПоложение

Примеры современных подходов

SuperPoint

Нейросеть для поиска ключевых точек. Репозиторий: SuperPoint GitHub

SuperGlue

Нейросеть для сопоставления признаков. Используется:

  • роботами;
  • автономными системами;
  • исследованиями SLAM.

DINO / Vision Transformers

Новое направление. Модель понимает: не отдельные пиксели, а смысл сцены. Например: "это дорога возле здания".

Terrain Relative Navigation (TRN)

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

Идея

Аппарат сравнивает: реальную поверхность с заранее подготовленной картой. Например: есть карта высот: 100м 105м 110м 90м 95м 102м Датчики получают: 95м 96м 101м Система ищет совпадение.

Где применяется?

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

Пример

Посадка аппарата на Марс. Спутников GPS нет. Используется:

  • карта поверхности;
  • камеры;
  • сопоставление рельефа.

DSMAC — сравнение изображений местности

Еще один старый, но эффективный метод. DSMAC: Digital Scene Matching Area Correlation Принцип: Есть эталонное изображение:

─────дорога─────

███ лес ███ дом Камера получает:

─────дорога─────

███ лес ███ дом Алгоритм определяет: где находится аппарат.

LiDAR Navigation

Если есть лидар: дрон может строить локальную карту. Например:

Стена
│
│
│
Дерево
▲
И сравнивать:
где он находится относительно объектов.

Radar Navigation

Очень интересное направление. Радар имеет преимущества:

  • работает ночью;
  • работает в тумане;
  • меньше зависит от освещения.

Используются:

  • миллиметровые радары;
  • FMCW Radar.

Они позволяют видеть:

  • препятствия;
  • поверхность;
  • скорость относительно земли.

Магнитная навигация

Очень необычный метод. Земля имеет магнитное поле. Но оно не идеально однородно. Есть:

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

Можно создать карту магнитного поля. Затем:

измерить поле
↓
сравнить с картой
↓
определить положение.

UWB-навигация

Если есть возможность установить маяки. Используется: Ultra Wide Band. Схема:

Маяк
\
\
Дрон
/
Маяк
Точность:
примерно:
10–30 сантиметров.
Используется:
  • складами;
  • роботами;
  • промышленностью.

Самый перспективный вариант — Sensor Fusion

Будущее не за одним датчиком. А за объединением. Например:

КамераVisual SLAMIMULiDARRadarBarometerEKF / Factor GraphПоложение аппарата

Как выглядит реальный алгоритм автономного дрона

Каждые несколько миллисекунд:

Шаг 1

IMU сообщает: "Я повернулся вправо."

Шаг 2

Камера сообщает: "Я вижу те же объекты, но немного смещенные."

Шаг 3

LiDAR сообщает: "Расстояние до поверхности изменилось."

Шаг 4

EKF объединяет данные. Получает:

X

Y Z Roll Pitch Yaw Velocity

Почему современные системы становятся автономными

Раньше логика была:

GPS
↓
Навигация
↓
Управление
Сегодня:
Сенсоры
↓
Восприятие мира
↓
Понимание ситуации
↓
Навигация
↓
Планирование
↓
Управление
Это уже не просто автопилот.
Это робот.

Главный вывод для задачи "зависание на 200 метрах без GPS"

Для такой задачи наиболее реалистичная архитектура:

Минимальная:

  • Global Shutter камера;
  • IMU;
  • Visual-Inertial Odometry;
  • PX4 EKF.

Надежная:

  • стереокамера;
  • IMU высокого качества;
  • барометр;
  • LiDAR вниз;
  • AI Vision.

Промышленная:

  • несколько камер;
  • LiDAR;
  • radar;
  • высокоточная IMU;
  • несколько независимых алгоритмов локализации.

Итог

GPS — это только один источник координат. Настоящая автономность начинается там, где аппарат способен:

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

Именно SLAM является фундаментом этой автономности.

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

Глава 16. Искусственный интеллект в SLAM: как нейросети меняют автономную навигацию

«Классический SLAM отвечает на вопрос „где я?“. Системы с семантикой и обученными моделями добавляют второй слой: „что это за объекты и какие из них надёжны как ориентиры“.»

Почему одной геометрии недостаточно

Классический Visual SLAM строит оценку положения и карту из геометрических примитивов: точек, линий, плоскостей и ограничений между ними. Для фильтра и оптимизатора ориентир — это координата с ковариацией, а не «дерево» или «автомобиль». В статичной сцене этого достаточно. В городской среде динамические объекты (транспорт, люди) портят ассоциации признаков и создают ложное ощущение движения камеры. Поэтому инженерия следующего шага — не «заменить SLAM нейросетью», а добавить к геометрическому контуру слой восприятия, который размечает сцену и управляет тем, какие наблюдения допускаются в оценку состояния.

Semantic SLAM

Semantic SLAM расширяет карту семантическими метками: здание, дорога, растительность, динамический объект и т.д. Геометрия по-прежнему оценивается методами VO/VIO/LiDAR SLAM; семантика используется для:

  • исключения динамических ориентиров из трекинга и Bundle Adjustment;
  • устойчивого loop closure по устойчивым классам (фасады, инфраструктура);
  • планирования маршрута с учётом проходимости и правил сцены.
КамераДетекция / сегментацияSemantic map + VO/VIOПоза и карта

На практике семантика чаще всего получается из сегментации/детекции (например, моделей семейства YOLO или сегментаторов на Vision Transformer) и проецируется в карту через известную позу и модель камеры. Качество всей цепочки упирается в калибровку, синхронизацию и задержку инференса не меньше, чем в саму нейросеть.

Dynamic SLAM

Dynamic SLAM явно разделяет статические и динамические элементы. Статика (несущие конструкции, рельеф, инфраструктура) остаётся в карте и в факторах оптимизации. Динамика маскируется или трекается отдельно, но не используется как якорь локализации. Без такого разделения дрейф на оживлённых улицах и парковках растёт даже у сильных классических систем.

Обученные признаки и Deep VO

Гибридный путь сохраняет геометрический backend, заменяя hand-crafted дескрипторы обученными: SuperPoint + SuperGlue дают более устойчивые соответствия при смене освещения и ракурса. Отдельная линия исследований — Deep Visual Odometry (DeepVO, DROID-SLAM и др.), где сеть оценивает движение или участвует в оптимизации карты. Для борта БПЛА критичны детерминизм задержки, потребление и поведение вне распределения обучающих данных: на высоте и при однородной текстуре классический VIO с хорошим IMU часто остаётся базовым контуром, а сеть — усилением front-end.

Кадр A / кадр BSuperPointSuperGlueГеометрия / поза

NeRF и 3D Gaussian Splatting

Нейросетевые представления сцены (NeRF, 3D Gaussian Splatting) полезны для инспекции и фотореалистичной реконструкции после полёта. Как замена real-time state estimation на борту они пока редки: вычислительная стоимость и требования к обзору сцены плохо стыкуются с контуром управления 200–1000 Гц. Типичный промышленный паттерн — классический/гибридный SLAM в полёте и нейрореконструкция на земле или на мощном edge-компьютере после миссии.

Планирование поверх карты (mission / behavior layer)

SLAM и EKF отвечают за состояние. Отдельный слой планирования использует карту (геометрическую и, при наличии, семантическую), чтобы выбирать безопасный манёвр: обход, ожидание, смена высоты, возврат. Это не «магия AI вместо PX4», а постановка целей и ограничений для автопилота. Vision-Language модели могут помогать разбирать команды оператора («найди красную дверь у лестницы»), но выход в контур управления должен проходить через проверяемые геометрические и safety-ограничения.

Почему гибрид, а не чистый AI

Обученные модели ошибаются иначе, чем геометрический estimator: уверенная, но неверная метка класса или сдвиг bbox на десятки сантиметров недопустимы для зависания. Поэтому рабочая архитектура остаётся гибридной:

Neural perception Semantic SLAM Classical VIO World model → planner → PX4
  • математический SLAM / VIO / LIO для метрической позы;
  • нейросети для признаков, семантики и фильтрации динамики;
  • EKF / факторный граф для слияния датчиков;
  • автопилот (PX4/ArduPilot) для исполнения.

Инженерный вывод

AI меняет SLAM там, где геометрия слепа к смыслу сцены: динамика, семантика, устойчивость соответствий. Он не отменяет калибровку, синхронизацию, IMU и state estimation. Для БПЛА разумная цель — Spatial AI как надстройка над проверенным навигационным контуром, а не замена его одной сетью.

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

Глава 17. Практический проект: создание GPS-denied дрона с Visual-Inertial SLAM

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

Цель проекта

Создадим архитектуру экспериментального БПЛА, способного:

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

Целевая задача: квадрокоптер массой 2–5 кг, высота работы до нескольких сотен метров, автономная стабилизация и навигация.

Общая архитектура системы

Базовый контур тот же, что в главах 11 – 12 : Visual-Inertial SLAM на вычислителе → оценка состояния → PX4 → моторы. Ниже — схема проекта без повторного списка железа.
Упрощённая цепочка:
Камера
│
▼
Visual-Inertial SLAM
│
▼
Оценка положения
│
▼
EKF
│
▼
PX4
│
▼
Контроллеры PID
│
▼
ESC
│
▼
Двигатели
Но это только часть системы.
Полная архитектура:
┌───────────────┐
│ Stereo Camera │
└───────┬───────┘
│
▼
┌───────────────┐
│ Jetson Orin │
│ ROS 2 + SLAM │
└───────┬───────┘
│ MAVLink
▼
┌───────────────┐
│ Pixhawk/PX4 │
└───────┬───────┘
│
▼
┌───────────────┐
│ Flight Stack │
└───────┬───────┘
│
▼
Motors

Выбор рамы

Для SLAM лучше подходят не самые маленькие аппараты. Причины:

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

Малый экспериментальный класс

Размер: 250–450 мм. Плюсы:

  • дешевый;
  • безопаснее для тестов.

Минусы:

  • мало места;
  • сильное влияние вибраций.

Оптимальный класс

Размер: 500–650 мм. Это наиболее удобная платформа для R&D. Можно разместить:

  • Jetson;
  • камеры;
  • LiDAR;
  • аккумулятор большой емкости.

Выбор вычислителя

Вариант 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;
  • планирование;
  • обработка нескольких камер.

Выбор камеры

Требования к Global Shutter, FPS и оптике — в главе 2 и главе 11. Ниже — только выбор под этот учебный проект.

Минимальные требования

Разрешение

Не обязательно 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;
  • промышленная синхронизация;
  • высокая надежность.

IMU и размещение датчиков

Критическая ошибка: ставить IMU где удобно. Правильно: IMU должна быть:

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

Типичные датчики:

Bosch BMI088

Bosch BMI088 Популярен благодаря:

  • низкому шуму;
  • хорошей виброустойчивости.

InvenSense ICM-42688

ICM-42688-P

Автопилот

Основная задача: не SLAM. А управление полетом. Популярные варианты:

Pixhawk + PX4

PX4 Autopilot

ArduPilot

ArduPilot

Почему нужен отдельный автопилот?

Представим: Jetson завис. Linux обновился. SLAM остановился. Но: PX4 продолжает:

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

Программный стек

Теперь собираем программную часть.

Операционная система

Обычно: Ubuntu 22.04.

Middleware

ROS 2 Humble. Он отвечает за:

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

SLAM

Выбор:

Для начала:

OpenVINS. Почему:

  • легче;
  • быстрее;
  • хорошо подходит для VIO.

Для полноценной карты:

ORB-SLAM3.

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

Это один из самых важных этапов.

Камера

Нужно определить: fx fy cx cy k1 k2 p1 p2 То есть:

  • фокус;
  • центр;
  • искажения.

Камера + IMU

Нужно определить: где находится IMU относительно камеры. Например:

Camera
X + 50 мм
↓
IMU
Инструмент:
Kalibr GitHub

Интеграция с PX4

SLAM выдает: position orientation velocity Например:

X = 15.2 м

Y = 8.7 м

Z = 35.4 м

Yaw = 120° Эти данные отправляются через:

  • MAVLink;
  • MAVROS;
  • Micro XRCE-DDS.

Схема:

SLAMOdometryMAVROSPX4 EKF2Position ControllerMotors

Испытания

Правильная последовательность:

Этап 1

Статика. Дрон стоит на столе. Проверяем:

  • камера;
  • IMU;
  • координаты.

Этап 2

Ручное перемещение. Носим аппарат руками. SLAM должен:

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

Этап 3

Первое зависание. Высота: 1–2 метра. Не 200 метров.

Этап 4

Открытая площадка. Постепенно:

  • 10 м;
  • 50 м;
  • 100 м.

Почему 200 метров — сложная задача

На большой высоте возникают проблемы.

Проблема 1. Мало деталей

На земле: камень: 100 пикселей. На высоте: 5 пикселей.

Проблема 2. Однообразная поверхность

Плохо:

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

Хорошо:

  • здания;
  • дороги;
  • лес;
  • инфраструктура.

Проблема 3. Освещение

Солнце меняет:

  • экспозицию;
  • контраст;
  • тени.

Практическая архитектура для высоты 200 м

На высоте усиливаются потеря текстуры, ветер и ошибки масштаба — поэтому к VIO добавляют баро/дальномер/LiDAR и опираются на EKF ( глава 18 , глава 19 ). Схема усиленного контура:
Stereo Camera
│
▼
Visual-Inertial SLAM
│
IMU ────────────┤
│
Downward LiDAR ─┤
│
Barometer ──────┤
│
▼
EKF
│
▼
PX4

Оценка бюджета прототипа

Экспериментальный уровень

Примерно: 1000–2000 € Включает:

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

R&D уровень

Примерно: 3000–8000 € Добавляются:

  • качественная камера;
  • Jetson;
  • LiDAR;
  • промышленная IMU.

Промышленный уровень

Может превышать: 10000–50000 € за счет:

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

Главный инженерный вывод

Создание GPS-denied БПЛА — это задача не одного алгоритма. Рабочая система строится вокруг принципа: "много независимых источников информации → объединение → оценка состояния → управление" Именно поэтому лучшие автономные аппараты используют не один SLAM, а целую навигационную архитектуру.

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

Глава 18. EKF и State Estimation — настоящий «мозг» автономного дрона

«SLAM дает аппарату зрение. IMU дает ощущение движения. Но именно State Estimator превращает разрозненные данные в единую картину: где находится дрон, куда он движется и насколько можно доверять этой информации.»

Почему одного SLAM недостаточно

Вернемся к исходной задаче: дрон должен зависнуть на высоте 200 метров без GPS.

Кажется логичным:
Камера → SLAM → координаты → управление.
Но это не работает.
Причина:
SLAM дает положение с задержкой.
Например:
Камера:
30 кадров/сек.
SLAM:
20–50 расчетов/сек.
А двигатель меняет тягу:
сотни раз в секунду.
Получается:
Двигатели
1000 Гц
PX4
250 Гц
IMU
1000 Гц
SLAM
30 Гц

Если напрямую управлять по SLAM, аппарат будет запаздывать.

Что такое 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.

Главная идея EKF

EKF: Extended Kalman Filter Расширенный фильтр Калмана. Это математический механизм объединения нескольких источников информации. Он постоянно отвечает: "Какое положение наиболее вероятно с учетом всех измерений?"

Почему просто усреднять нельзя

Допустим: Камера говорит:

X = 10.0 м

IMU говорит:

X = 10.8 м

Барометр:

X = 9.7 м

Кто прав? Ответ: зависит от качества каждого датчика. EKF учитывает:

  • точность;
  • шум;
  • задержку;
  • предыдущие данные.

Два этапа EKF

Фильтр работает циклически. Каждый цикл состоит из:

Prediction

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

Update

Коррекция. Используем реальные измерения. Схема:

IMUPredictionПредположениеSensor UpdateНовое состояние

Prediction — что делает IMU

IMU говорит: "Я ускорился вперед." EKF считает:

Через время Δt:
[ v = v_0 + a \cdot t ]
[ x = x_0 + v \cdot t ]
Но проблема:
IMU шумит.
Поэтому ошибка растет.
Через 10 секунд:
идеальная траектория:
──────────
оценка:
────────╱

Update — как датчики исправляют ошибку

Теперь приходит SLAM: Текущее положение:

X=12.3

EKF сравнивает: с прогнозом:

X=12.8

Разница:

0.5 м

Называется: innovation (невязка). Фильтр решает: насколько доверять:

  • IMU;
  • SLAM.

Ковариация — самая важная часть

Каждый источник данных имеет неопределенность. Например:

Камера

Ошибка: ±10 см

GPS

Ошибка: ±2 м

IMU

Ошибка: растет со временем. EKF хранит это как: матрицу ковариации. Упрощенно:

маленькая ошибкабольшое довериебольшая ошибкамалое доверие

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

Представим: SLAM потерялся. Но продолжает выдавать координаты. Например: Реальность:

X=100

SLAM:

X=140

Если EKF слепо поверит ему, дрон получит неправильную коррекцию. Поэтому важны:

  • качество оценки;
  • контроль ошибок;
  • отказоустойчивость.

PX4 EKF2

В популярных автопилотах используется собственный State Estimator. В PX4: EKF2 Он объединяет:

  • IMU;
  • GPS;
  • барометр;
  • магнитометр;
  • воздушную скорость;
  • внешнюю одометрию;
  • визуальную навигацию.

Документация: PX4 EKF2 Estimator

Внешняя навигация через SLAM

Когда GPS отсутствует: SLAM становится источником: External Vision Поток:

CameraVIO / SLAMOdometryPX4 EKF2Position ControllerPX4 получает:
  • позицию;
  • ориентацию;
  • скорость.

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

Это очень важный момент. Для зависания: ошибка позиции:

20 см

не всегда критична. Но если скорость:

2 м/с

то аппарат уже движется. Поэтому EKF особенно ценит:

  • velocity estimate;
  • angular rate.

Дрейф Yaw — самая сложная ошибка

У дрона есть три угла: Roll Pitch Yaw Roll и Pitch легко корректируются: гравитацией. IMU знает: где низ. Yaw сложнее. Почему? Земное притяжение не дает направления. Нужен:

  • магнитометр;
  • GPS course;
  • визуальные ориентиры;
  • SLAM loop closure.

Именно ошибка курса часто разрушает автономную навигацию.

Почему на 200 метрах сложнее

Представим: дрон смотрит вниз. Камера видит:

  • поле;
  • снег;
  • лес.

SLAM начинает терять признаки.

Тогда:
SLAM ↓
а
IMU ↑
начинает накапливать ошибку.
Хорошая система должна:
  • определить ухудшение SLAM;
  • увеличить доверие другим датчикам;
  • не допустить потери управления.

Factor Graph — альтернатива EKF

В современных SLAM-системах часто используется другой подход. Factor Graph Вместо: "текущее состояние" хранится: вся история. Например:

Позиция 1
↓
Позиция 2
↓
Позиция 3
↓
Позиция 4
И система оптимизирует всю траекторию.
Используется:
  • ORB-SLAM3;
  • LIO-SAM;
  • GTSAM

EKF против Factor Graph

EKFFactor Graph
СкоростьОчень высокаяНиже
ПамятьМалоБольше
Реальное времяОтличноХорошо
Большие картыОграниченноОтлично
АвтопилотДаОбычно нет

На практике: SLAM использует Factor Graph. Автопилот использует EKF. Они работают вместе.

Полная архитектура автономного БПЛА

КамераVIO / SLAMPose + VelocityEKF2IMUBaroGPSMagPX4 ControllerMotors

Практический вывод для зависания без GPS

Если задача: "удержание точки на высоте 200 метров" то минимальная надежная архитектура:

Сенсоры:

  • Global Shutter камера;
  • IMU;
  • барометр.

Алгоритмы:

  • Visual-Inertial Odometry;
  • EKF;
  • контроль качества данных.

Автопилот:

  • PX4;
  • ArduPilot.

Но для реальной надежности: добавляют:

  • LiDAR;
  • радар;
  • вторую камеру;
  • резервную навигацию.

Главный вывод главы

SLAM — это глаза. IMU — это чувство движения. EKF — это мозг, который решает, кому верить. Автопилот — это мышцы. Только их совместная работа позволяет беспилотнику удерживаться в пространстве без GPS.

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

Глава 19. Удержание позиции на высоте 200 метров без GPS: практическая инженерия

«Зависнуть на высоте 2 метров без GPS — это задача компьютерного зрения. Зависнуть на 200 метрах — это уже задача полноценной навигационной системы.»

Почему зависание на 200 метрах — особый случай

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

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

Без GPS дрон должен самостоятельно определить:

  • Где он находится?
  • С какой скоростью движется?
  • На какой высоте находится?
  • Как компенсировать внешние воздействия?

Что означает "стоять на месте"

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

Положение:

X

Y

Z

Ориентация:

Roll Pitch Yaw Полная модель:

6 DOF3 координаты3 угла

Почему обычный GPS хорошо решает эту задачу

GPS дает:

X

Y Z каждые несколько секунд. Автопилот сравнивает: цель:

X=0

Y=0

текущее:

X=1.5

Y=-0.8

и корректирует движение. Без GPS эти координаты нужно получить самостоятельно.

Optical Flow — самый простой способ удержания позиции

Один из первых методов. Используется:

  • в бытовых дронах;
  • небольших роботах;
  • бюджетных автопилотах.

Принцип

Камера смотрит вниз. Например:

первый кадр:
┌───────────┐
│ камень │
│ дерево│
└───────────┘
Через секунду:
┌───────────┐
│ камень │
│ дерево │
└───────────┘
Алгоритм видит:
изображение сместилось.
Если картинка ушла вправо:
значит аппарат движется влево.

Ограничения Optical Flow

Для высоты 200 метров это становится проблемой. Почему? Разрешение земли уменьшается. На высоте 3 метра: камень: ████████ На высоте 200 метров: камень:

.

Камера перестает видеть движение. Optical Flow хорошо работает:

ВысотаРабота
0.5–10 мОтлично
10–50 мХорошо
50–100 мЗависит от камеры
200 мТребуется другая система

Downward Vision — взгляд вниз

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

ДронКамераЗемляОна может работать совместно с:
  • VIO;
  • SLAM;
  • AI Vision.

Но проблема остается: земля должна иметь признаки. Хорошо:

  • здания;
  • дороги;
  • лес;
  • поля с текстурой.

Плохо:

  • снег;
  • вода;
  • однотонный грунт.

LiDAR Altimeter — измерение высоты лазером

Очень распространенный датчик.
Он отвечает не за координаты X/Y,
а за высоту Z.
Принцип:
Дрон
↓ лазер
Земля
↑ отражение
Измеряется время прохождения сигнала.
Преимущества:
  • высокая точность;
  • независимость от GPS;
  • работает ночью.

Недостатки: дальность ограничена. Типичные диапазоны:

Малые LiDAR:

0–40 метров.

Промышленные:

сотни метров.

Radar Altimeter — высотомер для серьезных систем

Радар имеет преимущество: он работает там, где камера плохо видит. Например:

  • туман;
  • дым;
  • ночь;
  • пыль.

Используется:

  • авиацией;
  • военными системами;
  • промышленными БПЛА.

Принцип: излучение радиоволны: Дрон

~~~~~~~

Земля

отражение Измеряется:

  • высота;
  • скорость сближения;
  • структура поверхности.

Как удерживать X/Y без GPS на 200 метрах?

Вот главный вопрос. Высоту определить относительно легко. Сложность: горизонтальное положение. Есть несколько подходов.

Метод 1. Visual-Inertial Odometry

Камера + IMU. Система оценивает: "Я сместился на 20 сантиметров." Схема:

Камера
↓
Признаки
↓
Изменение положения
↓
Коррекция
Это основной современный метод.

Метод 2. LiDAR SLAM

Дрон строит карту:

Здание
│
│
Дерево
▲
И понимает:
где находится относительно нее.
Минусы:
  • вес;
  • цена;
  • энергопотребление.

Метод 3. UWB

Устанавливаются маяки. Например: Маяк A Дрон Маяк B Дальность измеряется радиосигналом. Плюсы: точность: 10–30 см. Минус: нужна инфраструктура.

Метод 4. Карта местности

Terrain Relative Navigation. Дрон сравнивает: то, что видит, с заранее известной картой. Например: Спутниковая карта: дорога лес река Камера: дорога лес река Алгоритм ищет совпадение.

Самая надежная схема для 200 метров

Промышленная архитектура:

КамерыVisual SLAMIMULiDARRadarBarometerEKFPX4

Что происходит при ветре

Представим: ветер толкает дрон. Без коррекции: → Дрон IMU чувствует: ускорение. Но не знает: это ветер или маневр. Камера видит: смещение объектов. SLAM говорит: "Я переместился." EKF объединяет: IMU + камера + высота и дает команду: наклониться против ветра

Почему важен контроль качества SLAM

Нельзя всегда доверять камере. Например: дрон летит над водой. SLAM: ошибка растет Система должна понять: "визуальная навигация ненадежна." Используются признаки:

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

Практическая конфигурация для зависания 200 метров

Вариант R&D

Stereo Global Shutter CameraIMU BMI088Jetson Orin NanoOpenVINSPX4 EKF2Барометр

Более надежный вариант

Добавить:Downward LiDARRadar Altimeterвторую камеру

Почему военные и промышленные системы используют много датчиков

Потому что нет идеального сенсора. Камера:

  • видит мир

− зависит от света LiDAR:

  • точная геометрия

− плохо работает в некоторых условиях Radar:

  • работает почти всегда

− меньше деталей IMU:

  • очень быстрый

− дрейфует Поэтому используется принцип: сенсорная избыточность.

Главный вывод

Удержание дрона на высоте 200 метров без GPS — это не задача одного SLAM. Это комбинация:

Visual Navigation
+
IMU
+
EKF
+
Altitude Sensors
+
Flight Controller
SLAM дает понимание положения.

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

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

Глава 20. Полная архитектура автономного БПЛА уровня Enterprise

«Промышленный автономный дрон отличается от любительского не только количеством датчиков. Главное отличие — способность продолжать работу при отказе одного из элементов системы.»

Что такое Enterprise-уровень автономности

Когда говорят о промышленном автономном БПЛА, речь идет не просто о полете без GPS. Система должна обеспечивать:

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

Простой дрон:

Пилот
↓
Пульт
↓
Автопилот
↓
Двигатели
Enterprise-дрон:
Миссия
│
▼
AI Mission Planner
│
▼
World Model / SLAM
│
▼
Navigation Stack
│
▼
Flight Controller
│
▼
Actuators

Главный принцип: разделение функций

В профессиональных системах никогда не смешивают всё в одном компьютере. Обычно есть минимум три уровня.

Уровень 1. Flight Controller

Это «нервная система». Например:

  • PX4;
  • ArduPilot;
  • промышленный автопилот.

Задачи:

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

Частота работы: сотни герц.

Уровень 2. Companion Computer

Это вычислительный мозг. Например:

  • NVIDIA Jetson;
  • Qualcomm RB5;
  • Intel NUC.

Задачи:

  • SLAM;
  • AI;
  • распознавание;
  • планирование маршрута.

Уровень 3. Cloud / Ground Station

Внешняя система:

  • аналитика;
  • управление парком;
  • хранение карт;
  • обновления.

Архитектура современного автономного БПЛА

Полная схема:

Cloud
│
│
Mission Control
│
▼
Companion Computer
┌───────────┬───────────┬───────────┐
│ │ │ │
SLAM AI Vision Planning Mapping
│ │ │ │
└───────────┴───────────┴───────────┘
│
MAVLink / DDS
│
Flight Controller
│
Motor Control

Сенсорный комплекс Enterprise-дрона

Профессиональный аппарат обычно имеет не один датчик, а набор.

Камеры

Используются:

  • фронтальные;
  • нижние;
  • боковые;
  • панорамные.

Задачи:

Навигация

VIO / SLAM.

Обнаружение препятствий

AI Vision.

Посадка

Определение:

  • площадки;
  • препятствий;
  • ориентира.

Стереозрение

Один из основных элементов. Две камеры: Левая камера Правая камера \ / объект Разница между изображениями называется: disparity (параллакс). По ней вычисляется глубина. Плюсы:

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

Минусы: нужна хорошая текстура.

LiDAR в Enterprise-системах

LiDAR дает трехмерное пространство. Пример: дерево

  • • • • • • •

дрон Используется для:

  • построения карты;
  • обхода препятствий;
  • посадки.

Типы:

Solid State LiDAR

Компактные. Используются:

  • дроны;
  • роботы.

Mechanical LiDAR

Вращающаяся система. Плюсы:

  • большая дальность.

Минусы:

  • масса;
  • механика.

Radar — сенсор плохой погоды

Камеры имеют ограничения.

Туман:
камера ↓
Лидар:
частично ↓
Радар:
работает
Используются:
  • миллиметровые радары;
  • FMCW.

Радар может оценивать:

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

AI Vision — переход от обнаружения к пониманию

Старые системы: «Объект есть.» Новые: «Что это за объект и как с ним взаимодействовать?» Например: Камера видит: ████████ AI: Тип: человек Расстояние: 15 м Скорость: 1.2 м/с Направление: навстречу

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

YOLO

Обнаружение объектов. Ultralytics YOLO

Segment Anything Model

Сегментация объектов. Segment Anything Model (SAM) GitHub

Vision Transformers

Используются для:

  • понимания сцены;
  • классификации;
  • навигации.

World Model — новое направление

Следующий уровень после SLAM. Обычный SLAM: «Вот координаты стены.» World Model: «Это здание. В нем есть вход. Перед ним свободная площадка. Здесь безопасно лететь.» Система начинает создавать внутреннюю модель окружающего мира.

Автономное планирование маршрута

Раньше: оператор задавал точки: A → B → C Теперь: дрон получает задачу: "Осмотри линию электропередачи." Сам:

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

Используются алгоритмы:

A*

Поиск пути.

RRT / RRT*

Rapidly-exploring Random Tree. Хорошо для трехмерного пространства.

MPC

Model Predictive Control. Предсказывает: как будет двигаться аппарат.

Пример промышленной архитектуры

Допустим: дрон инспектирует завод.

До полета

Создается:

  • карта объекта;
  • зона работы;
  • ограничения.

Во время полета

Дрон:

  • Взлетает.
  • Строит локальную карту.
  • Находит объект.
  • Выполняет съемку.
  • Обнаруживает препятствие.
  • Меняет маршрут.

Система:

ЗадачаПонимание сценыПланированиеДействиеПроверка результата

Отказоустойчивость

Это главное отличие Enterprise. Обычный аппарат: сломалась камера → проблема. Промышленный: камера 1 отказала. Система:

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

Резервирование навигации

Например: Основной канал: Visual SLAM Резерв: LiDAR SLAM Резерв 2: INS Резерв 3: Radar / UWB

Пример: Skydio-подход

Skydio построила концепцию вокруг автономного компьютерного зрения. Главная идея: не оператор управляет каждым движением, а аппарат сам понимает:

  • препятствия;
  • траекторию;
  • безопасный путь.

Пример: DJI Enterprise-подход

DJI использует комбинацию:

  • камер;
  • датчиков расстояния;
  • AI обработки;
  • собственного автопилота.

Главная идея: максимальная автоматизация пилотирования.

Будущая архитектура автономного роя

Следующий шаг: не один дрон, а группа. Схема:

Drone 1
\
\
Drone 2 ---- Network ---- Drone 3
|
Shared Map
Каждый аппарат:
  • видит часть пространства;
  • передает данные;
  • объединяет карту.

Что потребуется для полностью автономного БПЛА

Минимальный промышленный набор:

Вычисление

  • Jetson AGX Orin.

Сенсоры

  • Stereo Global Shutter Camera.
  • IMU высокого класса.
  • LiDAR.
  • Radar.
  • Barometer.

ПО

  • ROS 2.
  • PX4.
  • SLAM.
  • AI Detection.
  • Planner.

Главная инженерная формула автономности

Можно выразить так: Автономность =

ВосприятиеЛокализацияПланированиеУправлениеОтказоустойчивость

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

ПоделитьсяВКонтактеTelegramMAX

По теме: БПЛА, Сенсоры и оптика

Ещё в разделе «База знаний»

Все материалы