exponenta event banner

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

В этом примере показано, как задать пользовательское масштабирование по времени в блоке «Траектория вращения» для выполнения интерполированной траектории. В блоке задаются два поворота для формирования траектории между ними. Цель состоит в том, чтобы перемещаться между вращениями, используя нелинейное масштабирование времени с большим количеством отсчетов времени ближе к окончательному вращению.

Задание масштаба времени

Создайте векторы для вектора времени масштабирования времени и значений масштабирования времени. Время масштабирования времени является линейным вектором от 0 до 5 секунд с интервалами 0,1 секунды. Значения масштабирования по времени следуют кубической траектории с соответствующими производными, заданными для скорости и ускорения. Эти значения используются в модели.

tsTime = 0:0.1:5;
tsVals(1,:) = (tsTime/5).^3;        % Position
tsVals(2,:) = ((3/125).*tsTime).^2;  % Velocity
tsVals(3,:) = (18/125^2).*tsTime;   % Acceleration

Открытие модели

Блок часов выводит время моделирования и используется для запроса траектории вращения в указанные моменты времени. Полный набор времени и значений масштабирования по времени вводится в блок Траектория вращения (Rotation Trajectory), но Время (Time) определяет время выборки по этой траектории. Функциональный блок MATLAB ® используетplotTransforms для построения графика координатной рамки, которая перемещается вдоль создаваемой траектории вращения.

open_system("custom_time_scaling_rotation")

Моделирование модели

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

sim("custom_time_scaling_rotation")
hold off

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