Введение в робототехнику: типы моторов
Мотор - это то, что превращает код в движение. От выбора мотора зависит всё остальное: какое нужно питание, какой контроллер, по какой шине с ним говорить, сколько будет стоить сустав и сможет ли робот вообще встать. Эта статья - обзорная карта: как устроены основные типы моторов, чем их питать и чем ими управлять, где их купить, и что брать под три типичных задачи - силовую платформу от 100 кг, шагающего робота до 100 кг и колёсного робота до 30 кг.
Цены - ориентировочные на сентябрь 2026 года, взяты с сайтов магазинов по ссылкам. В разных регионах добавляются доставка, НДС и пошлины.
- Базовые понятия: момент, KV, редуктор, FOC
- Карта типов моторов
- Коллекторные (brushed) DC
- Хобби-сервоприводы и умные сервы
- Бесколлекторные (BLDC) для дронов
- Гимбальные моторы (direct drive)
- BLDC + энкодер + планетарка + ODrive
- QDD и интегрированные актуаторы
- Шаговые моторы
- Мотор-колёса (hub motors)
- Силовые: AC-сервы, червячные, линейные
- Сводная таблица
- Управление из софта
- Много моторов: шины и проводка
- Питание
- Сценарии: 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. Даёт тихую работу, плавный момент на нулевой скорости и управление по току (то есть по моменту).Контуры управления
Позиция → скорость → ток. В хороших драйверах есть все три, и можно задавать любую цель: угол, скорость или момент.Карта типов моторов
Грубо все моторы для роботов делятся по двум осям: есть ли щётки (коллекторный или бесколлекторный) и сколько интеграции в корпусе (голый мотор → мотор с редуктором → мотор с редуктором, энкодером и драйвером, говорящий по шине). Чем больше интеграции, тем дороже штука, но тем меньше проводов и отладки.
| Тип | Цена за сустав | Главный плюс | Главный минус | Где брать |
|---|---|---|---|---|
| Коллекторный + редуктор | 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-моторы
Самый старый и самый простой тип. Подключил к батарейке - крутится, поменял полярность - крутится в обратную сторону. Голый коллекторный мотор слишком быстрый (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 €, но разброс качества большой.
Хобби-сервоприводы и умные сервы
Серва - это коллекторный (реже бесколлекторный) мотор с редуктором и датчиком угла в одном корпусе. Вы говорите «встань на 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, ESP32ESP32Servo. Больше 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.
Плюсы
- Лучшая мощность и момент на грамм
- Нет щёток - долгий ресурс, тишина
- Дёшево: 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).
Из чего складывается цена
| Компонент | Пример | Цена |
|---|---|---|
| Мотор | 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:10 | 5-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. Хороши для обучения и лёгких суставов.QDD и полностью интегрированные актуаторы
Quasi-direct drive (квази-прямой привод) - компромисс между direct drive и сервой: мощный плоский BLDC с маленьким редуктором 6:1 - 10:1. Этого хватает, чтобы умножить момент до нужных значений, но передаточное число ещё настолько мало, что сустав остаётся backdrivable: его можно провернуть рукой, и драйвер «чувствует» внешнюю силу по току - без отдельного датчика момента. Для шагающих роботов это критично: нога мягко принимает удар о землю, а не ломает шестерни, как у сервы.
Полностью интегрированный актуатор - это QDD (или планетарный с бОльшим передаточным числом), в котором мотор, редуктор, энкодер, иногда второй энкодер на выходе, драйвер и температурный датчик собраны в один «толстый цилиндр». Наружу выходят только два провода питания и пара проводов CAN. Все моторы на ноге подключаются цепочкой к одной шине.
- Питание 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-10 | 24.8 / 8.3 Н·м | 10:1 | 621 г | CAN | от $398.90 |
| CubeMars AK80-9 | 22 Н·м пик | 9:1 | ~500 г | CAN | см. магазин |
| Damiao DM-J4310-2EC | ~7 / 3 Н·м | 10:1 | ~300 г | CAN, 2 энкодера | ~€120 |
| RobStride RS02 | 17 / 7 Н·м | 7.75:1 | 380 г | CAN | ¥699 в Китае |
| RobStride RS03 | 60 / 21 Н·м | 9:1 | 900 г | CAN | ¥999 в Китае |
| Unitree GO-M8010-6 | 23.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.
Шаговые моторы
Шаговый мотор двигается дискретными шагами. Драйвер получает два сигнала: 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 | ШИМ / UART | CAN / UART / USB | CAN / SPI | CAN / CAN-FD | STEP/DIR, UART | CAN / 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-FD | ODrive, 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 дают запас в разы.Питание
Какое напряжение
- 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).Схема питания, которая не подведёт
- Батарея → предохранитель → аварийная кнопка (e-stop), которая физически разрывает силовую линию моторов → анти-искровой разъём (XT90-S) или схема предзаряда → шина моторов.
- Толстые провода: 48 В × 20 А суммарно - уже 12-14 AWG. Разъёмы XT30/XT60/XT90 по току.
- Логика (Jetson, Raspberry Pi, датчики) - через отдельный DC-DC. Просадки напряжения при старте моторов не должны перезагружать компьютер.
- Общая земля логики и драйверов, но без «земляных петель» через толстые силовые провода.
- Для 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. Для самых лёгких - STS3215 | 12 × 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 мотора с энкодерами и замкнутым контуром скорости - шаговые здесь работают хуже, чем мотор-редукторы с энкодером.
Калькулятор момента
Колёсный робот: момент на колесо
Шагающий робот: грубая оценка момента в колене
С чего начать
- Колёсный робот: два мотор-редуктора 24 В с энкодером, RoboClaw, Raspberry Pi 5, ROS 2
diff_drive_controller. Всё заведётся за выходные. - Понять FOC: гимбальный мотор + SimpleFOC или Tinymovr. Покрутите режимы позиции, скорости и момента, почувствуйте рукой «виртуальную пружину».
- Рука на столе: 6 × STS3215 (набор SO-ARM101) + LeRobot - шинные сервы и обучение политик.
- Первый QDD-сустав: один Damiao J4310 или CubeMars AK60-6 + CANine + python-can. Когда один сустав слушается в MIT-режиме, 12 суставов - вопрос масштабирования.
- Большая платформа: гироскутерные колёса + ODrive или VESC, с e-stop с первого дня.