exponenta event banner

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. Заключите каждое имя свойства в кавычки.

Свойства

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

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

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

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

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

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

  • Прямая (вперед)

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

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

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

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

  • Прямой (прямой или обратный)

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

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

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

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

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

data = load('parkingLotCostmapReducedInflation.mat');
costmap = data.parkingLotCostmapReducedInflation;
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 = [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. The axes contains 12 objects of type image, patch, scatter, line, polygon. These objects represent Inflated Areas, Planned Path, Desired Goal Pose.

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

Совет

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

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

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

Ссылки

[1] Караман, Сертак и Эмилио Фраццоли. 49-я конференция IEEE по принятию решений и контролю (CDC). 2010.

[2] Шкель, Андрей М. и Владимир Лумельский. «Классификация Дубинского набора». Робототехника и автономные системы. Том 34, номер 4, 2001, стр. 179-202.

[3] Тростники, J. A. и Л. А. Шепп. «Оптимальные пути для автомобиля, который идет как вперед, так и назад». Тихоокеанский математический журнал. том 145, номер 2, 1990, стр. 367-393.

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

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