интерполировать

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

Синтаксис

poses = interpolate(refPath)
poses = interpolate(refPath,lengths)
[poses,directions] = interpolate(___)

Описание

пример

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

пример

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

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

Примеры

свернуть все

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

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

свернуть все

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