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)");

Figure contains an axes object. The axes object with title Joint Position (Solid) vs Reference (Dashed) contains 14 objects of type line.

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

свернуть все

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

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

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

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

Ссылки

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

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

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

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

Классы

Введенный в R2019b
Для просмотра документации необходимо авторизоваться на сайте