Публичный каталог наборов данных AY-Robots, показывающий наборы данных LeRobot, записанные на манипуляторах класса SO-100
Наборы данныхOpen X-EmbodimentDROIDSO-100LeRobot

Использование DROID, BridgeData V2 и Open X на SO-100

AY-Robots ResearchAugust 23, 202618 мин чтения

DROID, BridgeData V2 и Open X-Embodiment преобразуются в 7-мерные действия концевого эффектора для 6- и 7-степенных манипуляторов. SO-100 принимает 6 позиций суставов. Что переносится, что нет, и что делать вместо этого.

Краткая версия

  • Сборки LeRobot всех трех систем используют одно соглашение: 7-мерное действие эффектора [x, y, z, roll, pitch, yaw, gripper] и 8-мерное состояние с заполняющим слотом. SO-100 принимает шесть абсолютных положений суставов.
  • Этот 7-мерный вектор — артефакт конвертера: собственное поле действия RLDS DROID — это 6 скоростей суставов плюс положение захвата, с декартовым представлением в action_dict.
  • Четыре тактовых частоты: DROID 15 кадров/с, BridgeData V2 5 кадров/с, срез google_robot 3 кадров/с, запись SO-100 30 кадров/с.
  • Вы не можете объединить их со своими данными. validate_all_metadata выдает ошибку при первом отличии fps, robot_type или features, а все три отличаются.
  • Передаются предварительно обученные веса, а не эпизоды. Данные с открытым исходным кодом составляют 9.1 процента от смеси предварительного обучения pi0.
  • Их самое дешевое реальное применение — это тестовый стенд: заведомо хороший образец DROID объемом 2 ГБ, состоящий из 100 эпизодов, который подтверждает работоспособность вашего конвейера, прежде чем вы будете записывать данные в течение выходных.

Существует публичный набор данных из миллиона траекторий в бакете Google Cloud и SO-100 на столе, который стоил от 110 до 150 EUR в запчастях. Почему первый не может научить второго? Частично может, но почти никакая передача не происходит там, где люди ожидают, а та часть, которая кажется самой простой, вообще не работает.

Далее: что находится внутри DROID, BridgeData V2 и Open X-Embodiment, где каждый сталкивается с недорогим 5-степенным манипулятором, и что делать вместо этого. Каждое число ниже взято из статьи, карточки набора данных или исходного файла, к которому оно относится.

Что на самом деле содержат три набора данных

DROIDBridgeData V2Open X-Embodiment
РоботFranka Panda, 7 DoF, Robotiq 2F-85WidowX 250, 6 DoF, ~4,000 USD rig22 embodiments, 60 datasets, 34 labs
Масштаб76k trajectories, 350 hours60,096 trajectories1M+ trajectories, 527 skills
Разнообразие564 scenes, 84 tasks, 50 collectors24 environments, 13 skills160,266 tasks, 21 institutions
Составполностью телеуправляемый50,365 телеуправляемых, 9,731 по сценариюпо исходной лаборатории
Частота управления15 Hz5 Hzvaries, 3 fps upwards
Камеры2 x ZED 2 внешние, 1 x ZED Mini на запястьедо 4, в большинстве эпизодов только фиксированнаячто использовала лаборатория
Исходная загрузка1.7 TB RLDS, 8.7 TB raw stereoJPEG archivesper-dataset TFDS buckets
Точкой входа является конверсия LeRobot, а не исходный бакет

Мало кто до сих пор загружает 1.7 ТБ RLDS TFRecords. Сообщество IPEC-COMMUNITY переиздало большую часть Open X-Embodiment в формате набора данных LeRobot с видео AV1, где DROID занимает 392 ГБ. Это та версия, с которой вы будете работать, и ее meta/info.json — это то, что нужно прочитать в первую очередь.

DROID

