Параметры Денавита-Хартенберга
Стандартный способ описать манипулятор с любым числом звеньев четырьмя числами на звено.
Конвенция Денавита-Хартенберга (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-таблице производителя кинематика строится автоматически.