AI Tools8 мин чтения

Можно ли изменить инструкцию роботу прямо во время движения?

В LeRobot 0.7 появились интерактивные запуски. Разбираем, как перенаправить движущегося робота, отделить ответы по изображению от физических действий и спланировать безопасный пилот.

K
Ken Jo

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

5 ноября Hugging Face выпустила LeRobot 0.7.0, новую версию открытого набора инструментов для сбора робототехнических демонстраций, обучения управляющих политик и их запуска на оборудовании. Интерактивный запуск сохраняет соединение с роботом и загруженную политику, пока оператор вводит новые команды в терминале. Совместимая политика или внешний планировщик также могут интерпретировать сцену и выбрать другую подзадачу. В выпуске переработаны потоковая подача наборов данных, обучение и удалённое выполнение модели. Интерактивное управление заслуживает отдельного внимания, потому что меняет возможности оператора в середине эксперимента. Анонс LeRobot · Выпуск v0.7.0

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

Камера на запястье SO-101 закреплена над захватом физического робота-манипулятора

Крепление камеры на запястье SO-101, фотография The Robot Studio. На снимке показан один из поддерживаемых вариантов установки. Изображение из проекта SO-ARM100 опубликовано под лицензией Apache 2.0. Telli.sh изменил размер фото и добавил поля.

Три команды дают оператору три разных способа работы

Три пути из консоли оператора для смены команды, вопроса о сцене и делегирования цели

Интерактивные команды и роль каждой из них. Иллюстрация Telli.sh.

В ходе запуска, или rollout, политика получает наблюдения и выдаёт действия. Наблюдения могут включать изображения и измеренные положения суставов. В версии 0.7 параметр --interactive=true в настроенном сеансе lerobot-rollout сохраняет подключение, веса политики и модули обработки между инструкциями. В выпуске показаны пять команд терминала. Команды /start и /stop обрамляют три способа направлять запуск или задавать ему вопросы. Анонс LeRobot · Документация запуска v0.7.0

Команда терминалаНамерение оператораКакого результата ждать
/subtaskЗаменить инструкцию для политики действийСледующее наблюдаемое движение направлено к новой цели, либо оператор вмешивается
/vqaСпросить, что видит роботСистема возвращает ответ, который можно сравнить со сценой
/autosteerПередать цель и дать системе выбрать подзадачиСистема выбирает шаги, а оператор может вернуть управление

В анонсе FineART-VLA и Wall-OSS-0.5 приведены как примеры политик, генерирующих текст для вопросов и целей. Если политика действий не создаёт текст, его может давать совместимая внешняя модель зрения и языка. В выпуске описан планировщик с API, совместимым с OpenAI, который можно обслуживать локально или на удалённой платформе. Он отвечает на вопросы по изображению и передаёт инструкции политике. За превращение подзадачи в действия робота по-прежнему отвечает политика действий. Интерактивные запуски и внешний планировщик · Документация запуска v0.7.0

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

Меняйте цель в пределах простой задачи

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

Наблюдайте первое движение к новой цели и итоговое положение блока. По метке времени видео можно определить, когда проявилось перенаправление. Метка терминала показывает, когда вы ввели команду. Запись обеих помогает объяснить задержку, в том числе когда программа приняла ввод, а новое движение трудно заметить. Заранее заданное условие остановки избавит оператора от бесконечного ожидания коррекции.

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

В третьем запуске передайте /autosteer цель вроде «сложить два мягких блока в один лоток». Запишите промежуточные решения системы. Она может разумно выбрать первый блок и всё равно нуждаться в помощи, если второй за пределами досягаемости. Делегирование особенно полезно, когда каждую подзадачу можно проверить по простой ожидаемой последовательности. Тогда журнал покажет, выбрал ли планировщик плохой шаг или робот не справился с подходящим.

Программную и физическую остановку проверяют отдельно

Интерактивный запуск позволяет человеку рядом с роботом быстрее менять команды. Он также создаёт промежуток, когда оператор думает, что новая команда уже действует, а робот всё ещё выполняет прежнее движение. Записывайте четыре события отдельно. Зафиксируйте отправку инструкции, подтверждение от программы запуска, если оно есть, первое наблюдаемое изменение поведения и итоговое состояние робота. Если сигнала о приёме нет, оставьте это поле пустым. Остальные события всё равно полезны.

В документации версии описано программное удержание для поддерживаемых роботов в сценарии коррекции. Оно повторно отправляет последнюю целевую позицию, применённую драйвером. Под нагрузкой манипулятор может продолжать движение к этой позиции, а поведение захвата нужно проверить на оборудовании. Языковой интерфейс работает поверх этой механики. Сохраните принятые для оборудования физические процедуры остановки и надзора. Проверьте их на свободном стенде перед изменением команд на ходу. Документация запуска v0.7.0

