Модель робота дерева твердого тела

Модель дерева твердого тела является представлением структуры робота. Можно использовать его, чтобы представлять роботов, таких как манипуляторы или другие древовидные кинематические структуры. Используйте 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. Этот алгоритм решает для необходимых углов поворота шарнира, чтобы достигнуть определенного положения для заданного твердого тела.

Смотрите также

|

Похожие темы