Наиболее стандартизированный из трех. Единая установка повсюду: Franka Panda с захватом Robotiq 2F-85, две регулируемые стереокамеры ZED 2 и ZED Mini на запястье, телеуправляемая с помощью контроллеров Meta Quest 2, записываемая через Polymetis на частоте 15 Гц как в пространстве суставов, так и в пространстве конечного эффектора . Языковые метки появились позже через tasq.ai, до трех на эпизод.

  • 76 тысяч траекторий, 350 часов, 564 сцены, 84 задачи, 50 сборщиков на трех континентах.
  • Главный результат — это совместное обучение, а не автономное: пакеты, смешанные 50/50 с демонстрациями из предметной области, превосходят следующий лучший метод на 22 процента абсолютного успеха в распределении и на 17 процентов вне его.
  • IPEC-COMMUNITY/droid_lerobot: 92 233 эпизода, 27 044 326 кадров, franka, 15 кадров/с, codebase_version v2.0, три потока AV1 с разрешением 180x320, 392 ГБ.
  • Отладочный образец размером 2 ГБ, состоящий из 100 эпизодов, находится по адресу gs://gresearch/robotics/droid_100. Начните с него.

BridgeData V2

Наиболее близкая к любительской установке: манипулятор WidowX 250 с 6 степенями свободы, 60 096 траекторий в 24 средах и 13 навыках при 5 Гц. Обратите внимание на состав: 50 365 экспертных телеуправляемых демонстраций плюс 9 731 из рандомизированной скриптовой политики «взять и положить», так что около 16 процентов — это не человеческие демонстрации, что важно для имитационного обучения качества. Обычная загрузка, IPEC-COMMUNITY/bridge_orig_lerobot, сообщает о 53 192 эпизодах и 1 893 026 кадрах при 5 кадрах/с, robot_type widowx: меньше, чем 60 096 в статье, поэтому считывайте количество из meta/info.json, а не цитируйте ни одно из них.

Open X-Embodiment

Не совсем набор данных в привычном смысле: 60 существующих наборов данных роботов из 34 лабораторий объединены в одну коллекцию RLDS, охватывающую 22 воплощения и более миллиона траекторий. BridgeData V2 находится внутри нее как bridge_orig; срез google_robot, fractal20220817_data, преобразуется в 87 212 эпизодов со скоростью 3 кадра в секунду.

Объединение имеет оговорку, которую авторы статьи прямо указывают. Для экспериментов RT-X авторы преобразуют каждый источник в действие концевого эффектора с 7 степенями свободы (7-DoF), но не выравнивают системы координат между наборами данных и допускают, что значения действий могут быть абсолютными или относительными положениями или скоростями, в соответствии с исходной схемой управления каждого робота. Их вывод: один и тот же вектор действия может вызывать очень разные движения у разных роботов.

Каталог наборов данных AY-Robots, содержащий общедоступные наборы данных LeRobot с количеством эпизодов и описаниями задач
Общедоступный каталог наборов данных по адресу /directory: наборы данных уже в формате LeRobot, уже соответствующие поддерживаемой руке.

Несоответствие, в четырех частях

Несоответствие воплощения обычно рассматривается как одна расплывчатая проблема. Их четыре, они проявляются по-разному, и две из них нельзя исправить с помощью скриптов.

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

SO-100 имеет пять суставов манипулятора плюс захват. Если считать по моторам, это 6-степенной манипулятор, и статья SmolVLA называет его так; если считать по механизму позиционирования, это 5-степенной манипулятор, и LeRobot называет его так в своей документации по обратной кинематике, которая описывает IK с мягкой ориентацией для 5-степенного SO-101, где запястье отслеживает ориентацию лишь частично. Franka имеет семь позиционирующих суставов. Этот разрыв определяет, какие позы возможны: 5-степенной манипулятор, как правило, не может одновременно достичь произвольной позиции и ориентации, поэтому решатель возвращает ближайшее возможное положение, что отличается от продемонстрированного движения. Справочная информация: степени свободы.

python
# src/lerobot/robots/so_follower/so_follower.py
motors = {
    "shoulder_pan":  Motor(1, "sts3215", norm_mode_body),
    "shoulder_lift": Motor(2, "sts3215", norm_mode_body),
    "elbow_flex":    Motor(3, "sts3215", norm_mode_body),
    "wrist_flex":    Motor(4, "sts3215", norm_mode_body),
    "wrist_roll":    Motor(5, "sts3215", norm_mode_body),
    "gripper":       Motor(6, "sts3215", MotorNormMode.RANGE_0_100),
}
# action keys are "<motor>.pos"; send_action sync_writes them to
# "Goal_Position"  ->  a 6-D ABSOLUTE JOINT POSITION command


