updateErrorDynamicsFromStep

Обновите значения NaturalFrequency и DampingRatio свойства, данные желаемый переходной процесс

Описание

пример

updateErrorDynamicsFromStep(motionModel,settlingTime,overshoot) обновляет значения NaturalFrequency и DampingRatio свойства данного jointSpaceMotionModel возразите, учитывая желаемый переходной процесс.

updateErrorDynamicsFromStep(motionModel,settlingTime,overshoot,jointIndex) обновляет NaturalFrequency и DampingRatio свойства для определенного соединения. В этом случае, значения SettlingTime и Overshoot должен быть обеспечен как скаляры, потому что они применяются к одному соединению.

Примеры

свернуть все

В этом примере показано, как создать и использовать jointSpaceMotionModel объект для робота манипулятора на объединенном пробеле.

Создайте робота

robot = loadrobot("kinovaGen3","DataFormat","column","Gravity",[0 0 -9.81]);

Настройте симуляцию

Установите промежуток составлять 1 с с размером такта 0,01 с. Установите начальное состояние быть роботами, домашней настройкой со скоростью нуля.

tspan = 0:0.01:1;
initialState = [homeConfiguration(robot); zeros(7,1)];

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

targetState = [pi/4; pi/3; pi/2; -pi/3; pi/4; -pi/4; 3*pi/4; zeros(7,1); zeros(7,1)];

Создайте модель движения

Смоделируйте систему с вычисленным управлением крутящим моментом и ошибочной динамикой, заданной умеренно быстрым переходным процессом с 5%-м перерегулированием.

motionModel = jointSpaceMotionModel("RigidBodyTree",robot);
updateErrorDynamicsFromStep(motionModel,.3,.05);

Симулируйте робота

Используйте производную функцию модели как вход к ode45 решатель, чтобы симулировать поведение более чем 1 секунда.

[t,robotState] = ode45(@(t,state)derivative(motionModel,state,targetState),tspan,initialState);

Постройте ответ

Постройте положения всего приведения в действие соединений к их целевому состоянию. Соединения с более высоким смещением между стартовой позицией и целевым положением приводят в движение к цели на более быстром уровне, чем те с более низким смещением. Это приводит к перерегулированию, но все соединения имеют то же время урегулирования.

figure
plot(t,robotState(:,1:motionModel.NumJoints));
hold all;
plot(t,targetState(1:motionModel.NumJoints)*ones(1,length(t)),"--");
title("Joint Position (Solid) vs Reference (Dashed)");
xlabel("Time (s)")
ylabel("Position (rad)");

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

свернуть все

jointSpaceMotionModel объект, который задает свойства модели движения.

Время урегулирования, требуемое достигнуть 2%-й полосы допуска в секундах, заданных как скаляр или n - вектор элемента. n является количеством нефиксированных соединений в rigidBodyTree из jointSpaceMotionModel в motionModel аргумент.

Перерегулирование относительно модульного шага, заданного как скаляр или n - вектор элемента. n является количеством нефиксированных соединений в rigidBodyTree из jointSpaceMotionModel в motionModel аргумент.

Индекс соединения, для который NaturalFrequency и DampingRatio обновляется, учитывая ошибочную динамику модульного шага. В этом случае время урегулирования и перерегулирование должны быть заданы как скаляры.

Ссылки

[1] Огата, Кацухико. Современная Разработка Управления 4-й редактор Englewood Cliffs, NJ: Prentice Hall, 2002.

Смотрите также

Классы

Введенный в R2019b