Визуальный SLAM стерео для навигации UAV в 3D симуляции

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

Этот пример демонстрирует использование Нереальной симуляции Engine®, чтобы разработать визуальный алгоритм SLAM для UAV, оборудованного стереофотоаппаратом в сценарии городского квартала. Для получения дополнительной информации о реализации визуального трубопровода SLAM для стереофотоаппарата [1], смотрите Визуальный Одновременный пример Локализации и картографии Стерео.

Настройте среду симуляции

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

Затем выберите траекторию для UAV, чтобы следовать в сцене. Можно последовать Выбрать примеру Waypoints for Unreal Engine Simulation (Automated Driving Toolbox), чтобы в интерактивном режиме выбрать последовательность waypoints и затем использовать helperSelectSceneWaypoints функция, чтобы сгенерировать ссылочную траекторию для UAV. Этот пример использует записанную ссылочную траекторию как показано ниже:

% Load reference path
data        = load('uavStereoSLAMData.mat');

pos         = data.pos;          % Position
orientEuler = data.orientEuler;  % Orientation

UAVVisualSLAMIn3DSimulation Модель Simulink® сконфигурирована со сценой Городского квартала США с помощью блока Simulation 3D Scene Configuration (UAV Toolbox). Модель помещает UAV в сцену с помощью блока Simulation 3D UAV Vehicle (UAV Toolbox). Стереофотоаппарат, состоящий из двух Симуляций 3D Камера (UAV Toolbox) блоки, присоединен к UAV. В диалоговом окне блока Simulation 3D Camera (UAV Toolbox) используйте вкладку Mounting, чтобы настроить размещение камеры. Используйте вкладку Parameters, чтобы сконфигурировать свойства камеры симулировать различные камеры. Чтобы оценить внутренние параметры стереофотоаппарата, который вы хотите симулировать, используйте Использование приложения Приложения Stereo Camera Calibrator.

% Stereo camera parameters
focalLength    = [1109, 1109]; % In pixels
principalPoint = [640, 360];   % In pixels [x, y]
imageSize      = [720, 1280];  % In pixels [mrows, ncols]
baseline       = 0.5;          % In meters

% Open the model
modelName = 'UAVVisualSLAMIn3DSimulation';
open_system(modelName);

Реализуйте визуальный алгоритм SLAM стерео

Блок Helper Stereo Visual SLAM System реализует визуальный трубопровод SLAM стерео, состоя из следующих шагов:

  • Инициализация карты: трубопровод запускается путем инициализации карты 3-D точек от пары изображений, сгенерированных от стереофотоаппарата с помощью карты несоизмеримости. Левое изображение хранится как первый ключевой кадр.

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

  • Локальное Отображение: Если текущее левое изображение идентифицировано как ключевой кадр, новые 3-D точки карты вычисляются из несоизмеримости стереопары. На данном этапе свяжитесь, корректировка используется, чтобы минимизировать ошибки перепроекции путем корректировки положения камеры и 3-D точек.

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

Для получения дополнительной информации реализации алгоритма смотрите Визуальный Одновременный пример Локализации и картографии Стерео.

Запустите визуальную симуляцию SLAM стерео

Симулируйте модель и визуализируйте результаты. Блок Video Viewer отображает стереоизображение вывод. Проигрыватель Облака точек отображает восстановленную 3-D карту с предполагаемой траекторией камеры.

if ~ispc
    error("Unreal Engine Simulation is supported only on Microsoft" + char(174) + " Windows" + char(174) + ".");
end

% Run simulation
sim(modelName);

Loop edge added between keyframe: 5 and 356
Loop edge added between keyframe: 3 and 356
Loop edge added between keyframe: 4 and 358
Loop edge added between keyframe: 5 and 358
Loop edge added between keyframe: 6 and 358

Закройте модель.

close_system(modelName);

Ссылки

[1] Mur-Artal, Рауль и Хуан Д. Тардос. "ORB-SLAM2: система SLAM с открытым исходным кодом для монокуляра, стерео и камер RGB-D". Транзакции IEEE на Робототехнике 33, № 5 (2017): 1255-1262.