# openpi/src/openpi/policies/droid_policy.py
def make_droid_example() -> dict:
    return {
        "observation/exterior_image_1_left": np.random.randint(256, size=(224, 224, 3), dtype=np.uint8),
        "observation/wrist_image_left":      np.random.randint(256, size=(224, 224, 3), dtype=np.uint8),
        "observation/joint_position":        np.random.rand(7),   # seven Franka joints
        "observation/gripper_position":      np.random.rand(1),
        "prompt": "do something",
    }
# state = concat(joint_position, gripper_pos)  ->  8-D
Слева: SO follower от LeRobot, из src/lerobot/robots/so_follower/so_follower.py. Справа: входные данные политики DROID от openpi. Шесть против восьми.

Таким образом, готовая контрольная точка DROID не является быстрым решением. Physical Intelligence поставляет pi05_droid по адресу gs://openpi-assets/checkpoints/pi05_droid, и тот же README, который хвалит его широту, предупреждает, что эти экспертные контрольные точки могут не подходить для вашей установки. Его состояние — восемь номеров суставов Franka, а ключи изображений — exterior_image_1_left и wrist_image_left. Ни один флаг не превращает это в команду для шестимоторного SO-100.

2. Что на самом деле означает вектор действий

Глубже, чем размерность. В преобразованиях LeRobot все три указывают, куда должен двигаться захват, в декартовом пространстве. SO-100 указывает, куда должны двигаться шесть сервоприводов. Для преобразования требуется кинематическая модель и решатель, а не изменение формы.

СвойствоOXE, DROID и Bridge в формате LeRobotSO-100 в LeRobot
Вектор действий7-мерный: x, y, z, крен, тангаж, рыскание, захват6-мерный: одна целевая позиция на мотор
Вектор состояния8-мерный, с дополнительным слотом (google_robot использует кватернион)6-мерный, по одному на мотор
Система координатДекартова, не выровненная по наборам данныхпространство суставов, калибровка для каждой руки
Абсолютный или относительныйлюбой, определяется исходной лабораториейабсолютные целевые позиции
Единицы измерениянормализованы для каждого набора данных, затем дискретизированыградусы по умолчанию (use_degrees=True), иначе от -100 до 100
Тихий сбойдельта, прочитанная как абсолютное значениенекалиброванная рука
7-мерный декартов вектор — это соглашение конвертера, а не DROID

Файл README проекта openx2lerobot документирует унифицированное 8-мерное состояние и 7-мерное действие для каждого преобразуемого им набора данных, откуда и берется слот pad. Собственная схема RLDS DROID отличается: ее верхнеуровневое action представляет собой 7-вектор из 6 скоростей суставов плюс 1 положение захвата, с cartesian_position, cartesian_velocity, joint_position и joint_velocity в action_dict. openpi считывает представление в пространстве суставов, а сборка LeRobot предоставляет вам декартово представление. Ни одно из них не является шестью абсолютными углами сервоприводов.

LeRobot действительно поставляет недостающую часть: у SO follower есть кинематический процессор с шагами InverseKinematicsEEToJoints и ForwardKinematicsJointsToEE. Его ключи — ee.x, ee.y, ee.z плюс вектор вращения ee.wx, ee.wy, ee.wz и ee.gripper_pos, так что даже кодировка ориентации отличается от roll-pitch-yaw в файлах. Шаг IK принимает orientation_weight, по умолчанию 0.01, в докстринге которого указано установить 0.0 для IK только по положению на недоактивированных манипуляторах. Вы можете построить этот мост, но половина ориентации каждого заимствованного действия останется аппроксимированной.

3. Частота управления

