Компонент · Шасси

Комплект роботизированной руки 4-DOF

Комплект руки 4-DOF превращает четыре сервопривода в настольный манипулятор с основанием, плечом, локтем и захватом; управление — по координатам.

Что это такое

Комплект роботизированной руки 4-DOF — это механический скелет настольного манипулятора: набор лазерно раскроенных акриловых или алюминиевых кронштейнов, вращающееся основание и крепления для четырёх сервоприводов. Сам по себе он ничего не делает — это рама, превращающая сервоприводы в машину, которая тянется, позиционируется и захватывает. Установите сервоприводы, управляйте ими через PCA9685, и получится руку, которой можно задать точку в пространстве.

Подписанный вид сбоку на 4-DOF роботизированную руку на сервоприводах: внизу вращающийся сервопривод основания, сервопривод плеча, поднимающий верхнее звено, сервопривод локтя, сгибающий предплечье, и сервопривод захвата на конце рабочего инструмента; вокруг основания намечена достижимая дуга.
Четыре сустава и четыре сервопривода: вращающееся основание, плечо и локоть, размещающие инструмент в вертикальной плоскости, и захват на конце. Скачать SVG

Четыре сустава

Каждой степени свободы соответствует один сервопривод, выполняющий одну задачу:

  • Основание — поворачивает всю руку влево и вправо (рыскание), задавая рабочую плоскость.
  • Плечо — поднимает верхнее звено; это первый из двух суставов, задающих вылет и высоту.
  • Локоть — сгибает предплечье; вместе с плечом размещает инструмент в любой точке вертикальной плоскости.
  • Захват — открывает и закрывает губки для удержания объекта.

Плечо и локоть образуют пару, для которой решается обратная кинематика (IK) двух звеньев: для заданной точки в рабочей плоскости вычисляются два угла суставов, достаточные для её достижения. Затем основание разворачивает плоскость в направлении цели, а захват зажимает объект.

Когда его следует использовать

Выбирайте комплект руки 4-DOF, когда хотите изучить манипулирование, а не мобильность: перемещение объектов, штабелирование блоков, рисование либо камеру на позиционируемом креплении. Это аналог шасси 2WD в мире манипуляторов: общая конструкция, к которой крепится целый класс проектов. Она намеренно рассчитана на небольшие нагрузки; относитесь к ней как к учебной платформе, а не рабочей машине.

Для более тяжёлых или точных задач переходите к сервоприводам с металлическими шестернями, более жёсткой раме или руке с 5–6 DOF и запястьем. Для мобильных роботов нужна платформа, а не эта рука.

Подключение и важные нюансы

  • По одному сервоприводу и каналу на сустав. Пронумеруйте каналы (0 = основание, 1 = плечо, …) и сохраните соответствие в коде, чтобы команда «передвинуть локоть» управляла нужным сервоприводом.
  • Питайте сервоприводы отдельно. Четыре одновременно движущихся сервопривода создают всплеск тока; подавайте питание через клемму V+ PCA9685, а не от Arduino.
  • Задайте исходное положение до сборки. Установите каждый сервопривод в известный угол, например 90°, до установки рычага на вал, чтобы нулевая поза руки соответствовала нулю в коде.
  • Учитывайте вылет. Инструмент достигает только кольца между минимальным и максимальным вылетами, заданными длинами звеньев; команду к точке за его пределами невозможно выполнить при любых углах суставов — см. симулятор роботизированной руки.
  • Учитывайте плечо сил. Допустимая нагрузка быстро снижается с увеличением вылета; сохраняйте небольшие нагрузки, иначе сервоприводы остановятся, а нейлоновые шестерни сломаются.

Измерения, необходимые до написания кода

Обратная кинематика — это арифметические действия над длинами звеньев. При ошибке рука уверенно потянется не туда, и в коде не будет ничего, на что можно указать.

