🤖 Робототехніка · Кінематика
📅 Липень 2026⏱ 14 хв🟡 Середній рівень · Останнє оновлення: 3 липня 2026 р.

Параметри Денавіта–Хартенберга

Кожен промисловий робот-маніпулятор — від шестиосьового зварювального робота до хірургічного маніпулятора — описується одним і тим самим компактним рецептом: таблицею з чотирьох чисел на кожен суглоб. Конвенція Денавіта–Хартенберга, опублікована 1955 року, перетворила заплутану задачу об'єднання 3D-обертань і зміщень у систематичну, майже механічну процедуру — і досі є стандартним способом опису геометрії маніпуляторів у підручниках з робототехніки та в керуючому програмному забезпеченні.

1. Навіщо потрібні DH-параметри

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

Можна прикріпити довільну систему координат до кожної ланки й записати довільне однорідне перетворення 4×4 між ними. Це працює, але вимагає шести чисел на кожну ланку (три для зміщення, три для обертання) і дає кожній команді робототехніків власну неузгоджену нотацію. У 1955 році Жак Денавіт і Річард Хартенберг показали, що якщо розміщувати кожну систему координат за невеликим набором правил, перетворення між будь-якими двома сусідніми ланками завжди можна описати лише чотирма числами замість шести. Саме це скорочення — і те, що воно є спільним стандартом — і є причиною, чому конвенція DH досі викладається на кожному курсі робототехніки.

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

2. Чотири параметри: a, α, d, θ

Кожна ланка i описується відносно ланки i−1 чотирма величинами, які традиційно записують у «DH-таблиці» — по одному рядку на суглоб:

СимволНазваТипЗначення
aᵢДовжина ланкиконстантаВідстань від zᵢ₋₁ до zᵢ, виміряна вздовж xᵢ (спільної нормалі)
αᵢКут скручування ланкиконстантаКут від zᵢ₋₁ до zᵢ, виміряний навколо xᵢ
dᵢЗміщення ланкизмінна для поступальних суглобівВідстань від xᵢ₋₁ до xᵢ, виміряна вздовж zᵢ₋₁
θᵢКут суглобазмінна для обертальних суглобівКут від xᵢ₋₁ до xᵢ, виміряний навколо zᵢ₋₁

Для найпоширенішого випадку обертального суглоба (шарнір, що обертається, як у переважній більшості промислових маніпуляторів) a, α і d фіксуються фізичною геометрією робота, а θ — це єдина змінна, що змінюється під час руху суглоба: саме це і є той «кут суглоба», якого ви вимагаєте від сервопривода. Для поступального суглоба (лінійного слайдера), навпаки, змінюється d, а θ лишається фіксованим.

Дві константи на суглоб (a, α) описують форму самої ланки; ще дві (d, θ) — як цей суглоб рухає ланку відносно попередньої. Тому маніпулятор із 6 ступенями свободи повністю описується DH-таблицею 6×4 — усього 24 числа задають повну кінематичну структуру.

3. Призначення систем координат суглобів: правила DH

Чотири параметри працюють лише тоді, коли система координат кожного суглоба розміщена за суворими правилами. Для суглоба i прикріплюють праву систему координат {xᵢ, yᵢ, zᵢ} так:

  1. zᵢ лежить вздовж осі суглоба i+1 (осі, навколо якої обертається або вздовж якої ковзає наступний суглоб).
  2. xᵢ лежить вздовж спільної нормалі між zᵢ₋₁ та zᵢ, спрямованої від осі i−1 до осі i. Якщо обидві осі паралельні, підходить будь-який спільний перпендикуляр; якщо осі перетинаються, xᵢ нормальний до площини, яку вони утворюють.
  3. yᵢ доповнює праву систему координат: yᵢ = zᵢ × xᵢ.
  4. Початок координат кадру i — це точка, де спільна нормаль xᵢ перетинає вісь zᵢ.

Коли всі системи координат призначено за цими правилами, aᵢ, αᵢ, dᵢ, θᵢ безпосередньо випливають із геометрії між кадром i−1 та кадром i, а перетворення між ними завжди має один і той самий фіксований алгебричний вигляд — без потреби виводити його для кожного окремого випадку.

4. Побудова матриці перетворення

Маючи чотири DH-параметри суглоба i, однорідне перетворення від кадру i−1 до кадру i є добутком чотирьох елементарних перетворень — обертання навколо z, зміщення вздовж z, зміщення вздовж x, обертання навколо x:

Tᵢ₋₁,ᵢ = Rot_z(θᵢ) · Trans_z(dᵢ) · Trans_x(aᵢ) · Rot_x(αᵢ)

Перемноживши ці чотири матриці, отримуємо стандартну замкнену форму матриці перетворення DH 4×4:

[ cosθᵢ −sinθᵢ·cosαᵢ sinθᵢ·sinαᵢ aᵢ·cosθᵢ ] Tᵢ₋₁,ᵢ =[ sinθᵢ cosθᵢ·cosαᵢ −cosθᵢ·sinαᵢ aᵢ·sinθᵢ ] [ 0 sinαᵢ cosαᵢ dᵢ ] [ 0 0 0 1 ]

Об'єднавши n таких матриць у ланцюг, отримуємо повне перетворення прямої кінематики від базової системи координат робота до системи координат кінцевого ефектора:

T_база→n = T₀,₁ · T₁,₂ · T₂,₃ · ... · Tₙ₋₁,ₙ

Крайній правий стовпець T_база→n — це позиція (x, y, z) кінцевого ефектора в базовій системі координат; верхній лівий блок 3×3 — його орієнтація у вигляді матриці обертання. Для промислового маніпулятора з 6 ступенями свободи це просто шість перемножень матриць 4×4 — достатньо дешево, щоб обчислювати на кілогерцових частотах керування.

