mobileRobotPropagator

Распространитель состояния для колесных автоматизированных систем

    Описание

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

    Создание

    Описание

    mobileProp = mobileRobotPropagator создает мобильного распространителя робота для велосипеда кинематическая модель с помощью политики управления линейного преследования.

    пример

    mobileProp = mobileRobotPropagator(Name,Value) задает свойства с помощью аргументов name-value. Например, mobileRobotPropagator("ControlStepSize"=0.01) создает мобильного распространителя робота с размером шага управления 0,01.

    Свойства

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

    Пространство состояний для выборки во время планирования в виде объекта подкласса nav.StateSpace объект.

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

    Среда для проверки состояний в виде binaryOccupancyMap, occupancyMap, или vehicleCostmap Объект (Automated Driving Toolbox).

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

    Это свойство может только быть установлено во время конструкции.

    Метрика расстояния для оценки распространения стоила в виде одной из этих опций:

    • 'euclidean' — Стандартное Евклидово расстояние.

    • 'dubins' — Дистанцируют вдоль пути Dubins, который соединяет два состояния. Для получения дополнительной информации смотрите dubinsPathSegment.

    • 'reedsshepp' — Расстояние вперед Тростники путь Shepp, который соединяет два состояния. Для получения дополнительной информации смотрите reedsSheppPathSegment.

    Это свойство может только быть установлено во время конструкции.

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

    Это свойство может только быть установлено во время конструкции.

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

    Кинематические состояния модели и средства управления

    ВводВектор состоянияВход Control
    'bicycle'[x y theta][v psi]
    'ackermann'[x y theta psi][v psiDot]

    Это свойство может только быть установлено во время конструкции и выбора Ackermann, кинематическая модель требует Robotics System Toolbox™.

    Метод интегрирования при распространении состояния. Размер этапа интеграции может быть обновлен через SystemParameters свойство.

    'rungekutta4' обеспечивает более точный результат интегрирования, чем 'euler' за счет скорости.

    Это свойство может только быть установлено во время конструкции.

    Параметры для кинематической модели, интегратора и политики управления в виде структуры с этими полями:

    • KinematicModel — Параметры для кинематического типа модели заданы в KinematicModel свойство.

      • WheelBase — Размер колеса базируется в метрах

      • SpeedLimit — Скорость в прямых и обратных направлениях в метрах в секунду.

      • SteerRatelimit — Пределы на держащемся уровне в радианах в секунду

    • Integrator — Параметры для типа интегратора заданы в Integrator свойство.

    • ControlPolicy — Параметры для политики управления заданы в ControlPolicy свойство.

    Управляйте параметрами

    Управляйте политикой генерации команды в виде одной из этих опций:

    • 'linearpursuit' — Производит случайную скорость и вычисляет предварительную точку вдоль вектора, который соединяет начальное состояние с целевым состоянием.

    • 'arcpursuit' — Производит случайную скорость и вычисляет предварительную точку вдоль дуги, которая является тангенциальной к целевому состоянию и пересекает начальный позиционный xy.

    • 'randomsamples' — Чертит конечное множество случайных контрольных выборок от пробела управления и распространяет каждому. Распространитель выбирает выборку, которая получает самое близкое к цели и затем выполняет валидацию.

    Пределы на командах управления для каждого состояния в виде n-by-2 матрица. n является количеством входных параметров управления для вашей системной модели.

    Это свойство доступно только для чтения.

    Количество управления выходные параметры в виде неотрицательного скаляра.

    Длительность каждой команды управления в виде положительной скалярной величины.

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

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

    distanceОцените, что стоимость распространения предназначается для состояния
    propagateРаспространите систему без валидации
    propagateWhileValidРаспространите систему и возвратите допустимое движение
    sampleControlСгенерируйте команду управления и длительность
    setupНастройте мобильного робота, утверждают распространителя

    Примеры

    свернуть все

    Запланируйте пути к управлению велосипед кинематическая модель с 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