externalForce

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

Загрузите предопределенную модель робота KUKA LBR, которая задается как 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 функция.

Загрузите предопределенную модель робота KUKA LBR, которая задается как 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);

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

свернуть все

Модель робота, заданная как rigidBodyTree объект. Как использовать externalForce function, установите DataFormat свойство любому из "row" или "column".

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

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

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

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

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

свернуть все

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

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

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

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