Составьте матрицу внешних сил относительно базы
составляет матрицу внешних сил, которую можно использовать в качестве входов 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);
robot - Модель роботаrigidBodyTree объектМодель робота, заданная как rigidBodyTree объект. Как использовать externalForce function, установите DataFormat свойство любому из "row" или "column".
bodyname - Имя тела, к которому приложена внешняя силаИмя тела, к которому применяется внешняя сила, задается в виде строкового скаляра или вектора символов. Это имя тела должно совпадать с телом на robot объект.
Типы данных: char | string
wrench - Крутящие моменты и силы, приложенные к телу[Tx Ty Tz Fx Fy Fz] векторКрутящие моменты и силы, приложенные к телу, заданные как [Tx Ty Tz Fx Fy Fz] вектор. Первые три элемента ключа соответствуют моментам вокруг xyz -осей. Последние три элемента являются линейными силами вдоль тех же осей. Если вы не задаете робота configurationключ принимается относительно базовой системы координат.
configuration - строение роботаСтроение робота, заданная как вектор с положениями для всех нефиксованных соединений в модели робота. Вы можете сгенерировать строение, используя homeConfiguration(robot), randomConfiguration(robot)или путем определения собственных положений соединений. Как использовать вектор форму configuration, установите DataFormat свойство для robot к любому из "row" или "column" .
fext - Матрица внешних силМатрица внешних сил, возвращенная как матрица n-на-6 или 6-by n, где n - число скоростей (степеней свободы) робота. Форма зависит от DataFormat свойство robot. The "row" формат данных использует матрицу n -by-6. The "column" формат данных использует 6-бай- n.
Составленная матрица приводит только значения, отличные от нуля, в местоположениях, относящихся к заданному телу. Можно добавить матрицы сил вместе, чтобы задать несколько сил на нескольких телах. Используйте матрицу внешних сил, чтобы задать внешние силы для динамических функций inverseDynamics и forwardDynamics.
Указания и ограничения по применению:
При создании rigidBodyTree объект, используйте синтаксис, который задает MaxNumBodies как верхняя граница для добавления тел к модели робота. Вы также должны задать DataFormat свойство как пара "имя-значение". Для примера:
robot = rigidBodyTree("MaxNumBodies",15,"DataFormat","row")
Чтобы минимизировать использование данных, ограничьте верхнюю границу числом, близким к ожидаемому количеству тел в модели. Все форматы данных поддерживаются для генерации кода. Чтобы использовать функции динамики, формат данных должен быть установлен на "row" или "column".
The show и showdetails функции не поддерживают генерацию кода.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.