Modern Robotics и Physical AIУрок 0.2 · Устройство робота
0.2 Часть 0 · Введение

Устройство робота

В уроке 0.1 сеть выдавала команду, и захват Ады сразу сдвигался ровно туда, куда она велела. У настоящего робота команду исполняют моторы с редукторами, а о себе и о мире он узнаёт по шумным сенсорам. Политика, которую учили на упрощённой модели тела, на настоящем роботе получает другой отклик. Разберём тело робота по частям, от того, что видит политика, до моторов, а в конце закроем разрыв между приводом в симуляторе и настоящим приводом маленькой нейросетью.

Ада — домашний гуманоидный робот, на котором построены лабораторные работы курса. Подробнее о ней — в уроке 0.1.

≈ 40 минут2 лаборатории и 5 интерактивовбез формул в основном тексте
ТЕЛОЧто получает и что выдаёт политика: схема гуманоида и четыре робота рядом
СУСТАВЫДотянись до чашки за коробкой и узнай, зачем руке третий сустав
УДАРПодбери передаточное число для колена прыгающего робота
IMUПодбери фильтр, который ошибается в наклоне меньше чем на 1,6°
МОДЕЛЬНайди, где симулятор расходится с приводом, и закрой разрыв сетью

Начать урок ↓

1 Вход и выход

Что видит и чем управляет политика

Что политика получает на вход и что выдаёт? Языковая модель отвечает текстом и может думать над ответом сколько угодно: пользователь подождёт. У робота так не выйдет. Пока сеть считает, Ада продолжает ехать, падать или сжимать чашку, а моторам новые команды нужны тысячи раз в секунду. Большая сеть так часто не успевает.

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

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

Четыре робота рядом

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

2 Степени свободы

Сустав — одна степень свободы

Сколько суставов нужно руке? Каждый сустав добавляет одну степень свободы — угол, который можно менять. У захвата на плоскости две координаты, поэтому кажется, что двух суставов хватит. Но двухзвенной руке в каждую точку ведут только две позы: локоть вверх и локоть вниз. Если обе задевают препятствие, до цели не дотянуться.

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

Под капотом: как рука выбирает позу

Когда ты тянешь захват, рука решает обратную задачу кинематики: какие углы суставов поставят захват в нужную точку. У двух звеньев длиной aa и bb ответ находится по теореме косинусов, и решений всегда два — с локтем по разные стороны от линии «плечо → захват»:

cos⁡q2=x2+y2−a2−b22ab,q2=±arccos⁡(…).\begin{gathered} \cos q_2 = \frac{x^2 + y^2 - a^2 - b^2}{2ab},\\ q_2 = \pm\arccos(\ldots). \end{gathered}

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

Столкновения проверяются по осям звеньев: звено считается толщиной 4,4 см, коробка, лампа и стол — прямоугольники. Рабочая зона — клетки по 2,5 см, в которые захват можно поставить хотя бы одной позой без столкновений.

Лишний сустав даёт выбор позы: захват стоит на месте, а локоть уходит от препятствия. Но в этой сцене суставы вставали в нужный угол сами. В настоящем суставе звено поворачивает мотор. Хватит ли ему сил?

🔬 Лаборатория 1

Редуктор и удар

Одному мотору сил не хватит. Он быстрый, но слабый: в лаборатории он выдаёт 1,6 Н·м, а колену прыгающего робота нужно не меньше 18.

Обычное решение — поставить между мотором и звеном редуктор. С передаточным числом NN он умножает момент в NN раз и во столько же раз снижает скорость. Кажется, что чем больше NN, тем лучше.

Проверим, чем платят за большое передаточное число. На сцене два одинаковых сустава с разными редукторами: 6:1, как у Mini Cheetah, и 100:1, как у волнового редуктора. Толчок и удар достаются обоим сразу, поэтому разницу видно на одной сцене.

Под капотом: что делает редуктор

Редуктор с передаточным числом NN умножает момент мотора и делит его скорость. Инерция ротора, «пересчитанная» на выход, растёт как квадрат NN:

