exponenta event banner

taskSpaceMotionModel

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

Описание

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

Создание

Описание

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

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

пример

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

Свойства

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

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

Это свойство определяет тело, которое будет использоваться в качестве конечного эффектора и для которого определено движение пространства задачи. Свойство должно соответствовать имени тела в rigidBodyTree объект свойства BodyTree. Если дерево жесткого тела обновляется без обновления конечного эффектора, тело с наивысшим индексом становится конечным эффекторным телом по умолчанию.

Пропорциональный коэффициент усиления для управления PD, определяемый как матрица 6 на 6.

Коэффициент усиления производной для контроля пропорциональной производной (PD), определяемый как матрица 6 на 6.

Константа демпфирования соединения, заданная в виде вектора n-элемента, где n - количество нефиксированных соединений в модели робота, заданное свойством HusingBodyTree. Узлы демпфирования соединения - N/( м/с) или N/( рад/с) для призматического и поворотного соединений соответственно.

Тип движения, указанный как "PDControl", который использует управление пропорциональной производной (PD), сопоставленное с суставами через контроллер Якобиана-Транспозе. Элемент управления основан на указанных свойствах Kp и Kd.

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

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

Примеры

свернуть все

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

Создание робота

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

Настройка моделирования

Установите интервал времени равным 1 секунде с размером временного интервала 0,02 секунды. Установите исходное состояние в домашнюю конфигурацию робота со скоростью, равной нулю.

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

Определите ссылочное состояние с целевым положением и нулевой скоростью.

refPose = trvec2tform([0.6 -.1 0.5]);
refVel = zeros(6,1);

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

Моделирование поведения как системы под управлением пропорциональной производной (PD).

motionModel = taskSpaceMotionModel("RigidBodyTree",robot,"EndEffectorName","EndEffector_Link");

Моделирование робота

Моделирование поведения в течение 1 секунды с помощью жесткого решателя для более эффективного захвата динамики робота. Используя ode15s позволяет повысить точность вокруг областей с высокой скоростью изменения.

[t,robotState] = ode15s(@(t,state)derivative(motionModel,state,refPose,refVel),tspan,initialState);

Постройте график ответа

Постройте график исходного положения робота и отметьте цель символом X.

figure
show(robot,initialState(1:7));
hold all
plot3(refPose(1,4),refPose(2,4),refPose(3,4),"x","MarkerSize",20)

Наблюдение за откликом путем построения графика робота в контуре 5 Гц.

r = rateControl(5);
for i = 1:size(robotState,1)
    show(robot,robotState(i,1:7)',"PreservePlot",false);
    waitfor(r);
end

Figure contains an axes. The axes contains 26 objects of type line, patch. These objects represent base_link, Shoulder_Link, HalfArm1_Link, HalfArm2_Link, ForeArm_Link, Wrist1_Link, Wrist2_Link, Bracelet_Link, EndEffector_Link, Shoulder_Link_mesh, HalfArm1_Link_mesh, HalfArm2_Link_mesh, ForeArm_Link_mesh, Wrist1_Link_mesh, Wrist2_Link_mesh, Bracelet_Link_mesh, base_link_mesh.

Ссылки

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

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

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

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

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