Визуальный 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);
Блок Helper Stereo Visual SLAM System реализует визуальный трубопровод SLAM стерео, состоя из следующих шагов:
Инициализация карты: трубопровод запускается путем инициализации карты 3-D точек от пары изображений, сгенерированных от стереофотоаппарата с помощью карты несоизмеримости. Левое изображение хранится как первый ключевой кадр.
Отслеживание: Если карта инициализируется для каждой новой стереопары, положение камеры оценивается путем соответствия с функциями в левом изображении к функциям в последнем ключевом кадре. Предполагаемое положение камеры усовершенствовано путем отслеживания локальной карты.
Локальное Отображение: Если текущее левое изображение идентифицировано как ключевой кадр, новые 3-D точки карты вычисляются из несоизмеримости стереопары. На данном этапе свяжитесь, корректировка используется, чтобы минимизировать ошибки перепроекции путем корректировки положения камеры и 3-D точек.
Закрытие цикла: Циклы обнаруживаются для каждого ключевого кадра путем сравнения его против всех предыдущих ключевых кадров с помощью подхода набора признаков. Если закрытие цикла обнаруживается, график положения оптимизирован, чтобы совершенствовать положения камеры всех ключевых кадров.
Для получения дополнительной информации реализации алгоритма смотрите Визуальный Одновременный пример Локализации и картографии Стерео.
Симулируйте модель и визуализируйте результаты. Блок 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.