addConstraint

Добавьте ограничение инверсной кинематики

Описание

пример

addConstraint(viztree,gikConstraint) добавляет ограничение инверсной кинематики, gikConstaint, к Constraints свойство interactiveRigidBodyTree объект, viztree.

Примеры

свернуть все

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

Обобщенное ограничение инверсной кинематики в виде одного из этих ограничительных объектов.

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