Инверсная кинематика

Вычислите объединенные настройки, чтобы достигнуть положения исполнительного элемента конца

  • Библиотека:
  • Robotics System Toolbox / Алгоритмы Манипулятора

Описание

Блок Inverse Kinematics использует решатель кинематической инверсии (IK), чтобы вычислить объединенные настройки для желаемого положения исполнительного элемента конца на основе заданной модели дерева твердого тела. Создайте модель дерева твердого тела для своего робота с помощью класса robotics.RigidBodyTree. Модель дерева твердого тела задает все объединенные ограничения, которые осуществляет решатель.

Задайте объект RigidBodyTree и желаемый исполнительный элемент конца в маске блока. Можно также настроить параметры алгоритма во вкладке Solver Parameters.

Введите желаемый исполнительный элемент конца Pose, Weights на допуске положения и InitialGuess для объединенной настройки. Решатель выводит настройку робота, Config, который удовлетворяет положение исполнительного элемента конца в допусках, заданных во вкладке Solver Parameters.

Порты

Входной параметр

развернуть все

Положение исполнительного элемента конца, заданное как гомогенное преобразование 4 на 4. Это преобразование задает желаемое положение и ориентацию твердого тела, заданного в параметре End effector.

Типы данных: single | double

Веса для допусков положения, заданных как вектор с шестью элементами. Первые три элемента вектора соответствуют весам при ошибке в ориентации для желаемого положения. Последние три элемента вектора соответствуют весам при ошибке в положении xyz для желаемого положения.

Типы данных: single | double

Исходное предположение настройки робота, заданной как вектор объединенных положений. Количество положений равно количеству нефиксированных соединений в параметре Rigid body tree. Используйте это исходное предположение, чтобы помочь вести решатель к желаемой настройке робота. Однако решение, как гарантируют, не будет близко к этому исходному предположению.

Типы данных: single | double

Вывод

развернуть все

Настройка робота, которая решает желаемое положение исполнительного элемента конца, заданное как вектор. Настройка робота является вектором объединенных положений для модели дерева твердого тела. Количество положений равно количеству нефиксированных соединений в параметре Rigid body tree.

Типы данных: single | double

Информация о решении, возвращенная как шина. Шина информации о решении содержит эти элементы:

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

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

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

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

Параметры

развернуть все

Параметры блоков

Модель дерева твердого тела, заданная как объект RigidBodyTree. Создайте модель робота в рабочей области MATLAB® прежде, чем задать в маске блока.

Имя исполнительного элемента конца для желаемого положения. Чтобы видеть список тел на объекте RigidBodyTree, задайте параметр Rigid body tree, затем нажмите Select body.

Выберите, чтобы включить порт Info и получить диагностическую информацию для решения для решателя.

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

Алгоритм для решения инверсной кинематики, заданной или как 'BFGSGradientProjection' или как 'LevenbergMarquardt'. Для получения дополнительной информации каждого алгоритма, см. Алгоритмы Инверсной кинематики.

Выберите, чтобы осуществить объединенные пределы, заданные в модели Rigid body tree.

Максимальное количество итераций, чтобы оптимизировать решение, заданное как положительное целое число. Увеличение числа итераций может улучшить решение за счет времени выполнения.

Максимальное количество секунд, которые алгоритм запускает перед таймаутом, заданным как положительная скалярная величина. Увеличение максимального времени может улучшить решение за счет времени выполнения.

Порог на градиенте функции стоимости, заданной как положительная скалярная величина. Алгоритм останавливается, если значение градиента падает ниже этого порога. Низкая величина градиента обычно указывает, что решатель сходился к решению.

Порог на значении ошибки между положением исполнительного элемента конца, сгенерированным из решения и желаемым положением, заданным как положительная скалярная величина. Weights, заданный для каждого компонента положения, включен в это вычисление.

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

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

Зависимости

Этот параметр включен, когда Solver является Levenberg-Marquadt.

Установите флажок, чтобы включить ошибочное затухание, затем задать параметр Damping bias.

Зависимости

Этот параметр включен, когда Solver является Levenberg-Marquadt.

Затухание на функции стоимости, заданной как положительная скалярная величина. Алгоритму Levenberg-Marquadt управлял функцией затухания этот скаляр, который работает с функцией стоимости, чтобы управлять уровнем сходимости.

Зависимости

Этот параметр включен, когда Solver является Levenberg-Marquadt, и Use error damping является on.

  • Модель Interpreted execution — Simulate с помощью интерпретатора MATLAB. Эта опция сокращает время запуска, но имеет более медленную скорость симуляции, чем Code generation. В этом режиме можно отладить исходный код блока.

  • Модель Code generation — Simulate с помощью сгенерированного кода C. В первый раз, когда вы запускаете симуляцию, Simulink® генерирует код С для блока. Код С снова используется для последующих симуляций, пока модель не изменяется. Эта опция требует дополнительного времени запуска, но скорость последующих симуляций сопоставима с Interpreted execution.

Настраиваемый: нет

Ссылки

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

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью Simulink® Coder™.

Введенный в R2018b