forwardDynamics

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

Объединенные ускорения, данные объединенные крутящие моменты и состояния

Синтаксис

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

Описание

jointAccel = forwardDynamics(robot) вычисляет объединенные ускорения из-за силы тяжести в роботе домашняя настройка, с нулевыми объединенными скоростями и никакими внешними силами.

jointAccel = forwardDynamics(robot,configuration) также задает объединенные положения настройки робота.

jointAccel = forwardDynamics(robot,configuration,jointVel) также задает объединенные скорости робота.

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

jointAccel = forwardDynamics(robot,configuration,jointVel,jointTorq,fext) также задает внешнюю матрицу силы, которая содержит силы, применился к каждому соединению.

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры

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

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

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

Введенный в R2017a