checkPathValidity

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

Синтаксис

isValid = checkPathValidity(refPath,costmap)
isValid = checkPathValidity(refPoses,costmap)

Описание

пример

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)

Задайте запускаются и целевые положения для автомобиля как [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

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

свернуть все

Запланированный путь к автомобилю, заданный как объект 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