Введение в робототехнику: типы моторов

Разрезы разных моторов для роботов: коллекторный, серво, бесколлекторный, шаговый, QDD-актуатор

Мотор - это то, что превращает код в движение. От выбора мотора зависит всё остальное: какое нужно питание, какой контроллер, по какой шине с ним говорить, сколько будет стоить сустав и сможет ли робот вообще встать. Эта статья - обзорная карта: как устроены основные типы моторов, чем их питать и чем ими управлять, где их купить, и что брать под три типичных задачи - силовую платформу от 100 кг, шагающего робота до 100 кг и колёсного робота до 30 кг.

Цены - ориентировочные на сентябрь 2026 года, взяты с сайтов магазинов по ссылкам. В разных регионах добавляются доставка, НДС и пошлины.

  1. Базовые понятия: момент, KV, редуктор, FOC
  2. Карта типов моторов
  3. Коллекторные (brushed) DC
  4. Хобби-сервоприводы и умные сервы
  5. Бесколлекторные (BLDC) для дронов
  6. Гимбальные моторы (direct drive)
  7. BLDC + энкодер + планетарка + ODrive
  8. QDD и полностью интегрированные актуаторы
  9. Шаговые моторы
  10. Мотор-колёса (hub motors)
  11. Силовые: AC-сервы, червячные, линейные
  12. Сводная таблица
  13. Управление из софта
  14. Много моторов: шины и проводка
  15. Питание
  16. Сценарии: 100+ кг, шагающие, колёсные

Базовые понятия

Чтобы читать даташиты, достаточно десятка терминов.

Момент (Н·м)

Сила вращения. 1 Н·м - это 1 ньютон на плече 1 метр, то есть примерно 100 г, подвешенные на конце метрового рычага, или 10 кг на плече 1 см. Сервы часто пишут в «кг·см»: 30 кг·см ≈ 2.9 Н·м.

Пиковый и номинальный

Номинальный (continuous) момент мотор держит долго без перегрева. Пиковый (peak) - секунды. Для прыжков важен пик, для стояния и подъёма груза - номинал.

KV (об/мин на вольт)

Скорость без нагрузки на каждый вольт. Низкий KV - медленнее, но больше момента на ампер. Kt (Н·м/А) ≈ 8.27 / KV.

Передаточное число

Редуктор 10:1 умножает момент в ~10 раз (минус потери) и делит скорость в 10 раз. Но и трение, люфт и инерция мотора тоже умножаются.

Backdrivability

Можно ли провернуть выход рукой. С редуктором 1:300 - нельзя, с 1:6 - легко. Это важно для шагающих: сустав должен «пружинить» при ударе о землю.

Энкодер

Датчик угла. Инкрементальный считает шаги от старта, абсолютный знает угол сразу после включения. Магнитные абсолютные (AS5047, MA702) стоят 10-20 €.

FOC

Field Oriented Control - алгоритм, который по углу ротора точно дозирует ток в трёх фазах BLDC. Даёт тихую работу, плавный момент на нулевой скорости и управление по току (то есть по моменту).

Контуры управления

Позиция → скорость → ток. В хороших драйверах есть все три, и можно задавать любую цель: угол, скорость или момент.
Цельугол / скорость ПозиционныйPID ~1 кГц СкоростнойPI ~8 кГц Токовый (FOC)Id/Iq ~20-40 кГц 3 фазы ШИМMOSFET-мост Мотор энкодер + датчики тока (обратная связь) Всё, что правее «Цели», живёт внутри драйвера. Ваш софт шлёт только цель по шине.
Каскадное управление в типичном BLDC-драйвере (ODrive, moteus, CubeMars, Damiao). Внутренние контуры быстрее внешних.

Карта типов моторов

Грубо все моторы для роботов делятся по двум осям: есть ли щётки (коллекторный или бесколлекторный) и сколько интеграции в корпусе (голый мотор → мотор с редуктором → мотор с редуктором, энкодером и драйвером, говорящий по шине). Чем больше интеграции, тем дороже штука, но тем меньше проводов и отладки.

ТипЦена за суставГлавный плюсГлавный минусГде брать
Коллекторный + редуктор5-60 €Просто: два провода и H-мостЩётки изнашиваются, нет обратной связи без энкодераКолёсные роботы до 30 кг
Хобби-серво (ШИМ)3-60 €Готовое позиционирование из коробкиШумит, люфт, нет обратной связи в софтИгрушки, захваты, мелкие манипуляторы
Умная серва по шине15-500 €Шина, обратная связь по углу/току/температуреБольшой редуктор - не backdrivableНастольные руки (SO-ARM101, LeRobot), мелкие гуманоиды
BLDC (дроны)15-100 €Огромная мощность на граммВысокие обороты, нужен ESC или FOC-драйверПропеллеры, база для DIY-актуаторов
Гимбальный20-60 € + драйверDirect drive, плавно, тихоСлабый моментКамеры, лёгкие суставы, демо
BLDC + энкодер + планетарка~150-250 € в сбореДёшево, гибко, open sourceМного сборки и настройкиDIY-шагающие, исследования
QDD-актуатор интегрированный120-600 €Один кабель: питание + CAN; прозрачный суставДорого за штуку, закрытые прошивкиШагающие роботы, гуманоиды, экзоскелеты
Шаговый10-50 € + драйвер 5-40 €Точное позиционирование без энкодераТеряет шаги, греется на удержании, слабеет на скорости3D-принтеры, ЧПУ, линейные оси
Мотор-колесо (hub)30-150 €Колесо, мотор и подшипник в одномНужен FOC-драйвер, тяжёлоеКолёсные платформы 20-300 кг
AC-серво / червячный / линейный100-1000+ €Промышленная надёжность и силаТяжело, часто 220 В, медленно (червяк)Подъёмники, силовые платформы от 100 кг

Коллекторные (brushed) DC-моторы

Q1 Q3 Q2 Q4 M +VGND Q1+Q4 - вперёд, Q2+Q3 - назадскважность ШИМ - скорость
H-мост из четырёх транзисторов меняет полярность, а ширина импульсов ШИМ регулирует среднее напряжение, то есть скорость.

Щётки переключают ток, а не вращают поле вместе с валом

