exponenta event banner

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

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

свернуть все

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

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

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

Ограничения

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

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

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

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