Степени свободы и рабочая зона
Сколько независимых движений нужно роботу, чтобы дотянуться куда угодно и под любым углом — и где он вообще может работать.
Степень свободы (DOF) — число независимых параметров, которые нужно задать, чтобы полностью определить конфигурацию механизма.
Свободное твёрдое тело в пространстве имеет 6 степеней свободы: три на положение (по осям $x, y, z$) и три на ориентацию (повороты вокруг осей). Поэтому универсальному манипулятору обычно дают 6 суставов — ровно столько, чтобы привести схват в любую точку под любым углом в пределах вылета.
Считаем степени свободы
Для открытой цепи всё просто: сколько суставов — столько и степеней свободы. Цепь 6R имеет 6 DOF. Для механизмов с петлями есть формула подвижности Грюблера (для плоских механизмов):
$$ F = 3(n - 1) - 2 j_1 - j_2 $$
где $n$ — число звеньев (включая стойку), $j_1$ — число одностепенных суставов (вращательные/поступательные), $j_2$ — двухстепенных. Для открытой цепи из трёх подвижных звеньев на стойке: $n = 4$, $j_1 = 3$, $j_2 = 0$, тогда $F = 3 \cdot 3 - 2 \cdot 3 = 3$.
Избыточность и недостаточность
Если DOF больше шести, робот избыточен (redundant): одну и ту же позу схвата можно получить разными $q$ — это даёт гибкость обходить препятствия. Если меньше — робот не сможет занять произвольную ориентацию, придётся жертвовать одной из координат.
Рабочая зона
$$ R_{\max} = L_1 + L_2, \qquad R_{\min} = |L_1 - L_2| $$
Рабочая зона двухзвенной руки — кольцо между этими радиусами. Точки внутри $R_{\min}$ и снаружи $R_{\max}$ недостижимы. Проверим, попадает ли цель в зону.
import math
L1, L2 = 1.0, 0.7
R_max = L1 + L2
R_min = abs(L1 - L2)
for target in [(1.2, 0.5), (1.6, 0.0), (0.1, 0.1)]:
r = math.hypot(target[0], target[1])
ok = R_min <= r <= R_max
print(f"цель {target}: r={r:.3f} -> {'достижима' if ok else 'вне зоны'}")Вывод:
цель (1.2, 0.5): r=1.300 -> достижима цель (1.6, 0.0): r=1.600 -> достижима цель (0.1, 0.1): r=0.141 -> вне зоны
Как работает под капотом
Каждая степень свободы — это одна координата в конфигурационном пространстве робота. У 6R-руки это пространство шестимерно; планировщик движений ищет путь именно в нём, а не в обычном трёхмерном. Рабочая зона же — это образ конфигурационного пространства в физическом мире: все точки, куда схват вообще может попасть.
Частые ошибки
- Считать, что 6 DOF — это «6 моторов в любом расположении». Важно, чтобы оси были не вырождены: три параллельные оси не дадут полной ориентации.
- Забывать про внутреннюю мёртвую зону $R_{\min}$: близкие к основанию точки часто недостижимы.
- Путать степени свободы робота и степени свободы задачи: для рисования на плоскости задаче хватает 3 DOF, лишние — избыточность.
Итог
- Свободное тело в пространстве имеет 6 DOF: 3 на положение, 3 на ориентацию.
- У открытой цепи число DOF равно числу суставов; для механизмов с петлями — формула Грюблера.
- Избыточные роботы ($\gt 6$ DOF) гибче, недостаточные — ограничены.
- Рабочая зона двухзвенника — кольцо между $|L_1 - L_2|$ и $L_1 + L_2$.