pathPlannerRRT

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

Описание

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

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

Создание

Синтаксис

planner = pathPlannerRRT(costmap)
planner = pathPlannerRRT(costmap,Name,Value)

Описание

пример

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)

Задайте запускаются и целевые положения для планировщика пути как [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)

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

Советы

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