Измерение Где измерять Типичное значение
L1 — верхнее звено От оси сустава плеча до оси сустава локтя 90–105 mm
L2 — предплечье От оси сустава локтя до точки захвата 80–95 mm
Высота основания От стола до оси сустава плеча 50–70 mm
Смещение основания Горизонтально от оси вращения основания до оси плеча 0–15 mm

Измеряйте между осями суставов, а не между краями кронштейнов. Ось — центр шлицевого вала сервопривода, и она часто находится на 5–10 mm внутри видимого кронштейна. Для звена 95 mm ошибка 10 mm превышает 10%: рука систематически становится короче, и никакая настройка это не исправит.

Две длины напрямую задают рабочее пространство:

maximum reach = L1 + L2
minimum reach = |L1 - L2|

При L1 = 100 и L2 = 90 рука достигает расстояний от 10 mm до 190 mm от плеча — это кольцо, а не круг. В центре есть физически недостижимая область, и первая попытка достичь цели рядом с основанием удивительно заканчивается сообщением о недостижимости. Если два звена равны, отверстие исчезает и рука может сложиться сама в себя.

Момент сервоприводов: почему рука провисает на вылете

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

Для полностью вытянутой руки с L1 = L2 = 95 mm, удерживающей нагрузку 30 g и имеющей звенья массой примерно 20 g каждое:

Shoulder torque ~= (forearm+elbow mass x 0.095) + (payload x 0.190)
                ~= (0.05 kg x 9.5 cm) + (0.03 kg x 19 cm)
                ~= 0.48 + 0.57 = 1.05 kg.cm

Момент останова SG90 составляет около 1.8 kg·cm при 4.8 V. Удержание 1.05 kg·cm означает постоянную работу при 58% момента останова, что далеко за пределом точности хобби-сервопривода: он провиснет ниже заданного угла, будет гудеть и нагреваться.

Конфигурация Требование к плечу SG90 (1.8 kg·cm) MG90S (2.2 kg·cm)
Сложена, без нагрузки ~0.2 kg·cm Комфортно Комфортно
Вытянута, без нагрузки ~0.5 kg·cm Допустимо Допустимо
Вытянута, нагрузка 30 g ~1.05 kg·cm Заметно провисает На пределе
Вытянута, нагрузка 50 g ~1.4 kg·cm Останавливается Провисает

Следуют три практических вывода. Точность руки минимальна при полном вылете, где одновременно находится сингулярность, поэтому траектории следует строить внутри границы. Используйте сервоприводы с металлическими шестернями MG90S для плеча, даже если остальные — SG90: этот сустав выходит из строя первым, а нейлоновые шестерни ломаются при постоянной нагрузке. По возможности применяйте противовес: резиновое кольцо от верхнего звена к основанию бесплатно снимает с сервопривода плеча удивительно большую долю статической нагрузки.

Сборка, при которой работают расчёты

Порядок важен, а один шаг почти невозможно отменить.

1. Установите каждый сервопривод в середину диапазона до установки рычага на вал. Подайте питание, задайте 90° и только потом насаживайте рычаг. Рычаг сервопривода имеет шлицы — примерно 20 или 24 зуба, — поэтому устанавливается только в дискретных положениях, а самая тонкая доступная регулировка составляет примерно 15–18°. Если собрать руку, а затем откалибровать, может оказаться, что рабочий диапазон сустава смещён на 40° и не исправляется механически.

2. Установите рычаги в позе, которую считаете нулевой. Для плеча это обычно вертикальное верхнее звено, для локтя — горизонтальное предплечье. Выберите соглашение, запишите его и соберите руку по нему.

3. Проверьте полный ход каждого сустава до затяжки. Подайте 0° и 180° и убедитесь, что ничего не сталкивается с рамой. Если сустав упирается в собственный кронштейн при 160°, его рабочий предел равен 160°, и код должен это знать.

