interpolate

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

Описание

пример

poses = interpolate(refPath) интерполирует вдоль ссылочного пути, возвращая положения перехода. Для получения дополнительной информации смотрите Положения Перехода.

пример

poses = interpolate(refPath,lengths) интерполирует положения в заданных точках вдоль пути. В дополнение к включению положений, соответствующих заданным длинам, poses также включает положения перехода.

[poses,directions] = interpolate(___) также возвращает направления движения транспортного средства в каждом положении, с помощью входных параметров от любого из предыдущих синтаксисов.

Примеры

свернуть все

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

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

Интерполируйте положения транспортного средства каждый 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

Figure contains an axes. The axes contains 3 objects of type image, patch, scatter. These objects represent Inflated Areas, Interpolated Poses.

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

свернуть все

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

Точки вдоль пути в виде вектора с действительным знаком. Значения должны быть в диапазоне от 0 до длины пути, как определено Length свойство refPath. interpolate функция интерполирует положения в этих заданных точках. lengths находится в мировых единицах измерения, таких как метры.

Пример: poses = interpolate(refPath,0:0.1:refPath.Length) интерполирует излагает каждый 0,1 метра вдоль целой длины пути.

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

свернуть все

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

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

poses всегда включает положения перехода, даже если вы интерполируете только в заданных точках вдоль пути. Если вы не задаете lengths входной параметр, затем poses включает только положения перехода.

Направления движения положений транспортного средства, возвращенных как m-by-1 вектор 1 с (движение вперед) и –1s (инвертируют движение). m является количеством возвращенных положений. Каждый элемент directions соответствует строке poses.

Больше о

свернуть все

Положения перехода

Путь состоит из нескольких сегментов, которые являются комбинациями движений (например, левый поворот, прямо, и правый поворот). Transition poses является положениями транспортного средства, соответствующими в конец одного движения и начало другого движения. Они представляют точки вдоль пути, соответствующего изменению в направлении или ориентации транспортного средства. interpolate функционируйте всегда возвращает положения перехода, даже если вы интерполируете только в заданных точках вдоль пути.

Длина пути между положениями перехода дана MotionLengths свойство сегментов пути. Например, рассмотрите следующий путь, который является driving.Path объект состоит из одного сегмента пути Dubins. Этот сегмент состоит из трех движений, аналогичных описанному MotionLengths и MotionTypes свойства сегмента.

interpolate функция интерполирует следующие положения перехода в этом порядке:

  1. Начальное положение транспортного средства, StartPose.

  2. Положение после транспортного средства поворачивает налево ("L") для 4,39 метров под его максимальным руководящим углом.

  3. Положение после транспортного средства идет прямо ("S") для 6,32 метров.

  4. Положение после транспортного средства поворачивает направо ("R") для 4,39 метров под его максимальным руководящим углом. Это положение является также целевым положением, потому что это - последнее положение целого пути.

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

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

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

Введенный в R2018b