Магниты статора неподвижны: поле в зазоре направлено от N к S. Обмотки и медные пластины коллектора вращаются вместе с валом, но щётки остаются на корпусе. Когда под щётку приходит другая пластина, меняется путь тока. Поэтому суммарное поле обмоток остаётся примерно поперёк поля статора, хотя сами катушки уже повернулись. Момент продолжает тянуть вал в одну сторону.

NS −+ Чёрная стрелка: поле ротораФиолетовая: поле статора N → S
Ток в обмотках, I / ImaxЗнак задаёт полярность поля катушки
90°угол между полями
1.00момент / максимум

Коллектор меняет ток при переходе щётки на следующую пластину.

Модель: три одинаковые обмотки соединены треугольником между пластинами 1-2, 2-3 и 3-1. Цвета A/B/C связывают катушки и токи; красный/синий торец означает N/S. Индуктивность, ширина щёток и искрение не моделируются. В этой грубой схеме угол меняется от 60° до 120°, момент ∝ sin(угла). Больше обмоток и пластин - меньше пульсации около 90°. Скорость здесь задана для наглядности, а не рассчитана из момента.

Самый старый и самый простой тип. Подключил к батарейке - крутится, поменял полярность - крутится в обратную сторону. Голый коллекторный мотор слишком быстрый (5-15 тыс. об/мин) и слабый, поэтому для роботов почти всегда покупают мотор-редуктор: мотор + металлический редуктор + опционально энкодер Холла на валу.

  • Напряжение 6-24 В
  • Ток 0.1-10 А (стоп-ток до 20+ А)
  • Редуктор 10:1 - 300:1
  • Момент 0.1-10 Н·м на выходе
  • КПД 40-70% с редуктором
  • Ресурс щёток ~1000-3000 ч

Плюсы

  • Дёшево и доступно везде
  • Управление - два провода и H-мост с ШИМ
  • Большой момент на низкой скорости благодаря редуктору
  • Часто есть версии с энкодером

Минусы

  • Щётки изнашиваются, искрят и создают электромагнитные помехи
  • Не backdrivable при большом редукторе
  • Нет точного управления моментом
  • Хуже КПД, чем у BLDC

Где лучше всего

Колёсные роботы до 20-30 кг, гусеничные платформы, конвейеры, захваты, поворотные механизмы. Отличный первый мотор для обучения.

Контроллеры и библиотеки

  • Драйверы H-моста: DRV8871 / TB6612FNG (до ~1-3 А), Cytron MDD10A / MDD20A (10 / 20 А на канал), RoboClaw (2x15 - 2x160 А, считает энкодеры и держит PID сам, есть Python- и ROS-драйверы), Sabertooth. Старый L298N лучше не брать: он теряет 2-4 В на себе и греется.
  • Софт: на Arduino/ESP32 это просто analogWrite() + два пина направления; энкодеры - библиотека Encoder или аппаратный счётчик ESP32 (PCNT). Для ROS 2 - ros2_control с diff_drive_controller.

Где купить

  • Pololu 37D - классика: 12 или 24 В, от 6.3:1 до 150:1, с энкодером; 30:1 даёт 330 об/мин и ~14 кг·см на 12 В. Примерно $40-60.
  • goBILDA Yellow Jacket - планетарные мотор-редукторы со встроенным энкодером, $54.99; удобная экосистема крепежа.
  • AliExpress: серии JGB37-520, JGA25-370 с энкодером - 8-15 €, но разброс качества большой.
Про LEGO. Моторы LEGO Technic / SPIKE (Large Angular Motor и т.п.) на самом деле коллекторные, со встроенным абсолютным датчиком угла. В идеях их иногда называют «brushless LEGO», но щётки там есть. Для прототипа удобно, с Python их можно программировать через Pybricks, но для чего-то тяжелее пары килограммов они слабоваты.

Хобби-сервоприводы и умные сервы

Вид сверху, крышка снята; редуктор 43:1 MCU Q1 Q2 Q3 Q4 · DC-мотор Провода: GND / +5-8 В / сигнал ШИМ Осциллограф: один кадр 20 мс (замедлено в 5 раз) CH1 вход CH2 мотор + вперёд / − назад 05101520 мс Потенциометр на выходном валу

Период сигнала 20 мс (50 Гц): импульс 1.0 мс - 0°, 1.5 мс - 90°, 2.0 мс - 180°. Пунктирная качалка - цель, белая - реальный вал. Нагрузка тянет качалку к 0°. Модель упрощена: редуктор нарисован 43:1 (в реальных сервах 100-300:1, поэтому на картинке мотор крутится медленнее настоящего), время замедлено в 5 раз, мотор - модель первого порядка с трением. Мёртвая зона и частоты - типичные значения, у конкретных серв они другие.

Серва - это коллекторный (реже бесколлекторный) мотор с редуктором и датчиком угла в одном корпусе. Вы говорите «встань на 90°» - она встаёт и держит. Редуктор обычно очень большой, от 30:1 в быстрых до 300:1 в силовых, поэтому момент приличный, но выход невозможно провернуть рукой, а шестерни шумят.

Аналоговые и цифровые

Аналоговые сервы регулируют мотор с частотой входного сигнала (50 Гц): мягче, тише, но «мёртвая зона» и хуже удержание. Цифровые обрабатывают тот же ШИМ-сигнал микроконтроллером и подают импульсы на мотор сотни раз в секунду: точнее, сильнее держат позицию, но больше потребляют и характерно пищат. С точки зрения софта разницы нет - обе управляются одинаково.

Умные сервы по шине (serial bus servo)

Следующий уровень: вместо ШИМ - полудуплексный UART или RS-485, у каждой сервы свой ID, все сидят на одном шлейфе цепочкой. Можно не только задать угол, но и прочитать текущий угол, ток, температуру, напряжение; есть режим колеса и режим ограничения момента. Именно на таких сервах собраны популярные open-source руки LeRobot SO-ARM100/101.

  • Хобби: 4.8-8.4 В
  • Шинные: 7.4-14.8 В
  • Момент 0.2-6 Н·м (2-60 кг·см), бесколлекторные до 50+ Н·м
  • Угол 180°, 270° или 360° + режим колеса
  • Ток до 2-3 А на серву в стопе

