🤖 Робототехніка · Анімація
📅 Березень 2026⏱ 13 хв🟡 Середній · Останнє оновлення: 23 червня 2026 р.

Пряма та обернена кінематика для роботизованих маніпуляторів

Пряма кінематика ставить запитання: «за заданими кутами суглобів — де перебуває вихідна ланка (схват)?». Обернена кінематика ставить протилежне запитання — і воно значно складніше. Кожен промисловий робот, ігровий персонаж і хірургічний інструмент спираються на ці дві взаємодоповнювальні задачі.

1. Пряма та обернена кінематика: що і навіщо

Пряма кінематика (FK)

Вхід: кути суглобів θ₁, θ₂, ... θₙ
Вихід: положення вихідної ланки (x, y, z) та її орієнтація
Складність: завжди один єдиний розв’язок. Пряме тригонометричне обчислення. O(n) для n суглобів.

Обернена кінематика (IK)

Вхід: бажане положення та орієнтація вихідної ланки
Вихід: кути суглобів θ₁, θ₂, ... θₙ
Складність: може мати 0, 1 або нескінченно багато розв’язків. Зазвичай потребує ітеративного розв’язування. Нелінійна.

Пряму кінематику використовують для симуляції та відтворення руху. Обернену кінематику використовують для інтерактивного керування: «перемістити руку робота до цього болта» або «змусити персонажа дотягнутися до дверної ручки». Більшість систем реального часу поєднують обидві — пряму для тіла, обернену для рук і ніг.

2. Пряма кінематика у 2D

2D-маніпулятор із n обертовими суглобами: кожен суглоб i має кут θᵢ та довжину ланки Lᵢ. Положення суглоба k — це накопичена сума векторів ланок:

x_k = Σᵢ₌₁ᵏ Lᵢ · cos(θ₁ + θ₂ + ... + θᵢ) y_k = Σᵢ₌₁ᵏ Lᵢ · sin(θ₁ + θ₂ + ... + θᵢ) Вихідна ланка (суглоб n): x_n = L₁·cos(θ₁) + L₂·cos(θ₁+θ₂) + ... + Lₙ·cos(Σθ) y_n = L₁·sin(θ₁) + L₂·sin(θ₁+θ₂) + ... + Lₙ·sin(Σθ)

Це пряме обчислення завжди однозначне й завжди швидке. Для дволанкового маніпулятора: x = L₁·cos θ₁ + L₂·cos(θ₁+θ₂), y = L₁·sin θ₁ + L₂·sin(θ₁+θ₂).

3. Параметри Денавіта–Хартенберга (3D)

У 3D кожен суглоб описується чотирма параметрами DH: довжина ланки a, кут скруту ланки α, зсув ланки d та кут суглоба θ. Перетворення від системи координат i−1 до системи координат i таке:

Tᵢ = Rot_z(θᵢ) · Trans_z(dᵢ) · Trans_x(aᵢ) · Rot_x(αᵢ) [ cos θ −sin θ·cos α sin θ·sin α a·cos θ ] T = [ sin θ cos θ·cos α −cos θ·sin α a·sin θ ] [ 0 sin α cos α d ] [ 0 0 0 1 ] Повна пряма кінематика: T₀ₙ = T₁ · T₂ · T₃ · ... · Tₙ

Останній стовпець T₀ₙ дає положення вихідної ланки; верхня ліва підматриця 3×3 задає її орієнтацію. Для промислового маніпулятора з 6 ступенями свободи (наприклад, KUKA, UR5) це добуток шести матриць 4×4.

4. Аналітична обернена кінематика

Для дволанкового 2D-маніпулятора обернена кінематика має розв’язок у замкненій формі за теоремою косинусів:

