plan

Запланируйте путь между двумя состояниями

    Описание

    path = plan(planner,startState,goalState) возвращает двунаправленное быстро исследующее случайное дерево (RRT) путь от начального состояния до целевого состояния как navPath объект.

    пример

    [path,solnInfo] = plan(planner,startState,goalState) также возвращает информацию о решении в планирование пути.

    Примеры

    свернуть все

    Используйте plannerBiRRT возразите, чтобы запланировать путь между двумя состояниями в среде с препятствиями. Визуализируйте запланированный путь с интерполированными состояниями.

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

    ss = stateSpaceSE2;

    Создайте occupancyMap- основанный блок проверки допустимости состояния, использующий созданное пространство состояний.

    sv = validatorOccupancyMap(ss);

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

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

    Установите расстояние валидации для блока проверки допустимости.

    sv.ValidationDistance = 0.01;

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

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

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

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

    Задайте запуск и целевые состояния.

    start = [20 10 0];
    goal = [40 40 0];

    Запланируйте путь. Из-за случайности алгоритма RRT, набор rng отберите для воспроизводимости.

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

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

    fprintf('Number of iterations: %d\n',solnInfo.NumIterations)
    Number of iterations: 346
    

    Визуализируйте результаты.

    show(map)
    hold on
    plot(solnInfo.StartTreeData(:,1),solnInfo.StartTreeData(:,2),'.-','color','b') % Start tree expansion
    plot(solnInfo.GoalTreeData(:,1),solnInfo.GoalTreeData(:,2),'.-','color','g') % Goal tree expansion
    plot(pthObj.States(:,1),pthObj.States(:,2),'r-','LineWidth',2) % draw path
    hold off

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

    planner.EnableConnectHeuristic = true;
    [pthObj,solnInfo] = plan(planner,start,goal);

    Отобразите количество проделанных итераций для дерева, чтобы сходиться. Заметьте, что планировщик значительно требует меньшего количества итераций по сравнению с когда EnableConnectHeuristic свойство установлено в ложь.

    fprintf('Number of iterations: %d\n',solnInfo.NumIterations)
    Number of iterations: 135
    

    Визуализируйте результаты.

    figure
    show(map)
    hold on
    plot(solnInfo.StartTreeData(:,1),solnInfo.StartTreeData(:,2),'.-','color','b') % Start tree expansion
    plot(solnInfo.GoalTreeData(:,1),solnInfo.GoalTreeData(:,2),'.-','color','g') % Goal tree expansion
    plot(pthObj.States(:,1),pthObj.States(:,2),'r-','LineWidth',2) % draw path

    Входные параметры

    свернуть все

    Планировщик пути в виде plannerBiRRT объект.

    Начальное состояние пути в виде N - элемент вектор с действительным знаком. N является количеством размерностей в пространстве состояний.

    Пример: [1 1 pi/6]

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

    Целевое состояние пути в виде N - элемент вектор с действительным знаком. N является количеством размерностей в пространстве состояний.

    Пример: [2 2 pi/3]

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

    Выходные аргументы

    свернуть все

    Запланированная информация о пути, возвращенная как navPath объект.

    Информация о решении, возвращенная как структура. Структура содержит эти поля:

    Поле Описание
    IsPathFoundУказывает, найден ли путь. Это возвращает 1 TRUE) если путь найден. В противном случае это возвращает 0 ложь).
    ExitFlag

    Указывает на причину завершения планировщика, возвращенного как:

    • 1 — Планировщик достигает цели.

    • 2 — Планировщик достигает максимального количества итераций.

    • 3 — Планировщик достигает максимального количества узлов.

    StartTreeNumNodesКоличество узлов в дереве поиска запуска, когда планировщик отключает, исключая корневой узел.
    GoalTreeNumNodesКоличество узлов в целевом дереве поиска, когда планировщик отключает, исключая корневой узел.
    NumIterationsКоличество объединенных итераций и деревом запуска и целевым деревом.
    StartTreeDataНабор исследуемых состояний, которые отражают состояние дерева поиска запуска, когда планировщик отключает. Обратите внимание на то, что NaN значения вставляются как разделители, чтобы разделить каждое отдельное ребро.
    GoalTreeDataНабор исследуемых состояний, которые отражают состояние целевого дерева поиска, когда планировщик отключает. Обратите внимание на то, что NaN значения вставляются как разделители, чтобы разделить каждое отдельное ребро.

    Типы данных: structure

    Смотрите также

    Объекты

    Функции

    Введенный в R2021a