jointSpaceMotionModel

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

Описание

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

Создание

Описание

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

пример

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

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

Ссылки

[1] Крейг, Джон Дж. Введение в робототехнику: механика и управление. Upper Saddle River, NJ: Pearson Education, 2005.

[2] Spong, Mark W., Seth Hutchinson, and Mathukumalli Vidyasagar. Моделирование и управление роботом. Хобокен, Нью-Джерси: Уайли, 2006.

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

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

.
Введенный в R2019b