Алгоритмы инверсной кинематики

robotics.InverseKinematics и классы robotics.GeneralizedInverseKinematics предоставляют вам доступ к алгоритмам инверсной кинематики (IK). Можно использовать эти алгоритмы, чтобы сгенерировать настройку робота, которая достигает заданных целей и ограничений для робота. Эта настройка робота является списком объединенных положений, которые являются в пределах положения модели робота и не нарушают ограничений, которые имеет робот.

Выберите алгоритм

MATLAB® поддерживает два алгоритма для достижения решения IK: алгоритм проекции BFGS и алгоритм Levenberg-Marquardt. Оба алгоритма являются итеративными, основанными на градиенте методами оптимизации, которые начинают с исходного предположения в решении и стремятся минимизировать определенную функцию стоимости. Если любой алгоритм сходится к настройке, где стоимость близко к нулю в заданном допуске, это нашло решение проблемы инверсной кинематики. Однако для некоторых комбинаций исходных предположений и желаемых положений исполнительного элемента конца, алгоритм может выйти, не находя идеальную настройку робота. Чтобы обработать это, алгоритм использует случайный механизм перезапуска. Если включено, случайный механизм перезапуска перезапускает итеративный поиск от случайной настройки робота каждый раз, когда тому поиску не удается найти настройку, которая достигает желаемого положения исполнительного элемента конца. Эти случайные перезапуски продолжаются, или до квалификации найдено решение IK, максимальное время протекло, или предел итерации достигнут.

Чтобы установить ваш алгоритм, задайте свойство SolverAlgorithm или как 'BFGSGradientProjection' или как 'LevenbergMarquardt'.

Проекция градиента BFGS

Алгоритм проекции градиента Бройдена Флетчера Голдфарба Шэнно (BFGS) является приближенным методом ньютона, который использует градиенты функции стоимости от прошлых итераций, чтобы сгенерировать аппроксимированную информацию о второй производной. Алгоритм использует эту информацию о второй производной в определении шага, чтобы взять в текущей итерации. Метод проекции градиента используется, чтобы иметь дело с граничными пределами на функции стоимости, которую создают объединенные пределы модели робота. Вычисленное направление изменяется так, чтобы поисковое направление было всегда допустимо.

Этот метод является алгоритмом по умолчанию и более устойчив при нахождении решений, чем метод Levenberg-Marquardt. Более эффективно для настроек около объединенных пределов или когда исходное предположение не близко к решению. Если ваше исходное предположение близко к решению, и более быстрое решение необходимо, рассмотрите метод Levenberg-Marquardt.

Levenberg-Marquardt

Вариант алгоритма Levenberg-Marquardt (LM), используемый в классе InverseKinematics, является ослабленным ошибкой методом наименьших квадратов. Ослабленный ошибкой фактор помогает препятствовать тому, чтобы алгоритм вышел из локального минимума. Алгоритм LM оптимизирован, чтобы сходиться намного быстрее, если исходное предположение близко к решению. Однако алгоритм не обрабатывает произвольные исходные предположения хорошо. Рассмотрите использование этого алгоритма для нахождения решений IK для серии положений вдоль желаемой траектории исполнительного элемента конца. Если настройка робота найдена для одного положения, та настройка часто является хорошим исходным предположением в решении IK для следующего положения в траектории. В этой ситуации алгоритм LM может привести к более быстрым результатам. В противном случае используйте Проекцию Градиента BFGS вместо этого.

Параметры решателя

Каждый алгоритм имеет определенные настраиваемые параметры, чтобы улучшить решения. Эти параметры заданы в свойстве SolverParameters объекта.

Проекция градиента BFGS