4. Запишите смещения и знаки для каждого сустава. Из-за компоновки тяг некоторые суставы вращаются противоположно математическому соглашению. Зафиксируйте это один раз:

struct Joint {
  uint8_t channel;
  int      offsetDeg;   // servo angle when the joint is at its mathematical zero
  int8_t   sign;        // +1 or -1
  int      minDeg, maxDeg;  // mechanical limits, measured
};

const Joint BASE     = {0,  90, +1,  -85,  85};
const Joint SHOULDER = {1,  90, -1,  -10, 120};
const Joint ELBOW    = {2,  90, +1, -120,  10};
const Joint GRIPPER  = {3,  20, +1,    0,  55};

int servoAngle(const Joint &j, float jointDeg) {
  float clamped = constrain(jointDeg, j.minDeg, j.maxDeg);
  return constrain((int)(j.offsetDeg + j.sign * clamped), 0, 180);
}

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

Питание четырёх сервоприводов

Четыре микросервопривода, движущихся одновременно, требуют намного больше, чем может обеспечить микроконтроллер, а характер отказа руки делает ситуацию хуже: при столкновении с рамой или захвате твёрдого объекта одновременно останавливаются все сервоприводы цепи.

Ситуация Ток
Покой, удержание позиции ~40 mA суммарно
Движение без нагрузки ~600 mA – 1 A
Все четыре остановлены ~2.6 A

Рассчитывайте источник по току останова. Нужен отдельный источник 5–6 V на клемму V+ PCA9685 с конденсатором 470–1000 µF параллельно и общей землёй с контроллером. Подача любого из этих токов через вывод 5 V Arduino вызовет просадку платы; поскольку это происходит только при определённом положении руки, отказ убедительно выглядит как ошибка программного обеспечения.

Перемещайте плавно

Сервопривод с командой нового угла приходит к нему на полной скорости. На мобильном роботе это лишь выглядит резким; на руке это реальная проблема: резкое движение, всплеск тока и механический удар через нейлоновые шестерни, усиленный собственным плечом руки.

// Interpolate every joint together so the tool moves in a straight-ish line
// and no single servo takes the whole load at once.
void moveTo(float base, float shoulder, float elbow, int steps, int stepMs) {
  static float cur[3] = {0, 0, 0};
  float target[3] = {base, shoulder, elbow};

  for (int s = 1; s <= steps; s++) {
    float t = (float)s / steps;
    for (int j = 0; j < 3; j++) {
      float a = cur[j] + (target[j] - cur[j]) * t;
      pwm.setPWM(JOINTS[j].channel, 0, countsFor(JOINTS[j], a));
    }
    delay(stepMs);
  }
  memcpy(cur, target, sizeof(cur));
}

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

Диагностика

Симптом Вероятная причина Исправление
Рука достигает полностью неверной точки Рычаг установлен под произвольным углом Установить каждый сервопривод на 90° до установки рычагов
Диапазон одного сустава смещён примерно на 20° Рычаг сдвинут на один зуб шлица Снять и установить заново — программно это не исправить
Плата перезагружается при движении руки Ток сервоприводов проходит через контроллер Отдельный источник V+, общая земля, большой конденсатор
Рука провисает при полном вылете Сервопривод плеча превышает комфортный момент MG90S на плече, противовес, меньшая нагрузка
Гудение при удержании позы Сервопривод борется с нагрузкой на пределе Уменьшить нагрузку или отключать сервопривод, если удержание не требуется
Не достигаются точки рядом с основанием Цель внутри кольца минимального вылета Ожидаемая геометрия — |L1 − L2| недостижимо
Обратная кинематика возвращает NaN Цель дальше L1 + L2 Проверять достижимость до тригонометрии
Из разных направлений рука достигает по-разному Люфт редуктора, усиленный длиной звена Подходить к каждой цели с одного направления
Резкое движение по новой команде Сервопривод работает на полной скорости Интерполировать перемещение по шагам
Захват раздавливает или роняет предметы Нет обратной связи по усилию Ограничить угол закрытия, добавить пену на губки

