Визуальная локализация на парковке

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

  • mapPointSetA 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), который обеспечивает большее поле зрения.