show

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

Описание

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

пример

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

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

Примеры

свернуть все

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

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

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

stateValidator = validatorOccupancyMap;

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

grid = zeros(700,700);
grid(296:305,150:175) = 1;
grid(286:295,300:325) = 1;
grid(306:315,300:325) = 1;
grid(296:305,450:475) = 1;
grid(286:295,600:625) = 1;
grid(306:315,600:625) = 1;

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

map = binaryOccupancyMap(grid);

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

stateValidator.Map = map;

Запланируйте и визуализируйте траекторию

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

refPath = [10,400;700,400];

Объявите, что указатель функции стоимости приоритизирует оставленный изменения маршрута.

leftLaneChangeCost = @(states)((states(end,2) < refPath(end,2))*10);

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

plannerObj = trajectoryOptimalFrenet(refPath,stateValidator,'CostFunction',leftLaneChangeCost);

Присвойте боковые значения отклонения.

plannerObj.TerminalStates.Lateral = -10:10:10;

Генерация траектории

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

previousDeviationValue = 0;
deviationValue = 0;
initState = zeros(1,6);

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

for j = 1:150
    
    % Deviation from the current reference path
    if initState(4) > 5
        deviationValue = 10;
    elseif initState(4) < -5
        deviationValue = -10;
    end
    
    % Move reference path to the current lane
    if previousDeviationValue ~= deviationValue
        % Shift the waypoints by the deviation value
        plannerObj.Waypoints = [plannerObj.Waypoints(:,1), plannerObj.Waypoints(:,2) + deviationValue];
        
        % Shift the terminal states such that they remain fixed in world frame
        plannerObj.TerminalStates.Lateral = plannerObj.TerminalStates.Lateral - deviationValue;
        
        % Store the deviation value
        previousDeviationValue = deviationValue;
        
        % Update initState variable with the new planner object
        initState = cart2frenet(plannerObj,trajectory(10,1:6));
    end
    
    % Generate a trajectory from initState
    trajectory = plan(plannerObj,initState);
    
    % Use 10th state of the current trajectory as a starting point for
    % replanning
    initState = cart2frenet(plannerObj,trajectory(10,1:6));
    
    % Visualize every 5th iteration
    if mod(j,5)==0
        show(map)
        hold on;
        show(plannerObj,'TrajectoryColor','none');
        drawnow
    end
end

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

свернуть все

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

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

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

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

Оси, чтобы построить траекторию, заданную как разделенная запятой пара, состоящая из 'Parent' и любой Axes или UIAxes объект. Смотрите axes или uiaxes.

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

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

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

  • 'acceleration'

  • 'cost'

  • 'velocity'

  • 'none'

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

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

свернуть все

Указатель осей, используемый, чтобы построить траекторию, возвратился как любой axes, или uiaxes объект.

Смотрите также

|

Введенный в R2019b