navPathControl

Путь, представляющий основанную на управлении кинематическую траекторию

    Описание

    navPathControl пути к объектно-ориентированной памяти, которые обычно создаются основанными на управлении планировщиками пути как plannerControlRRT объект. navPathControl объект представляет пути как последовательность состояний, средств управления, длительности и целей. Этот объект сопоставляет каждый путь с определенным распространителем состояния, который распространяет команды управления, чтобы определить получившиеся состояния.

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

    Создание

    Описание

    пример

    pathObj = navPathControl(propagator) создает объект контуров с заданным распространителем состояния. propagator аргумент задает StatePropagator

    pathObj = navPathControl(propagator,states,controls,targets,durations) инициализирует путь последовательностью заданных состояний, средств управления, целей и длительности. Состояния ввода должны поссориться, чем другие входные векторы и матрицы.

    Свойства

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

    Распространитель состояния в виде объекта подкласса nav.StatePropagator. Например, mobileRobotPropagator объект представляет пространство состояний и поведение кинематического управления для различных мобильных моделей транспортных средств робота.

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

    Серия состояний для пути в виде n-by-m матрица. n является числом точек в пути. m является размерностью вектора состояния.

    Можно задать это свойство при создании объекта при помощи states аргумент.

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

    Вход управления для каждого состояния в виде (n–1)-by-m матрица. n является числом точек в пути. m является размерностью вектора состояния.

    Можно задать это свойство при создании объекта при помощи controls аргумент.

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

    Целевое состояние для каждого состояния в пути в виде (n–1)-by-m матрица. n является числом точек в пути. m является размерностью вектора состояния.

    Можно задать это свойство при создании объекта при помощи targets аргумент.

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

    Длительность каждого входа управления в виде (n–1) - вектор элемента в секундах. n является числом точек в пути.

    Можно задать это свойство при создании объекта при помощи durations аргумент.

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

    Количество состояний в пути в виде положительного целого числа.

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

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

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

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

    appendДобавьте состояния в конец пути
    interpolateИнтерполируйте путь на основе размера шага распространителя
    pathDurationОбщая прошедшая длительность пути к управлению

    Примеры

    свернуть все

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

    Установите параметры распространителя состояния и состояния

    Загрузите троичную матрицу карты и создайте occupancyMap объект. Создайте распространителя состояния, использующего карту. По умолчанию распространитель состояния использует велосипед кинематическая модель.

    load('exampleMaps','ternaryMap')
    map = occupancyMap(ternaryMap,10);
    
    propagator = mobileRobotPropagator(Environment=map); % Bicycle model

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

    propagator.StateSpace.StateBounds(1:2,:) = ...
                        [map.XWorldLimits; map.YWorldLimits];

    Запланируйте путь

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

    planner = plannerControlRRT(propagator);

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

    start = [10 15 0];
    goal  = [40 30 0];

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

    rng("default")
    path = plan(planner,start,goal)
    path = 
      navPathControl with properties:
    
        StatePropagator: [1x1 mobileRobotPropagator]
                 States: [192x3 double]
               Controls: [191x2 double]
              Durations: [191x1 double]
           TargetStates: [191x3 double]
              NumStates: 192
            NumSegments: 191
    
    

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

    Визуализируйте карту и постройте состояния пути.

    show(map)
    hold on
    plot(start(1),start(2),"rx")
    plot(goal(1),goal(2),"go")
    plot(path.States(:,1),path.States(:,2),"b")
    hold off

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

    Отобразите [v psi] управляйте входными параметрами прямой скорости и держащегося угла.

    plot(path.Controls)
    ylim([-1 1])
    legend(["Velocity (m/s)","Steering Angle (rad)"])

    Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Velocity (m/s), Steering Angle (rad).

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

    Объекты

    Функции

    Введенный в R2021b