exponenta event banner

bsplinepolytraj

Создание полиномиальных траекторий с помощью B-сплайнов

Описание

пример

[q,qd,qdd,pp] = bsplinepolytraj(controlPoints,tInterval,tSamples) создает кусочно-кубическую B-сплайновую траекторию, которая попадает в управляющий многоугольник, определенный controlPoints. Траектория равномерно выбирается между начальным и конечным временем, указанным в tInterval. Функция возвращает положения, скорости и ускорения на входных отсчетах времени. tSamples. Функция также возвращает кусочный многочлен pp форма полиномиальной траектории относительно времени.

Примеры

свернуть все

Используйте bsplinepolytraj функция с заданным набором контрольных точек 2-D xy. B-сплайн использует эти управляющие точки для создания траектории внутри многоугольника. Также приведены временные точки для ППМ.

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

Вычислите траекторию B-сплайна. Функция выводит положения траектории (q), скорость (qd), ускорение (qdd), вектор времени (tvec) и полиномиальные коэффициенты (pp) многочлена, который достигает ППМ с использованием трапециевидных скоростей.

tvec = 0:0.01:5;
[q, qd, qdd, pp] = bsplinepolytraj(cpts,tpts,tvec);

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

figure
plot(cpts(1,:),cpts(2,:),'xb-')
hold all
plot(q(1,:), q(2,:))
xlabel('X')
ylabel('Y')
hold off

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

Постройте график положения каждого элемента траектории B-сплайна. Эти траектории являются кубическими кусочными полиномами, параметризованными во времени.

figure
plot(tvec,q)
hold all
plot([0:length(cpts)-1],cpts,'x')
xlabel('t')
ylabel('Position Value')
legend('X-positions','Y-positions')
hold off

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

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

свернуть все

Точки для управляющего многоугольника траектории B-сплайна, заданной как матрица n-by-p, где n - размерность траектории, а p - количество управляющих точек.

Пример: [1 4 4 3 -2 0; 0 1 2 4 3 1]

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

Время начала и окончания траектории, определяемое как двухэлементный вектор.

Пример: [0 10]

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

Временные выборки для траектории, указанные как вектор. Положение вывода, q, скорость, qdи ускорения, qdd, отбираются через эти интервалы времени.

Пример: 0:0.01:10

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

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

свернуть все

Положения траектории в заданных временных пробах в tSamples, возвращено как вектор.

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

Скорости траектории при заданных временных пробах в tSamples, возвращено как вектор.

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

Ускорения траектории в данный момент времени выборок в tSamples, возвращено как вектор.

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

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

  • form: 'pp'.

  • breaks: p-элементный вектор времен при изменении кусочной траектории. p - количество ППМ.

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

  • pieces: p-1. Количество разрывов минус 1.

  • orderСтепень полинома + 1. Например, кубические многочлены имеют порядок 4.

  • dimN. Размеры позиций контрольных точек.

Ссылки

[1] Фарин, Джеральд Э. Кривые и поверхности для автоматизированного геометрического проектирования: практическое руководство. Сан-Диего, Калифорния: Академическая пресса, 1993.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2019a