inverseDynamics

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

Необходимое соединение закручивает для данного движения

Синтаксис

jointTorq = inverseDynamics(robot)
jointTorq = inverseDynamics(robot,configuration)
jointTorq = inverseDynamics(robot,configuration,jointVel)
jointTorq = inverseDynamics(robot,configuration,jointVel,jointAccel)
jointTorq = inverseDynamics(robot,configuration,jointVel,jointAccel,fext)

Описание

jointTorq = inverseDynamics(robot) вычисляет объединенные крутящие моменты, требуемые для робота статически содержать его домашнюю настройку без внешних прикладывавших сил.

jointTorq = inverseDynamics(robot,configuration) вычисляет объединенные крутящие моменты, чтобы содержать заданную настройку робота.

jointTorq = inverseDynamics(robot,configuration,jointVel) вычисляет объединенные крутящие моменты для заданной объединенной настройки и скоростей с нулевым ускорением и никакими внешними силами.

jointTorq = inverseDynamics(robot,configuration,jointVel,jointAccel) вычисляет объединенные крутящие моменты для заданной объединенной настройки, скоростей и ускорений без внешних сил.

jointTorq = inverseDynamics(robot,configuration,jointVel,jointAccel,fext) вычисляет объединенные крутящие моменты для заданной объединенной настройки, скоростей, ускорений и внешних сил. Используйте функцию externalForce, чтобы сгенерировать fext.

Чтобы задать домашнюю настройку, нулевые объединенные скорости или нулевые ускорения, используют [] для того входного параметра.

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

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

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

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

Объединенные скорости, заданные как вектор. Количество объединенных скоростей равно степеням свободы скорости робота. Чтобы использовать векторную форму jointVel, установите свойство DataFormat для robot или к 'row' или к 'column'.

Объединенные ускорения, возвращенные как вектор. Размерность объединенного ускоряющего вектора равна степеням свободы скорости робота. Каждый элемент соответствует определенному соединению на robot. Чтобы использовать векторную форму jointAccel, установите свойство DataFormat для robot или к 'row' или к 'column'.

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

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

Чтобы создать матрицу для заданной силы или закрутить, смотрите externalForce.

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

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

Объединенные крутящие моменты, возвращенные как вектор. Каждый элемент соответствует крутящему моменту, применился к определенному соединению.

Примеры

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

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

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

load exampleRobots.mat lbr

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

lbr.DataFormat = 'row';

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

lbr.Gravity = [0 0 -9.81];

Сгенерируйте случайную настройку для lbr.

q = randomConfiguration(lbr);

Вычислите необходимые объединенные крутящие моменты для lbr, чтобы статически содержать ту настройку.

tau = inverseDynamics(lbr,q);

Используйте функцию 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