pathPlannerRRT

Сконфигурируйте RRT* планировщик пути

Описание

pathPlannerRRT объект конфигурирует планировщика пути к транспортному средству на основе оптимального быстро исследующего случайного дерева (RRT*) алгоритм. RRT* планировщик пути исследует среду вокруг транспортного средства путем построения дерева случайных положений без коллизий.

Однажды pathPlannerRRT объект сконфигурирован, используйте plan функционируйте, чтобы запланировать путь от положения запуска до цели.

Создание

Описание

пример

planner = pathPlannerRRT(costmap) возвращает pathPlannerRRT объект для планирования пути к транспортному средству. costmap vehicleCostmap объект, задающий среду вокруг транспортного средства. costmap устанавливает Costmap значение свойства.

planner = pathPlannerRRT(costmap,Name,Value) свойства наборов планировщика пути при помощи одного или нескольких аргументов пары "имя-значение". Например, pathPlanner(costmap,'GoalBias',0.5) устанавливает GoalBias свойство к вероятности 0,5. Заключите каждое имя свойства в кавычки.

Свойства

развернуть все

Costmap среды транспортного средства в виде vehicleCostmap объект. costmap используется для проверки столкновения случайным образом сгенерированных положений. Задайте этот costmap при создании pathPlannerRRT объект с помощью costmap входной параметр.

Допуск вокруг целевого положения в виде [xTol, yTol, ΘTol] вектор. Планировщик пути закончил планировать, когда транспортное средство достигает целевого положения в этих допусках к (x, y) положение и угол ориентации, Θ. xTol и значения yTol находятся в тех же мировых единицах измерения как vehicleCostmap. ΘTol в градусах.

Вероятность выбора целевого положения вместо случайного положения в виде действительного скаляра в области значений [0, 1]. Большие значения ускоряют достижение цели рискуя тем, чтобы не удаться плавать вокруг препятствий.

Метод раньше вычислял связь между последовательными положениями в виде 'Dubins' или 'Reeds-Shepp'. Используйте 'Dubins' если только движения вперед позволены.

'Dubins' метод содержит последовательность трех примитивных движений, каждое из которых является одним из этих типов:

  • Прямой (форвард)

  • Левый поворот под максимальным руководящим углом транспортного средства (вперед)

  • Правый поворот под максимальным руководящим углом транспортного средства (вперед)

Если вы используете этот метод связи, то сегменты запланированного пути к транспортному средству хранятся как массив driving.DubinsPathSegment объекты.

'Reeds-Shepp' метод содержит последовательность трех - пяти примитивных движений, каждое из которых является одним из этих типов:

  • Прямо (вперед или реверс)

  • Левый поворот под максимальным руководящим углом транспортного средства (вперед или реверс)

  • Правый поворот под максимальным руководящим углом транспортного средства (вперед или реверс)

Если вы используете этот метод связи, то сегменты запланированного пути к транспортному средству хранятся как массив driving.ReedsSheppPathSegment объекты.

MinTurningRadius свойство определяет максимальный руководящий угол.

Максимальное расстояние между двумя связанными положениями в виде положительного действительного скаляра. pathPlannerRRT вычисляет расстояние связи вдоль пути между двумя положениями, с включенными поворотами. Большие значения приводят к более длинным сегментам пути между положениями.

Радиус превращения минимума транспортного средства в виде положительного действительного скаляра. Это значение соответствует радиусу поворачивающегося круга под максимальным руководящим углом. Большие значения ограничивают максимальный руководящий угол для планировщика пути и меньший результат значений в более резких поворотах. Значение по умолчанию вычисляется с помощью колесной базы 2,8-метрового руководящего угла имеющего 35 градусов.

Минимальное количество итераций планировщика для исследования costmap в виде положительного целого числа. Увеличение этого повышения стоимости выборка альтернативных путей в costmap.

Максимальное количество итераций планировщика для исследования costmap в виде положительного целого числа. Увеличение этого повышения стоимости количество отсчетов для нахождения допустимого пути. Если допустимый путь не найден, выходы планировщика пути после превышения этого максимума.

Включите аппроксимированный самый близкий соседний поиск в виде true или false. Установите это значение к true использовать более быстрый, но аппроксимированный, алгоритм поиска. Установите это значение к false использовать точный алгоритм поиска за счет увеличенного времени вычисления.

Функции объекта

planЗапланируйте путь к транспортному средству с помощью RRT* планировщик пути
plotПостройте путь, запланированный RRT* планировщик пути

Примеры

свернуть все

Запланируйте путь к транспортному средству к месту для парковки при помощи RRT* алгоритм.

Загрузите costmap парковки. Постройте costmap, чтобы видеть парковку и раздутые области для транспортного средства, чтобы избежать.

data = load('parkingLotCostmapReducedInflation.mat');
costmap = data.parkingLotCostmapReducedInflation;
plot(costmap)

Figure contains an axes object. The axes object contains 2 objects of type image, patch. This object represents Inflated Areas.

Задайте запускаются и целевые положения для планировщика пути как [x, y, Θ] векторы. Мировые единицы измерения для (x, y) местоположения исчисляются в метрах. Мировые единицы измерения для Θ значений ориентации в градусах.

startPose = [11, 10, 0]; % [meters, meters, degrees]
goalPose  = [31.5, 17, 90];

Создайте RRT* планировщик пути, чтобы запланировать путь от положения запуска до целевого положения.

planner = pathPlannerRRT(costmap);
refPath = plan(planner,startPose,goalPose);

Постройте запланированный путь.

plot(planner)

Figure contains an axes object. The axes object contains 12 objects of type image, patch, scatter, line, polygon. These objects represent Inflated Areas, Planned Path, Desired Goal Pose.

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

Загрузите costmap парковки. Постройте costmap, чтобы видеть парковку и раздутые области для транспортного средства, чтобы избежать.

data = load('parkingLotCostmap.mat');
costmap = data.parkingLotCostmap;
plot(costmap)

Figure contains an axes object. The axes object 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 object. The axes object contains 13 objects of type image, patch, scatter, line, polygon. These objects represent Inflated Areas, Planned Path, Transition Poses.

Советы

  • Обновление любого из свойств планировщика очищает запланированный путь от pathPlannerRRT. Вызов plot отображения только costmap, пока путь не планируется с помощью plan.

  • Улучшать производительность, pathPlannerRRT возразите использует аппроксимированный самый близкий соседний поиск. Этот поисковый метод проверяет только sqrt(N) узлы, где N количество узлов, чтобы искать. Чтобы использовать точный самый близкий соседний поиск, установите ApproximateSearch свойство к false.

  • Дубины и методы связи Тростников-Shepp приняты, чтобы быть кинематическим образом выполнимыми и проигнорировать инерционные эффекты. Эти методы делают планировщика пути подходящим для низких скоростных сред, где инерционные эффекты сил колеса малы.

Ссылки

[1] Карамен, Сертэк и Эмилио Фраццоли. "Оптимальное планирование движения Kinodynamic Используя инкрементные основанные на выборке методы". 49-я конференция по IEEE по решению и управлению (CDC). 2010.

[2] Shkel, Андрей М. и Владимир Лумельский. "Классификация Набора Dubins". Робототехника и Автономные системы. Издание 34, Номер 4, 2001, стр 179–202.

[3] Тростники, J. A. и Л. А. Шепп. "Оптимальные пути для автомобиля, который идет и вперед и назад". Тихоокеанский Журнал Математики. Издание 145, Номер 2, 1990, стр 367–393.

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

Введенный в R2018a