Когда переходить на другой комплект

Акриловый комплект 4-DOF — учебная платформа, и о его ограничениях честно сказано в описании. Ограничения по порядку обнаружения:

Нагрузка. Десятки граммов. Любой больший вес сервопривод плеча не удержит.

Повторяемость. Люфт в редукторах сервоприводов и изгиб акриловых звеньев означают, что возвращение к той же заданной позе даёт расхождение в несколько миллиметров. Люфт в четыре градуса на плече при вылете 190 mm превращается в более 13 mm на конце инструмента.

Ориентация запястья. При четырёх степенях свободы можно поместить инструмент куда-либо, но нельзя независимо выбрать угол подхода. Рука с 5 или 6 DOF добавляет запястье, благодаря которому возможно «взять это сбоку».

Улучшение Что оно даёт
Сервоприводы MG90S по всей руке Металлические шестерни — выдерживают удары, меньший люфт
Алюминиевые звенья Значительно меньший изгиб, лучшая повторяемость
Сервоприводы MG996R и более крупная рама Реальная нагрузка сотни граммов
Рука 6-DOF Независимая ориентация инструмента
Рука на шаговых двигателях или BLDC Повторяемость с точностью до десятых долей миллиметра

Ничто из этого не меняет математику. Кинематика двух звеньев, написанная для этого комплекта, использует тот же решатель, что и более совершенная рука, и именно поэтому сначала стоит собрать дешёвую раму.

Исследуйте граф

Используется в этих сборках

Проекты, учебные пути и симуляторы, в которых используется Комплект роботизированной руки 4-DOF.

Вопросы

Комплект роботизированной руки 4-DOF: частые вопросы

Что такое роботизированная рука 4-DOF?

Роботизированная рука 4-DOF (четыре степени свободы) имеет четыре независимо управляемых сустава: обычно вращающееся основание, плечо, локоть и захват. Эти четыре движения позволяют инструменту достигать множества положений над столом и брать предметы. Это самая малая рука, которая воспринимается как настоящий манипулятор, оставаясь недорогой и простой в управлении.

Сколько сервоприводов нужно роботизированной руке?

По одному на сустав. Рука 4-DOF использует четыре сервопривода: основание, плечо, локоть и захват. На больших руках добавляют наклон и вращение запястья, получая 5 или 6 DOF. Поскольку каждому сервоприводу нужен собственный канал PWM, руки — классическая причина добавить драйвер PCA9685 вместо прямого подключения сервоприводов к микроконтроллеру.

Что такое MeArm?

MeArm — популярный открытый комплект 4-DOF из лазерно раскроенного акрила на четырех микросервоприводах. Это образец недорогой настольной роботизированной руки: многие продаваемые сегодня комплекты являются клонами MeArm или близкими вариантами. Подключение и код у них одинаковы, поэтому кинематика и навыки работы с драйвером переносятся между ними.

Сколько может поднять хобби-роботизированная рука?

Немного — десятки граммов на захвате. Предел задаёт произведение момента сервопривода на плечо. Момент останова SG90 ~1.8 kg·cm кажется большим, пока его не распределяют на плечо 15 cm: рабочая нагрузка падает до нескольких десятков граммов. Помогают сервоприводы с металлическими шестернями и более короткое плечо; для реального подъёма нужна крупная редукторная рука.

Нужен ли PCA9685 для роботизированной руки?

Строго говоря, нет, но это подходящий инструмент. Четыре сервопривода работают от выводов PWM Arduino при отдельном питании, однако PCA9685 освобождает таймеры микроконтроллера, управляет всеми суставами через два вывода I²C и подаёт ток сервоприводов от собственного источника — именно то, что нужно многосуставной руке.

Дополнительные материалы

Источники