Добавьте ограничение инверсной кинематики
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

viztree — Интерактивная визуализация модели робота дерева твердого телаinteractiveRigidBodyTree объектИнтерактивная визуализация модели робота дерева твердого тела в виде interactiveRigidBodyTree объект.
gikConstraint — Обобщенное ограничение инверсной кинематикиОбобщенное ограничение инверсной кинематики в виде одного из этих ограничительных объектов.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.