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: <reservedrangesplaceholder0>–1. Количество пропусков минус 1.

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

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

Ссылки

[1] Farin, Gerald E. Curves and Surfaces for Computer Aided Geometric Design: A Practical Guide. Сан-Диего, Калифорния: Академическая пресса, 1993.

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

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

.
Введенный в R2019a