Плюсы

  • Позиционирование из коробки
  • Никаких драйверов (хобби) или один адаптер USB-UART (шинные)
  • Шинные легко подключать десятками
  • Очень дёшево: STS3215 за $16

Минусы

  • Шумные, есть люфт
  • Большой редуктор - нет податливости, удары ломают шестерни
  • Хобби-серва ничего не сообщает о себе
  • Слабое управление по моменту

Где лучше всего

Захваты, настольные манипуляторы, головы и руки маленьких гуманоидов, робо-собаки до 2-3 кг, аниматроника. Для ног тяжелее ~5 кг - уже плохо: редуктор не выдерживает ударов.

Где купить

  • Feetech STS3215 (12 В, 30 кг·см, магнитный энкодер) - около $16; такая же у Waveshare как ST3215 - $21.90. Там же есть бесколлекторные версии на 450-1000 кг·см за $399-650.
  • ROBOTIS Dynamixel - эталон умных серв с отличной документацией: XL430 от ~€50-60, серия X/XM сотни долларов, Pro - тысячи.
  • Хобби-сервы: MG996R (клон, 3-5 €), Savöx, Hitec, KST - от 20 до 100+ €.

Контроллеры и библиотеки

  • Хобби-сервы напрямую: Arduino Servo, ESP32 ESP32Servo. Больше 4-6 серв - плата PCA9685 (16 каналов по I²C, ~5 €) + Adafruit PWM Servo Driver или adafruit-circuitpython-servokit на Raspberry Pi.
  • Dynamixel: Dynamixel SDK (C++, Python, ROS 2), адаптер U2D2.
  • Feetech: SCServo SDK от производителя, драйвер в LeRobot; адаптер - Waveshare Bus Servo Driver Board или любой USB-UART с полудуплексной схемой.

Бесколлекторные (BLDC) моторы для дронов

Бесколлекторный мотор - это «вывернутый наизнанку» коллекторный: обмотки неподвижны, магниты вращаются, а переключение тока делает контроллер. Отсюда высокий КПД (80-90%), отсутствие износа щёток и огромная удельная мощность. Дроновые моторы оптимизированы под высокие обороты с пропеллером, поэтому у них высокий KV (900-2500), и для робота их используют либо с редуктором, либо берут низко-KV «толстые» модели (5010, 6374, 8308, 8318).

  • Обозначение 2207, 5010, 8308 = диаметр × высота статора в мм
  • KV 50-2500
  • Напряжение 2S-12S LiPo (7.4-44 В)
  • Ток 10-80 А
  • Мощность 100 Вт - 3+ кВт

Как три синусоиды вращают магнитное поле

Катушка на зубе статора - это электромагнит. Контроллер подаёт на неё напряжение (на самом деле быстрый ШИМ, среднее которого - синус), из-за индуктивности ток в катушке нарастает плавно и повторяет эту синусоиду. Ток в одну сторону делает торец зуба полюсом S, в обратную - полюсом N, а сила полюса пропорциональна току. Три катушки стоят под углом 120° друг к другу, их поля складываются как векторы - и если токи сдвинуты по времени тоже на 120°, сумма получается одним полем постоянной силы, которое плавно вращается. Магнит ротора тянется за ним.

Нажмите «Пауза» и двигайте ползунок угла, чтобы рассмотреть отдельные моменты. Переключите режим, чтобы сравнить FOC с простым ESC.

AC'B A'CB' NS зуб: синий = полюс S, красный = N; обводка катушки = ток цветные стрелки - вклад фаз, чёрная - суммарное поле Токи в фазах за один электрический оборот +1-1 0°180°360° A +1.00 B -0.50 C -0.50 сумма токов: 0.00 Напряжение фазы A: ШИМ, среднее = синус Момент на роторе 01

Плюсы

  • Лучшая мощность и момент на грамм
  • Нет щёток - долгий ресурс, тишина
  • Дёшево: 15-60 € за мотор
  • Огромный выбор

Минусы

  • Обязателен контроллер (ESC или FOC)
  • Сам по себе быстрый и слабый на низких оборотах
  • Дешёвый ESC не умеет держать позицию и плохо стартует под нагрузкой

Где лучше всего

Дроны и винты. В робототехнике - как «сердце» самодельных актуаторов (см. ниже), для колёс через редуктор, для бросающих и прыгающих механизмов.

Контроллеры

  • ESC для дронов (прошивки BLHeli_32, Bluejay, AM32) - управляются ШИМ, DShot, PWM. Только скорость, без позиции. 10-40 €.
  • VESC - open-source контроллер для электроскейтов и робототехники: FOC, датчики Холла или энкодер, CAN, UART; 50-200 € у Flipsky, Trampa, MakerX. Отлично для колёс.
  • FOC-драйверы для суставов - ODrive, moteus, Tinymovr, SimpleFOC: см. следующие разделы.

Где купить: T-Motor (включая серию для роботов), iFlight, BrotherHobby, Flipsky (моторы 63xx для скейтов), AliExpress (Eaglepower 8308/8318, Maytech).

Гимбальные моторы: direct drive без редуктора

Это BLDC, намотанный тонким проводом с большим числом витков: сопротивление фазы 5-15 Ом вместо 0.05-0.2 Ом у дронового. Он медленный и слабый (обычно 0.05-0.3 Н·м), зато его можно питать малым током, он плавно держит любой угол и крутится без единой шестерёнки. Сочетание «мотор прямо на суставе» называют direct drive.

  • Типичные: GM2804, GM3506, GM4108, GM5208
  • Сопротивление фазы 5-15 Ом
  • Ток 0.3-2 А
  • Момент 0.05-0.5 Н·м
  • 12-24 В

Плюсы

  • Ноль люфта и шума шестерён
  • Идеальная прозрачность - сустав чувствует внешнюю силу через ток
  • Быстрая реакция
  • Можно питать дешёвыми слаботочными драйверами

Минусы

  • Слабый: руку тяжелее сотни граммов не удержит
  • Нужен FOC-контроллер и энкодер
  • Удержание веса = постоянный ток = нагрев

Где лучше всего

Стабилизаторы камер, «умные ручки» с силовой обратной связью (haptic knob), лёгкие демо-манипуляторы, балансирующие роботы-кубы (reaction wheel), учебные проекты FOC.

