Параметри Денавіта–Хартенберга
Кожен промисловий робот-маніпулятор — від шестиосьового зварювального робота до хірургічного маніпулятора — описується одним і тим самим компактним рецептом: таблицею з чотирьох чисел на кожен суглоб. Конвенція Денавіта–Хартенберга, опублікована 1955 року, перетворила заплутану задачу об'єднання 3D-обертань і зміщень у систематичну, майже механічну процедуру — і досі є стандартним способом опису геометрії маніпуляторів у підручниках з робототехніки та в керуючому програмному забезпеченні.
1. Навіщо потрібні DH-параметри
Послідовний робот-маніпулятор — це ланцюг жорстких ланок, з'єднаних суглобами. Щоб обчислити, де опиниться кінцевий ефектор (захват, зварювальний наконечник чи скальпель) за заданого набору кутів суглобів — це задача прямої кінематики — потрібно описати геометричне співвідношення між кожною сусідньою парою ланок.
Можна прикріпити довільну систему координат до кожної ланки й записати довільне однорідне перетворення 4×4 між ними. Це працює, але вимагає шести чисел на кожну ланку (три для зміщення, три для обертання) і дає кожній команді робототехніків власну неузгоджену нотацію. У 1955 році Жак Денавіт і Річард Хартенберг показали, що якщо розміщувати кожну систему координат за невеликим набором правил, перетворення між будь-якими двома сусідніми ланками завжди можна описати лише чотирма числами замість шести. Саме це скорочення — і те, що воно є спільним стандартом — і є причиною, чому конвенція 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ᵢ} так:
- zᵢ лежить вздовж осі суглоба i+1 (осі, навколо якої обертається або вздовж якої ковзає наступний суглоб).
- xᵢ лежить вздовж спільної нормалі між zᵢ₋₁ та zᵢ, спрямованої від осі i−1 до осі i. Якщо обидві осі паралельні, підходить будь-який спільний перпендикуляр; якщо осі перетинаються, xᵢ нормальний до площини, яку вони утворюють.
- yᵢ доповнює праву систему координат: yᵢ = zᵢ × xᵢ.
- Початок координат кадру i — це точка, де спільна нормаль xᵢ перетинає вісь zᵢ.
Коли всі системи координат призначено за цими правилами, aᵢ, αᵢ, dᵢ, θᵢ безпосередньо випливають із геометрії між кадром i−1 та кадром i, а перетворення між ними завжди має один і той самий фіксований алгебричний вигляд — без потреби виводити його для кожного окремого випадку.
4. Побудова матриці перетворення
Маючи чотири DH-параметри суглоба i, однорідне перетворення від кадру i−1 до кадру i є добутком чотирьох елементарних перетворень — обертання навколо z, зміщення вздовж z, зміщення вздовж x, обертання навколо x:
Перемноживши ці чотири матриці, отримуємо стандартну замкнену форму матриці перетворення DH 4×4:
Об'єднавши n таких матриць у ланцюг, отримуємо повне перетворення прямої кінематики від базової системи координат робота до системи координат кінцевого ефектора:
Крайній правий стовпець 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-таблиця:
| i | aᵢ | αᵢ | dᵢ | θᵢ |
|---|---|---|---|---|
| 1 | 0 | 90° | d₁ | θ₁ (змінна) |
| 2 | L₂ | 0° | 0 | θ₂ (змінна) |
| 3 | L₃ | 0° | 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. Підводні камені, сингулярності та практичні поради
- Плутанина конвенцій: як описано в розділі 5, стандартна та модифікована DH-таблиці не взаємозамінні з формулою матриці одна одної. Довідники виробників та файли URDF завжди повинні вказувати, яку конвенцію вони використовують.
- Неоднозначність знаків: знаки α та θ залежать від обраної орієнтації правої системи координат; зміна напрямку осі змінює знак відповідного кута. Завжди перевіряйте діаграми систем координат, а не покладайтеся на припущення про знак.
- Паралельні та збіжні осі: коли zᵢ₋₁ та zᵢ паралельні, спільна нормаль не єдина, а коли вони перетинаються, aᵢ = 0. Ці граничні випадки вимагають обережності при призначенні систем координат — більшість підручникових виведень розглядають їх окремо.
- Кінематичні сингулярності: DH-параметри описують геометрію, а не досяжність. Коли дві осі суглобів стають колінеарними (наприклад, лікоть повністю випрямлений), якобіан, отриманий із ланцюга DH, втрачає ранг, і невеликі рухи кінцевого ефектора вимагають нескінченних кутових швидкостей суглобів — це окрема проблема, відмінна від самої DH-таблиці, але кожен подальший розв'язувач оберненої кінематики має її враховувати.
- Де це використовується: DH-таблиці — геометричний хребет пакета
robot_state_publisherу ROS, планувальника рухів MoveIt, MATLAB Robotics System Toolbox і практично кожного контролера промислового робота — бо компактна стандартизована таблиця значно легша для калібрування, документування та налагодження, ніж довільний набір перетворень для кожної ланки.