DROID работает на 15 Гц, BridgeData V2 на 5 Гц, срез google_robot на 3 кадра/с; авторы pi0 описывают открытую часть своей смеси как низкочастотное управление в диапазоне от 2 до 10 Гц. DatasetRecordConfig LeRobot по умолчанию имеет fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50. обученная на данных 5 Гц, узнала, что одно действие охватывает 200 мс. Воспроизведите его на 30 Гц, и рука будет ползти; наивно пересэмплируйте, и вы размажете кадр, где захват закрывается. Это также плохо взаимодействует с : 100-шаговый фрагмент составляет 20 секунд при 5 Гц, 3.3 при 30 Гц.

4. Камеры

BridgeData V2 рандомизировал две позы камеры каждые 50 траекторий, и на странице проекта отмечается, что большая часть данных в любом случае содержит только фиксированный вид. DROID использовал регулируемые крепления ZED 2 плюс ZED Mini на запястье. У вас есть две USB-веб-камеры, расположенные на глаз. Поза камеры не является переменной-помехой для ; это во многом то, на что ориентировался визуальный кодировщик, и ничто в формате файла не говорит о том, что позы различаются.

Ловушка, которая съедает день

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

Что происходит, если вы все равно пытаетесь объединить данные

Очевидный план — объединить: несколько тысяч эпизодов DROID плюс ваши 50. LeRobot отказывает, и в отказе названы три вещи, которые отличаются.

  1. 1
    Загрузите 100-эпизодный образец, а не полные 1.7 ТБ

    2 ГБ достаточно, чтобы увидеть структуру.

    bash
    pip install gsutil tensorflow tensorflow-datasets
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/
  2. 2
    Преобразуйте RLDS в формат LeRobot

    openx2lerobot инкапсулирует стандартные преобразования OXE и аннотирует тип робота и частоту управления. В README это находится в convert.sh.

    bash
    git clone https://github.com/Tavish9/any4lerobot.git
    cd any4lerobot/openx2lerobot
    
    python openx_rlds.py \
        --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \
        --local-dir ~/lerobot_droid100 \
        --repo-id you/droid100_lerobot \
        --use-videos
  3. 3
    Прочитайте meta/info.json прежде всего

    Этот файл определяет, будет ли остаток вашего дня продуктивным.

    bash
    python -c "import json;d=json.load(open('meta/info.json'));\
    print(d['codebase_version'], d['robot_type'], d['fps']);\
    print(d['features']['action']['shape'], d['features']['observation.state']['shape'])"
  4. 4
    Попробуйте объединение и прочитайте ошибку

    merge загружает каждый набор данных, затем validate_all_metadata проверяет fps, robot_type и features по отношению к первому в списке, выдавая ошибку при первом несоответствии.

    bash
    lerobot-edit-dataset \
        --new_repo_id you/mixed \
        --operation.type merge \
        --operation.repo_ids "['you/droid100_lerobot', 'you/my_so100_task']"
    
    # ValueError: Same fps is expected, but got fps=30 instead of 15.

Эталонные значения берутся из того набора данных, который вы указали первым, поэтому сообщение жалуется на ваши 30 кадров в секунду, а не на 15 кадров в секунду DROID. Исправьте fps, и вы столкнетесь с проверкой robot_type; исправьте это, и вы столкнетесь с проверкой features, 7 против 6 для действия. Никакой порядок не пройдет, и та же защита запускается во время записи через sanity_check_dataset_robot_compatibility.

Не прописывайте robot_type жестко, чтобы обойти проверку

В текущей основной версии LeRobot so100_follower и so101_follower оба зарегистрированы на один общий SOFollowerRobotConfig, поэтому строка из реальной записи не обязательно будет той, которую вы ожидаете. Прочитайте ее из вашего собственного meta/info.json и относитесь к проверке, которую вам пришлось отключить, как к проверке, которая что-то вам сообщала.

Что же на самом деле переносится?

Веса, а не эпизоды. Каждая современная обобщенная политика поглотила часть этого при предварительном обучении, и когда вы из выпущенной вы наследуете это уже согласованным людьми, обладающими вычислительными мощностями для правильного выполнения этой задачи. В статье pi0 откровенно говорится о пропорции: 9.1 процента ее смеси для предварительного обучения, подсчитанной в шагах времени, составляют данные с открытым исходным кодом, включая OXE, Bridge v2 и DROID. Эта цифра принадлежит pi0; смесь каждого поставщика отличается.