Контроллеры и цены

  • Tinymovr R5.4 (сейчас бренд Motionlayer) - FOC-контроллер размером с мотор, крепится прямо на заднюю крышку, встроенный энкодер, CAN; €88, стартовый набор - €124. Python-библиотека tinymovr и GUI Studio.
  • SimpleFOC - open-source библиотека FOC для Arduino/STM32/ESP32 и дешёвые платы SimpleFOC Shield / Mini (10-30 €). Лучший способ разобраться в FOC руками.
  • Сами моторы: iFlight iPower GM-серия, T-Motor GB-серия, AliExpress - 20-60 €.

BLDC + магнитный энкодер + планетарка + ODrive

Классический путь самодельных шагающих роботов со времён MIT Mini Cheetah: берёте толстый низко-KV BLDC, приклеиваете на вал диаметрально намагниченный магнит, ставите напротив плату магнитного энкодера, добавляете напечатанный или купленный планетарный редуктор 6:1 - 10:1 и управляете всем через FOC-драйвер. Получается сустав, похожий на коммерческий QDD, но в 1.5-3 раза дешевле и полностью под вашим контролем. Классический разбор такой конструкции - магистерская работа Бена Каца «A low cost modular actuator for dynamic robots» (MIT, 2018).

выход планетарка 6-10:1 BLDC outrunner: магниты + статор магнит энкодерAS5047 / MA702 FOC-драйверMCU + MOSFET 24-48 ВCAN
Упрощённый разрез QDD-актуатора слева направо: выходной фланец, планетарный редуктор, плоский BLDC, магнит на валу и энкодер, плата драйвера, разъёмы питания и CAN. В DIY-версии драйвер - отдельная плата, в интегрированной - всё в одном «толстом цилиндре».

Из чего складывается цена

КомпонентПримерЦена
МоторEaglepower 8308 / Flipsky 6374 / ODrive M8325s~30-90 €
Магнитный энкодерAS5047P, MA702 breakout, CUI AMT102 (инкрементальный)+15-25 €
КонтроллерODrive S1 $149, ODrive Micro $89, moteus r4.11 ~$86-99, Tinymovr €88~80-150 €
Редукторнапечатанная планетарка / циклоида, или готовый 1:6-1:105-80 €
Подшипники, крепёжтонкостенные подшипники 6808/61808 и т.п.10-20 €
Итого за сустав~150-300 €

ODrive S1 / Pro / Micro

Самая популярная экосистема. S1: 12-48 В, до 1.6-2 кВт, встроенный энкодер на плате, CAN, USB, UART, STEP/DIR. Python-пакет odrive и веб-GUI. Есть готовые наборы «S1 + мотор M8325s» от $279. Поддерживает мотор-колёса от гироскутеров.

mjbots moteus

Крошечная плата со встроенным абсолютным энкодером, питание и CAN-FD проходят цепочкой. Очень хорошая документация и Python/C++ библиотеки, используется в четвероногом Quad A1 и многих гуманоидах. Внимание: нужен CAN-FD (fdcanusb или pi3hat), обычный CAN-адаптер не подойдёт.

Tinymovr / SimpleFOC

Tinymovr - компактный контроллер, крепится на заднюю часть мотора, CAN 1 Мбит/с. SimpleFOC - библиотека для своих плат на STM32/ESP32. Хороши для обучения и лёгких суставов.
Совет. Если нет цели разобраться в электронике и механике глубоко, DIY-актуатор часто оказывается дороже по времени, чем готовый QDD. Но для первых 1-2 суставов на столе это лучший способ понять, как всё работает.

QDD и полностью интегрированные актуаторы

Quasi-direct drive (квази-прямой привод) - компромисс между direct drive и сервой: мощный плоский BLDC с маленьким редуктором 6:1 - 10:1. Этого хватает, чтобы умножить момент до нужных значений, но передаточное число ещё настолько мало, что сустав остаётся backdrivable: его можно провернуть рукой, и драйвер «чувствует» внешнюю силу по току - без отдельного датчика момента. Для шагающих роботов это критично: нога мягко принимает удар о землю, а не ломает шестерни, как у сервы.

Полностью интегрированный актуатор - это QDD (или планетарный с бОльшим передаточным числом), в котором мотор, редуктор, энкодер, иногда второй энкодер на выходе, драйвер и температурный датчик собраны в один «толстый цилиндр». Наружу выходят только два провода питания и пара проводов CAN. Все моторы на ноге подключаются цепочкой к одной шине.

Планетарка, передаточное число и прозрачность сустава

Солнце сидит на валу мотора, кольцо неподвижно, выход снимается с водила: i = 1 + Zкольца / Zсолнца. Нагрузку делят три сателлита, поэтому одна ступень компактна и держит большой момент. Меняйте передаточное число и толкайте выход «рукой»: видно, как растёт сила и как пропадает чувствительность к внешнему миру.

ротор = выход выход вход: солнце (вал мотора) кольцо неподвижно выход: водило (фиолетовое) Передаточное число → свойства прозрачность: доля толчка, которую видит драйвермомент на кг массы актуатора (лог. шкала)
9:1передаточное число
0пик на выходе при 1 Н·м на валу мотора
0отражённая инерция ротора (растёт как N²)
0момент страгивания выхода рукой
0толчка 2 Н·м увидит драйвер по току

Учебная модель, не расчёт конкретного актуатора: мотор 1 Н·м, КПД ступени 97%, масса мотора 0.3 кг + 0.08 кг на ступень, трение редуктора растёт с передаточным числом условно. Во время толчка драйвер в режиме нулевого момента и только измеряет ток. Для 36:1 и выше показана первая ступень, а стрелка «выход» учитывает все.

  • Питание 24-48 В
  • Номинал 3-40 Н·м, пик 9-120+ Н·м
  • Масса 0.3-2.5 кг
  • Скорость 100-500 об/мин на выходе
  • CAN 1 Мбит/с или CAN-FD, иногда RS-485 / EtherCAT
  • Режимы: позиция, скорость, момент, «MIT-режим» (импеданс)

Плюсы

  • Backdrivable, ударостойкий, быстрый
  • Управление моментом без датчика момента
  • Минимум проводки: питание + CAN цепочкой
  • Тише серв: шестерён мало, они большие
  • Готов к работе из коробки

