Интерполируйте положения вдоль запланированного пути к транспортному средству
интерполирует вдоль ссылочного пути, возвращая положения перехода. Для получения дополнительной информации смотрите Положения Перехода.poses
= interpolate(refPath
)
[
также возвращает направления движения транспортного средства в каждом положении, с помощью входных параметров от любого из предыдущих синтаксисов.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
refPath
— Запланированный путь к транспортному средствуdriving.Path
объектЗапланированный путь к транспортному средству, заданный как driving.Path
объект.
lengths
— Точки вдоль длины путиТочки вдоль пути, заданного как вектор с действительным знаком. Значения должны быть в диапазоне от 0 до длины пути, как определено Length
свойство refPath
. interpolate
функция интерполирует положения в этих заданных точках. lengths
находится в мировых единицах измерения, таких как метры.
Пример: poses = interpolate(refPath,0:0.1:refPath.Length)
интерполирует излагает каждый 0,1 метра вдоль целой длины пути.
poses
— Положения транспортного средстваТранспортное средство позирует вдоль пути, возвращенного как m-by-3 матрица [x, y, Θ] векторы. m является количеством возвращенных положений.
x и y задают местоположение транспортного средства в мировых единицах измерения, таких как метры. Θ задает угол ориентации транспортного средства в градусах.
poses
всегда включает положения перехода, даже если вы интерполируете только в заданных точках вдоль пути. Если вы не задаете lengths
входной параметр, затем poses
включает только положения перехода.
directions
— Направления движенияНаправления движения положений транспортного средства, возвращенных как m-by-1 вектор 1 с (движение вперед) и –1s (инвертируют движение). m является количеством возвращенных положений. Каждый элемент directions
соответствует строке poses
.
Путь состоит из нескольких сегментов, которые являются комбинациями движений (например, левый поворот, прямо, и правый поворот). Transition poses является положениями транспортного средства, соответствующими в конец одного движения и начало другого движения. Они представляют точки вдоль пути, соответствующего изменению в направлении или ориентации транспортного средства. interpolate
функционируйте всегда возвращает положения перехода, даже если вы интерполируете только в заданных точках вдоль пути.
Длина пути между положениями перехода дана MotionLengths
свойство сегментов пути. Например, рассмотрите следующий путь, который является driving.Path
объект состоит из одного сегмента пути Dubins. Этот сегмент состоит из трех движений, аналогичных описанному MotionLengths
и MotionTypes
свойства сегмента.
interpolate
функция интерполирует следующие положения перехода в этом порядке:
Начальное положение транспортного средства, StartPose
.
Положение после транспортного средства поворачивает налево ("L"
) для 4,39 метров под его максимальным руководящим углом.
Положение после транспортного средства идет прямо ("S"
) для 6,32 метров.
Положение после транспортного средства поворачивает направо ("R"
) для 4,39 метров под его максимальным руководящим углом. Это положение является также целевым положением, потому что это - последнее положение целого пути.
График показывает эти положения перехода, которые являются [x, y, Θ] векторы. x и y задают местоположение транспортного средства в мировых единицах измерения, таких как метры. Θ задает угол ориентации транспортного средства в градусах.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.