Общедоступные кросс-телесные данные в проекте SO-100
Преимущества
  • Визуальные и языковые априорные знания: кодировщик видел тысячи кухонь и кружек и знает, что означает «красный блок».
  • Априорные знания о структуре манипуляции: подход, захват, подъем, транспортировка, отпускание, независимые от воплощения, даже если числа не таковы.
  • Известный хороший набор данных для тестирования. Если ваша задача не может переобучиться на 100 эпизодах DROID, проблема в вашей настройке.
  • Опорные точки: в областях с небольшими наборами данных RT-1-X достиг на 50 процентов более высокой средней частоты успеха, чем исходный метод или RT-1, а RT-2-X превзошел RT-2 примерно в 3 раза по новым навыкам.
Компромиссы
  • Отсутствие пригодного для использования контроля действий. 7-мерная декартова цель — это не 6-мерная команда для суставов.
  • Отсутствие переноса позы камеры, и ничто в данных не указывает на различия в позах.
  • Отсутствие переноса тайминга: источники 3, 5 и 15 кадров в секунду против записывающего устройства 30 кадров в секунду.
  • Отсутствие переноса захвата. Robotiq 2F-85 и напечатанная челюсть на STS3215 различаются по силе, ходу и динамике.
  • Одного масштаба было недостаточно даже для его авторов: в областях с большими наборами данных RT-1-X не превзошел RT-1, обученный только на этом наборе данных.
  • Отсутствие сокращения количества ваших собственных эпизодов, которые вам нужны.
Слой моделиПереносится?Почему
Визуальный кодировщикДа, сильноОбъекты и сцены не зависят от воплощения
Языковое обоснованиеДаИнструкции — это текст, а не геометрия
Кросс-модальное слияниеВ основномОбращает внимание на объект, названный в подсказке
Проприоцептивный кодировщикНетРазличаются размерность входа и семантика суставов
Блок действийНетОбучен в 7-мерном декартовом пространстве, в котором вы не находитесь
Статистика нормализацииНет, и опасноЧужие статистики смещают каждую команду

Вот почему SmolVLA ведет себя по-разному на недорогом манипуляторе. В его статье выбраны 481 общедоступных наборов данных из Hugging Face, отфильтрованных по типу воплощения, количеству эпизодов, качеству данных и охвату кадров: 22.9K эпизодов, 10.6M кадров, оцененных на реальных манипуляторах SO-100 и SO-101. Малое и соответствующее превосходит большое и несоответствующее. Сравните на ACT against SmolVLA.

Три пути, которые стоит выбрать

Путь A: дообучение с контрольной точки, которая уже усвоила данные

Большинству людей следует выбрать этот путь. Вы никогда не касаетесь DROID или Open X-Embodiment: выберите политику, предварительное обучение которой уже поглотило данные из разных воплощений, запишите свои собственные эпизоды, дообучите.

PolicyПараметрыМин. эпизодовФормат набора данныхУровень GPUИнференсБазовый чекпоинт
GR00T N1.7~3 B, ~40 M обучено в донастройке50LeRobot v2.0 или v2.1A100 или H100 80 GB152 ms за шагnvidia/GR00T-N1.7-3B
GR00T N1.5~3 B50LeRobot v2.0 или v2.1A100 или H100 80 GB165 msnvidia/GR00T-N1.5-3B
Pi0.5~3 B, основа PaliGemma50LeRobot v3.0A100 или H100 80 GB485 mslerobot/pi05_base
SmolVLA~450 M30LeRobot v3.0RTX 4090 или любой 24 GB245 mslerobot/smolvla_base
ACT~80 M50LeRobot v3.0RTX 4090 или любой 24 GB20 msнет, с нуля

ACT — это честный крайний случай: нет базовой модели, поэтому никакие публичные данные никогда не достигают ее. Это не является автоматически недостатком, поскольку при 20 мс на шаг действия это единственная из пяти моделей, которая может замыкать быстрый цикл, как страница ACT, изложено. Выбирайте по задаче, используя сравнение всех пяти, GR00T N1.7 против Pi0.5, и 332 результата бенчмарков для 85 моделей в арене.