Минусы

  • Дорого: от ~€120 до €600 за сустав
  • Закрытые прошивки, разные протоколы у разных брендов
  • При удержании позиции постоянно ест ток и греется
  • Тяжелее серв при равном моменте на малых размерах

Где лучше всего

Четвероногие и двуногие роботы, гуманоиды, экзоскелеты, коллаборативные руки, силовая обратная связь (телеоперация), любые суставы, которые касаются мира.

Популярные производители и цены

МодельПик / номиналРедукторМассаШинаЦена
CubeMars AK60-6~9 / 3 Н·м6:1~380 гCAN, UART$298.90
CubeMars AK70-1024.8 / 8.3 Н·м10:1621 гCANот $398.90
CubeMars AK80-922 Н·м пик9:1~500 гCANсм. магазин
Damiao DM-J4310-2EC~7 / 3 Н·м10:1~300 гCAN, 2 энкодера~€120
RobStride RS0217 / 7 Н·м7.75:1380 гCAN¥699 в Китае
RobStride RS0360 / 21 Н·м9:1900 гCAN¥999 в Китае
Unitree GO-M8010-623.7 Н·м пик6.33:1~530 гRS-485$369

Цены RobStride в юанях - официальный прайс производителя; у европейских реселлеров они заметно выше. У RobStride есть и RS04 на 120 Н·м для крупных гуманоидов. Ещё стоит посмотреть на MyActuator (серия RMD-X, CAN/EtherCAT) и SteadyWin (GIM). CubeMars пишет, что AK-серия (интегрированный драйвер) и AKE-серия (QDD без драйвера, «голый» модуль под свой контроллер) - разные линейки.

CAN: как с ними говорить

Почти все интегрированные актуаторы общаются по CAN. Это дифференциальная пара CANH/CANL, до 1 Мбит/с (CAN-FD - до 5-8 Мбит/с в фазе данных), до ~110 узлов на шине, по два терминатора 120 Ом на концах. Каждому мотору задаётся свой ID, и все висят на одном кабеле.

  • USB-CAN адаптер: CANine от Motionlayer - €34.50, USB-C, CAN 2.0A/B до 1 Мбит/с, встроенный переключаемый терминатор, прошивка slcan или candleLight (тогда в Linux это обычный can0 через SocketCAN). Подходит к Jetson Orin Nano, Raspberry Pi, ноутбуку. Аналоги: CANable, PEAK PCAN-USB, Waveshare USB-CAN.
  • Встроенный CAN на Jetson Orin: у модулей Orin есть контроллер CAN (драйвер mttcan), но нужен внешний трансивер вроде SN65HVD230 и настройка pinmux. USB-адаптер обычно быстрее запустить.
  • CAN-FD (для moteus): mjbots fdcanusb или pi3hat для Raspberry Pi с несколькими независимыми шинами - удобно выделить по шине на каждую ногу.
  • Unitree использует RS-485 - нужен USB-RS485 адаптер и их SDK.
Jetson / Pi / ПКROS 2, Python USB-CAN CANHCANL 120 Ом 120 Ом ID 1 ID 2 ID 3 ID 4 общая шина питания 24-48 В (толстый провод, предохранитель, e-stop) GND компьютера иGND моторов - общая
Одна CAN-шина: адаптер, моторы с уникальными ID, терминаторы 120 Ом на двух концах. Питание идёт отдельной толстой линией.

Шаговые моторы

Полный шаг, полушаг, микрошаг и потеря позиции

Две фазы создают поле с компонентами A и B. Полный шаг резко меняет его направление, полушаг добавляет промежуточные положения. При микрошаге токи IA = cos(θ), IB = sin(θ) дробят этот переход на маленькие приращения. Зубчатый ротор следует за полем, но только пока хватает момента.

ABA′B′ Зелёный: вал; пунктир: команда
Токи за электрический циклA: cos(θ)B: sin(θ) +10−10°360° Стрелка: поле A + Bθэл = 4 × θвала
0.0°заданная позиция вала
0.0°фактическая позиция
0.0ошибка в полных шагах

Учебная модель, не расчёт динамики: четыре периода зубцов на оборот, поэтому полный шаг увеличен до 22.5° (у типичного гибридного мотора 1.8°). Четыре крупных зубца подчёркивают периодичность; расположение фаз условное, это не чертёж статора реального гибридного мотора. При нагрузке больше 100% вал блокируется тормозом, а команды продолжаются. После снятия тормоза ротор захватывается ближайшим устойчивым положением, но пропущенные обороты электрического поля не восстанавливаются. Ошибку видим мы; драйвер без энкодера её не знает. «Сброс позиции» условно выполняет поиск нуля, а не просто обнуляет счётчик STEP.

Шаговый мотор двигается дискретными шагами. Драйвер получает два сигнала: STEP (один импульс = один шаг) и DIR (направление). Число шагов и есть позиция, поэтому энкодер не нужен. Размеры стандартизованы: NEMA 17 (42 мм, 3D-принтеры), NEMA 23 (57 мм, ЧПУ), NEMA 34 (86 мм, станки).

  • 1.8° (200 шагов) или 0.9°
  • Микрошаг до 1/256
  • NEMA 17: 0.4-0.6 Н·м
  • NEMA 23: 1-3 Н·м
  • NEMA 34: 4-12 Н·м
  • Драйвер 12-48 В (и выше для NEMA 34)

Плюсы

  • Точная позиция без энкодера
  • Большой момент на малых оборотах, держит нагрузку на месте
  • Дёшево, стандартные размеры и крепления
  • Простое управление STEP/DIR

Минусы

  • Пропуск шагов без обратной связи
  • Ток течёт всегда - греется даже стоя
  • Резонансы, вибрация, шум (лечится TMC-драйверами)
  • Тяжёлый для своего момента, слабеет на скорости
  • Не backdrivable, плохо для динамики

Где лучше всего

Линейные оси (ремень, винт), 3D-принтеры, ЧПУ, поворотные столы, настольные манипуляторы с медленными движениями, дозаторы, фокусировка камер. Для ног - нет.

