exponenta event banner

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

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

Описание

пример

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

пример

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

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

Примеры

свернуть все

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

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

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

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

Постройте график интерполированных поз на карте затрат.

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

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

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

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

Подробнее

свернуть все

Переходные позы

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

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

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

  1. Первоначальная поза транспортного средства, StartPose.

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

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

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

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

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

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

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