Путь B: используйте DROID в качестве тестового приспособления

Выборка из 100 эпизодов — это лучшие 2 ГБ, которые вы скачаете в этом месяце, и не для обучения. Это набор данных, который, как вы знаете, является корректным. Запустите на нем свой конвертер, загрузчик и короткую задачу на GPU; все, что не сработает, — это ошибка инфраструктуры, обнаруженная, пока это было дешево. NVIDIA делает то же самое в масштабе: карта GR00T N1.7 перечисляет четыре варианта после обучения, для Bridge и Fractal в SimplerEnv, DROID и LIBERO.

Путь C: запишите свои собственные, целенаправленно

От тридцати до пятидесяти кажется мало по сравнению с 76 000, пока вы не вспомните, что только у вас есть ваша рука, ваши камеры и ваш стол. При настройках по умолчанию LeRobot 50 эпизодов — это 100 минут реального времени. См. , и .

Страница учебника по записи AY-Robots, показывающая шаги для захвата набора данных LeRobot из сеанса телеуправления
Пошаговое руководство по записи на /learn/record-your-first-dataset: шаг, который общедоступные данные не могут заменить.

Два способа перейти от общедоступных данных к рабочей политике

All of this runs on your own machine plus a rented GPU. Knowing the manual path matters because when something breaks you will know which layer broke.

  1. 1
    Install LeRobot with the extras the scripts need

    The record and train entry points each declare their own extra.

    bash
    pip install 'lerobot[core_scripts]'   # lerobot-record
    pip install 'lerobot[training]'      # lerobot-train
    pip install gsutil tensorflow tensorflow-datasets
  2. 2
    Get a small, known-good slice

    100 DROID episodes, 2 GB.

    bash
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/
  3. 3
    Convert to LeRobot form

    Writes the unified 8-D state and 7-D action, annotating robot type and control frequency.

    bash
    python openx_rlds.py \
        --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \
        --local-dir ~/lerobot_droid100 \
        --repo-id you/droid100_lerobot \
        --use-videos
  4. 4
    Check the version against your trainer

    The converter README documents v3.0 output; the published IPEC-COMMUNITY datasets report v2.0. GR00T wants v2.0 or v2.1 and crashes on v3.0; Pi0.5, SmolVLA and ACT want v3.0. Mind the gap: the only conversion script on LeRobot main goes 2.1 to 3.0.

    bash
    python src/lerobot/scripts/convert_dataset_v21_to_v30.py \
        --repo-id=you/droid100_lerobot
  5. 5
    Record your own episodes

    Defaults: 30 fps, 60 s per episode, 60 s reset, 50 episodes. The teleoperator type is so100_leader.

    bash
    lerobot-record \
      --robot.type=so100_follower \
      --robot.port=/dev/ttyACM0 \
      --robot.cameras="{front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
      --teleop.type=so100_leader \
      --teleop.port=/dev/ttyACM1 \
      --dataset.repo_id=you/so100_pick_block \
      --dataset.num_episodes=50 \
      --dataset.single_task="Pick up the red block and put it in the bowl"
  6. 6
    Fine-tune on your data only

    Weights from public data, actions from your own. Do not mix the datasets.

    bash
    lerobot-train \
      --policy.path=lerobot/smolvla_base \
      --dataset.repo_id=you/so100_pick_block \
      --policy.device=cuda \
      --batch_size=4 \
      --steps=20000
Where the time actually goes

Not in training; the GPU job is hours. The conversion, the version mismatch and the moment you find your dataset is v2.0 and your trainer wants v3.0 are days. Read dataset rejected as v3 first.

Страница загрузки настольного клиента AY-Robots, клиента, который записывает наборы данных в формате LeRobot из сеанса телеуправления
Настольный клиент по адресу /download записывает наборы данных LeRobot непосредственно из сеанса телеуправления, минуя преобразование RLDS.

Сколько стоит каждый путь

