rottraj

Сгенерируйте траектории между матрицами поворота ориентации

Описание

пример

[R,omega,alpha] = rottraj(r0,rF,tInterval,tSamples) генерирует траекторию, которая интерполируется между двумя ориентациями, r0 и rF, с точками, основанными на временном интервале и заданных временных выборках.

[R,omega,alpha] = rottraj(r0,rF,tInterval,tSamples,Name,Value) задает дополнительные параметры, используя Name,Value аргументы в виде пар.

Примеры

свернуть все

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

q0 = quaternion([0 pi/4 -pi/8],'euler','ZYX','point');
qF = quaternion([3*pi/2 0 -3*pi/4],'euler','ZYX','point');

Задайте вектор времени для выборки кватернионной траектории.

tvec = 0:0.01:5;

Сгенерируйте траекторию. Постройте график результатов.

[qInterp1,w1,a1] = rottraj(q0,qF,[0 5],tvec);

plot(tvec,compact(qInterp1))
title('Quaternion Interpolation (Uniform Time Scaling)')
xlabel('t')
ylabel('Quaternion Values')
legend('W','X','Y','Z')

Figure contains an axes. The axes with title Quaternion Interpolation (Uniform Time Scaling) contains 4 objects of type line. These objects represent W, X, Y, Z.

Задайте две матричные путевые точки вращения, чтобы интерполировать между.

r0 = [1 0 0; 0 1 0; 0 0 1];
rF = [0 0 1; 1 0 0; 0 0 0];

Задайте вектор времени для выборки кватернионной траектории.

tvec = 0:0.1:1;

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

[rInterp1,w1,a1] = rottraj(r0,rF,[0 1],tvec);

rotations = rotm2quat(rInterp1);
zeroVect = zeros(length(rotations),1);
translations = [zeroVect,zeroVect,zeroVect];

plotTransforms(translations,rotations)
xlabel('X')
ylabel('Y')
zlabel('Z')

Figure contains an axes. The axes contains 44 objects of type patch, line.

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

свернуть все

Начальная ориентация, заданная как матрица вращения 3 на 3 или quaternion объект. Функция генерирует траекторию, которая начинается с начальной ориентации r0, и переходит к окончательной ориентации, rF.

Пример: quaternion([0 pi/4 -pi/8],'euler','ZYX','point');

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

Конечная ориентация, заданная как матрица вращения 3 на 3 или quaternion объект. Функция генерирует траекторию, которая начинается с начальной ориентации r0, и переходит к окончательной ориентации, rF.

Пример: quaternion([3*pi/2 0 -3*pi/4],'euler','ZYX','point')

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

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

Пример: [0 10]

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

Временные выборки для траектории, заданные как m элемент. Выходная траектория, rotVector, является вектором ориентаций.

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

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

Аргументы в виде пар имя-значение

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

Пример: 'TimeScaling',[0 1 2; 0 1 0; 0 0 0]

Вектор масштабирования времени и первые две производные, заданные как разделенная разделенными запятой парами 'TimeScaling' и 3-байтовый вектор m, где m - длина tSamples. По умолчанию масштабирование по времени является линейным масштабированием по времени между временными точками в tInterval.

Для нелинейного масштабирования во времени задайте значения временных точек в первой строке. Вторая и третья строки являются скоростью и ускорением временных точек, соответственно. Например, чтобы следовать по пути с линейной скоростью до половинной точки, а затем прыгать до конца, масштабирование по времени будет:

s(1,:) = [0 0.25 0.5 1 1 1] % Position
s(2,:) = [1    1   1 0 0 0] % Velocity
s(3,:) = [0    0   0 0 0 0] % Acceleration

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

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

свернуть все

Траектория ориентации, возвращенная как матричный массив вращений m 3 на 3 байта или quaternion Объектный массив, где m числа точек в tSamples. Тип выхода зависит от входов r0 и rF.

Скорость вращения ориентации, возвращенная как 3-бай- m матрица, где m - число точек в tSamples.

Угловое ускорение ориентации, возвращаемое как 3-бай- m матрица, где m - число точек в tSamples

Ограничения

  • При указании вашего r0 и rF входные параметры как матрица вращения 3 на 3, они преобразуются в quaternion объект перед интерполяцией траектории. Если ваша матрица поворота не следует за правой системой координат или не имеет прямого преобразования в кватернионы, это преобразование может привести к различным начальным и конечным поворотам в выход траектории.

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

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

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