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

inverseKinematics и 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 свойство модели робота в rigidBodyTree. По умолчанию объединенные пределы осуществляются.

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

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

Levenberg-Marquardt

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

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

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

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

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

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

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

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

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

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

  • Status — Вектор символов, описывающий, является ли решение в допуске ('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.

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

| |

Похожие темы