interactiveRigidBodyTree

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

Описание

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

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

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

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

Создание

Описание

пример

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

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

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

Свойства

расширить все

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

Вы можете задать это свойство при создании объекта. После создания объекта это свойство доступно только для чтения.

Решатель обратной кинематики, заданное как generalizedInverseKinematics Системный объект. По умолчанию решатель использует алгоритм Левенберга-Марквардта с максимальным количеством итераций 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 чтобы скрыть интерактивный маркер на рисунке.

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

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

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

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

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

Текущее строение модели робота твердого тела, заданная в виде вектора n-element. 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");

Figure Interactive Visualization contains an axes. The axes contains 179 objects of type patch, line, surface. This object represents pelvis.

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

The interactiveRigidBodyTree объект использует обратную кинематику, чтобы определить строение, которая достигает желаемого положения end-effector. Если связанное твердое тело не может достичь маркера, рисунок отображает лучшее строение от решателя обратной кинематики.

Программно установите текущее строение. Назначьте вектор длины, равной количеству нефиксованных соединений в 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;

Figure Interactive Visualization contains an axes. The axes contains 179 objects of type patch, line, surface. This object represents pelvis.

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

addConfiguration(viztree)

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

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

viztree.MarkerBodyName = "r_hand";

Figure Interactive Visualization contains an axes. The axes contains 179 objects of type patch, line, surface. This object represents pelvis.

Переместите правую руку в новое положение. Настройте строение программно. Маркер переходит в новое положение концевого эффектора.

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;

Figure Interactive Visualization contains an axes. The axes contains 179 objects of type patch, line, surface. This object represents pelvis.

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

addConfiguration(viztree)

Добавление ограничений

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

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

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

viztree.Constraints = {fixedWaist raiseRightLeg};                               

Figure Interactive Visualization contains an axes. The axes contains 179 objects of type patch, line, surface. This object represents pelvis.

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

addConfiguration(viztree)

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

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

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

Figure Interactive Visualization contains an axes. The axes contains 179 objects of type patch, line, surface. This object represents pelvis.

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

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

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

robot = loadrobot('abbIrb120'); 

Визуализация робота и сохранение Строений

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

iRBT = interactiveRigidBodyTree(robot); 

Figure Interactive Visualization contains an axes. The axes contains 34 objects of type patch, line, surface. This object represents base_link.

Интерактивное добавление строений

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

The interactiveRigidBodyTree объект использует обратную кинематику, чтобы определить строение, которая достигает желаемого положения end-effector. Если связанное твердое тело не может достичь маркера, рисунок отображает лучшее строение от решателя обратной кинематики.

Когда робот находится в желаемом строении, используйте addConfiguration объект для добавления строения к StoredConfiguration свойство объекта.

В этом примере 6 путевых точек создаются с помощью интерактивного маркера и addConfiguration функция объекта. Они сохраняются в wayPoints.mat. Доступ к сохранённым строениям можно получить с помощью iRBT.StoredConfigurations.

load("wayPts.mat");

Сгенерируйте сглаженную траекторию с помощью точек пути

Используйте cubicpolytraj функция для генерации гладкой траектории между путевыми точками. Задайте временные точки, которые соответствуют каждой путевой точке. Задайте временной вектор для генерации траектории. The cubicpolyTraj функция генерирует строение для каждого временного интервала во временном векторе tvec.

iRBT.StoredConfigurations = wayPts ;          % Waypoints 
tpts = [0 2 4 6 8 10];                        % Time Points 
tvec = 0:0.1:10;                              % Time Vector 
[q,qd,qdd,pp] = cubicpolytraj(iRBT.StoredConfigurations,tpts,tvec); 

Визуализация движения робота на траектории

Определите частоту симуляции с помощью rateControl объект. Используйте showFigure функция для визуализации модели робота и использования for цикл для воспроизведения всех строений робота.

r = rateControl(10);
iRBT.ShowMarker = false;  % Hide the marker 


showFigure(iRBT)

for i = 1:size(q',1)
    iRBT.Configuration = q(:,i);
    waitfor(r);
end     

Figure Interactive Visualization contains an axes. The axes contains 24 objects of type patch, line. This object represents base_link.

Ограничения

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

Совет

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

Введенный в R2020a