Степени свободы и рабочая зона

Сколько независимых движений нужно роботу, чтобы дотянуться куда угодно и под любым углом — и где он вообще может работать.

Степень свободы (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$.
Проверьте себя
1. Сколько степеней свободы у свободного твёрдого тела в пространстве?
A3
B4
C6
D12
2. Цель на расстоянии r=0.14 м от основания двухзвенника с L1=1.0, L2=0.7 м:
AДостижима
BНедостижима — внутри мёртвой зоны R_min=0.3
CДостижима только при сложенных звеньях
DЗависит от массы звеньев
3. Робот с 7 суставами для задачи, требующей 6 DOF, называется:
AНедостаточным
BИзбыточным (redundant)
CВырожденным
DСингулярным