Драйверы и библиотеки

  • TMC2209 (BigTreeTech и др., 5-10 €) - до 2 А RMS, 4.75-28 В, StealthChop (почти бесшумно), StallGuard (обнаружение упора без концевика), настройка по UART. Библиотека TMCStepper.
  • Для NEMA 23/34 - DM542 / DM556 или закрытый контур StepperOnline CL57T ($33-51): энкодер на моторе, шаги не теряются.
  • Генерация импульсов: AccelStepper (разгон и торможение), FastAccelStepper (аппаратные таймеры ESP32/AVR, до десятков кГц), прошивки Klipper / grblHAL / FluidNC для многоосевых систем.

Где купить: StepperOnline - всё от NEMA 8 до 34, комплект NEMA 17 closed loop + драйвер $46.64; LDO Motors, Moons', Trinamic/ADI.

Мотор-колёса (hub motors)

BLDC outrunner, у которого колокол - это и есть обод колеса с шиной. Самый доступный источник - гироскутеры (hoverboard): 6.5" колесо, 36 В, ~250-350 Вт, датчики Холла, пара колёс с рынка б/у стоит копейки. Новые 6.5-10" хаб-моторы с энкодером для AGV продаются на AliExpress примерно за $120-130 за штуку с заявленной нагрузкой до 200 кг на колесо.

Плюсы

  • Нет редуктора, цепей, ремней - нечему ломаться
  • Большой момент на низкой скорости (10-20+ Н·м)
  • Подшипники рассчитаны на вес человека
  • Тихо, есть рекуперация

Минусы

  • Тяжёлые (2.5-4 кг каждое)
  • Датчики Холла грубые - для точного позиционирования на месте нужен энкодер
  • Нужен FOC-драйвер на 36-48 В

Где лучше всего

Колёсные платформы 20-300 кг: садовые роботы, тележки-доставщики, «платформа за человеком», AGV, мобильная база манипулятора.
  • Драйверы: ODrive (S1 на колесо, Pro на тяжёлые; у ODrive есть руководство по гироскутерным моторам), VESC, или родная плата гироскутера с прошивкой hoverboard-firmware-hack-FOC (FOC, управление по UART) - почти бесплатный драйвер на два колеса.

Силовые приводы: AC-сервы, червячные, линейные актуаторы

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

Промышленные AC-сервы

Синхронный мотор с абсолютным энкодером (17-23 бит) и отдельным серво-драйвером, 220 В переменного или 48 В постоянного тока, управление STEP/DIR, RS-485 (Modbus), CANopen или EtherCAT. С планетарным редуктором 10:1 - 50:1 даёт сотни Н·м. StepperOnline A6 750 Вт с драйвером - от $116, у Delta, Leadshine, Yaskawa - дороже. Есть версии с электромагнитным тормозом.

Червячные мотор-редукторы

Коллекторный или BLDC-мотор с червячной передачей 30:1 - 100:1. Главное свойство - самоторможение: без питания груз не падает. Минусы - КПД 40-70%, медленно, греется. Сюда же относятся моторы стеклоочистителей (12 В, ~10-20 Н·м, дёшево на разборках) - любимый приём робо-боев и DIY-подъёмников.

Линейные актуаторы

Мотор + винтовая передача: толкает шток с силой 500-10 000 Н (50-1000 кг). Встроенные концевики, часто потенциометр или датчик Холла для обратной связи, самоторможение. Управляются как коллекторный мотор (H-мост). Progressive Automations, Actuonix (миниатюрные), AliExpress за 30-100 €.

BLDC для электротранспорта

Моторы электроскейтов (63xx-80xx), мотор-колёса скутеров, e-bike с VESC или ODrive Pro. Лучший выбор «много мощности за разумные деньги» для платформ 100-300 кг.

Сводная таблица

КоллекторныйСерваBLDC + FOCГимбальныйQDDШаговыйHub
Шумсреднийвысокийнизкийочень низкийнизкийсредний*низкий
Backdrivableзависит от редукторанетдададанетда
Управление моментомгрубоенет / грубоеточноеточноеточноенетточное
Обратная связьопц. энкодершинные - даэнкодерэнкодервстроенанет (или closed loop)Холлы / энкодер
ИнтерфейсШИМ + DIRШИМ / UARTCAN / UART / USBCAN / SPICAN / CAN-FDSTEP/DIR, UARTCAN / UART / ШИМ
Питание6-24 В5-14 В12-56 В12-24 В24-48 В12-48 В24-48 В
Много штукдрайвер на каждыйшина - легкошинашинашина - очень легкодрайвер на каждыйшина
Сложность старта★☆☆★☆☆★★★★★☆★★☆★☆☆★★☆

* С TMC-драйвером в режиме StealthChop шаговый почти бесшумен на малых скоростях.

Управление из софта

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

ИнтерфейсКтоЧто вы шлётеНужен ли realtime в вашем коде
ШИМ + DIRколлекторные, ESC, хобби-сервыскважность или длину импульсада, если замыкаете контур по энкодеру сами
STEP / DIRшаговые, AC-сервыпоток импульсовда, генерация импульсов (таймеры МК)
UART / RS-485шинные сервы, Unitree, Modbusкоманды с ID: угол, скоростьнет, 100-1000 Гц достаточно
CAN / CAN-FDODrive, moteus, Tinymovr, CubeMars, Damiao, RobStrideпозиция, скорость, момент, Kp/Kdмягкий: 200-1000 Гц на Linux
EtherCATпромышленные сервы, дорогие актуаторыциклический обмен процессными даннымида, RT-ядро (IgH, SOEM)

Хобби-серва на Arduino

#include <Servo.h>
Servo s;
void setup() { s.attach(9); }          // сигнальный провод на пин 9
void loop() {
  s.write(0);   delay(1000);           // 1.0 мс импульс
  s.write(180); delay(1000);           // 2.0 мс импульс
}

Шаговый с TMC2209 и AccelStepper

#include <AccelStepper.h>
AccelStepper st(AccelStepper::DRIVER, 2, 3);  // STEP=2, DIR=3
void setup() {
  st.setMaxSpeed(4000);       // шагов/с (с учётом микрошага)
  st.setAcceleration(8000);
  st.moveTo(3200);            // 1 оборот при 1/16 микрошага
}
void loop() { st.run(); }     // вызывать как можно чаще

ODrive из Python (прошивка 0.6)

import odrive
from odrive.enums import AxisState, ControlMode