τвыход=N τмотор,ωвыход=ωмотор/N,Jотражённая=N2Jротор,Jэфф=Jзвено+N2Jротор.\begin{aligned} \tau_{\text{выход}} &= N\,\tau_{\text{мотор}}, \\ \omega_{\text{выход}} &= \omega_{\text{мотор}} / N, \\ J_{\text{отражённая}} &= N^2 J_{\text{ротор}}, \\ J_{\text{эфф}} &= J_{\text{звено}} + N^2 J_{\text{ротор}}. \end{aligned}

При ударе о жёсткую стену с жёсткостью kk на скорости vv пик момента растёт примерно как vk Jэффv\sqrt{k\,J_{\text{эфф}}}: чем больше эффективная инерция, тем сильнее удар. У MIT Cheetah 2 инерция ротора 3,03·10⁻⁴ кг·м² при передаточном числе 5,8 даёт на выходе около 0,01 кг·м². Прямой привод с тем же моментом потребовал бы мотор диаметром 76 см.

В лаборатории: инерция ротора 1,2·10⁻⁴ кг·м², пиковый момент мотора 1,6 Н·м, инерция звена 0,09 кг·м². Трение в редукторе растёт с NN: кулоновское 0,02 N0{,}02\,N Н·м плюс вязкое. Стена — пружина с демпфером, звено разгоняется до 3 рад/с. Когда звено тянут мышью, рука действует как пружина между пальцем и концом звена, а мотор выключен.

Малое передаточное число даёт ещё одно преимущество: момент можно оценивать по току мотора: τ≈NKt i\tau \approx N K_t\, i. Так MIT Cheetah обходится без датчиков силы в ногах. Плата — ошибка оценки: у Cheetah 3 трение в редукторе даёт около ±10%.

Большое передаточное число даёт момент, но инерция ротора на выходе растёт как его квадрат. Привод теряет обратимость (backdrivability): внешний толчок почти не проворачивает мотор, а при ударе привод бьёт сильнее. Малое передаточное число прозрачно и бьёт мягче, но даёт мало момента. Как ещё инженеры ищут компромисс?

3 Какие бывают приводы

Шесть способов двигать сустав

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

Есть и другие трансмиссии. Циклоидальные редукторы стоят в суставах промышленных роботов: на Nabtesco приходится около 60% этого рынка. Собственные циклоидальные приводы есть в ногах Digit 5.

Какой привод куда

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

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

4 Сенсоры

Что робот знает о себе и о мире

О результате команды политика узнаёт по сенсорам. И ни одному из них нельзя верить до конца: у каждого свои слабые места — шум, дрейф, задержка, частота.

Проприоцепция — сенсоры о собственном теле: энкодеры суставов, ток моторов как оценка момента, инерциальный блок IMU с гироскопом и акселерометром. Экстероцепция — о мире: камеры, датчики глубины, лидары, тактильные сенсоры.

Поэтому сенсоры объединяют так, чтобы один закрывал слабые места другого. Простой пример — угол наклона корпуса. Гироскоп меряет скорость поворота точно, но если её интегрировать, ошибка копится. Акселерометр видит направление силы тяжести и в среднем не врёт, но сильно шумит. На сцене три оценки наклона сразу: только по гироскопу, только по акселерометру и их смесь. Рядом с графиками за 10 секунд — корпус робота и линии, где его видит каждая оценка.

Под капотом: комплементарный фильтр

На каждом шаге оценку двигаем по гироскопу и слегка подтягиваем к углу из акселерометра:

θ^t=α (θ^t−1+ωгиро Δt)+(1−α) θаксел\hat\theta_t = \alpha\,\bigl(\hat\theta_{t-1} + \omega_{\text{гиро}}\,\Delta t\bigr) + (1 - \alpha)\,\theta_{\text{аксел}}

По частоте это фильтр высоких частот для гироскопа и низких — для акселерометра: быстрые изменения берём у первого, медленное «где низ» — у второго. При α=0,98\alpha = 0{,}98 и шаге 10 мс постоянная времени около полсекунды. В лаборатории у гироскопа смещение нуля 1,5 °/с и шум, у акселерометра шум с СКО 4° и всплески от ускорений корпуса. Кнопка «Встряхнуть робота» добавляет четыре коротких рывка: акселерометр принимает их за наклон, гироскоп их не видит, потому что меряет вращение. Фильтр Калмана делает то же самое оптимально, если известны модели шумов, — это урок 0.4.

