show

Визуализация траекторий

Описание

show(planner) визуализирует путь и траекторию ссылки от кандидатов, сгенерированных plan функция. Траектория показана как линейный график. График также включает режим datip, который может использоваться, чтобы визуализировать вектор осуществимости и индекс траектории из свойства TrajectoryList.

пример

show(planner,Name,Value) задает дополнительные опции, используя один или несколько Name,Value аргументы в виде пар.

axHandle = show(planner) возвращает указатель на оси рисунка, используемый для построения графика траектории.

Примеры

свернуть все

В этом примере показано, как спланировать оптимальную траекторию с помощью trajectoryOptimalFrenet объект.

Создайте и назначьте карту для валидатора состояний

Создайте объект средства проверки состояния для проверки столкновения.

stateValidator = validatorOccupancyMap;

Создайте сетчатую карту препятствий.

grid = zeros(50,100);
grid(24:26,48:53) = 1;

Создайте binaryOccupancyMap с сетчатой картой.

map = binaryOccupancyMap(grid);

Присвойте карту валидатору состояния.

stateValidator.Map = map;

Планирование и визуализация траектории

Создайте ссылку пути для последующего планирования.

refPath = [0,25;100,25];

Инициализируйте объект планировщика с ссылка пути и средства проверки состояния.

planner = trajectoryOptimalFrenet(refPath,stateValidator);

Присвойте продольное конечное состояние, боковое отклонение и максимальные значения ускорения.

planner.TerminalStates.Longitudinal = 100;
planner.TerminalStates.Lateral = -10:5:10;
planner.FeasibilityParameters.MaxAcceleration = 10;

Задайте значение смещения отклонения близко к левому боковому конечному состоянию, чтобы расставить приоритеты изменениям в левой полосе.

planner.DeviationOffset = 5;

Планирование траектории

Начальное декартовое состояние транспортного средства.

initCartState = [0 25 pi/9 0 0 0];

Преобразуйте декартовое состояние транспортного средства в состояние Френе.

initFrenetState = cart2frenet(planner,initCartState);

Планируйте траекторию от начального состояния Френе.

plan(planner,initFrenetState);

Визуализация траектории

Визуализируйте карту и траектории.

show(map)
hold on
show(planner,'Trajectory','all')

Figure contains an axes. The axes with title Binary Occupancy Grid contains 5 objects of type image, line, patch. These objects represent Waypoints, Reference Path, Optimal Trajectory.

Этот пример показывает, как разбить продольные конечные состояния в оптимальном планировании траектории с помощью trajectoryOptimalFrenet объект.

Создайте и назначьте карту для валидатора состояний

Создайте объект средства проверки состояния для проверки столкновения.

statevalidator = validatorOccupancyMap; 

Создайте сетчатую карту препятствий.

grid = zeros(50,100);
grid(25:27,28:33) = 1;
grid(16:18,37:42) = 1;
grid(29:31,72:77) = 1;

Создайте binaryOccupancyMap с сетчатой картой.

map = binaryOccupancyMap(grid);

Присвойте карту валидатору состояния.

statevalidator.Map = map; 

Планирование и визуализация траектории

Создайте ссылку пути для последующего планирования.

refPath = [0,25;30,30;75,20;100,25];

Инициализируйте объект планировщика с ссылка пути и средства проверки состояния.

planner = trajectoryOptimalFrenet(refPath,statevalidator);

Присвойте продольное конечное состояние, боковое отклонение и максимальные значения ускорения.

planner.TerminalStates.Longitudinal = 100;
planner.TerminalStates.Lateral = -5:5:5;
planner.FeasibilityParameters.MaxAcceleration = 10;

Назначьте количество перегородок для продольного конечного состояния.

planner.NumSegments = 3;

Планирование траектории

Начальное состояние транспортного средства.

initFrenetState = zeros(1,6);

Планируйте траекторию от начального состояния Френе.

plan(planner,initFrenetState);

Визуализация траектории

Визуализируйте карту и траектории.

show(map)
hold on
show(planner,'Trajectory','all')
hold on

Сгенерируйте контуры маршрута

Вычислите конец ссылки пути как состояние Френе.

refPathEnd = cart2frenet(planner,[planner.Waypoints(end,:) 0 0 0 0]);

Вычислите смещения маршрута по обеим сторонам боковых конечных состояний со значением ширины половины маршрута.

laneOffsets = unique([planner.TerminalStates.Lateral+2.5 planner.TerminalStates.Lateral-2.5]);

Вычислите положения полос в Декартовом состоянии.

numLaneOffsets = numel(laneOffsets);
xRefPathEnd = ceil(refPathEnd(1));
laneXY = zeros((numLaneOffsets*xRefPathEnd)+numLaneOffsets,2);
xIndex = 0;

for laneID = 1:numLaneOffsets
    for x = 1:xRefPathEnd
        laneCart = frenet2cart(planner,[x 0 0 laneOffsets(laneID) 0 0]);
        xIndex = xIndex + 1;
        laneXY(xIndex,:) = laneCart(1:2);
    end
    xIndex = xIndex + 1;
    laneXY(xIndex,:) = NaN(1,2);
end

Постройте контуры маршрута.

plot(laneXY(:,1),laneXY(:,2),'LineWidth',0.5,'Color',[0.5 0.5 0.5],'DisplayName','Lane Boundaries','LineStyle','--')

Figure contains an axes. The axes with title Binary Occupancy Grid contains 6 objects of type image, line, patch. These objects represent Waypoints, Reference Path, Optimal Trajectory, Lane Boundaries.

Входные параметры

свернуть все

Оптимальный планировщик траектории в пространстве Френе, заданный как trajectoryOptimalFrenet объект.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'Trajectory','all'

Оси для построения графика, заданные как разделенная разделенными запятой парами, состоящая из 'Parent' и либо an Axes или UIAxes объект. Посмотрите axes или uiaxes.

Параметр отображения траектории, заданная как разделенная разделенными запятой парами, состоящая из 'Trajectory' и любой из них 'optimal' или 'all'.

Ссылка параметра отображения пути в виде разделенной запятой пары, состоящей из 'ReferencePath' и любой из них 'on' или 'off'.

Параметр отображения цвета траектории, заданная как разделенная разделенными запятой парами, состоящая из 'TrajectoryColor' и одно из следующих:

  • 'acceleration'

  • 'cost'

  • 'velocity'

  • 'none'

Установите это свойство, чтобы отобразить заданную траекторию как цветовой градиент вдоль заданного пути.

Выходные аргументы

свернуть все

Указатель на ось, используемый для построения графика траектории, возвращается как либо axes, или uiaxes объект.

См. также

|

Введенный в R2019b