Создайте обратный кинематический решатель
Система robotics.InverseKinematics object™ создает решатель кинематической инверсии (IK), чтобы вычислить объединенные настройки для желаемого положения исполнительного элемента конца на основе заданной модели дерева твердого тела. Создайте модель дерева твердого тела для своего робота с помощью класса robotics.RigidBodyTree. Эта модель задает все объединенные ограничения, которые осуществляет решатель. Если решение возможно, объединенным пределам, заданным в модели робота, повинуются.
Чтобы задать больше ограничений помимо положения исполнительного элемента конца, включая стремление ограничений, границы положения или цели ориентации, рассматривают использование robotics.GeneralizedInverseKinematics. Этот класс позволяет вам вычислять мультиограничение решения IK.
Вычислить объединенные настройки для желаемого положения исполнительного элемента конца:
Создайте объект robotics.InverseKinematics и установите его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
ik = robotics.InverseKinematicsik = robotics.InverseKinematics(Name,Value) создает обратный кинематический решатель. Чтобы использовать решатель, задайте модель дерева твердого тела в свойстве ik = robotics.InverseKinematicsRigidBodyTree.
создает обратный кинематический решатель с дополнительными опциями, заданными одним или несколькими аргументами пары ik = robotics.InverseKinematics(Name,Value)Name,Value. Name является именем свойства, и Value является соответствующим значением. Имя должно находиться внутри одинарных кавычек (' '). Можно задать несколько аргументов пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN.
[configSol,solInfo]
= ik(endeffector,pose,weights,initialguess)[ находит объединенную настройку, которая достигает заданного положения исполнительного элемента конца. Задайте исходное предположение для настройки и ваших желаемых весов на допусках к шести компонентам configSol,solInfo]
= ik(endeffector,pose,weights,initialguess)pose. Информация о решении, связанная с осуществлением алгоритма, solInfo, возвращена с объединенным решением для настройки, configSol.
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:
release(obj)
[1] Badreddine, Хасан, Стефан Вэндьюалл и Йохан Мейерс. "Последовательное квадратичное программирование (SQP) для Оптимального управления в Прямой Числовой Симуляции Турбулентного течения". Журнал Вычислительной Физики. 256 (2014): 1–16. doi:10.1016/j.jcp.2013.08.044.
[2] Bertsekas, нелинейное программирование Димитри П. Белмонт, MA: научная Афина, 1999.
[3] Goldfarb, Дональд. "Расширение Переменного Метрического Метода Дэвидона к Максимизации При Линейных Ограничениях Неравенства и Равенства". SIAM Journal на Прикладной математике. Издание 17, № 4 (1969): 739–64. doi:10.1137/0117067.
[4] Nocedal, Хорхе и Стивен Райт. Числовая оптимизация. Нью-Йорк, Нью-Йорк: Спрингер, 2006.
[5] Sugihara, Tomomichi. "Беззаботная к разрешимости Инверсная кинематика Методом Levenberg–Marquardt". Транзакции IEEE на Издании 27 Робототехники, № 5 (2011): 984–91. doi:10.1109/tro.2011.2148230.
[6] Чжао, Jianmin и Норман Ай. Бэдлер. "Расположение Инверсной кинематики Используя Нелинейное программирование для Высоко Ясно сформулированных фигур". Транзакции ACM на Графическом Издании 13, № 4 (1994): 313–36. doi:10.1145/195826.195827.
robotics.GeneralizedInverseKinematics | robotics.Joint | robotics.RigidBody | robotics.RigidBodyTree