ГоловнаСтаттіРобототехніка та Кінематика

FABRIK: Інверсна Кінематика Без Матриць

Інверсна кінематика прямого та зворотного досягнення вирішує, куди повинні бути направлені суглоби робототехнічної руки для досягнення цілі — виключно геометричним способом, без обчислення матричних обертань і без сингулярностей.

mysimulator teamОновлено — червень 2026≈ 8 хв читання▶ Відкрити симуляцію

Пряме обчислення – це просто, зворотне – складно

Пряма кінематика (FK) є прямолізиною: задано кути суглобів, обчислюється положення кінцевого масиву шляхом додавання векторів зв’язків. Зворотна кінематика (IK) відбувається у зворотний бік – задано цільове положення, знаходять конфігурацію суглобів, яка його досягне – і це справді складніше. Проблема часто полягає в тому, що вона неоднозначна (нескінченна кількість допустимих кутових налаштувань для складної ланцюга), іноді надто неоднозначна (ціль за межами досяжності руки, точного рішення не існує), і завжди нелінійна, оскільки положення суглобів включають суми синусів та косинусів.

Алгоритм FABRIK: дві проходки, без кутів

Розроблений Аристоду та Лясенбі в 2011 році, алгоритм FABRIK працює напряму з положеннями суглобів замість кутів. Кожна ітерація чергує прямий прохід, який тягне наконечник до цілі, та зворотний прохід, який пере-прикріплює корінь:

Прямий прохід — встановіть p_n = ціль, потім для i від n-1 до 0: dir = (pᵢ − pᵢ₊₁) / |pᵢ − pᵢ₊₁|; pᵢ = pᵢ₊₁ + dir · ℓᵢ₊₁ Зворотний прохід — встановіть p₀ = корінь, потім для i від 1 до n: dir = (pᵢ − pᵢ₋₁) / |pᵢ − pᵢ₋₁|; pᵢ = pᵢ₋₁ + dir · ℓᵢ Повторюйте, поки |p_n − ціль| не буде достатньо малим. Кожен прохід є одноразовим переміщенням вздовж ланцюга, відновлюючим довжини зв’язків — без тригонометрії та обчислення матриць. Якщо ціль знаходиться за межами загальної досяжності ланцюга, FABRIK пропускає ітерацію та направляє кожен зв'язок прямо на ціль, розтягуючи руку до її максимальної подовженої довжини.

Forward pass — set p_n = target, then for i = n-1 down to 0:
  dir = (pᵢ − pᵢ₊₁) / |pᵢ − pᵢ₊₁|;  pᵢ = pᵢ₊₁ + dir · ℓᵢ₊₁

Backward pass — set p₀ = root anchor, then for i = 1 to n:
  dir = (pᵢ − pᵢ₋₁) / |pᵢ − pᵢ₋₁|;  pᵢ = pᵢ₋₁ + dir · ℓᵢ

Repeat until |p_n − target| < tolerance (usually ~5-10 iterations)
жива демонстрація · пов'язана симуляція● LIVE

FABRIK: Інверсна Кінематика Без Матриць

FABRIK є інверсною кінематикою без матриць, яка забезпечує ефективність та стабільність у реальному часі. Цей підхід використовує лінійну алгебру порядку O(n) на кожному кроці обчислень, що значно зменшує час виконання порівняно з методами на основі Якобіана, які потребують матричних операцій порядку O(n³). FABRIK особливо добре підходить для застосувань, де важлива швидкість та стабільність, таких як кінематика ігрових персонажів, переміщення рук, ретаргетинг мовлення та управління протезами. Крім того, FABRIK дозволяє додавати обмеження на кути суглобів шляхом обмеження вектора напрямку під час зворотного проходу.

Часті запитання

Що означає FABRIK і хто його ввів?

FABRIK – це Forward And Backward Reaching Inverse Kinematics, запропоновано Андреасом Аристоду та Джоаном Ласенбі у 2011 році. Він вирішує задачу оберненої кінематики шляхом безпосереднього переміщення точок суглобів замість розрахунку кутів суглобів, чергуючи прямий прохід, який тягне ланцюг до цілі, та зворотний прохід, який повторно закріплює корінь.

Чому FABRIK швидший за Jacobian-based обернену кінематику?

Кожен ітеративний крок FABRIK має складність O(n) у кількості суглобів, оскільки він просто перераховує позиції ланцюга двічі. Методи з псевдооберненням Jacobian вимагають обчислення оберненої n x n матриці на кожному кроці, що коштує O(n в кубі), і може призвести до чисельної нестабільності поблизу сингулярностей, яких FABRIK просто не зустрічає.

Як FABRIK обробляє недосяжну ціль?

Якщо відстань від кореневого анкера до цілі перевищує суму довжин усіх зв’язків, FABRIK пропускає ітеративні проміжки та замість цього направляє кожен зв'язок безпосередньо на ціль прямою лінією, розтягуючи ланцюг до повної подовженої довжини до мети – найкраще можливе наближення, коли точного рішення не існує.

Спробуйте наживо

Усе, що вище, працює прямо у вашому браузері — відкрийте the simulation і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.

▶ Відкрити симуляцію the simulation

Що ви знайшли?

Додати кроки відтворення (опційно)