Используйте пользовательское масштабирование времени для траектории преобразования

В этом примере показано, как задать пользовательское масштабирование по времени в блоке Transform Trajectory, чтобы выполнить интерполированную траекторию. В блоке заданы два преобразования, чтобы сгенерировать траекторию между ними. Цель состоит в том, чтобы перемещаться между преобразованиями с помощью нелинейного масштабирования времени, где траектория быстро перемещается в начале и медленно в конце.

Откройте модель

Пользовательская траектория масштабирования времени генерируется с помощью блока Polynomial Trajectory, который задает положение, скорость и ускорение, заданные пользовательским масштабированием времени в момент времени, как задано блоком Clock. Блок Clock выходов время симуляции и используется для запроса траектории преобразования в тех, которые задают временные точки. Входные Точки Пути определяют точки пути нелинейного масштабирования времени, которое нужно использовать, и включают более короткий временной интервал между точками около последнего времени. Шкала времени 3x1, выводимая из блока Polynomial Trajectory как q, qd и qdd, вводится в блок Transform Trajectory с текущим временем такта как TSTime, что указывает на то, что это масштабирование времени в этом образце. Функциональный блок MATLAB ® использует plotTransforms для построения координатной системы координат, которая перемещается по сгенерированной траектории преобразования.

open_system("custom_time_scaling_transform")

Симулируйте модель

Симулируйте модель. График показывает, как преобразование следует нелинейной интерполированной траектории, параметризованной во времени. Модель запускается с помощью решателя с фиксированным шагом с интервалом 0,1 секунды, поэтому каждая система координат находится на расстоянии 0,1 секунды друг от друга. Заметьте, что преобразования отбираются более близко к окончательному преобразованию.

sim("custom_time_scaling_transform")

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