odrv = odrive.find_any()                      # USB
ax = odrv.axis0
ax.controller.config.control_mode = ControlMode.POSITION_CONTROL
ax.requested_state = AxisState.CLOSED_LOOP_CONTROL
ax.controller.input_pos = 2.5                 # в оборотах мотора
print(ax.pos_vel_mapper.pos_rel, ax.motor.foc.Iq_measured)

На роботе вместо USB используют CAN (протокол CANSimple, есть пакет odrive_can для ROS 2).

moteus по CAN-FD

import asyncio, math, moteus

async def main():
    c = moteus.Controller(id=1)
    await c.set_stop()                        # сбросить ошибки
    while True:
        state = await c.set_position(position=math.nan, velocity=0.5,
                                     maximum_torque=2.0, query=True)
        print(state.values[moteus.Register.POSITION])
        await asyncio.sleep(0.01)

asyncio.run(main())

«MIT-режим» (CubeMars, Damiao и многие клоны)

Самый распространённый протокол для QDD пришёл из Mini Cheetah. В одном 8-байтном CAN-кадре вы шлёте сразу желаемую позицию, скорость, жёсткость Kp, демпфирование Kd и момент прямой подачи. Драйвер сам считает τ = Kp·(p_des - p) + Kd·(v_des - v) + τ_ff на своей частоте. Это и есть импедансное управление: маленький Kp - мягкая «пружинящая» нога, большой - жёсткая.

import can

def f2u(x, lo, hi, bits):                     # float -> беззнаковое целое
    x = min(max(x, lo), hi)
    return int((x - lo) * ((1 << bits) - 1) / (hi - lo))

# Диапазоны берите из даташита своей модели! Здесь пример для AK70-10.
P, V, T, KP, KD = 12.5, 50.0, 25.0, 500.0, 5.0

def mit_frame(p, v, kp, kd, t):
    p_i, v_i = f2u(p, -P, P, 16), f2u(v, -V, V, 12)
    kp_i, kd_i, t_i = f2u(kp, 0, KP, 12), f2u(kd, 0, KD, 12), f2u(t, -T, T, 12)
    return bytes([p_i >> 8, p_i & 0xFF, v_i >> 4,
                  ((v_i & 0xF) << 4) | (kp_i >> 8), kp_i & 0xFF,
                  kd_i >> 4, ((kd_i & 0xF) << 4) | (t_i >> 8), t_i & 0xFF])

bus = can.Bus(interface="socketcan", channel="can0", bitrate=1_000_000)
ENTER = bytes([0xFF] * 7 + [0xFC])            # войти в режим управления
bus.send(can.Message(arbitration_id=1, data=ENTER, is_extended_id=False))
bus.send(can.Message(arbitration_id=1, data=mit_frame(0.5, 0, 20, 1, 0),
                     is_extended_id=False))
print(bus.recv(0.01))                          # ответ: позиция, скорость, ток

Поднять CANine в режиме candleLight в Linux: sudo ip link set can0 up type can bitrate 1000000. Для slcan-прошивки используйте interface="slcan" в python-can.

Библиотеки и фреймворки

  • python-can - универсальный CAN из Python (SocketCAN, slcan, PCAN, Kvaser).
  • ros2_control - стандартный слой ROS 2: пишете (или берёте готовый) hardware interface для своих моторов, и получаете контроллеры траекторий, diff drive, gravity compensation и т.д. Готовые интерфейсы есть для Dynamixel, ODrive, moteus, CubeMars, Feetech.
  • LeRobot - обучение политик на руках с Feetech/Dynamixel.
  • SimpleFOC, moteus, ODrive docs, гайд CubeMars, RobStride на Seeed Wiki.

Много моторов: насколько удобно подключать

Отдельный драйвер на мотор

Коллекторные и шаговые: каждый мотор - свой драйвер, свои 2-4 пина МК (ШИМ, DIR, энкодер A/B). На 4 колеса это нормально, на 12 суставов - клубок проводов и нехватка таймеров. Решение - вынести драйверы на отдельную плату (RoboClaw по UART, плата ЧПУ с 4-6 драйверами).

Шина цепочкой

Шинные сервы, QDD, ODrive/moteus: один кабель от мотора к мотору, у каждого ID. 12 суставов собаки - это 4 кабеля по ноге. Главное - заранее прошить разные ID, выставить одинаковую скорость шины и поставить терминаторы.

Пропускная способность

CAN 1 Мбит/с: кадр с 8 байтами ≈ 110-130 бит, команда + ответ ≈ 250 бит. Это ~4000 обменов в секунду - например, 6-8 моторов по 500 Гц. Поэтому у четвероногих обычно по шине на ногу (3 мотора × 1 кГц). CAN-FD и EtherCAT дают запас в разы.
Практические грабли. Два мотора с одинаковым ID ломают шину молча. Нет терминаторов или их три - случайные ошибки на скорости 1 Мбит/с. Длинные «звёзды» вместо линии - отражения. Витая пара для CANH/CANL и общий GND обязательны. Обновляйте моторы по одному, записывая ID на корпусе.

Питание

Какое напряжение

  • 5-8 В - хобби-сервы (отдельный BEC на 5-10 А, не с пина Arduino!)
  • 12 В - коллекторные моторы, шинные сервы, NEMA 17
  • 24 В - средние роботы, шаговые, ODrive/moteus в лёгких роботах
  • 48 В - QDD-актуаторы, мотор-колёса, всё тяжёлое. Меньше ток при той же мощности → тоньше провода и меньше нагрев

Источник

  • LiPo 6S/12S (22.2 / 44.4 В) - большие токи, лёгкие, но требуют осторожности и BMS/мониторинга
  • Li-ion 10S-13S (36-48 В) из электросамокатов/велосипедов - с готовой BMS, дешевле, но ток ограничен BMS
  • БП на стенде - только с защитой от рекуперации

Рекуперация

При торможении BLDC становится генератором и поднимает напряжение на шине. Батарея это съест, лабораторный БП - нет: драйвер уйдёт в ошибку перенапряжения или сгорит. Нужен тормозной резистор (brake resistor) или регенеративный клапан (у ODrive продаётся Regen Clamp).

