checkPathValidity

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

Описание

пример

isValid = checkPathValidity(refPath,costmap) проверяет валидность запланированного пути к транспортному средству, refPath, против транспортного средства costmap. Используйте эту функцию, чтобы протестировать, если путь допустим в изменяющей среде.

Путь допустим, если следующие условия верны:

  • Путь имеет по крайней мере одно положение.

  • Путь без коллизий и в рамках costmap.

isValid = checkPathValidity(refPoses,costmap) проверяет валидность последовательности положений транспортного средства, refPoses, против транспортного средства costmap.

Примеры

свернуть все

Запланируйте путь к транспортному средству через парковку при помощи оптимального быстро исследующего случайного дерева (RRT*) алгоритм. Проверяйте, что путь допустим, и затем постройте положения перехода вдоль пути.

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

data = load('parkingLotCostmap.mat');
costmap = data.parkingLotCostmap;
plot(costmap)

Figure contains an axes. The axes contains 2 objects of type image, patch. This object represents Inflated Areas.

Задайте запускаются и целевые положения для транспортного средства как [x, y, Θ] векторы. Мировые единицы измерения для (x, y) местоположения исчисляются в метрах. Мировые единицы измерения для Θ углов ориентации в градусах.

startPose = [4, 4, 90]; % [meters, meters, degrees]
goalPose = [30, 13, 0];

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

planner = pathPlannerRRT(costmap);
refPath = plan(planner,startPose,goalPose);

Проверяйте, что путь допустим.

isPathValid = checkPathValidity(refPath,costmap)
isPathValid = logical
   1

Интерполируйте положения перехода вдоль пути.

transitionPoses = interpolate(refPath);

Постройте запланированный путь и положения перехода на costmap.

hold on
plot(refPath,'DisplayName','Planned Path')
scatter(transitionPoses(:,1),transitionPoses(:,2),[],'filled', ...
    'DisplayName','Transition Poses')
hold off

Figure contains an axes. The axes contains 13 objects of type image, patch, scatter, line, polygon. These objects represent Inflated Areas, Planned Path, Transition Poses.

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

свернуть все

Запланированный путь к транспортному средству в виде driving.Path объект.

Костмэп используется для проверки столкновения в виде vehicleCostmap объект.

Последовательность транспортного средства излагает в виде m-by-3 матрицу [x, y, Θ] векторы. m является количеством заданных положений.

x и y задают местоположение транспортного средства. Эти значения должны быть в тех же мировых единицах измерения, используемых costmap.

Θ задает угол ориентации транспортного средства в градусах.

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

свернуть все

Указывает на валидность запланированного пути к транспортному средству, refPath, или последовательность положений транспортного средства, refPoses, возвращенный как логическое значение 1 или 0.

Путь или последовательность положений допустимы (1) если следующие условия верны:

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

  • Последовательность пути или положения без коллизий и в рамках costmap.

Алгоритмы

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

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2018a