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