управление. 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

Для просмотра документации необходимо авторизоваться на сайте