plannerRRT

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

Описание

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

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

  2. Планировщик находит x состояния вблизи, которая уже находится в дереве поиска и наиболее близка (на основе определения расстояния в пространстве состояний) к x rand .

  3. Планировщик расширяется от x ближе к x rand, пока не будет достигнуто состояние x new.

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

Для геометрического 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] S.M. Lavalle и J.J. Kuffner. Рандомизированное кинодинамическое планирование. Международный журнал исследований робототехники. Том 20, № 5, 2001, стр. 378 - 400.

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2019b