По отдельности гироскоп дрейфует, а акселерометр шумит и путает рывок с наклоном. Вместе в комплементарном фильтре они ошибаются меньше чем на 2° даже при тряске. Но части робота работают с очень разной частотой: IMU выдаёт данные до 2 кГц, камера — около 30 кадров в секунду, политика — несколько десятков раз в секунду. Как они уживаются в одной системе?

5 Частоты

Лестница частот

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

Политика работает на этажах от 10 до 200 Гц и видит только то, как нижние этажи отработали её цели. Учат её часто в симуляторе. Насколько точно симулятор повторяет то, что лежит под политикой, — привод с его регулятором?

🔬 Лаборатория 2

Модель привода по данным

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

Можно попробовать вывести точную формулу привода. Для прямого привода это получается, а для сложных, например серийно-упругих приводов ANYmal, — нет.

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

Обучение сети

Ошибка модели от объёма данных

Под капотом: что внутри
  • Настоящий привод. Внутренний ПД-регулятор позиции, задержка команды 15 мс, насыщение момента, кулоновское и вязкое трение. Звено — маятник. Люфт по умолчанию нулевой, его добавляет ползунок в миссии «Износ привода». Энкодер стоит на моторе и люфта не видит: пока мотор выбирает зазор, момент на звено не передаётся.
  • Модель из симулятора. Тот же ПД, но мгновенно и без нелинейностей.
  • Данные. 20 секунд случайных команд, шаг 2,5 мс — около 8 тысяч примеров. Вход — ошибки позиции и скорости за последние 4 шага, выход — момент, который реально выдал привод.
  • Сеть. 8 → 32 → 32 → 1 с tanh, Adam, 1500 итераций по 64 примера при любом объёме данных. После обучения сеть заменяет модель привода в симуляторе. Сеть видит только последние 10 мс истории, поэтому задержку длиннее этого она выучивает плохо.

Так поступили Хванбо и соавторы в 2019 году: точную аналитическую модель можно построить для прямого привода, но не для серийно-упругих приводов ANYmal. Модель привода выучили по данным, политику обучили в симуляторе с этой моделью, и робот побежал без дообучения на железе.

Сеть, обученная на 20 секундах данных, повторяет привод в 6 раз точнее идеальной модели, а для ошибки меньше 1° хватает и 5 секунд. Но модель знает только тот привод, на котором её учили: когда привод изнашивается, её приходится переобучать, а длинную задержку она выучивает хуже.

6 Проверь себя

Восемь вопросов о типичных заблуждениях

7 Итог

Итоги урока

  1. Политика робота — интерфейс «наблюдение → действие» на определённой частоте. Обычно она выдаёт цели для регуляторов, а моторы держит быстрый нижний контур.
  2. Степени свободы — это суставы. Лишние степени свободы дают свободу позы при том же положении захвата.
  3. Передаточное число меняет момент на скорость, но инерция растёт как N2N^2: при больших NN привод теряет обратимость и опаснее при ударе.
  4. Сенсоры шумят, дрейфуют и запаздывают. Их объединяют: от комплементарного фильтра до фильтра Калмана.
  5. Разрыв между симулятором и роботом часто начинается с привода. Его сокращают моделью привода, выученной по данным.

Открытые вопросы

Почему у робота-пылесоса и у четвероногого робота такие разные приводы?

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

Ты учишь политику для кисти с 20 степенями свободы. Какие сенсоры добавишь к камерам и зачем?

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

Гид по статье

Wensing et al., «Proprioceptive Actuator Design in the MIT Cheetah», IEEE T-RO, 2017.

Материалы

➡️

Дальше: кинематика и управление. Мы разобрали, чем управляет политика. Остался вопрос, как её цель становится движением. В лаборатории с рукой углы суставов находились сами, стоило потянуть захват, а регуляторы суставов просто держали цель. Кто переводит позу захвата в углы суставов, как регулятор превращает цель в момент и почему нейросеть, выучившая кинематику, может промахнуться больше чем на 40 см, — урок 0.3.

Урок пригодился? Скажи спасибо — так автор узнает, что курс читают.