transformtraj

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

Описание

пример

[tforms,vel,acc] = transformtraj(T0,TF,tInterval,tSamples) генерирует траекторию, которая интерполирует между двумя гомогенными преобразованиями 4 на 4, T0 и TF, с точками на основе временного интервала и данных выборок времени.

[tforms,vel,acc] = transformtraj(T0,TF,tInterval,tSamples,Name,Value) задает дополнительные параметры с помощью Name,Value парные аргументы.

Примеры

свернуть все

Создайте преобразования из двух ориентаций и положений. Specifiy временной интервал и вектор времен для интерполяции.

t0 = axang2tform([0 1 1 pi/4])*trvec2tform([0 0 0]);
tF = axang2tform([1 0 1 6*pi/5])*trvec2tform([1 1 1]);
tInterval = [0 1];
tvec = 0:0.01:1;

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

[tfInterp, v1, a1] = transformtraj(t0,tF,tInterval,tvec);

rotations = tform2quat(tfInterp);
translations = tform2trvec(tfInterp);

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

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

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

свернуть все

Начальное преобразование в виде гомогенного преобразования 4 на 4. Функция генерирует траекторию, которая запускается при начальном преобразовании, T0, и переходит к итоговому преобразованию, TF.

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

Итоговое преобразование в виде гомогенного преобразования 4 на 4. Функция генерирует траекторию, которая запускается при начальном преобразовании, T0, и переходит к итоговому преобразованию, TF.

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

Времена начала и конца для траектории в виде двухэлементного вектора в секундах.

Пример: [0 10]

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

Выборки времени для траектории в виде m - вектор элемента в секундах.

Пример: 0:0.01: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]

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

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

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

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

свернуть все

Траектория преобразования, возвращенная как 4 4 m гомогенным массивом матрицы преобразования, где m является числом точек в tSamples.

Скорости преобразования, возвращенные как 6 m матрицей в m/s, где m является числом точек в tSamples. Первыми тремя элементами являются скорости вращения, и вторыми тремя элементами являются скорости вовремя.

Ускорения преобразования, возвращенные как 6 m матрицей в m/s2, где m является числом точек в tSamples. Первыми тремя элементами являются угловые ускорения, и вторыми тремя элементами являются ускорения вовремя.

Ссылки

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

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

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

Введенный в R2019a