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

Разрезы разных моторов для роботов: коллекторный, серво, бесколлекторный, шаговый, 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+ кг, шагающие, колёсные
  17. Калькулятор момента

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

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

Момент (Н·м)

Сила вращения. 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-моторы

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

Самый старый и самый простой тип. Подключил к батарейке - крутится, поменял полярность - крутится в обратную сторону. Голый коллекторный мотор слишком быстрый (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, но для чего-то тяжелее пары килограммов они слабоваты.

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

DC-мотор редуктор 100-300:1 потенц. плата: компаратор + H-мост выходной вал GND / +5-8 В / сигнал ШИМ
Внутри хобби-сервы: маленький DC-мотор, большой редуктор, потенциометр на выходном валу и плата, которая сравнивает угол с командой.
Период 20 мс (50 Гц) 1.0 мс → 0° 1.5 мс → 90° (центр) 2.0 мс → 180°
Классическая серва понимает длину импульса. Цифровая серва принимает тот же сигнал, но внутри обновляет мотор чаще (300+ Гц): держит крепче, но громче пищит.

Серва - это коллекторный (реже бесколлекторный) мотор с редуктором и датчиком угла в одном корпусе. Вы говорите «встань на 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) моторы для дронов

вращается колокол с магнитами, статор неподвижен
Outrunner: 9 зубцов статора с медными обмотками (3 фазы) и 12 магнитов на вращающемся колоколе (конфигурация 9N12P). Щёток нет - ток переключает электроника.
Три фазы, сдвинутые на 120° ABC ESC (трапеция): 6 шагов, по back-EMF FOC (синус): плавно, нужен угол ротора Без датчика ротор «теряется» на малых оборотах
BLDC требует электронной коммутации: контроллер сам решает, какую фазу когда включить. Для пропеллеров хватает простого ESC, для суставов нужен FOC с энкодером.

Бесколлекторный мотор - это «вывернутый наизнанку» коллекторный: обмотки неподвижны, магниты вращаются, а переключение тока делает контроллер. Отсюда высокий КПД (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солнца
Одноступенчатая планетарка компактна и держит большой момент, потому что нагрузку делят три сателлита. Типичное передаточное число QDD: 6:1 - 10:1.
Передаточное число → свойства 1:16-10:130-50:1100-300:1 directQDDпланетаркасерва прозрачность, удары момент на вес
Чем больше передаточное число, тем сильнее сустав на единицу массы, но тем хуже он чувствует внешние силы и переносит удары.
  • Питание 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 Ом на двух концах. Питание идёт отдельной толстой линией.

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

AA'BB' зубчатый ротор, 8 полюсов, фазы A и B
Гибридный шаговый мотор: драйвер по очереди включает фазы A и B, ротор «перещёлкивается» на следующий зубец. 200 шагов на оборот = 1.8° на шаг.
об/минмомент шаговый BLDC/серво силён на месте, быстро слабеет с оборотами
Типичная кривая: шаговик держит максимальный момент на месте, но уже к 600-1000 об/мин теряет большую его часть. Если нагрузка превысит момент - мотор пропустит шаги, а открытый контур этого не заметит.

Шаговый мотор двигается дискретными шагами. Драйвер получает два сигнала: 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/3)

С чего начать

  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 Н·м легко ломает пальцы. Первые запуски - с ограничением тока и момента в настройках драйвера, с аварийной кнопкой в руке и роботом, подвешенным над столом.