exponenta event banner

запланировать

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

    Описание

    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 свойство имеет значение true.

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

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

    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 (false).
    ExitFlag

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

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

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

    • 3 - плановик достигает максимального количества узлов.

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

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

    См. также

    Объекты

    Функции

    Представлен в R2021a