exponenta event banner

checkPathValidity

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

Описание

пример

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

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

  • Путь имеет по меньшей мере одну позу.

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

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

Примеры

свернуть все

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

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

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, Start]. Мировые единицы измерения для местоположений (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);

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

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-на-3 векторов [x, y, Start]. m - количество указанных поз.

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

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

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

свернуть все

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

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

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

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

Алгоритмы

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

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2018a