Визуализация траекторий
show(
визуализирует ссылочный путь и траекторию от кандидатов, сгенерированных planner
)plan
функция. Траектория показывается линейным графиком. График также включает режим всплывающих подсказок, который может использоваться, чтобы визуализировать вектор выполнимости и индекс траектории из свойства TrajectoryList.
show(
задает дополнительные опции с помощью одного или нескольких planner
,Name,Value
)Name,Value
парные аргументы.
В этом примере показано, как запланировать оптимальную траекторию с помощью 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];
Объявите, что указатель функции стоимости приоритизирует оставленный изменения маршрута.
leftLaneChangeCost = @(states)((states(end,2) < refPath(end,2))*10);
Инициализируйте объект планировщика ссылочным путем, блоком проверки допустимости состояния и пользовательской функцией стоимости.
planner = trajectoryOptimalFrenet(refPath,stateValidator,'CostFunction',leftLaneChangeCost);
Присвойте продольное конечное состояние, боковое отклонение и максимальные ускоряющие значения.
planner.TerminalStates.Longitudinal = 100; planner.TerminalStates.Lateral = -10:10:10; planner.FeasibilityParameters.MaxAcceleration = 10;
Планирование траектории
Начальное состояние Frenet транспортного средства.
initFrenetState = zeros(1,6);
Запланируйте траекторию от начального состояния Frenet.
plan(planner,initFrenetState);
Визуализация траектории
Визуализируйте карту и траектории.
show(map) hold on show(planner,'Trajectory','all')
В этом примере показано, как разделить продольные конечные состояния в оптимальном планировании траектории с помощью trajectoryOptimalFrenet
объект.
Создайте и присвойте карту блоку проверки допустимости состояния
Создайте объект блока проверки допустимости состояния для проверки столкновения.
statevalidator = validatorOccupancyMap;
Создайте карту сетки препятствия.
grid = zeros(50,100); grid(22:24,28:33) = 1; grid(18:20,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.FeasibilityParameters.MaxAcceleration = 10;
Планирование траектории
Начальное состояние Frenet транспортного средства.
initFrenetState = zeros(1,6);
Присвойте номер разделов для продольного конечного состояния.
planner.NumSegments = 3;
Запланируйте траекторию от начального состояния Frenet.
plan(planner,initFrenetState);
Визуализация траектории
Визуализируйте карту и траектории.
show(map) hold on show(planner,'Trajectory','all')
planner
— Оптимальный планировщик траектории на пробеле FrenettrajectoryOptimalFrenet
объектОптимальный планировщик траектории на пробеле Frenet в виде trajectoryOptimalFrenet
объект.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'Trajectory','all'
'Trajectory'
— Параметр отображения траектории'optimal'
(значение по умолчанию) | 'all'
Параметр отображения траектории в виде разделенной запятой пары, состоящей из 'Trajectory'
и любой 'optimal'
или 'all'
.
'ReferencePath'
— Ссылочный параметр отображения пути'on'
(значение по умолчанию) | 'off'
Ссылочный параметр отображения пути в виде разделенной запятой пары, состоящей из 'ReferencePath'
и любой 'on'
или 'off'
.
'TrajectoryColor'
— Параметр цветного дисплея траектории'velocity'
(значение по умолчанию) | 'acceleration'
| 'cost'
| 'none'
Параметр цветного дисплея траектории в виде разделенной запятой пары, состоящей из 'TrajectoryColor'
и одно из следующего:
'acceleration'
'cost'
'velocity'
'none'
Установите это свойство отобразить заданную траекторию как цветовой градиент вдоль заданного пути.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.