Временная шкала связывает команду оператора, наблюдаемое движение, условие остановки и проверенную финальную позицию

Записывайте время смены команды, изменения движения и завершения запуска. Иллюстрация Telli.sh.

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

FineART добавляет промежуточные шаги в обучающие данные

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

Hugging Face и Scale AI сообщают о более чем 40 000 эпизодах для двух рук, 1 718 часах и более 533 000 аннотаций подзадач в FineART. В выпуске от 5 ноября объём данных в формате LeRobot оценивается в 1,9 ТБ. FineART-VLA построен на π0.5 и добавляет языковой модуль, который может предсказать словесную подзадачу до движения, выполняемого модулем действий. Цифры описывают набор авторов, а разделение языка и действий — устройство их модели. Другая форма захвата, узкий обзор камеры или объекты, которых нет в данных, потребуют отдельной проверки. Анонс выпуска и описание FineART · Документация FineART-VLA

Собирая небольшой набор коррекций, заранее решите, что нужно воспроизвести позднее. Сохраните новую команду, подходящий ракурс камеры, состояние в момент изменения и наблюдаемый результат. Метка «красный контейнер уже полон» описывает состояние. Инструкция «положи следующий красный блок в пустой лоток» задаёт действие политики. Если нужны оба элемента, храните оба. Оставляйте и неудачные случаи, чтобы будущую политику можно было проверить на событиях, ради которых собирался материал.

Для первого пилота достаточно одного стенда

  1. Зафиксируйте версию и выберите поддерживаемое сочетание. Установите LeRobot 0.7.0 по документации версии. Проверьте, что робот, конфигурация камер и выбранная политика работают на известной задаче. В примечаниях от 5 ноября сказано, что стандартные сборки PyTorch для Linux теперь используют CUDA 13 и требуют драйвер NVIDIA 580.65 или новее. Для старых драйверов есть описанная альтернативная установка. Изменение драйвера и поведения робота проверяйте раздельно. Документация по установке · Выпуск v0.7.0

  2. Проведите контрольный эпизод до перенаправления. Используйте свободную столешницу, ограниченное движение и положенный для манипулятора надзор. Сохраните исходное положение и цель, затем отметьте, завершила ли политика задачу. При сравнении контрольного и перенаправленного запусков оставьте камеру, свет и предметы на тех же местах. Настройка SO-101

  3. Добавьте интерактивный параметр к проверенному запуску. Из терминала начните сеанс, задайте подзадачу, один раз смените её и завершите запуск. Ниже команды из выпуска с иллюстративными формулировками. Документация интерактивных сеансов

    Обычный текст
    /start
    /subtask move the red block to the tray
    /subtask move the blue block to the tray
    /stop
    

  4. Добавьте визуальные вопросы и небольшую цель, когда контрольный запуск воспроизводится. Возьмите политику, генерирующую текст, или настройте внешний планировщик по документации. Начните с вопроса, на который можно ответить по той же камере. Проверьте цель с видимым завершением и запишите, что случается, когда планировщик недоступен или не выдаёт подходящую подзадачу. Внешняя конечная точка меняет место обработки наблюдений. Это важно, когда камера видит что-либо за пределами стенда. Документация внешнего планировщика

  5. Сравнивайте восстановление вместе с завершением задач. Проведите несколько повторов в сходных условиях и сохраните каждую ошибку. Запишите, смог ли оператор заметить произошедшее, выбрать подходящее вмешательство и проверить итог. Несколько запусков помогут улучшить стенд. Для утверждения о надёжности нужно гораздо больше данных в ожидаемых условиях.

Версия 0.7.0 также заменяет прежний асинхронный интерфейс сервером политик и удалённым запуском. Если впоследствии перенесёте вычисления на GPU-сервер, повторите тесты времени и остановки на реальном соединении. Сервер может дать больше ресурсов, а сеть добавляет зависимость между наблюдением и следующим действием. Медленное или недоступное соединение — отдельный тестовый случай. Несовместимые изменения v0.7.0 · Документация удалённого выполнения

Самая показательная проверка происходит в середине задачи

Интересный момент демонстрации — когда намеченный шаг теряет смысл. Контейнер полон, объект сдвинулся или оператор увидел то, чего не заметила камера. Команды терминала LeRobot позволяют включить этот момент в эксперимент. Вопрос в том, может ли наблюдающий человек понять, что изменилось, перенаправить следующее действие и своими глазами проверить результат.

Источники


Чтобы хранить решения и эксперименты в доступном для поиска виде, создайте аккаунт Telli.sh.


← Вернуться в блог