rottraj

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

Описание

пример

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

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

Примеры

свернуть все

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

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 object. The axes object with title Quaternion Interpolation (Uniform Time Scaling) contains 4 objects of type line. These objects represent W, X, Y, Z.

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

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 object. The axes object 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 - вектор элемента.

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

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

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

Задайте дополнительные разделенные запятой пары 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 m матричным массивом вращения или quaternion объектный массив, где m является числом точек в tSamples. Выходной тип зависит от входных параметров от r0 и rF.

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

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

Ограничения

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

Ссылки

[1] Дамба, Эрик Б., Мартин Кох и Мартин Лиллхолм. Кватернионы, Интерполяция и Анимация. Технический отчет DIKU-TR-98/5 (июль 1998). http://web.mit.edu/2.998/www/QuaternionReport1.pdf

[2] Абзац, Базиль. Кватернионы и Динамика. arXiv:0811.2889 [math.DS] (2008). https://arxiv.org/pdf/0811.2889.pdf

[3] Линчуйте, Кевин М. и Франк К. Парк. Современная робототехника: механика, планирование и управление. Издательство Кембриджского университета, 2017.

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

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

Введенный в R2019a