5. Стандартна vs модифікована конвенція DH

Існують дві конкуруючі конвенції, і плутанина між ними — найпоширеніше джерело помилок під час реалізації кінематичної моделі на основі DH:

Стандартна (класична, дистальна) DH

Кадр i прикріплено до дальнього кінця ланки i, використовуючи zᵢ₋₁ як вісь суглоба i. Саме цю класичну компоновку використовували в оригінальному формулюванні Пола 1981 року та в багатьох старіших роботах. Матриця вище — це класична форма DH.

Модифікована (проксимальна) DH

Кадр i прикріплено до ближнього кінця ланки i, а порядок перетворень переставлено на Rot_x(αᵢ₋₁)·Trans_x(aᵢ₋₁)·Rot_z(θᵢ)·Trans_z(dᵢ). Використовується в підручнику Крейга Introduction to Robotics та в багатьох інструментах, похідних від URDF.

Обидві конвенції описують один і той самий фізичний робот і дають однакову позу кінцевого ефектора — але окремі значення a, α, d, θ у таблиці відрізнятимуться між конвенціями, а матриця перетворення, побудована за формулою однієї конвенції, але з таблицею іншої, мовчки видасть неправильну (проте правдоподібну на вигляд) позу. Завжди перевіряйте, для якої конвенції складено DH-таблицю, перш ніж підставляти її в код.

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

Розглянемо простий маніпулятор із 3 ступенями свободи: обертова основа (суглоб 1, вертикальна вісь), а потім два обертальні суглоби «плече» та «лікоть» (суглоби 2 і 3), що обертаються навколо горизонтальних осей, із довжинами ланок L₂ та L₃. Його стандартна DH-таблиця:

iaᵢαᵢdᵢθᵢ
1090°d₁θ₁ (змінна)
2L₂0θ₂ (змінна)
3L₃0θ₃ (змінна)

Кут скручування 90° у суглобі 1 повертає наступну вісь із вертикальної в горизонтальну, тож суглоби 2 і 3 діють як плоский дволанковий маніпулятор, змонтований на обертовій турелі — це саме геометрія типового маніпулятора у стилі настільної лампи чи простого робота для сортування деталей. Перемноження T₀,₁·T₁,₂·T₂,₃ алгебрично зводиться до знайомих рівнянь плоского маніпулятора, масштабованих на cos θ₁ та sin θ₁ через обертання турелі — корисна перевірка на здоровий глузд: механізм DH завжди має відтворювати прості окремі випадки, які можна перевірити вручну.

7. Обчислення прямої кінематики в коді

Реалізація ланцюга DH — це невелика, багаторазово використовувана процедура: побудувати одну матрицю 4×4 на кожен суглоб, а потім перемножити їх зліва направо:

function dhMatrix(theta, d, a, alpha) {
  const ct = Math.cos(theta), st = Math.sin(theta);
  const ca = Math.cos(alpha), sa = Math.sin(alpha);
  // Матриця 4x4 по рядках, класична (стандартна) конвенція DH
  return [
    [ct, -st * ca,  st * sa, a * ct],
    [st,  ct * ca, -ct * sa, a * st],
    [ 0,       sa,       ca,      d],
    [ 0,        0,        0,      1],
  ];
}

function matMul4(A, B) {
  const C = Array.from({ length: 4 }, () => [0, 0, 0, 0]);
  for (let i = 0; i < 4; i++)
    for (let j = 0; j < 4; j++)
      for (let k = 0; k < 4; k++)
        C[i][j] += A[i][k] * B[k][j];
  return C;
}

// dhTable: масив { theta, d, a, alpha } — по одному запису на суглоб
function forwardKinematics(dhTable) {
  let T = [
    [1, 0, 0, 0],
    [0, 1, 0, 0],
    [0, 0, 1, 0],
    [0, 0, 0, 1],
  ];
  for (const { theta, d, a, alpha } of dhTable) {
    T = matMul4(T, dhMatrix(theta, d, a, alpha));
  }
  // Позиція кінцевого ефектора: останній стовпець, рядки 0-2
  const pos = [T[0][3], T[1][3], T[2][3]];
  return { T, pos };
}

// Приклад: маніпулятор із 3 ступенями свободи з розділу 6
const dhTable = [
  { theta: 0.3,  d: 0.4, a: 0,   alpha: Math.PI / 2 },
  { theta: -0.5, d: 0,   a: 0.5, alpha: 0 },
  { theta: 0.8,  d: 0,   a: 0.4, alpha: 0 },
];
const { pos } = forwardKinematics(dhTable);
console.log(pos); // [x, y, z] кінцевого ефектора

Оскільки кожен суглоб дає рівно одну матрицю 4×4, ця функція масштабується лінійно з кількістю суглобів і узагальнюється на будь-який послідовний ланцюг — навчальні маніпулятори з 3 ступенями свободи, промислові роботи з 6 ступенями свободи чи надлишкові маніпулятори з 7 ступенями свободи — достатньо просто розширити DH-таблицю.

8. Підводні камені, сингулярності та практичні поради

Зв'язок з оберненою кінематикою: DH-параметри детерміновано розв'язують пряму кінематику. Зворотний напрямок — обернена кінематика, пошук кутів суглобів для бажаної пози кінцевого ефектора — окрема, складніша задача, розглянута в нашій статті Пряма й обернена кінематика для роботів-маніпуляторів, яка безпосередньо спирається на перетворення DH, представлене тут.