Устройство робота
В уроке 0.1 сеть выдавала команду, и захват Ады сразу сдвигался ровно туда, куда она велела. У настоящего робота команду исполняют моторы с редукторами, а о себе и о мире он узнаёт по шумным сенсорам. Политика, которую учили на упрощённой модели тела, на настоящем роботе получает другой отклик. Разберём тело робота по частям, от того, что видит политика, до моторов, а в конце закроем разрыв между приводом в симуляторе и настоящим приводом маленькой нейросетью.
Ада — домашний гуманоидный робот, на котором построены лабораторные работы курса. Подробнее о ней — в уроке 0.1.
Что видит и чем управляет политика
Что политика получает на вход и что выдаёт? Языковая модель отвечает текстом и может думать над ответом сколько угодно: пользователь подождёт. У робота так не выйдет. Пока сеть считает, Ада продолжает ехать, падать или сжимать чашку, а моторам новые команды нужны тысячи раз в секунду. Большая сеть так часто не успевает.
Поэтому управление делят на этажи. Быстрый нижний этаж держит моторы, медленный верхний решает, что делать. Нейросеть обычно живёт посередине: несколько десятков раз в секунду она выдаёт цели для регуляторов, а моторами управляют уже они.
Нажимай на части робота: что там стоит, с какой частотой работает и что из этого получает политика. Ниже те же вопросы для четырёх известных роботов.
Четыре робота рядом
Итак, все четыре политики получают углы суставов, к ним добавляют камеры или IMU, а выдают целевые углы, которые исполняют регуляторы. Политика управляет суставами. Сколько их нужно, чтобы дотянуться до цели?
Сустав — одна степень свободы
Сколько суставов нужно руке? Каждый сустав добавляет одну степень свободы — угол, который можно менять. У захвата на плоскости две координаты, поэтому кажется, что двух суставов хватит. Но двухзвенной руке в каждую точку ведут только две позы: локоть вверх и локоть вниз. Если обе задевают препятствие, до цели не дотянуться.
Выход — добавить третий сустав. Он не удлиняет руку, но даёт свободу выбирать позу, не сдвигая захват. Ниже две задачи: захват и локоть тянут мышью или пальцем.
Под капотом: как рука выбирает позу
Когда ты тянешь захват, рука решает обратную задачу кинематики: какие углы суставов поставят захват в нужную точку. У двух звеньев длиной и ответ находится по теореме косинусов, и решений всегда два — с локтем по разные стороны от линии «плечо → захват»:
У трёх звеньев решений бесконечно много, и нужно правило выбора. В первой задаче сцена держит кисть вертикально, в остальных — угол кисти, который был в начале перетаскивания. Если так не дотянуться, берётся ближайший возможный угол. Когда тянут локоть, захват закреплён: локоть ходит по окружности вокруг плеча, а два оставшихся звена каждый раз заново решают двухзвенную задачу до захвата. Это и есть движение в нуль-пространстве.
Столкновения проверяются по осям звеньев: звено считается толщиной 4,4 см, коробка, лампа и стол — прямоугольники. Рабочая зона — клетки по 2,5 см, в которые захват можно поставить хотя бы одной позой без столкновений.
Лишний сустав даёт выбор позы: захват стоит на месте, а локоть уходит от препятствия. Но в этой сцене суставы вставали в нужный угол сами. В настоящем суставе звено поворачивает мотор. Хватит ли ему сил?
Редуктор и удар
Одному мотору сил не хватит. Он быстрый, но слабый: в лаборатории он выдаёт 1,6 Н·м, а колену прыгающего робота нужно не меньше 18.
Обычное решение — поставить между мотором и звеном редуктор. С передаточным числом он умножает момент в раз и во столько же раз снижает скорость. Кажется, что чем больше , тем лучше.
Проверим, чем платят за большое передаточное число. На сцене два одинаковых сустава с разными редукторами: 6:1, как у Mini Cheetah, и 100:1, как у волнового редуктора. Толчок и удар достаются обоим сразу, поэтому разницу видно на одной сцене.
Под капотом: что делает редуктор
Редуктор с передаточным числом умножает момент мотора и делит его скорость. Инерция ротора, «пересчитанная» на выход, растёт как квадрат :
При ударе о жёсткую стену с жёсткостью на скорости пик момента растёт примерно как : чем больше эффективная инерция, тем сильнее удар. У MIT Cheetah 2 инерция ротора 3,03·10⁻⁴ кг·м² при передаточном числе 5,8 даёт на выходе около 0,01 кг·м². Прямой привод с тем же моментом потребовал бы мотор диаметром 76 см.
В лаборатории: инерция ротора 1,2·10⁻⁴ кг·м², пиковый момент мотора 1,6 Н·м, инерция звена 0,09 кг·м². Трение в редукторе растёт с : кулоновское Н·м плюс вязкое. Стена — пружина с демпфером, звено разгоняется до 3 рад/с. Когда звено тянут мышью, рука действует как пружина между пальцем и концом звена, а мотор выключен.
Малое передаточное число даёт ещё одно преимущество: момент можно оценивать по току мотора: . Так MIT Cheetah обходится без датчиков силы в ногах. Плата — ошибка оценки: у Cheetah 3 трение в редукторе даёт около ±10%.
Большое передаточное число даёт момент, но инерция ротора на выходе растёт как его квадрат. Привод теряет обратимость (backdrivability): внешний толчок почти не проворачивает мотор, а при ударе привод бьёт сильнее. Малое передаточное число прозрачно и бьёт мягче, но даёт мало момента. Как ещё инженеры ищут компромисс?
Шесть способов двигать сустав
Передаточное число — не единственный способ найти компромисс между моментом, ударом и весом. Инженеры ставят пружину, выносят мотор из сустава, превращают вращение в линейное усилие или берут жидкость под давлением. Вот шесть приводов, которые стоят в известных роботах.
- Квазипрямой привод.Мощный мотор и малое передаточное число, около 6:1. Прозрачен, силу можно оценивать по току, удары переносит. Ноги MIT Mini Cheetah и роботов Unitree.
- Волновой редуктор.Передаточное число от 30 до 160 в одной компактной ступени, без люфта за счёт преднатяга. Стоит во вращательных суставах Tesla Optimus.
- Серийно-упругий привод.Пружина между редуктором и нагрузкой: устойчивое управление силой и защита от ударов ценой полосы пропускания. Двенадцать таких приводов в ногах ANYmal.
- Планетарный роликовый винт.Превращает вращение в большое линейное усилие. Линейный привод Optimus поднимал рояль весом около полутонны.
- Тросы.Мотор стоит в стороне от сустава, а усилие передают тросы, поэтому конечность лёгкая. На тросах сделаны приводы 1X NEO: малая инерция, точность момента 2%.
- Гидравлика.Огромная мощность в малом объёме, но шумно, сложно и с утечками. У старого Atlas было 28 гидравлических суставов, в 2024 году Boston Dynamics перешла на электрику.
Есть и другие трансмиссии. Циклоидальные редукторы стоят в суставах промышленных роботов: на Nabtesco приходится около 60% этого рынка. Собственные циклоидальные приводы есть в ногах Digit 5.
Какой привод куда
Разложи восемь узлов настоящих роботов по типам приводов. Карточку можно перетащить или нажать, а потом нажать на корзину.
Привод выбирают под работу сустава: удары, большой момент, сила по прямой или лёгкая конечность. Но привод только исполняет команду. Чтобы выбрать следующую, политике нужно знать результат прошлой. Откуда она его узнаёт?
Что робот знает о себе и о мире
О результате команды политика узнаёт по сенсорам. И ни одному из них нельзя верить до конца: у каждого свои слабые места — шум, дрейф, задержка, частота.
Проприоцепция — сенсоры о собственном теле: энкодеры суставов, ток моторов как оценка момента, инерциальный блок IMU с гироскопом и акселерометром. Экстероцепция — о мире: камеры, датчики глубины, лидары, тактильные сенсоры.
Поэтому сенсоры объединяют так, чтобы один закрывал слабые места другого. Простой пример — угол наклона корпуса. Гироскоп меряет скорость поворота точно, но если её интегрировать, ошибка копится. Акселерометр видит направление силы тяжести и в среднем не врёт, но сильно шумит. На сцене три оценки наклона сразу: только по гироскопу, только по акселерометру и их смесь. Рядом с графиками за 10 секунд — корпус робота и линии, где его видит каждая оценка.
Под капотом: комплементарный фильтр
На каждом шаге оценку двигаем по гироскопу и слегка подтягиваем к углу из акселерометра:
По частоте это фильтр высоких частот для гироскопа и низких — для акселерометра: быстрые изменения берём у первого, медленное «где низ» — у второго. При и шаге 10 мс постоянная времени около полсекунды. В лаборатории у гироскопа смещение нуля 1,5 °/с и шум, у акселерометра шум с СКО 4° и всплески от ускорений корпуса. Кнопка «Встряхнуть робота» добавляет четыре коротких рывка: акселерометр принимает их за наклон, гироскоп их не видит, потому что меряет вращение. Фильтр Калмана делает то же самое оптимально, если известны модели шумов, — это урок 0.4.
По отдельности гироскоп дрейфует, а акселерометр шумит и путает рывок с наклоном. Вместе в комплементарном фильтре они ошибаются меньше чем на 2° даже при тряске. Но части робота работают с очень разной частотой: IMU выдаёт данные до 2 кГц, камера — около 30 кадров в секунду, политика — несколько десятков раз в секунду. Как они уживаются в одной системе?
Лестница частот
Части робота выстраивают в лестницу частот. Это те же этажи из начала урока: чем ниже этаж, тем быстрее он должен реагировать. Наверху медленная модель понимает речь и решает, что делать, внизу контур тока держит мотор, а сенсоры работают на разных этажах. Разложи десять узлов по полосам частот. После проверки откроется настоящая лестница с примерами из опубликованных систем.
Лестница частот
Шкала логарифмическая. Данные по опубликованным системам 2018–2026 годов.
Политика работает на этажах от 10 до 200 Гц и видит только то, как нижние этажи отработали её цели. Учат её часто в симуляторе. Насколько точно симулятор повторяет то, что лежит под политикой, — привод с его регулятором?
Модель привода по данным
Симулятор повторяет привод неточно. Политику для шагающего робота учат в симуляторе, а там привод идеальный. У настоящего есть задержка, трение и насыщение момента, а со временем появляется люфт. Политика, отлаженная на идеальном приводе, на настоящем получит другой отклик.
Можно попробовать вывести точную формулу привода. Для прямого привода это получается, а для сложных, например серийно-упругих приводов ANYmal, — нет.
Остаётся выучить модель привода по данным: записать, как настоящий привод отвечает на команды, и обучить маленькую сеть его повторять. Найдём, где симулятор и привод расходятся, закроем разрыв сетью и проверим, сколько для этого нужно данных и что будет, когда привод износится.
Обучение сети
Ошибка модели от объёма данных
Под капотом: что внутри
- Настоящий привод. Внутренний ПД-регулятор позиции, задержка команды 15 мс, насыщение момента, кулоновское и вязкое трение. Звено — маятник. Люфт по умолчанию нулевой, его добавляет ползунок в миссии «Износ привода». Энкодер стоит на моторе и люфта не видит: пока мотор выбирает зазор, момент на звено не передаётся.
- Модель из симулятора. Тот же ПД, но мгновенно и без нелинейностей.
- Данные. 20 секунд случайных команд, шаг 2,5 мс — около 8 тысяч примеров. Вход — ошибки позиции и скорости за последние 4 шага, выход — момент, который реально выдал привод.
- Сеть. 8 → 32 → 32 → 1 с tanh, Adam, 1500 итераций по 64 примера при любом объёме данных. После обучения сеть заменяет модель привода в симуляторе. Сеть видит только последние 10 мс истории, поэтому задержку длиннее этого она выучивает плохо.
Так поступили Хванбо и соавторы в 2019 году: точную аналитическую модель можно построить для прямого привода, но не для серийно-упругих приводов ANYmal. Модель привода выучили по данным, политику обучили в симуляторе с этой моделью, и робот побежал без дообучения на железе.
Сеть, обученная на 20 секундах данных, повторяет привод в 6 раз точнее идеальной модели, а для ошибки меньше 1° хватает и 5 секунд. Но модель знает только тот привод, на котором её учили: когда привод изнашивается, её приходится переобучать, а длинную задержку она выучивает хуже.
Восемь вопросов о типичных заблуждениях
Итоги урока
- Политика робота — интерфейс «наблюдение → действие» на определённой частоте. Обычно она выдаёт цели для регуляторов, а моторы держит быстрый нижний контур.
- Степени свободы — это суставы. Лишние степени свободы дают свободу позы при том же положении захвата.
- Передаточное число меняет момент на скорость, но инерция растёт как : при больших привод теряет обратимость и опаснее при ударе.
- Сенсоры шумят, дрейфуют и запаздывают. Их объединяют: от комплементарного фильтра до фильтра Калмана.
- Разрыв между симулятором и роботом часто начинается с привода. Его сокращают моделью привода, выученной по данным.
Открытые вопросы
Почему у робота-пылесоса и у четвероногого робота такие разные приводы?
Пылесосу нужна только скорость колёс, контактов с ударом почти нет, поэтому подходят дешёвые моторы с большим редуктором. Четвероногий робот бьётся о землю на каждом шаге и должен чувствовать силу контакта, поэтому ему нужны прозрачные приводы с малым передаточным числом.
Ты учишь политику для кисти с 20 степенями свободы. Какие сенсоры добавишь к камерам и зачем?
Энкодеры всех суставов для точного положения пальцев, оценку момента по току или датчики момента, чтобы чувствовать силу захвата, и тактильные сенсоры на подушечках: камера не видит контакт, когда пальцы закрывают предмет.
Гид по статье
Wensing et al., «Proprioceptive Actuator Design in the MIT Cheetah», IEEE T-RO, 2017.
- Читать внимательноЗачем нужен проприоцептивный привод, как устроен привод с большим зазором мотора и как силу оценивают по току.
- Можно пропуститьДетали электромагнитного расчёта мотора.
- Вопрос по ходуПочему последовательная пружина снижает собственную частоту ноги и что это значит для управления?
Материалы
- Learning agile and dynamic motor skills for legged robotsJ. Hwangbo et al., Science Robotics 2019 — модель привода по данным
- Mini Cheetah: сальто назадВидео MIT — квазипрямые приводы в деле
- Farewell to HD AtlasBoston Dynamics прощается с гидравлическим Atlas
Дальше: кинематика и управление. Мы разобрали, чем управляет политика. Остался вопрос, как её цель становится движением. В лаборатории с рукой углы суставов находились сами, стоило потянуть захват, а регуляторы суставов просто держали цель. Кто переводит позу захвата в углы суставов, как регулятор превращает цель в момент и почему нейросеть, выучившая кинематику, может промахнуться больше чем на 40 см, — урок 0.3.