interactiveRigidBodyTree

Взаимодействуйте с моделями робота дерева твердого тела

Описание

interactiveRigidBodyTree объект создает фигуру, которая отображает модель робота использование rigidBodyTree возразите и позволяет вам непосредственно изменить настройку робота с помощью интерактивного маркера. rigidBodyTree объект задает геометрию различных связанных твердых тел в модели робота и объединенных пределах для этих тел.

Чтобы вычислить новые настройки с помощью инверсной кинематики, перетащите интерактивный маркер в фигуре. Перетаскивание поддержек маркера центрального маркера, линейного движения вдоль определенных осей и вращения вокруг каждого исключает. Можно изменить исполнительный элемент конца путем щелчка правой кнопкой по различному телу и выбора Set body as marker body.

Чтобы сохранить текущую настройку модели робота, используйте addConfiguration объектная функция. Свойство StoredConfigurations содержит сохраненные настройки.

По умолчанию объединенные пределы модели робота являются единственным ограничением на робота. Чтобы добавить дополнительные ограничения, используйте addConstraint объектная функция. Для списка доступных ограничительных объектов смотрите Ограничения Робота.

Создание

Синтаксис

Описание

пример

viztree = interactiveRigidBodyTree(robot) создает интерактивный объект дерева твердого тела и сопоставленную фигуру для заданной модели робота. robot аргумент устанавливает RigidBodyTree свойство. Чтобы взаимодействовать с моделью, перетащите интерактивный маркер в фигуре.

viztree = interactiveRigidBodyTree(robot,'Frames','off') выключает оси системы координат, построенные для каждого соединения в модели робота.

viztree = interactiveRigidBodyTree(___,Name,Value) свойства наборов с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Заключите каждое имя свойства в кавычки. Например, 'RigidBodyTree',robot создает интерактивный объект дерева твердого тела с заданной моделью робота.

Свойства

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

Модель робота дерева твердого тела в виде rigidBodyTree объект. Модель робота задает геометрию твердых тел и соединений, соединяющих их. К предоставленным моделям робота доступа используйте loadrobot функция. Чтобы импортировать модели из файлов URDF или модели Simscape™ Multibody™, используйте importrobot функция.

Можно установить это свойство, когда вы создаете объект. После того, как вы создадите объект, это свойство только для чтения.

Решатель инверсной кинематики в виде generalizedInverseKinematics Системный объект. По умолчанию решатель использует алгоритм Levenberg-Marquardt количество имеющее итераций 2. Увеличение максимального числа итераций может уменьшить частоту кадров в фигуре.

Можно установить это свойство, когда вы создаете объект. После того, как вы создадите объект, это свойство только для чтения.

Имя твердого тела, сопоставленного с интерактивным маркером в виде строкового скаляра или вектора символов. По умолчанию это свойство установлено в тело с самым высоким индексом в RigidBodyTree свойство. Чтобы изменить это свойство с помощью фигуры, щелкните правой кнопкой по твердому телу и выберите Set body as marker body.

Пример: "r_foot"

Типы данных: char | string

Это свойство доступно только для чтения.

Текущее положение интерактивного маркера в виде гомогенной матрицы преобразования 4 на 4.

Типы данных: double

Это свойство доступно только для чтения.

Текущее положение твердого тела сопоставлено с интерактивным маркером в виде гомогенной матрицы преобразования 4 на 4.

Типы данных: double

Ограничения на решатель инверсной кинематики в виде массива ячеек одного или нескольких ограничительных объектов:

. По умолчанию решатель инверсной кинематики уважает только объединенные пределы свойства RigidBodyTree. Чтобы добавить или удалить ограничения на модель робота, используйте addConstraint и removeConstraints возразите функциям соответственно. В качестве альтернативы можно присвоить новый массив ячеек ограничительных объектов к свойству.

Пример: {constraintAiming("head","ReferenceBody","right_hand")}

Типы данных: cell

Веса на ориентации и положении целевого положения, соответственно в виде двухэлементного вектора, [orientation position] .

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

Пример: [1 4]

Типы данных: double

Видимость интерактивного маркера в фигуре в виде логического 1 TRUE) или 0 или (false). Установите ShowMarker к false скрыть интерактивный маркер в фигуре.

Типы данных: логический

Тип управления для интерактивного маркера в виде "InverseKinematics" или "JointControl". По умолчанию фигура вычисляет все объединенные настройки робота при помощи инверсной кинематики с набором исполнительного элемента конца к значению свойства MarkerBodyName. Чтобы управлять положением определенного соединения на выбранном твердом теле, установите это свойство на "JointControl".

Типы данных: char | string

Относительный масштаб интерактивного маркера в виде положительного положительного вещественного числа. Чтобы увеличить или уменьшить размер маркера в фигуре, настройте это свойство.

Типы данных: double

Текущая настройка модели робота дерева твердого тела в виде n - вектор элемента. n количество нефиксированных соединений в свойстве RigidBodyTree.

