driving.Path

Запланированный путь к транспортному средству

Описание

driving.Path объект представляет путь к транспортному средству, состоявший из последовательности сегментов пути. Этими сегментами может быть любой driving.DubinsPathSegment объекты или driving.ReedsSheppPathSegment объекты и хранятся в PathSegments свойство driving.Path.

Проверять валидность пути против vehicleCostmap объект, используйте checkPathValidity функция. Чтобы интерполировать положения вдоль пути, используйте interpolate функция.

Создание

Создать driving.Path объект, используйте plan функция, задавая pathPlannerRRT возразите, как введено.

Свойства

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

Это свойство доступно только для чтения.

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

Это свойство доступно только для чтения.

Целевое положение транспортного средства в виде [x, y, Θ] вектор. x и y находятся в мировых единицах измерения, таких как метры. Θ в градусах.

Это свойство доступно только для чтения.

Сегменты вдоль пути в виде массива driving.DubinsPathSegment объекты или driving.ReedsSheppPathSegment объекты.

Это свойство доступно только для чтения.

Длина пути, в мировых единицах измерения в виде положительного действительного скаляра.

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

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

Примеры

свернуть все

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

Запланируйте путь к транспортному средству через парковку при помощи быстро исследующего случайного дерева (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);

Интерполируйте положения транспортного средства каждый 1 метр вдоль целого пути.

lengths = 0 : 1 : refPath.Length;
poses = interpolate(refPath,lengths);

Постройте интерполированные положения на costmap.

plot(costmap)
hold on
scatter(poses(:,1),poses(:,2),'DisplayName','Interpolated Poses')
hold off

Вопросы совместимости

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

Не рекомендуемый запуск в R2018b

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

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

Введенный в R2018a