jointSpaceMotionModel

Модель движения древовидного твердого тела для заданных входных параметров в системе координат соединений

Описание

jointSpaceMotionModel объектные модели движение объединенного пробела с обратной связью робота манипулятора в виде rigidBodyTree объект. Поведение модели движения задано свойством MotionType.

Создание

Описание

motionModel = jointSpaceMotionModel создает модель движения для 2D объединенного манипулятора по умолчанию.

пример

motionModel = jointSpaceMotionModel("RigidBodyTree",tree) создает модель движения для заданного rigidBodyTree объект.

motionModel = jointSpaceMotionModel(Name,Value) дополнительные свойства наборов, заданные как пары "имя-значение". Можно задать несколько свойств в любом порядке.

Свойства

развернуть все

Модель робота дерева твердого тела в виде rigidBodyTree объект, который задает инерционные и кинематические свойства манипулятора.

Собственная частота ошибочной динамики в виде скаляра или n - вектор элемента в Гц, где n является количеством нефиксированных соединений в связанном rigidBodyTree объект в свойстве RigidBodyTree.

Зависимости

Чтобы использовать это свойство, установите свойство MotionType на "ComputedTorqueControl" или "IndependentJointMotion".

Коэффициент затухания ошибочной динамики второго порядка в виде скаляра или n - вектор элемента из действительных значений, где n является количеством нефиксированных соединений в связанном rigidBodyTree объект в свойстве RigidBodyTree. Если скаляр задан, то DampingRatio становится n - вектор элемента из значения s, где s заданный скаляр.

Зависимости

Чтобы использовать это свойство, установите свойство MotionType на "ComputedTorqueControl" или "IndependentJointMotion".

Пропорциональная составляющая для пропорциональной производной (PD) управляет в виде скаляра или n-by-n матрицей, где n является количеством нефиксированных соединений в связанном rigidBodyTree объект в свойстве RigidBodyTree. Необходимо установить свойство MotionType на "PDControl". Если скаляр задан, то Kp становится s*eye(n), где s заданный скаляр.

Зависимости

Чтобы использовать это свойство, установите свойство MotionType на "PDControl".

Производное усиление для PD управляет в виде скаляра или n-by-n матрицей, где n в количестве нефиксированных соединений в rigidBodyTree объект в свойстве RigidBodyTree. Если скаляр задан, то Kp становится s*eye(n), где s заданный скаляр.

Зависимости

Чтобы использовать это свойство, установите свойство MotionType на "PDControl".

Тип движения в виде строкового скаляра или вектора символов, который задает поведение объединенного пробела с обратной связью что объектные модели. Опции:

  • "ComputedTorqueControl" — Компенсирует динамику всего тела и присваивает ошибочную динамику, заданную в свойствах NaturalFrequency и DampingRatio.

  • "IndependentJointMotion" — Модели каждое соединение как независимая система второго порядка с помощью ошибочной динамики заданы NaturalFrequency и DampingRatio свойства.

  • "PDControl" — Управление пропорциональной производной использования на соединениях на основе заданных свойств Kp и Kd.

Функции объекта

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

Примеры

свернуть все

В этом примере показано, как создать и использовать 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)");

Ссылки

[1] Крэйг, Джон Дж. Введение в робототехнику: механика и управление. Верхний Сэддл-Ривер, NJ: образование Пирсона, 2005.

[2] Spong, Марк В., Сет Хатчинсон и Матукумалли Видйязагар. Моделирование робота и управление. Хобокен, NJ: Вайли, 2006.

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

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

Введенный в R2019b