pathmetrics

Информация для метрик пути

Описание

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

Создание

Описание

pathMetricsObj = pathmetrics(path) создает основанное на объектах на входе navPath объект. Блок проверки допустимости состояния принят, чтобы быть validatorOccupancyMap объект. path введите устанавливает значение свойства Path.

пример

pathMetricsObj = pathmetrics(path,validator) создает основанное на объектах на входе navPath блок проверки допустимости объектной и ассоциированной страны для проверки валидности пути. validator введите устанавливает значение свойства StateValidator.

Свойства

развернуть все

Структура данных пути, заданная как navPath объект является путем, метрика которого должна быть вычислена.

Блок проверки допустимости для состояний на пути, заданном как validatorOccupancyMap объект, который подтверждает состояния и дискретизированные движения на основе значений в 2D карте заполнения.

Функции объекта

clearanceМинимальное разрешение пути
isPathValidОпределите, является ли запланированный путь свободным препятствием
showВизуализируйте метрики пути в среде карты
smoothnessГладкость пути

Примеры

свернуть все

Вычислите гладкость, разрешение и валидность запланированного пути на основе набора положений и связанной среды карты.

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

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

load exampleMaps.mat; % simpleMap
mapResolution = 1; % cells/meter
map = occupancyMap(simpleMap,mapResolution);

Создайте пространство состояний Dubins.

statespace = stateSpaceDubins;

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

statevalidator = validatorOccupancyMap(statespace);

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

statevalidator.Map = map;

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

statevalidator.ValidationDistance = 0.01;

Обновите границы пространства состояний, чтобы совпасть с пределами карты.

statespace.StateBounds = [map.XWorldLimits;map.YWorldLimits;[-pi pi]];

Запланируйте путь

Создайте RRT* планировщик пути и позвольте дальнейшую оптимизацию.

planner = plannerRRTStar(statespace,statevalidator);
planner.ContinueAfterGoalReached = true;

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

planner.MaxIterations = 2500;
planner.MaxConnectionDistance = 0.3;

Задайте запускаются и целевые состояния для планировщика пути как [x, y, theta] векторы. X и Y являются Декартовы координаты, и тета является углом ориентации.

start = [2.5, 2.5, 0]; % [meters, meters, radians]
goal = [22.5, 8.75, 0];

Запланируйте путь от начального состояния до целевого состояния. Функция плана возвращает navPath объект.

rng(100,'twister') % repeatable result
[path,solutionInfo] = plan(planner,start,goal);

Вычислите и визуализируйте метрики пути

Создайте метрический объект пути.

pathMetricsObj = pathmetrics(path,statevalidator);

Проверяйте валидность пути. Результатом является 1 (true) если запланированный путь является свободным препятствием. 0 (false) указывает на недопустимый путь.

isPathValid(pathMetricsObj)
ans = logical

   1

Вычислите минимальное разрешение пути.

clearance(pathMetricsObj)
ans = 
          0.21

Оцените гладкость пути. Значения близко к 0 укажите на более сглаженный путь. Прямолинейные пути возвращают значение 0.

smoothness(pathMetricsObj)
ans = 
          2.21

Визуализируйте минимальное разрешение пути.

show(pathMetricsObj)
legend('Planned Path','Minimum Clearance')

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

| |

Введенный в R2019b