exponenta event banner

plannerRRT

Создание плановика RRT для геометрического планирования

Описание

plannerRRT объект создает быстро исследуемый планировщик случайного дерева (RRT) для решения задач геометрического планирования. RRT является планировщиком движения на основе дерева, который строит дерево поиска постепенно из выборок, случайным образом взятых из заданного пространства состояний. Дерево в конечном итоге охватывает пространство поиска и соединяет начальное состояние с целевым. Общий процесс выращивания деревьев выглядит следующим образом:

  1. Плановик производит выборку случайного состояния xrand в пространстве состояний.

  2. Плановик находит состояние xnear, которое уже находится в дереве поиска и ближе всего (на основе определения расстояния в пространстве состояний) к xrand.

  3. Планировщик расширяется от xnear к xrand до достижения состояния xnew.

  4. Затем в дерево поиска добавляется новое состояние xnew.

Для геометрического RRT расширение и соединение между двумя состояниями могут быть найдены аналитически без нарушения ограничений, заданных в пространстве состояний объекта планировщика.

Создание

Описание

пример

planner = plannerRRT(stateSpace,stateVal) создает планировщик RRT из государственного космического объекта, stateSpaceи объект проверки состояния, stateVal. Пространство состояний stateVal должно быть таким же, как stateSpace. stateSpace и stateVal также устанавливает StateSpace и StateValidator свойства planner.

Свойства

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

Пространство состояния для планировщика, указанное как объект пространства состояния. Можно использовать объекты пространства состояний, такие как stateSpaceSE2, stateSpaceDubins, и stateSpaceReedsShepp. Можно также настроить состояние объекта пространства с помощью nav.StateSpace объект.

Средство проверки состояния для планировщика, указанное как объект средства проверки состояния. Можно использовать объекты проверки состояния, такие как validatorOccupancyMap и validatorVehicleCostmap.

Максимальное количество узлов в дереве поиска (исключая корневой узел), указанное как положительное целое число.

Типы данных: single | double

Максимальное число итераций, указанное как положительное целое число.

Типы данных: single | double

Максимальная длина движения, разрешенная в дереве, заданная как скаляр.

Типы данных: single | double

Функция обратного вызова для оценки того, достигнута ли цель, указанная как дескриптор функции. Можно создать собственную функцию достижения цели. Функция должна следовать следующему синтаксису:

 function isReached = myGoalReachedFcn(planner,currentState,goalState)

где:

  • planner - созданный объект планировщика, указанный как plannerRRT объект.

  • currentState - текущее состояние, указанное как вещественный вектор из трех элементов.

  • goalState - состояние цели, указанное как вещественный вектор из трех элементов.

  • isReached - логическая переменная, указывающая, достигло ли текущее состояние целевого состояния, возвращаемого как true или false.

Типы данных: function handle

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

Типы данных: single | double

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

planПланирование пути между двумя состояниями
copyСоздание копии объекта планировщика

Примеры

свернуть все

Создание пространства состояний.

ss = stateSpaceSE2;

Создание occupanyMap- средство проверки состояния на основе созданного пространства состояний.

sv = validatorOccupancyMap(ss);

Создайте карту занятия из примера карты и установите разрешение карты 10 ячеек/метр.

load exampleMaps
map = occupancyMap(simpleMap,10);
sv.Map = map;

Задайте расстояние проверки для средства проверки.

sv.ValidationDistance = 0.01;

Обновите границы пространства состояний так, чтобы они совпадали с границами карты.

ss.StateBounds = [map.XWorldLimits;map.YWorldLimits; [-pi pi]];

Создайте планировщик пути и увеличьте максимальное расстояние соединения.

planner = plannerRRT(ss,sv);
planner.MaxConnectionDistance = 0.3;

Задайте начальное и целевое состояния.

start = [0.5,0.5,0];
goal = [2.5,0.2,0];

Планирование пути с параметрами по умолчанию.

rng(100,'twister'); % for repeatable result
[pthObj,solnInfo] = plan(planner,start,goal);

Визуализация результатов.

show(map)
hold on
plot(solnInfo.TreeData(:,1),solnInfo.TreeData(:,2),'.-'); % tree expansion
plot(pthObj.States(:,1),pthObj.States(:,2),'r-','LineWidth',2) % draw path

Figure contains an axes. The axes with title Occupancy Grid contains 3 objects of type image, line.

Ссылки

[1] С.М. Лавалье и Дж.Ж. Куффнер. «Рандомизированное кинодинамическое планирование». Международный журнал исследований робототехники. Том 20, номер 5, 2001, стр. 378 - 400.

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

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

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