Схема питания, которая не подведёт

  1. Батарея → предохранитель → аварийная кнопка (e-stop), которая физически разрывает силовую линию моторов → анти-искровой разъём (XT90-S) или схема предзаряда → шина моторов.
  2. Толстые провода: 48 В × 20 А суммарно - уже 12-14 AWG. Разъёмы XT30/XT60/XT90 по току.
  3. Логика (Jetson, Raspberry Pi, датчики) - через отдельный DC-DC. Просадки напряжения при старте моторов не должны перезагружать компьютер.
  4. Общая земля логики и драйверов, но без «земляных петель» через толстые силовые провода.
  5. Для QDD: пиковый ток всех суставов при прыжке может быть в 3-5 раз выше среднего - батарея и BMS должны это выдерживать.

Сценарии

1. Силовые приводы: платформа или подъёмник от 100 кг

Пример: тележка 150 кг (с грузом) должна ехать 1.5 м/с и заезжать на уклон 10%. На колёсах радиусом 10 см: сила сопротивления ≈ m·g·(sin α + Crr) = 150 × 9.81 × (0.1 + 0.02) ≈ 176 Н, плюс разгон 0.5 м/с² даёт +75 Н. Итого ~250 Н, то есть ~25 Н·м на всех ведущих колёсах, по ~12.5 Н·м на каждое из двух. Проверьте нужный момент при выборе мотора и редуктора.

Что брать

  • Колёсная база: 2-4 хаб-мотора 8-10" на 36-48 В + ODrive Pro/S1 или VESC. Дёшево и мощно.
  • Если нужна точность и тормоз: AC-серво 400-750 Вт с тормозом + планетарный редуктор 10:1 - 20:1.
  • Подъём/вертикальная ось: червячный мотор-редуктор или линейный актуатор - самоторможение, груз не падает при отключении питания.

На что обратить внимание

  • Электромагнитные тормоза (fail-safe: зажаты без питания)
  • E-stop, ограничение скорости, бамперы
  • Номинальный, а не пиковый момент - платформа везёт груз долго
  • Нагрев в корпусе, IP-защита на улице
  • Рекуперация на спусках - тормозной резистор

2. Шагающие роботы до 100 кг

Главное требование - прозрачный, ударостойкий сустав с управлением моментом, то есть QDD. Грубая прикидка пикового момента в колене: вес, который приходится на одну ногу при беге, умножить на плечо (при сильно согнутой ноге - ~0.7-0.8 длины сегмента) и на коэффициент динамики 1.5-3.

РоботКолено (пик)КандидатыБюджет на суставы
Четвероногий 3-8 кг (учебный)5-12 Н·мDamiao J4310, CubeMars AK60-6, DIY 5010/6374 + moteus/ODrive Micro. Для самых лёгких - STS321512 × 120-300 € ≈ 1.5-3.5 тыс. €
Четвероногий 10-30 кг20-45 Н·мRobStride RS02/RS03, CubeMars AK70-10 / AK80-9, Unitree GO-M8010-6 (у Go1 - с доп. редукцией в колене)12 × 150-450 € ≈ 2-5.5 тыс. €
Гуманоид / четвероногий 40-100 кг80-200+ Н·мRobStride RS03/RS04, CubeMars AK10-9 и выше, MyActuator RMD-X, в коленях - ременная/рычажная доп. редукция или циклоидные/волновые редукторыот 5-10 тыс. € и выше
  • Для ориентира: MIT Mini Cheetah (~9 кг) использует актуаторы с пиком ~17 Н·м при редукторе 6:1, у колена есть дополнительная передача.
  • Моторы ставят как можно ближе к корпусу (бедро), а колено приводят ремнём или тягой - это уменьшает инерцию ноги.
  • Управление: MIT-режим на 500-1000 Гц, по CAN-шине на ногу, Jetson Orin / Raspberry Pi 5 / x86 с RT-патчем, ROS 2 + ros2_control или собственный цикл на C++. Политику часто обучают в симуляторе (Isaac Lab, MuJoCo).
  • Питание 24-48 В, батарея с высоким пиковым током, обязательный e-stop и «безопасное приземление» (переход в демпфирование) при потере связи.

3. Колёсные роботы до 30 кг

Здесь хватает самых простых решений. Для 30 кг, колёс 150 мм и скорости 1 м/с нужно порядка 2-4 Н·м на каждое из двух ведущих колёс с учётом уклона и разгона.

Бюджет и простота

Коллекторные мотор-редукторы 24 В с энкодером (Pololu 37D, goBILDA Yellow Jacket) + RoboClaw 2x15A или Cytron MDD20A. ESP32/Arduino считает энкодеры, Raspberry Pi/Jetson шлёт скорости. ROS 2: diff_drive_controller. На 2 колеса ~100-250 €.

Тихо и мощно

Пара гироскутерных мотор-колёс + ODrive S1 на каждое колесо или плата гироскутера с hoverboard-firmware-hack-FOC. Легко тянет и 30, и 80 кг. Минус - вес колёс и 36 В батарея.

Точные и компактные

Маленький BLDC с планетаркой (goBILDA-подобный или QDD типа Damiao/AK60 в режиме скорости). Дороже, но есть управление моментом - полезно для балансирующих роботов (сегвей-схема).

Всенаправленным платформам (mecanum, omni) нужно 4 мотора с энкодерами и замкнутым контуром скорости - шаговые здесь работают хуже, чем мотор-редукторы с энкодером.

С чего начать

  1. Колёсный робот: два мотор-редуктора 24 В с энкодером, RoboClaw, Raspberry Pi 5, ROS 2 diff_drive_controller. Всё заведётся за выходные.
  2. Понять FOC: гимбальный мотор + SimpleFOC или Tinymovr. Покрутите режимы позиции, скорости и момента, почувствуйте рукой «виртуальную пружину».
  3. Рука на столе: 6 × STS3215 (набор SO-ARM101) + LeRobot - шинные сервы и обучение политик.
  4. Первый QDD-сустав: один Damiao J4310 или CubeMars AK60-6 + CANine + python-can. Когда один сустав слушается в MIT-режиме, 12 суставов - вопрос масштабирования.
  5. Большая платформа: гироскутерные колёса + ODrive или VESC, с e-stop с первого дня.
Безопасность. QDD на 48 В с пиком 60 Н·м легко ломает пальцы. Первые запуски - с ограничением тока и момента в настройках драйвера, с аварийной кнопкой в руке и роботом, подвешенным над столом.