exponenta event banner

Выбор ППМ для моделирования нереального механизма

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

Введение

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

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

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

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

  • Моделирование данных датчиков на основе окружающей среды вокруг транспортного средства.

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

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

В этом примере будут выполнены следующие действия:

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

  • Интерактивный выбор ППМ вдоль траектории в сцене.

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

  • Переместите транспортное средство по траектории.

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

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

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

Чтобы лучше понять физические размеры сцены, проверьте sceneRef переменная. 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)

Интерактивный выбор ППМ

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

hFig = helperSelectSceneWaypoints(sceneImage, sceneRef);

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

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

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

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

Следующие данные экспортируются в рабочую область как переменные 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. Эта модель использует блок «Моделирование» 3D «Конфигурация сцены» для выбора нужной сцены. В этом примере используется сцена «Большая стоянка». Блок «Моделирование» 3D «Конфигурация сцены» настраивает среду и устанавливает связь между Simulink и средой моделирования.

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

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

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

Используйте Моделирование 3D Транспортное средство с Землей После блока, чтобы поместить и переместить транспортные средства в сцену. Модель настроена на принятие переменных 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)

См. также

Блоки

Функции

Связанные темы