exponenta event banner

jointSpaceMotionModel

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

Описание

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

Создание

Описание

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

пример

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

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

Свойства

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

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

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

Зависимости

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

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

Зависимости

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

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

Зависимости

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

Коэффициент усиления производной для управления PD, определяемый как скалярная или n-by-n матрица, где n в количестве нефиксированных соединений в rigidBodyTree в свойстве BodyTree. Если указан скаляр, то 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, Нью-Джерси: Pearson Education, 2005.

[2] Спонг, Марк У., Сет Хатчинсон и Матхукумалли Видьясагар. Моделирование роботов и управление ими. Хобокен, Нью-Джерси: Уайли, 2006.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2019b