ПутьХранилищеВремя человекаСтоимость GPUВероятность движения вашей руки
Преобразованный DROID отдельно392 GBдни конвертации4 to 12 USDочень низкая, неправильное пространство действий
DROID, объединенный с вашими эпизодамиbothзаблокировано validate_all_metadatan/aнет, не запускается
SmolVLA, 30–50 собственных эпизодовa few GB100 min recording1 to 3 USDвысокая
GR00T N1.7, 50 собственных эпизодовa few GB100 min recording4 to 12 USDвысокая
ACT с нуля, 50 собственных эпизодовa few GB100 min recording1 to 3 USDвысокая, 20 ms инференса
Образец DROID как тестовый стенд2 GBодин деньone short runвысокая, как валидация

Асимметрия — это главное: путь, который заимствует больше всего данных, является самым дорогим и наименее вероятным для перемещения вашей руки. Менее двух часов вашего собственного телеуправления превосходит терабайт чужой Franka. Ещё нет манипулятора? /live транслирует физический SO-100 без регистрации. Затем обучите свою первую политику, и SmolVLA на SO-100 для конкретного руководства.

Разумный план по умолчанию

Загрузите образец DROID размером 2 ГБ и используйте его для проверки вашего пайплайна. Игнорируйте остальные 1.7 ТБ. Запишите 50 эпизодов одной задачи с фиксированными камерами. Сначала дообучите SmolVLA, потому что при минимуме в 30 эпизодов на карте 24 ГБ это самый дешевый способ итерации, затем попробуйте GR00T N1.7 на тех же данных. Сравнивайте по вашей задаче, а не по бенчмарку.

Записывайте наборы данных, которые уже соответствуют вашей руке

Настольный клиент записывает наборы данных в формате LeRobot прямо из сессии телеуправления: правильная рука, правильная частота кадров, правильное пространство действий. Без преобразования RLDS, без переназначения.

Получить настольный клиент
Могу ли я обучить политику на DROID и запустить ее на моем SO-100?

Не напрямую. В сборке LeRobot действия DROID представляют собой 7-мерные команды концевого эффектора для Franka Panda при 15 кадрах в секунду; в необработанном RLDS они представляют собой 6 скоростей суставов плюс положение захвата. SO-100 принимает 6 абсолютных положений суставов. Вам потребуется слой обратной кинематики, и даже тогда 5-степенная кисть не сможет воспроизвести произвольные 6-степенные позы.

Могу ли я смешивать эпизоды DROID или Bridge с моими собственными эпизодами SO-100?

Нет. validate_all_metadata требует идентичных fps, robot_type и feature schema и вызывает ValueError при первом несоответствии. Все три отличаются: 15 или 5 кадров в секунду против 30, franka или widowx против вашей руки, формы действий 7 против 6. Перезапись метаданных для прохождения проверки не исправляет семантику.

Бесполезен ли Open X-Embodiment для недорогой руки?

Нет, но его ценность доходит до вас через предварительно обученные веса, а не через эпизоды. Наборы данных с открытым исходным кодом, включая OXE, Bridge v2 и DROID, составляют 9,1 процента от смеси предварительного обучения pi0, а NVIDIA поставляет варианты GR00T N1.7, дообученные на Bridge, Fractal, DROID и LIBERO. Чего вы не можете сделать, так это добавить эти эпизоды к своей собственной записи.

Какая политика получает наибольшую выгоду от общедоступных данных кросс-воплощения?

Pi0.5 и модели GR00T несут наибольшую предварительную подготовку кросс-воплощения, но SmolVLA часто ведет себя лучше всего на недорогой руке: ее набор для предварительного обучения состоит из 481 набора данных сообщества, 22,9 тыс. эпизодов и 10,6 млн кадров, оцененных на реальных руках SO-100 и SO-101. ACT — это противоположность: нет базовой модели, 20 мс на шаг действия.

Сколько моих собственных эпизодов мне на самом деле нужно?

30 для SmolVLA, 50 для GR00T N1.7, GR00T N1.5, Pi0.5 и ACT. При стандартных настройках LeRobot: 60 с на эпизод и 60 с на сброс, 50 эпизодов — это 100 минут реального времени. Заимствованные данные кросс-воплощения не снижают эти числа.

Sources

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started