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

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

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

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

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

Градиентная проекция BFGS

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

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

Левенберг-Марквардт

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

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

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

Градиентная проекция BFGS

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

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

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

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

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

  • EnforceJointLimits - Индикатор, учитываются ли пределы соединений при расчете решения. JointLimits является свойством модели робота в rigidBodyTree. По умолчанию пределы на соединения выполняются принудительно.

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

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

Левенберг-Марквардт

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

  • 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 - Изменение ошибки положения end-effector ниже ErrorChangeTolerance поле SolverParameters свойство.

Ссылки

[1] Бадреддин, Хассан, Стефан Вандевалль и Йохан Мейерс. Последовательное квадратичное программирование (SQP) для оптимального управления при прямой числовой симуляции турбулентного потока. Журнал вычислительной физики. 256 (2014): 1–16. doi: 10.1016/j.jcp.2013.08.044.

[2] Bertsekas, Dimitri P. Нелинейное программирование. Belmont, MA: Athena Scientific, 1999.

[3] Голдфарб, Дональд. Расширение метода переменной метрики Дэвидона до максимизации при линейном неравенстве и ограничениях равенства. SIAM Journal по прикладной математике. Том 17, № 4 (1969): 739-64. doi: 10.1137/0117067.

[4] Нокедал, Хорхе и Стивен Райт. Численная оптимизация. Нью-Йорк, Нью-Йорк: Спрингер, 2006.

[5] Сугихара, Томомичи. «Разрешимость-неконтролируемая обратная кинематика методом Левенберга-Марквардта». Транзакции IEEE по робототехнике Том 27, № 5 (2011): 984-91. doi: 10.1109/tro.2011.2148230.

[6] Чжао, Цзяньминь и Норман И. Бадлер. «Позиционирование обратной кинематики с использованием нелинейного программирования для высоко сочлененных фигур». ACM Транзакции на графике Том 13, № 4 (1994): 313-36. doi: 10,1145/ 195826,195827.

См. также

| |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте