Выберите точки пути для Unreal Engine Simulation

В этом примере показов, как выбрать последовательность путевых точек из сцены и визуализировать путь транспортного средства, следующего за этими путевыми точками в 3D среде симуляции. Это окружение использует Unreal Engine ® by Epic Games ®.

Введение

Automated Driving Toolbox™ интегрирует среду симуляции Unreal Engine в Simulink ®. Блоки Simulink, относящиеся к среде симуляции, можно найти в drivingsim3d библиотека. Эти блоки обеспечивают возможность:

  • Выберите различные сцены в среде симуляции.

  • Разместите и перемещайте транспортные средства в месте происшествия.

  • Прикрепите и сконфигурируйте датчики на транспортных средствах.

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

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

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

В этом примере вы будете:

  • Визуализация сцены в MATLAB ®.

  • Интерактивный выбор путевых точек вдоль пути в сцене.

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

  • Перемещайте транспортное средство вдоль пути.

Визуализация сцены

Сначала визуализируйте сцену в MATLAB. Каждая сцена может быть визуализирована с помощью 2D проекции сцены сверху на изображение. Каждое изображение сцены имеет соответствующий 2D пространственный объект привязки класса imref2d описание связи между пикселями в изображении и мировыми координатами сцены. Используйте helperGetSceneImage функция для извлечения изображения сцены и связанной пространственной ссылки. Этот пример использует предварительно построенную сцену большой парковки. Чтобы использовать сгенерировать изображение сцены и пространственную ссылку для пользовательской сцены, следуйте процессу, описанному в разделе «Создание карты сверху-вниз нереальной сцены Engine».

sceneName = 'LargeParkingLot';
[sceneImage, sceneRef] = helperGetSceneImage(sceneName);

Чтобы лучше изучить физические размерности сцены, смотрите sceneRef переменная. The XWorldLimits и YWorldLimits свойства определяют пределы мира в направлениях X и Y.

sceneRef.XWorldLimits   % (in meters)
sceneRef.YWorldLimits   % (in meters)
ans =

  -78.5000   61.5000


ans =

   -75    65

Визуализируйте изображение сцены с помощью helperShowSceneImage функция. Эта вспомогательная функция отображает изображение сцены в окне рисунка. Для исследования сцены используйте инструменты панорамирования и масштабирования.

hScene = figure;
helperShowSceneImage(sceneImage, sceneRef)
title(sceneName)

Интерактивный выбор путевых точек

После исследования сцены выберите набор путевых точек, чтобы задать путь для транспортного средства. Этот путь может использоваться для перемещения транспортного средства в сцене. Используйте функцию helper helperSelectSceneWaypoints для интерактивного выбора путевых точек в сцене.

hFig = helperSelectSceneWaypoints(sceneImage, sceneRef);

Эта вспомогательная функция открывает окно рисунка с выбранной сценой.

  • Исследуйте сцену, масштабируя и панорамируя изображение сцены. Для масштабирования используйте колесо прокрутки мыши или панель инструментов осей. Наведите указатель мыши на ребро осей для панорамирования в этом направлении.

  • Начните рисование пути, нажав на сцену. Путь создаётся как полилиния, состоящая из нескольких точек. Завершите рисование пути, дважды кликнув или щелкнув правой кнопкой мыши.

  • После построения пути щелкните Экспорт в рабочую область (Export to Workspace), чтобы экспортировать переменные в рабочее пространство MATLAB. В открывшемся диалоговом окне нажмите кнопку OK, чтобы экспортировать набор переменных в рабочую область.

Следующие данные экспортируются в рабочую область как переменный MATLAB:

  • Путевые точки: Массив ячеек с каждым элементом, содержащим M-by-2 матрицу$(x,y)$ путевых точек в мировых координатах. Каждый элемент массива ячеек соответствует путевым точкам из другого пути.

  • Path Poses: Массив ячеек с каждым элементом M-by-3 содержащим матрицы$(x, y, \theta)$ положений, содержащих положение каждой путевой точки. и$x$$y$ указаны в метрах.$\theta$ задается в степенях.

% Load variables to workspace if they do not exist
if exist('refPoses', 'var')==0 || exist('wayPoints', 'var')==0

    % Load MAT-file containing preselected waypoints
    data = load('waypointsLargeParkingLot');
    data = data.waypointsLargeParkingLot;

    % Assign to caller workspace
    assignin('caller', 'wayPoints', {data.waypoints});
    assignin('caller', 'refPoses', {data.refPoses});
end

Экспортированные переменные теперь содержат последовательность путевых точек (wayPoints) и последовательность положений (refPoses). Используйте smoothPathSpline функция для преобразования последовательности положений в$C^2$ непрерывный путь.

numPoses = size(refPoses{1}, 1);

refDirections  = ones(numPoses,1);   % Forward-only motion
numSmoothPoses = 20 * numPoses;      % Increase this to increase the number of returned poses

[smoothRefPoses,~,cumLengths] = smoothPathSpline(refPoses{1}, refDirections, numSmoothPoses);

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

Откройте VisualizeVehiclePathIn3DSimulation Модель Simulink. Эта модель использует блок Simulation 3D Scene Configuration, чтобы выбрать нужную сцену. Этот пример использует сцену «Большая парковка». Блок Simulation 3D Scene Configuration настраивает окружение и устанавливает связь между Simulink и средой симуляции.

if ~ispc
    error(['3D Simulation is only supported on Microsoft', char(174), ' Windows', char(174), '.']);
end

modelName = 'VisualizeVehiclePathIn3DSimulation';
open_system(modelName);
snapnow;

Перемещение транспортного средства по пути

Используйте блок Simulation 3D Vehicle with Ground Following, чтобы разместить и переместить транспортные средства в сцене. Модель настроена на принятие переменных refPosesX, refPosesY, и refPosesT из рабочей области с помощью блока Из Рабочей области (Simulink). Отделяйте, $x$$y$и $\theta$от newRefPoses в отдельные временные ряды. Модель считывает эти переменные рабочей области, чтобы обновить положение транспортного средства.

% Configure the model to stop simulation at 5 seconds.
simStopTime = 5;
set_param(gcs, 'StopTime', num2str(simStopTime));

% Create a constant velocity profile by generating a time vector
% proportional to the cumulative path length.
timeVector = normalize(cumLengths, 'range', [0, simStopTime]);

% Create variables required by the Simulink model
refPosesX = [timeVector, smoothRefPoses(:,1)];
refPosesY = [timeVector, smoothRefPoses(:,2)];
refPosesT = [timeVector, smoothRefPoses(:,3)];

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

Запустите симуляцию. В окне рисунка графика показан путь, через который транспортное средство проходит среду симуляции.

sim(modelName);

% Close the model and figure windows
close(hFig)
close_system(modelName)
close(hScene)

См. также

Блоки

Функции

Похожие темы