Параметры Денавита-Хартенберга

Стандартный способ описать манипулятор с любым числом звеньев четырьмя числами на звено.

Конвенция Денавита-Хартенберга (DH) — общепринятый способ задать преобразование между соседними звеньями четырьмя параметрами: $\theta, d, a, \alpha$.

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

ПараметрСмысл
$\theta_i$угол поворота вокруг оси $z_{i-1}$ (переменная у вращательного сустава)
$d_i$смещение вдоль $z_{i-1}$ (переменная у поступательного)
$a_i$длина звена вдоль $x_i$
$\alpha_i$скручивание звена — угол между осями $z$

Преобразование между звеньями — однородная матрица $4\times4$, собранная из этих параметров:

$$ T_i = \begin{bmatrix} \cos\theta_i & -\sin\theta_i \cos\alpha_i & \sin\theta_i \sin\alpha_i & a_i \cos\theta_i \\\\ \sin\theta_i & \cos\theta_i \cos\alpha_i & -\cos\theta_i \sin\alpha_i & a_i \sin\theta_i \\\\ 0 & \sin\alpha_i & \cos\alpha_i & d_i \\\\ 0 & 0 & 0 & 1 \end{bmatrix} $$

Плоский случай

Для плоского манипулятора $\alpha_i = 0$, $d_i = 0$, и матрица упрощается ровно до той $3\times3$, что мы использовали раньше: поворот на $\theta_i$ и сдвиг $a_i$ вдоль $x$. Соберём FK двухзвенника по DH и сверим с прошлым уроком.

import math

def dh_planar(theta, a):
    # упрощённая DH-матрица 3x3 для плоского случая (alpha=0, d=0)
    c, s = math.cos(theta), math.sin(theta)
    return [[c, -s, a * c], [s, c, a * s], [0, 0, 1]]

def mm(A, B):
    return [[sum(A[i][k] * B[k][j] for k in range(3)) for j in range(3)] for i in range(3)]

# звено 1: theta=30, a=1.0; звено 2: theta=45, a=0.7
T = mm(dh_planar(math.radians(30), 1.0), dh_planar(math.radians(45), 0.7))
print("схват по DH: x =", round(T[0][2], 4), "y =", round(T[1][2], 4))

Вывод:

схват по DH: x = 1.0472 y = 1.1761

Как работает под капотом

DH-параметры — это рецепт «как пройти от одной оси сустава к следующей»: повернуться и сдвинуться вдоль $z$, затем повернуться и сдвинуться вдоль $x$. Четырёх движений хватает, чтобы совместить любые две системы координат, расположенные «как суставы робота». Производитель робота даёт DH-таблицу — и по ней автоматически строится вся кинематика.

Частые ошибки

  • Путать стандартную и модифицированную DH-конвенции — у них разный порядок преобразований и параметры берутся с разных звеньев.
  • Забывать, какой параметр переменный: $\theta$ для вращательного, $d$ для поступательного.
  • Неверно выбрать оси $z$ суставов — тогда вся таблица собьётся.

Итог

  • DH описывает звено четырьмя параметрами: $\theta, d, a, \alpha$.
  • Преобразование между звеньями — однородная матрица из этих параметров.
  • Для плоского робота DH сводится к знакомым «поворот + сдвиг».
  • По DH-таблице производителя кинематика строится автоматически.
Проверьте себя
1. Какой DH-параметр является переменным у вращательного сустава?
Aa (длина звена)
Bα (скручивание)
Cθ (угол поворота)
Dd (смещение вдоль z)
2. Сколько параметров DH описывают одно звено?
A2
B3
C4
D6