Пример: [1 pi 0 0.5 3.156]'

Типы данных: double

Сохраненные настройки робота в виде n-by-p матрица. Каждый столбец матрицы является сохраненной настройкой робота. n является количеством нефиксированных соединений в RigidBodyTree свойство. p является количеством сохраненных настроек робота. Чтобы добавить или удалить сохраненные настройки, используйте addConfiguration или removeConfigurations возразите функциям, соответственно.

Типы данных: double

Функции объекта

addConfigurationСохраните текущую настройку
addConstraintДобавьте ограничение инверсной кинематики
removeConfigurationsУдалите настройки из StoredConfigurations свойство
removeConstraintsУдалите ограничения инверсной кинематики
showFigureПокажите интерактивной фигуре дерева твердого тела

Примеры

свернуть все

Используйте interactiveRigidBodyTree возразите, чтобы вручную переместить робота в фигуре. Объект использует интерактивные маркеры в фигуре, чтобы отследить желаемые положения различных твердых тел в rigidBodyTree объект.

Загрузите модель робота

Используйте loadrobot функционируйте к предоставленным моделям робота доступа как rigidBodyTree объекты.

robot = loadrobot("atlas");

Визуализируйте робота и сохраните настройки

Создайте интерактивный древовидный объект и сопоставленную фигуру, задав загруженную модель робота и ее левую руку как исполнительный элемент конца.

viztree = interactiveRigidBodyTree(robot,"MarkerBodyName","l_hand");

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

interactiveRigidBodyTree возразите использует инверсную кинематику, чтобы определить настройку, которая достигает желаемого положения исполнительного элемента конца. Если связанное твердое тело не может достигнуть маркера, фигура представляет лучшую настройку от решателя инверсной кинематики.

Программно установите текущую настройку. Присвойте вектор длины, равной количеству нефиксированных соединений в RigidBodyTree к Configuration свойство.

currConfig = homeConfiguration(viztree.RigidBodyTree);
currConfig(1:10) = [ 0.2201 -0.1319 0.2278 -0.3415 0.4996 ...
                     0.0747 0.0377 0.0718 -0.8117 -0.0427]';
viztree.Configuration = currConfig;

Сохраните текущую настройку робота в StoredConfigurations свойство.

addConfiguration(viztree)

Чтобы переключить исполнительный элемент конца на различное твердое тело, щелкните правой кнопкой по желаемому телу по фигуре и выберите тело Set как тело маркера. Используйте этот процесс, чтобы выбрать правую систему координат.

Можно также установить MarkerBodyName свойство к определенному имени тела.

viztree.MarkerBodyName = "r_hand";

Переместите правую руку в новое положение. Установите настройку программно. Маркер перемещается в новое положение исполнительного элемента конца.

currConfig(1:18) = [-0.1350 -0.1498 -0.0167 -0.3415 0.4996 0.0747
                     0.0377 0.0718 -0.8117 -0.0427 0 0.4349 
                    -0.5738 0.0563 -0.0095 0.0518 0.8762 -0.0895]';
                
viztree.Configuration = currConfig;

Сохраните текущую настройку.

addConfiguration(viztree)

Добавьте ограничения

По умолчанию модель робота уважает только объединенные пределы rigidBodyJoint объекты сопоставлены с RigidBodyTree свойство. Чтобы добавить ограничения, сгенерируйте Ограничительные объекты Робота и задайте их как массив ячеек в Constraints свойство. Задайте цель положения для таза, чтобы сохранить зафиксированным к исходному положению. Задайте цель положения для правой ноги, которая будет повышена в передней передней стороне и выше ее текущего положения.

fixedWaist = constraintPoseTarget("pelvis");
raiseRightLeg = constraintPositionTarget("r_foot","TargetPosition",[1 0 0.5]);

Примените эти ограничения к интерактивному объекту дерева твердого тела как массив ячеек. Правая нога в получившейся фигуре меняет положение.

viztree.Constraints = {fixedWaist raiseRightLeg};                               

Заметьте изменение в положении правой ноги. Сохраните эту настройку также.

addConfiguration(viztree)

Воспроизведите настройки

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

for i = 1:size(viztree.StoredConfigurations,2)
    viztree.Configuration = viztree.StoredConfigurations(:,i);
    pause(0.5)
end

Ограничения

  • Если interactiveRigidBodyTree объект удален, в то время как фигура все еще открыта, интерактивность фигуры отключена, и заголовок фигуры обновляется.

Советы

  • Чтобы максимизировать производительность при визуализации комплексных моделей робота с комплексными сетками, гарантируйте, что вы включаете, аппаратно ускорил OpenGL. По умолчанию использование MATLAB® аппаратно ускорило OpenGL, если ваше аппаратное обеспечение машинной графики поддерживает его. Для получения дополнительной информации смотрите opengl функция.

Введенный в R2020a

Для просмотра документации необходимо авторизоваться на сайте