Параметры решателя для алгоритма BFGS имеют следующие поля:

  • 'MaxIterations' Максимальное количество итераций позволено. Значение по умолчанию 1500.

  • MaxTime — Максимальное количество секунд, которые алгоритм запускает перед таймаутом. Значение по умолчанию равняется 10.

  • GradientTolerance — Порог на градиенте функции стоимости. Алгоритм останавливается, если значение градиента падает ниже этого порога. Должна быть положительная скалярная величина.

  • SolutionTolerance — Порог на значении ошибки между положением исполнительного элемента конца, сгенерированным из решения и желаемым положением. Веса, заданные для каждого компонента положения в объекте, включены в это вычисление. Должна быть положительная скалярная величина.

  • EnforceJointLimits — Индикатор, если объединенные пределы рассматриваются в вычислении решения. JointLimits является свойством модели робота в robotics.RigidBodyTree. По умолчанию объединенные пределы осуществляются.

  • AllowRandomRestarts — Индикатор, если случайные перезапуски позволены. Случайные перезапуски инициированы, когда алгоритмические подходы решение, которое не удовлетворяет ограничения. Используется случайным образом сгенерированное исходное предположение. MaxIteration и MaxTime все еще повинуются. По умолчанию случайные перезапуски включены.

  • StepTolerance — Минимальный размер шага позволен решателем. Меньшие размеры шага обычно означают, что решение близко к сходимости. Значение по умолчанию 10–14.

Levenberg-Marquardt

Параметры решателя для алгоритма LM имеют следующие дополнительные поля в дополнение к тому, чего требует метод Проекции Градиента BFGS:

  • ErrorChangeTolerance — Порог на изменении в исполнительном элементе конца излагает ошибку между итерациями. Алгоритм возвращается, если изменения во всех элементах ошибки положения меньше, чем этот порог. Должна быть положительная скалярная величина.

  • DampingBias — Постоянный термин для затухания. Алгоритму LM управляла функцией затухания эта константа, которая работает с функцией стоимости, чтобы управлять уровнем сходимости. Чтобы отключить затухание, используйте параметр UseErrorDamping.

  • UseErrorDamping — 1 (значение по умолчанию), Индикатор того, используется ли затухание. Установите этот параметр на false, чтобы отключить расхолаживание.

Информация о решении

При использовании алгоритмов инверсной кинематики каждый запрос к объекту возвращает информацию о решении о том, как алгоритм выполнил. Информация о решении предоставляется как структура со следующими полями:

  • Iterations — Количество итераций запущено алгоритмом.

  • NumRandomRestarts — Количество случайных перезапусков, потому что алгоритм застрял в локальном минимуме.

  • PoseErrorNorm — Значение ошибки положения для решения по сравнению с желаемым положением исполнительного элемента конца.

  • Exitflag Код, который предоставляет больше подробную информацию на осуществлении алгоритма и что заставило его возвращаться. Для выходных флагов каждого типа алгоритма смотрите Выходные Флаги.

  • Состояние Вектор символов, описывающий, является ли решение в допуске ('success') или самое лучшее решение алгоритмом, мог бы найти ('best available').

Выйдите из флагов

В информации о решении выходные флаги предоставляют больше подробную информацию на осуществлении определенного алгоритма. Посмотрите на свойство Status объекта узнать, был ли алгоритм успешен. Каждый выходной код флага имеет заданное описание.

Алгоритм 'BFGSGradientProjection' выходит из флагов:

  • 1 — Локальный минимум найден.

  • 2 — Максимальное количество итераций достигнуто.

  • 3 — Алгоритм приведен к таймауту во время операции.

  • 4 — Минимальный размер шага. Размер шага ниже поля StepToleranceSize свойства SolverParameters.

  • 5 — Никакой выходной флаг. Относящийся к алгоритму 'LevenbergMarquardt' только.

  • 6 — Поисковое недопустимое направление.

  • 7 — Гессиан не положителен полуопределенный.

Алгоритм 'LevenbergMarquardt' выходит из флагов:

  • 1 — Локальный минимум найден.

  • 2 — Максимальное количество итераций достигнуто.

  • 3 — Алгоритм приведен к таймауту во время операции.

  • 4 — Минимальный размер шага. Размер шага ниже поля StepToleranceSize свойства SolverParameters.

  • 5 — Изменение по ошибке положения исполнительного элемента конца ниже поля ErrorChangeTolerance свойства SolverParameters.

Ссылки

[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.

Смотрите также

| |

Похожие темы