В этом примере показано, как разработать визуальную систему локализации с помощью синтетических данных изображения от Нереальной среды симуляции Engine®.
Это - сложная задача получить основную истину для оценки эффективности алгоритма локализации в различных условиях. Виртуальная симуляция в различных сценариях является экономически эффективным методом, чтобы получить основную истину по сравнению с более дорогими подходами, такими как использование высокой точности инерционные системы навигации или дифференциальный GPS. Использование симуляции позволяет тестировать под множеством настроек датчика и сценариев. Это также включает быструю разработку алгоритмов и обеспечивает точную основную истину.
Этот пример использует Нереальную среду симуляции Engine от Epic Games®, чтобы разработать и оценить визуальный алгоритм локализации в сценарии парковки.
Визуальная локализация является процессом оценки положения камеры для полученного изображения относительно визуального представления известной сцены. Это - ключевая технология для приложений, таких как дополненная реальность, робототехника и автоматизированное управление. По сравнению с Реализацией Визуальный SLAM в MATLAB визуальная локализация принимает, что карта среды известна и не требует 3-D реконструкции или обнаружения закрытия цикла. Трубопровод визуальной локализации включает следующее:
Загрузка карты: Загрузите предварительно созданную карту карты 3-D, содержащую мировые положения точки и 3-D к 2D соответствиям между точками карты и ключевыми кадрами. Дополнительно. для каждого ключевого кадра загрузите дескрипторы функции, соответствующие 3-D точкам карты.
Глобальная Инициализация: Извлеките функции из первого фрейма изображения и совпадайте с ними функциям, соответствующим всем 3-D точкам карты. После получения 3-D к 2D соответствиям оцените положение камеры первой системы координат в мировой координате путем решения задачи Перспективного n значений (PnP). Совершенствуйте положение с помощью корректировки пакета только для движения. Ключевой кадр, который совместно использует большинство covisible 3-D точек карты с первой системой координат, идентифицирован как ссылочный ключевой кадр.
Отслеживание: Если первая система координат локализуется, для каждой новой системы координат, функций соответствия в новой системе координат с функциями в ссылочном ключевом кадре, которые знали 3-D мировые точки. Оцените и совершенствуйте положение камеры с помощью того же подхода в качестве на Глобальном шаге Инициализации. Положение камеры может быть далее усовершенствовано путем отслеживания функций, сопоставленных с соседними ключевыми кадрами.
Руководство транспортного средства в место для парковки является сложным маневром, который использует точную локализацию. VisualLocalizationInAParkingLot
модель симулирует визуальную систему локализации в сценарии парковки, используемом в Разрабатывании Визуального Алгоритма SLAM Используя Нереальную Симуляцию Engine (Automated Driving Toolbox) пример.
Блок Simulation 3D Scene Configuration (Automated Driving Toolbox) создает Большую сцену Парковки. Parked Vehicles
подсистема добавляет припаркованные автомобили в парковку.
Симуляция 3D Транспортное средство с блоком Ground Following (Automated Driving Toolbox) управляет движением автомобиля, оборудованного датчиком.
Блок Simulation 3D Camera (Automated Driving Toolbox) моделирует монокулярную камеру, зафиксированную в центре крыши транспортного средства. Можно использовать приложение Camera Calibrator, чтобы оценить внутренние параметры фактической камеры, которую вы хотите симулировать.
Helper Visual Localization
Блок MATLAB System реализует визуальный алгоритм локализации. Начальное положение камеры относительно карты оценивается с помощью helperGlobalInitialization
функция. Последующие положения камеры оцениваются с помощью helperTrackingRefKeyFrame
функционируйте и усовершенствованное использование
helperTrackLocalKeyFrames
thefunction. Этот блок также обеспечивает визуализацию предполагаемой траектории камеры в предварительно созданной карте. Можно задать предварительно созданные данные о карте и параметры внутреннего параметра камеры в диалоговом окне блока.
% Open the model modelName = 'VisualLocalizationInAParkingLot'; open_system(modelName);
Предварительно созданные данные о карте сгенерированы с помощью стереофотоаппарата в Разрабатывании Визуального Алгоритма SLAM Используя Нереальную Симуляцию Engine (Automated Driving Toolbox) пример. Данные состоят из трех объектов, которые обычно используются, чтобы управлять изображением и данными о карте для визуального SLAM:
vSetKeyFrame
: imageviewset
объект, хранящий положения камеры ключевых кадров и связанных характерных точек для каждой 3-D карты, указывает в mapPointSet
.
mapPointSet
A worldpointset
объект, хранящий 3-D карту, указывает местоположения и соответствия между 3-D точками и 2D характерными точками через ключевые кадры. 3-D точки карты обеспечивают разреженное представление среды.
directionAndDepth:
helperViewDirectionAndDepth
хранение объекта просматривает направление и глубину каждой точки карты в mapPointSet
.
% Load pre-built map data mapData = load("prebuiltMapData.mat")
mapData = struct with fields:
vSetKeyFrames: [1×1 imageviewset]
mapPointSet: [1×1 worldpointset]
directionAndDepth: [1×1 helperViewDirectionAndDepth]
Можно последовать Выбрать примеру Waypoints for Unreal Engine Simulation (Automated Driving Toolbox), чтобы выбрать последовательность waypoints и сгенерировать ссылочную траекторию для автомобиля, оборудованного датчиком. Этот пример использует записанную ссылочную траекторию.
% Load reference path refPosesData = load('parkingLotLocalizationData.mat'); % Set reference trajectory of the ego vehicle refPosesX = refPosesData.refPosesX; refPosesY = refPosesData.refPosesY; refPosesT = refPosesData.refPosesT; % Set camera intrinsics focalLength = [700, 700]; % specified in units of pixels principalPoint = [600, 180]; % in pixels [x, y] imageSize = [370, 1230]; % in pixels [mrows, ncols]
Запустите симуляцию и визуализируйте предполагаемую траекторию камеры в предварительно созданной карте. Белые точки представляют отслеженные 3-D точки карты в текущей системе координат. Можно сравнить предполагаемую траекторию с основной истиной, обеспеченной блоком Simulation 3D Camera, чтобы оценить точность локализации.
if ~ispc error("Unreal Engine Simulation is supported only on Microsoft" + char(174) + " Windows" + char(174) + "."); end % Open video viewer to examine camera images open_system([modelName, '/Video Viewer']); % Run simulation sim(modelName);
Закройте модель.
close_system([modelName, '/Video Viewer']);
close_system(modelName, 0);
С этой настройкой можно быстро выполнить итерации по различным сценариям, настройкам датчика или ссылочным траекториям и совершенствовать визуальный алгоритм локализации прежде, чем переместиться в реальное тестирование.
Чтобы выбрать различный сценарий, используйте Симуляцию 3D Блок Configuration Сцены. Выберите из существующих предварительно созданных сцен или создайте пользовательскую сцену в Редакторе Unreal®.
Чтобы создать различную ссылочную траекторию, используйте helperSelectSceneWaypoints
инструмент, как показано в Выбрать примере Waypoints for Unreal Engine Simulation.
Чтобы изменить настройку датчика используют блок Simulation 3D Camera (Automated Driving Toolbox). Вкладка Mounting предоставляет возможности для определения различных размещений монтирования датчика. Вкладка Parameters предоставляет возможности для изменения параметров датчика, таких как область значений обнаружения, поле зрения и разрешение. Можно также использовать блок Simulation 3D Fisheye Camera (Automated Driving Toolbox), который обеспечивает большее поле зрения.