Модель дерева твердого тела является представлением структуры робота. Можно использовать его, чтобы представлять роботов, таких как манипуляторы или другие древовидные кинематические структуры. Используйте rigidBodyTree
объекты создать эти модели.
Дерево твердого тела составлено из твердых тел (rigidBody
) это присоединяется через соединения (rigidBodyJoint
). Каждое твердое тело имеет соединение, которое задает, как то тело перемещается относительно его родительского элемента в дерево. Задайте преобразование от одного тела до следующего путем установки закрепленного преобразования на каждом соединении (setFixedTransform
).
Можно добавить, заменить или удалить тела из модели дерева твердого тела. Можно также заменить соединения для определенных тел. rigidBodyTree
объект поддерживает отношения и обновляет rigidBody
свойства объектов, чтобы отразить это отношение. Можно также получить преобразования между различными системами координат тела с помощью getTransform
.
Каждое дерево твердого тела имеет основу. Основа задает систему координат мировой координаты и является первой точкой крепления для твердого тела. Основа не может быть изменена, за исключением Name
свойство. Можно сделать так путем изменения BaseName
свойство дерева твердого тела.
Твердое тело является основой модели дерева твердого тела и создается с помощью rigidBody
. Твердое тело, иногда названное ссылкой, представляет твердое тело, которое не может деформироваться. Расстояние между любыми двумя точками на одном твердом теле остается постоянным.
Когда добавлено к дереву твердого тела с несколькими телами, твердые тела имеют родительские или дочерние тела, сопоставленные с ними (Parent
или Children
свойства. Родительский элемент является телом, к которому присоединено это твердое тело, который может быть основой робота. Дочерние элементы являются всеми телами, присоединенными к этому телу ниже основы дерева твердого тела.
Каждое твердое тело имеет координатную систему координат, сопоставленную с ними, и содержит rigidBodyJoint
объект.
Каждое твердое тело имеет одно соединение, которое задает движение того твердого тела относительно его родительского элемента. Это - точка крепления, которая соединяет два твердых тела в модели робота. Чтобы представлять одно физическое тело с несколькими соединениями или различными осями движения, используйте несколько rigidBody
объекты.
rigidBodyJoint
поддержка объектов зафиксированные, вращательные, и призматические соединения.
Эти соединения позволяют следующее движение, в зависимости от своего типа:
'fixed'
— Никакое движение. Тело жестко соединено к своему родительскому элементу.
'revolute'
— Вращательное движение только. Тело вращается вокруг этого соединения относительно его родительского элемента. Пределы положения задают минимальное и максимальное угловое положение в радианах вокруг оси движения.
'prismatic'
— Поступательное движение только. Тело перемещается линейно относительно его родительского элемента вдоль оси движения.
Каждое соединение имеет ось движения, заданного JointAxis
свойство. Объединенная ось является 3-D единичным вектором, который или задает ось вращения (шарнирные соединения) или ось перевода (призматические соединения). HomePosition
свойство задает исходное положение для того определенного соединения, которое является точкой в пределах положения. Используйте homeConfiguration
возвратить домашнюю настройку для робота, который является набором всех исходных положений соединений в модели.
Соединения также имеют свойства, которые задают фиксированное преобразование между родительскими и дочерними системами координат координаты тела. Эти свойства могут только быть установлены с помощью setFixedTransform
метод. В зависимости от вашего метода введения параметров преобразования, любой JointToParentTransform
или ChildToJointTransform
свойство установлено с помощью этого метода. Другое свойство установлено в единичную матрицу. Следующие изображения изображают то, что показывает каждое свойство.
JointToParentTransform
задает, где соединение дочернего тела находится в отношении к системе координат вышестоящей инстанции. Когда JointToParentTransform
единичная матрица, вышестоящая инстанция и объединенные системы координат совпадают.
ChildToJointTransform
задает, где соединение дочернего тела находится в отношении к дочерней системе координат тела. Когда ChildToJointTransform
единичная матрица, дочернее тело и объединенные системы координат совпадают.
Фактические объединенные положения не являются частью этого Joint
объект. Модель робота является не сохраняющей состояние. Существует промежуточное преобразование между родительскими и дочерними объединенными системами координат, которое задает положение соединения вдоль оси движения. Это преобразование задано в настройке робота. Смотрите Настройки Робота.
После полностью сборки вашего робота и определения преобразований между различными телами, можно создать настройки робота. Настройка задает все объединенные положения робота их объединенными именами.
Используйте homeConfiguration
получить HomePosition
свойство каждого соединения и создает домашнюю настройку.
Настройки робота даны как массив структур.
config = homeConfiguration(robot)
config = 1×6 struct array with fields: JointName JointPosition
config(1)
ans = struct with fields: JointName: 'jnt1' JointPosition: 0
Можно также сгенерировать случайную настройку, которая выполняет все объединенные пределы с помощью randomConfiguration
.
Используйте настройки робота, когда это необходимо, чтобы построить робота в фигуре, использующей show
. Кроме того, можно получить преобразование между двумя системами координат тела с определенной настройкой с помощью getTransform
.
Чтобы получить настройку робота с заданным положением исполнительного элемента конца, используйте inverseKinematics
. Этот алгоритм решает для необходимых углов поворота шарнира, чтобы достигнуть определенного положения для заданного твердого тела.
inverseKinematics
| rigidBodyTree