minjerkpolytraj

Сгенерируйте минимальную траекторию толчка через waypoints

    Описание

    пример

    [q,qd,qdd,qddd,pp,tPoints,tSamples] = minjerkpolytraj(waypoints,timePoints,numSamples) генерирует минимальную траекторию полинома толчка, которая достигает данного набора входа waypoints с их соответствующими моментами времени. Функция возвращает положения, скорости, ускорения, и дергает в данном количестве отсчетов numSamples. Функция также возвращает кусочный полином pp форма полиномиальной траектории относительно времени, а также моменты времени tPoints и шаги расчета tSamples.

    [q,qd,qdd,qddd,pp,tPoints,tSamples] = minjerkpolytraj(___,Name=Value) задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к входным параметрам от предыдущего синтаксиса. Например, minjerkpolytraj(waypoints,timePoints,numSamples,VelocityBoundaryCondition=[1 0 -1 -1; 1 1 1 -1]) генерирует двумерную минимальную траекторию толчка и задает граничные условия скорости в каждой размерности для каждого waypoint.

    [q,qd,qdd,qddd,pp,tPoints,tSamples] = minjerkpolytraj(___,TimeAllocation=true) оптимизирует комбинацию толчка и общей стоимости времени сегмента. В этом случае функция обрабатывает timePoints как исходное предположение для времени прибытия в waypoints.

    Примеры

    свернуть все

    Используйте minjerkpolytraj функция с данным набором 2D xy waypoints. Моменты времени для waypoints также даны.

    wpts = [1 4 4 3 -2 0; 0 1 2 4 3 1];
    tpts = 0:5;

    Задайте количество отсчетов в выходной траектории.

    numsamples = 100;

    Вычислите минимальные траектории толчка. Функциональные выходные параметры положения траектории (q), скорость (qd), ускорение (qdd), и толчки (qddd) в данном количестве отсчетов.

    [q,qd,qdd,qddd,pp,timepoints,tsamples] = minjerkpolytraj(wpts,tpts,numsamples);

    Постройте траектории для x-и y-положений. Сравните траекторию с каждым waypoint.

    plot(tsamples,q)
    hold on
    plot(timepoints,wpts,'x')
    xlabel('t')
    ylabel('Positions')
    legend('X-positions','Y-positions')
    hold off

    Figure contains an axes object. The axes object contains 4 objects of type line. These objects represent X-positions, Y-positions.

    Можно также проверить фактические положения в 2D плоскости. Постройте отдельные строки q вектор и waypoints как x-и y-положения.

    figure
    plot(q(1,:),q(2,:),'.b',wpts(1,:),wpts(2,:),'or')
    xlabel('X')
    ylabel('Y')

    Figure contains an axes object. The axes object contains 2 objects of type line.

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

    свернуть все

    Waypoints для траектории в виде n-by-p матрица. n является размерностью траектории, и p является количеством waypoints.

    Пример: [2 5 8 4; 3 4 10 12]

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

    Моменты времени для waypoints траектории в виде p - вектор-строка элемента. p является количеством waypoints.

    Пример: [1 2 3 5]

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

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

    Пример: 50

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

    Аргументы name-value

    Задайте дополнительные пары аргументов как Name1=Value1,...,NameN=ValueN, где Name имя аргумента и Value соответствующее значение. Аргументы name-value должны появиться после других аргументов, но порядок пар не имеет значения.

    Пример: minjerkpolytraj(waypoints,timePoints,numSamples,VelocityBoundaryCondition=[1 0 -1 -1; 1 1 1 -1]) генерирует двумерную минимальную траекторию толчка и задает граничные условия скорости в каждой размерности для каждого waypoint.

    Граничные условия скорости для каждого waypoint в виде n-by-p матрица. Каждый наборы строк скоростной контур для соответствующей размерности траектории в каждом p waypoints. По умолчанию функция использует значение 0 за пределами waypoints и NaN в промежуточном звене waypoints.

    Пример: VelocityBoundaryCondition=[1 0 -1 -1; 1 1 1 -1]

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

    Ускоряющие граничные условия для каждого waypoint в виде n-by-p матрица. Каждый наборы строк ускоряющий контур для соответствующей размерности траектории в каждом p waypoints. По умолчанию функция использует значение 0 за пределами waypoints и NaN в промежуточном звене waypoints.

    Пример: AccelerationBoundaryCondition=[1 0 -1 -1; 1 1 1 -1]

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

    Дергайте граничные условия для каждого waypoint в виде n-by-p матрица. Каждый наборы строк контур толчка для соответствующей размерности траектории в каждом p waypoints. По умолчанию функция использует значение 0 за пределами waypoints и NaN в промежуточном звене waypoints.

    Пример: JerkBoundaryCondition=[1 0 -1 -1; 1 1 1 -1]

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

    Выделение времени отмечает в виде логического 0 ложь) или 1 TRUE). Позвольте этому флагу оптимизировать комбинацию толчка и общей стоимости времени сегмента.

    Примечание

    Если сингулярность происходит, когда флаг выделения времени включен, уменьшайте MaxSegmentTime к MinSegmentTime отношение.

    Пример: TimeAllocation=true

    Типы данных: логический

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

    Пример: TimeWeight=120

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

    Минимальная длина сегмента времени в виде положительной скалярной величины или (p 1) - вектор-строка элемента.

    Пример: MinSegmentTime=0.2

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

    Максимальная длина сегмента времени в виде положительной скалярной величины или (p 1) - вектор-строка элемента

    Пример: MaxSegmentTime=10

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

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

    свернуть все

    Положения траектории на данных выборках времени в tSamples, возвращенный как n-by-m матрица. n является размерностью траектории, и m равен numSamples.

    Скорости траектории на данных выборках времени в tSamples, возвращенный как n-by-m матрица. n является размерностью траектории, и m равен numSamples.

    Ускорения траектории на данных выборках времени в tSamples, возвращенный как n-by-m матрица. n является размерностью траектории, и m равен numSamples.

    Толчки траектории на данных выборках времени в tSamples, возвращенный как n-by-m матрица. n является размерностью траектории, и m равен numSamples.

    Кусочный полином, возвращенный как структура, которая задает полином для каждого раздела кусочной траектории. Можно создать собственное использование кусочных полиномов mkpp, или оцените полином в требуемые времена с помощью ppval. Структура содержит поля:

    • form: 'pp'.

    • breaks: p - вектор элемента времен, когда кусочная траектория изменяет формы. p является количеством waypoints.

    • coefs: n (p 1)-by-order матрица для коэффициентов для полиномов. n (p 1) размерность времен траектории количество pieces. Каждый набор строк n задает коэффициенты для полинома, который описал каждую переменную траекторию.

    • piecesP1. Количество пропусков минус 1.

    • order: Степень полиномиального +1 . Порядок полинома равняется 8.

    • dimN. Размерность положений контрольной точки.

    Моменты времени для waypoints траектории, возвращенной как p - вектор-строка элемента. p является количеством waypoints.

    Выборки времени для траектории, возвращенной как m - вектор-строка элемента. Каждый элемент выходного положения q, скорость qd, ускорение qdd, и дергайте qddd был произведен в соответствующее время в этом векторе.

    Ссылки

    [1] Bry, Адам, Чарльз Рихтер, Абрахам Бэкрак и Николас Рой. “Агрессивный Рейс Фиксированного Крыла и Самолета Quadrotor в Плотных Внутренних средах”. Международный журнал Исследования Робототехники, 34, № 7 (июнь 2015): 969–1002.

    [2] Рихтер, Чарльз, Адам Брай и Николас Рой. “Полиномиальная Траектория, Планирующая Агрессивный Рейс Quadrotor в Плотных Внутренних средах". Работа представила на Международном Симпозиуме Исследования Робототехники (ISRR 2013), 2013.

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

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

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

    Функции

    Введенный в R2021b