addConfiguration

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

Описание

пример

addConfiguration(viztree) добавляет текущее строение к StoredConfigurations свойство interactiveRigidBodyTree объект, viztree.

addConfiguration(viztree,index) вставляет текущее строение в StoredConfigurations свойство по заданному индексу. Сохранённые строения после указанного индекса перемещаются вниз на единицу.

Примеры

свернуть все

Используйте 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 объект.

Расположение индекса для хранения текущего строения виде положительного целого числа. Сохранённые строения после указанного индекса перемещаются вниз на единицу.

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

Введенный в R2020a