exponenta event banner

externalForce

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

Описание

пример

fext = externalForce(robot,bodyname,wrench) составляет матрицу внешних сил, которую можно использовать в качестве входных данных для inverseDynamics и forwardDynamics для приложения внешней силы, wrench, к телу, указанному bodyname. 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 , установите 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-by-n, где n - число скоростей (степеней свободы) робота. Форма зависит от DataFormat имущество robot. "row" формат данных использует матрицу n-by-6. "column" формат данных использует 6 на n.

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

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

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