externalForce

Класс: робототехника. RigidBodyTree
Пакет: робототехника

Составьте внешнюю матрицу силы относительно основы

Синтаксис

fext = externalForce(robot,bodyname,wrench)
fext = externalForce(robot,bodyname,wrench,configuration)

Описание

fext = externalForce(robot,bodyname,wrench) составляет внешнюю матрицу силы, которую можно использовать в качестве входных параметров к inverseDynamics и forwardDynamics, чтобы прикладывать внешнюю силу, wrench, к телу, заданному bodyname. Вход wrench принят, чтобы быть в опорной раме.

fext = externalForce(robot,bodyname,wrench,configuration) составляет внешнюю матрицу силы, принимающую, что wrench находится в кадре bodyname для заданного configuration. Матрица силы fext дана в опорной раме.

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

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

Модель Robot, заданная как объект RigidBodyTree. Чтобы использовать функцию externalForce, установите свойство DataFormat или на "row" или на "column".

Имя тела, к которому прикладывается внешняя сила, задало как скаляр строки или вектор символов. Это имя тела должно совпадать с телом на объекте robot.

Типы данных: char | string

Крутящие моменты и силы обратились к телу, заданному как вектор [Tx Ty Tz Fx Fy Fz]. Первые три элемента ключа соответствуют моментам вокруг xyz - оси. Последние три элемента являются линейными силами вдоль тех же осей. Если вы не задаете робота configuration, ключ принят, чтобы быть относительно опорной рамы.

Настройка робота, заданная как вектор с положениями для всех нефиксированных соединений в модели робота. Можно сгенерировать настройку с помощью homeConfiguration(robot), randomConfiguration(robot), или путем определения собственных объединенных положений. Чтобы использовать векторную форму configuration, установите свойство DataFormat для robot или к "row" или к "column".

Выходные аргументы

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

Внешняя матрица силы, возвращенная или как n-by-6 или как 6 n матрицей, где n является скоростным номером (степени свободы) робота. Форма зависит от свойства DataFormat robot. Формат данных "row" использует n-by-6 матрица. Формат данных "column" использует 6 n.

Составленная матрица перечисляет только значения кроме нуля в местоположениях, относящихся к заданному телу. Можно добавить, спрессовывают матрицы, чтобы задать несколько сил на нескольких телах. Используйте внешнюю матрицу силы, чтобы задать внешние силы к функциям динамики inverseDynamics и forwardDynamics.

Примеры

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

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

Загрузите предопределенную модель робота LBR KUKA, которая задана как объект RigidBodyTree.

load exampleRobots.mat lbr

Установите формат данных на 'row'. Для всех вычислений динамики форматом данных должен быть или 'row' или 'column'.

lbr.DataFormat = 'row';

Установите силу тяжести. По умолчанию сила тяжести принята, чтобы быть нулем.

lbr.Gravity = [0 0 -9.81];

Получите домашнюю настройку для робота lbr.

q = homeConfiguration(lbr);

Задайте вектор ключа, который представляет внешние силы, испытанные роботом. Используйте функцию externalForce, чтобы сгенерировать внешнюю матрицу силы. Задайте модель робота, исполнительный элемент конца, который испытывает ключ, вектор ключа и текущую настройку робота. wrench дан относительно каркаса кузова 'tool0', который требует, чтобы вы задали настройку робота, q.

wrench = [0 0 0.5 0 0 0.3];
fext = externalForce(lbr,'tool0',wrench,q);

Вычислите результирующие объединенные ускорения из-за силы тяжести с внешней силой, к которой применяются исполнительный элемент конца 'tool0', когда lbr будет в его домашней настройке. Объединенные скорости и объединенные крутящие моменты приняты, чтобы быть нулем (вход как пустой вектор []).

qddot = forwardDynamics(lbr,q,[],[],fext);

Используйте функцию externalForce, чтобы сгенерировать матрицы силы, чтобы примениться к модели дерева твердого тела. Матрица силы является m-6 вектором, который ссорится для каждого соединения на роботе, чтобы применить ключ с шестью элементами. Используйте externalForce, функционируют и задают исполнительный элемент конца, чтобы правильно присвоить ключ правильной строке матрицы. Можно добавить, что несколько спрессовывают матрицы, чтобы прикладывать несколько сил к одному роботу.

Чтобы вычислить объединенные крутящие моменты, которые противостоят этим внешним силам, используйте функцию inverseDynamics.

Загрузите предопределенную модель робота LBR KUKA, которая задана как объект RigidBodyTree.

load exampleRobots.mat lbr

Установите формат данных на 'row'. Для всех вычислений динамики форматом данных должен быть или 'row' или 'column'.

lbr.DataFormat = 'row';

Установите свойство Gravity дать определенное гравитационное ускорение.

lbr.Gravity = [0 0 -9.81];

Получите домашнюю настройку для lbr.

q = homeConfiguration(lbr);

Установите внешнюю силу на link1. Входной вектор ключа выражается в опорной раме.

fext1 = externalForce(lbr,'link_1',[0 0 0.0 0.1 0 0]);

Установите внешнюю силу на исполнительном элементе конца, tool0. Входной вектор ключа выражается в кадре tool0.

fext2 = externalForce(lbr,'tool0',[0 0 0.0 0.1 0 0],q);

Вычислите объединенные крутящие моменты, требуемые сбалансировать внешние силы. Чтобы объединить силы, добавьте матрицы силы вместе. Объединенные скорости и ускорения приняты, чтобы быть нулем (вход как []).

tau = inverseDynamics(lbr,q,[],[],fext1+fext2);

Введенный в R2017a