Модель древовидного твердого тела является представлением структуры робота. Можно использовать его для представления роботов, таких как манипуляторы или другие древовидные кинематические структуры. Использование rigidBodyTree
объекты для создания этих моделей.
Древо твёрдого тела состоит из твёрдых тел (rigidBody
) которые присоединены через шарниры (rigidBodyJoint
). Каждое твердое тело имеет соединение, которое определяет, как это тело перемещается относительно своего родительского элемента в дереве. Задайте преобразование от одного тела к следующему путем установки фиксированного преобразования на каждом соединении (setFixedTransform
).
Можно добавлять, заменять или удалять тела из модели древовидного твердого тела. Можно также заменить соединения для определенных тел. The rigidBodyTree
объект поддерживает связи и обновляет rigidBody
свойства объекта, чтобы отразить эту связь. Вы также можете получить преобразования между различными каркасами кузова, используя getTransform
.
Каждое дерево твёрдого тела имеет основу. Эта основа определяет мировую координатную систему координат и является первой точкой присоединения для твердого тела. Изменение основы невозможно, кроме Name
свойство. Вы можете сделать это, изменив BaseName
свойство древовидного твердого тела.
Твердое тело является базовым базовым блоком древовидной модели твердого тела и создается с помощью rigidBody
. Твёрдое тело, иногда называемое ссылкой, представляет собой твёрдое тело, которое не может деформироваться. Расстояние между любыми двумя точками на одном твердом теле остается постоянным.
При добавлении в дерево твердых тел с несколькими телами с ними связаны твердые тела, родительские элементы или дочерние тела (Parent
или Children
свойства). Родительским элементом является тело, к которому прикреплено это твердое тело, которое может быть основой робота. Все дети являются телами, прикрепленными к этому телу ниже по течению от основы древовидного твердого тела.
Каждое твердое тело имеет связанную с ними координатную систему координат и содержит rigidBodyJoint
объект.
Каждое твердое тело имеет одно соединение, которое определяет движение этого твердого тела относительно его родительского элемента. Это точка присоединения, которая соединяет два твердых тела в модели робота. Чтобы представлять одно физическое тело с несколькими шарнирами или другими осями движения, используйте несколько rigidBody
объекты.
The rigidBodyJoint
объект поддерживает фиксированные, вращательные и призматические соединения.
Эти соединения допускают следующее движение в зависимости от их типа:
'fixed'
- Нет движения. Корпус жестко соединяется с родительским элементом.
'revolute'
- Только вращательное движение. Тело вращается вокруг этого соединения относительно своего родительского элемента. Пределы положения определяют минимальное и максимальное угловое положение в радианах вокруг оси движения.
'prismatic'
- Только поступательное движение. Тело движется линейно относительно своего родительского элемента вдоль оси движения.
Каждое соединение имеет ось движения, заданную JointAxis
свойство. Ось соединения является вектором 3-D модулей, который либо задает ось вращения (шарнирные соединения), либо ось перемещения (призматические соединения). The HomePosition
свойство задает исходное положение для этого конкретного соединения, которое является точкой в пределах положения. Использовать homeConfiguration
чтобы вернуть домашнее строение для робота, которая представляет собой набор всех исходных положений соединений в модели.
Соединения также имеют свойства, которые определяют фиксированное преобразование между родительской и дочерней системами координат тела. Эти свойства могут быть заданы только с помощью setFixedTransform
способ. В зависимости от вашего метода ввода параметров преобразования, либо JointToParentTransform
или ChildToJointTransform
Свойство задано с помощью этого метода. Другое свойство установлено в матрицу тождеств. Следующие изображения изображают, что означает каждое свойство.
The JointToParentTransform
определяет, где соединение дочернего тела связано с родительским каркасом кузова. Когда JointToParentTransform
является матрицей тождеств, родительское тело и системы координат соединений совпадают.
The ChildToJointTransform
определяет, где соединение дочернего тела связано с дочерним каркасом кузова. Когда ChildToJointTransform
является матрицей тождеств, дочернее тело и системы координат соединений совпадают.
Примечание
Фактические положения соединений не являются частью этого Joint
объект. Модель робота - без гражданства. Существует промежуточное преобразование между родительской и дочерней системами координат соединений, которое определяет положение соединения вдоль оси движения. Это преобразование определено в строении робота. См. «Строения робота».
После полной сборки робота и определения преобразований между различными телами можно создать строения робота. A строения определяет все положения соединений робота по их именам соединений.
Использовать 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
.
Чтобы получить строение робота с заданным положением end-effector, используйте inverseKinematics
. Этот алгоритм решает для необходимых углов поворота шарнира, чтобы достичь определенного положения для заданного твердого тела.
inverseKinematics
| rigidBodyTree