Задано ціль (x_t, y_t): cos θ₂ = (x_t² + y_t² − L₁² − L₂²) / (2·L₁·L₂) θ₂ = ±arccos(cos θ₂) ← два розв’язки: «лікоть угору» та «лікоть униз» θ₁ = atan2(y_t, x_t) − atan2(L₂·sin θ₂, L₁ + L₂·cos θ₂) Досяжно, якщо |L₁ − L₂| ≤ √(x² + y²) ≤ L₁ + L₂

Промислові роботи типу 6R (6 обертових суглобів зі специфічною геометрією) також допускають аналітичні розв’язки — до 16 можливих конфігурацій. Ці розв’язки в замкненій формі найшвидші та найнадійніші, коли вони доступні, але існують лише для певних кінематичних архітектур.

5. Обернена кінематика на основі якобіана

Для загальних ланцюгів без аналітичного розв’язку якобіан задає лінійний зв’язок між малими змінами кутів суглобів і малими переміщеннями вихідної ланки:

δx = J · δθ J — це матриця Якобі розміру m×n (m = ступені свободи задачі, n = ступені свободи суглобів) Jᵢⱼ = ∂xᵢ/∂θⱼ Крок оберненої кінематики: δθ = J⁺ · δx (J⁺ = псевдообернена до J) θ_new = θ_old + α · J⁺ · (x_target − x_current)

Це ітерується до збіжності. Методи обчислення J⁺:

6. CCD та FABRIK

Циклічний покоординатний спуск (CCD)

Обробляйте кожен суглоб по черзі, від вихідної ланки до основи. Для кожного суглоба повертайте його так, щоб вихідна ланка максимально наближалася до цілі. Повторюйте кілька циклів. Просто, швидко, але може збігатися до неприродних поз.

FABRIK (обернена кінематика з прямим і зворотним проходами)

Евристика, що працює безпосередньо з положеннями суглобів, а не з кутами:

  1. Прямий прохід: перемістіть вихідну ланку до цілі. Потім перерозташуйте кожен суглоб так, щоб зберегти довжини ланок, рухаючись назад до основи.
  2. Зворотний прохід: зафіксуйте основу в її початковому положенні. Перерозташуйте кожен суглоб уперед, зберігаючи довжини ланок.
  3. Повторюйте до збіжності (зазвичай 3–10 ітерацій, часто <1 мс).
function fabrik(joints, target, tolerance) {
  const n = joints.length;
  const linkLengths = [];
  for (let i = 0; i < n - 1; i++)
    linkLengths[i] = distance(joints[i], joints[i + 1]);

  while (distance(joints[n - 1], target) > tolerance) {
    // Прямий прохід: від вихідної ланки до основи
    joints[n - 1] = target;
    for (let i = n - 2; i >= 0; i--) {
      const dir = normalize(sub(joints[i], joints[i + 1]));
      joints[i] = add(joints[i + 1], scale(dir, linkLengths[i]));
    }
    // Зворотний прохід: від основи до вихідної ланки
    joints[0] = rootPos; // фіксуємо основу
    for (let i = 1; i < n; i++) {
      const dir = normalize(sub(joints[i], joints[i - 1]));
      joints[i] = add(joints[i - 1], scale(dir, linkLengths[i - 1]));
    }
  }
}

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

7. Застосування та обмеження

Обернена кінематика в реальному світі завжди включає обмеження суглобів: кутові межі (людський лікоть згинається на 0°–145°, а не на 360°), уникнення зіткнень та обробку сингулярностей. Виробничі розв’язувачі оберненої кінематики (Animation Rigging від Unity, IK Rig від Unreal) поєднують FABRIK із проєкцією обмежень і шарами змішування.

Надлишковість: коли ланцюг має більше ступенів свободи, ніж потребує задача (наприклад, 7 суглобів для 6-вимірної цілі), система є надлишковою — існує нескінченно багато розв’язків. Нуль-простір J можна використати для виконання другорядних цілей (уникнення перешкод, мінімізація енергії, віддалення від меж суглобів), водночас досягаючи цілі.