Sim-to-real через обучаемую инверсную динамику робота
Политика, обученная в симуляторе, отдаёт команды, которые реальный робот выполняет иначе. Обучаемая инверсная модель динамики переводит намерения из симуляции в моторные команды железа.

В чём проблема переноса из симулятора
Обучение политики управления в физическом симуляторе стоит копейки: тысячи параллельных сред, миллионы шагов за ночь, никаких сломанных сервоприводов. Проблема начинается, когда обученную политику включают на реальном роботе. Симулятор считает трение, люфты, задержки приводов и массу звеньев не так, как ведёт себя настоящая рука. Команда, которая в симуляции переводила захват в нужную точку, на железе промахивается на сантиметры. Этот разрыв называют reality gap, и он остаётся главным барьером робообучения.
Подход с обучаемой инверсной моделью динамики (inverse dynamics model, IDM) не пытается сделать симулятор точнее. Он оставляет политику как есть и вставляет между ней и реальным роботом отдельную обучаемую прослойку, которая знает, чем реальность отличается от симуляции.
Инверсная модель динамики простыми словами
Прямая модель динамики отвечает на вопрос: если я подам такую команду при таком состоянии, куда система перейдёт. Инверсная модель отвечает на обратный: я нахожусь в состоянии s и хочу оказаться в состоянии s', какую команду для этого подать.1
Идея переноса такая. Политика, обученная в симуляторе, на каждом шаге выдаёт не команду мотору, а желаемый переход: из текущего состояния в следующее. Симулятор считает этот переход по своим законам. А исполнять его на реальном роботе поручают инверсной модели, обученной на данных настоящего железа. Она смотрит на реальное текущее состояние и целевое следующее и подбирает команду, которая на этом конкретном роботе даст нужный результат.
Политика говорит «хочу оказаться вот здесь». Инверсная модель отвечает «на этом железе для этого нужно вот столько тока на приводы». Разрыв реальности прячется внутри второй фразы, а не в первой.
Как это собирается по шагам
- Обучение политики в симуляции. Любым RL-алгоритмом (PPO, SAC) учим политику, которая выдаёт целевые переходы состояния, а не низкоуровневые команды. Работаем в среде вроде Isaac Gym, MuJoCo или PyBullet.
- Сбор данных с реального робота. Гоняем железо по случайным или исследовательским траекториям и записываем тройки: состояние s, поданная команда a, следующее состояние s'. Это дешёвые данные — не нужны разметка и демонстрации эксперта.
- Обучение инверсной модели. На собранных тройках учим сеть предсказывать a по паре (s, s'). Это обычная supervised-задача регрессии.
- Развёртывание. На роботе политика выдаёт желаемое s', инверсная модель переводит (s, s') в команду a, робот исполняет, получаем новое реальное s. Цикл повторяется.
- Дообучение по данным с железа. Свежие тройки с реального робота докидываем в обучение IDM, чтобы модель отслеживала износ приводов и изменения нагрузки.
Почему разрыв прячется именно в IDM
Симулятор и реальность расходятся в том, как команда превращается в движение. Кинематика (где находятся звенья при данных углах) переносится почти идеально — геометрию считают одинаково. Расходится динамика: трение, инерция, задержки, насыщение приводов. Инверсная модель обучается ровно на этой части и на реальных данных, поэтому впитывает расхождение, не трогая высокоуровневое поведение политики.
Сравнение с другими способами закрыть reality gap
| Подход | Что делает | Данные с железа | Слабое место |
|---|---|---|---|
| Domain randomization | Рандомизирует физику симулятора, чтобы политика была устойчива к любой | Не нужны на этапе обучения | Политика выходит консервативной, теряет в точности |
| System identification | Подгоняет параметры симулятора под замеры реального робота | Нужны для калибровки | Модель симулятора всё равно неполная |
| Обучаемая IDM | Отдельная прослойка переводит целевой переход в реальную команду | Нужны для обучения прослойки | Качество зависит от покрытия пространства состояний в данных |
| Fine-tuning на железе | Дообучает всю политику прямо на роботе | Нужны, много и рискованно | Дорого, можно сломать оборудование |
На практике методы комбинируют: рандомизация даёт грубую устойчивость, а инверсная модель добирает точность на конкретном экземпляре робота. Домейн-рандомизация и IDM не конкурируют, а работают на разных уровнях.
Где это ломается
- Дыры в данных. Инверсная модель предсказывает команду адекватно только там, где видела похожие переходы. Если политика после переноса заведёт робота в состояние, которого не было в обучающем наборе, IDM начнёт фантазировать. Отсюда — сбор данных, покрывающий рабочую область, а не одну удобную траекторию.
- Ошибка накапливается. Каждый шаг IDM выполняет целевой переход неидеально. За длинную траекторию мелкие промахи копятся. Помогает замыкание по реальному состоянию на каждом шаге (робот сообщает, где он на самом деле) вместо слепого прогона плана.
- Мультимодальность. В одно и то же следующее состояние иногда ведут несколько разных команд. Регрессия усреднит их и выдаст команду, которая не соответствует ни одной. Тут выручают вероятностные модели вывода вместо простого MSE.
- Дрейф железа. Приводы изнашиваются, нагрузка меняется, модель устаревает. Без периодического дообучения точность падает через недели эксплуатации.
Что стоит замерить перед выкаткой
Прежде чем доверять связке реальному роботу, полезно измерить ошибку исполнения перехода на отложенных данных с железа: подаём команду, которую предсказала IDM, и сравниваем реальное следующее состояние с целевым. Если средняя ошибка по суставам сопоставима с точностью, которую требует задача, — можно замыкать цикл. Если больше — сначала собирайте данные, а не крутите гиперпараметры политики.
Ключевая выгода подхода — разделение труда. Дорогое обучение поведения остаётся в дешёвой симуляции. Дешёвый сбор троек (s, a, s') остаётся на реальном роботе. Между ними — одна обучаемая функция, которую переучить куда проще, чем всю политику. Когда завтра вы поменяете захват или пересоберёте руку, переучивать придётся только инверсную модель.
Prompt-инженер: Идеальные запросы для Midjourney, ChatGPT и других моделей.
Спросить за 15 ₽Источники: MuJoCo — документация физического симулятора, NVIDIA Isaac Gym — документация
Частые вопросы
Чем инверсная модель отличается от прямой?
Сколько данных с реального робота нужно, чтобы обучить IDM?
Нужна ли ещё domain randomization, если используется IDM?
Что делать, если несколько команд ведут в одно состояние?
Может ли IDM полностью заменить точный симулятор?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.