Публічний каталог наборів даних 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-D дію кінцевого ефектора [x, y, z, roll, pitch, yaw, gripper] та 8-D стан з додатковим слотом. SO-100 приймає шість абсолютних позицій суглобів.
  • Цей 7-D вектор є артефактом конвертера: власне поле дії RLDS DROID — це 6 швидкостей суглобів плюс позиція захвату, з декартовим видом у action_dict.
  • Чотири тактові частоти: DROID 15 fps, BridgeData V2 5 fps, зріз google_robot 3 fps, запис SO-100 на 30 fps.
  • Ви не можете об'єднати їх зі своїми даними. validate_all_metadata видає помилку на першому з fps, robot_type або features, що відрізняється, а всі три відрізняються.
  • Передаються попередньо навчені ваги, а не епізоди. Дані з відкритим кодом становлять 9.1 відсотка суміші попереднього навчання pi0.
  • Їх найдешевше реальне використання — це тестовий стенд: відомий справний зразок DROID об'ємом 2 ГБ, 100 епізодів, який перевіряє ваш конвеєр, перш ніж ви записуватимете дані протягом вихідних.

Існує публічний набір даних з мільйоном траєкторій на Google Cloud bucket та 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 teleoperated, 9,731 scriptedвід кожної вихідної лабораторії
Частота керування15 Hz5 Hzваріюється, від 3 кадрів/с і вище
Камери2 x ZED 2 зовнішні, 1 x ZED Mini на зап'ястідо 4, більшість епізодів лише з фіксованоюбудь-які, що використовувалися лабораторією
Сире завантаження1.7 TB RLDS, 8.7 TB raw stereoархіви JPEGTFDS-бакети для кожного набору даних
Точкою входу є конвертація 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, до трьох на епізод.

  • 76k траєкторій, 350 годин, 564 сцени, 84 завдання, 50 збирачів на трьох континентах.
  • Головний результат — це спільне навчання, а не автономне: пакети, змішані 50/50 з демонстраціями в межах домену, перевершили наступний найкращий метод на 22 відсотки абсолютної успішності в розподілі та на 17 відсотків поза ним.
  • IPEC-COMMUNITY/droid_lerobot: 92,233 епізоди, 27,044,326 кадрів, franka, 15 fps, codebase_version v2.0, три потоки AV1 при 180x320, 392 GB.
  • Зразок для налагодження об'ємом 2 GB, 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 fps, 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 ступенями свободи, але не вирівнюють системи координат між наборами даних і дозволяють значенням дій бути абсолютними або відносними позиціями чи швидкостями, відповідно до оригінальної схеми керування кожного робота. Їхній висновок: один і той же вектор дії може викликати дуже різні рухи для різних роботів.

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

Невідповідність, у чотирьох частинах

Невідповідність фізичного втілення зазвичай розглядається як одна розпливчаста проблема. Їх чотири, вони відрізняються за характером збоїв, і дві з них не можна виправити за допомогою скриптів.

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

SO-100 має п'ять суглобів руки плюс захват. Якщо рахувати як мотори, це 6-DoF рука, і стаття SmolVLA називає її так; якщо рахувати як механізм позиціонування, це 5-DoF, і LeRobot називає її так у своєму docstring для зворотної кінематики, який описує IK з м'якою орієнтацією для 5-DOF SO-101, де зап'ястя відстежує орієнтацію лише частково. Franka має сім позиційних суглобів. Цей розрив визначає, які пози існують: 5-DoF рука, як правило, не може одночасно досягти довільної позиції та орієнтації, тому розв'язувач повертає найближчу можливу, що є іншим рухом від продемонстрованого. Довідково: .

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-D: x, y, z, крен, тангаж, рискання, захват6-D: одна цільова позиція на двигун
Вектор стану8-D, з додатковим слотом (google_robot використовує кватерніон)6-D, один на двигун
Система координатДекартова, не вирівняна між наборами данихпростір суглобів, калібрування для кожної руки
Абсолютний чи відноснийбудь-який, визначається вихідною лабораторієюабсолютні цільові позиції
Одиницінормалізовані для кожного набору даних, потім дискретизованіградуси за замовчуванням (use_degrees=True), інакше від -100 до 100
Прихований збійдельта, прочитана як абсолютне значеннянекалібрована рука
7-вимірний декартовий вектор — це домовленість конвертера, а не DROID'а

Файл openx2lerobot README документує уніфікований 8-dim стан та 7-dim дію для кожного набору даних, який він конвертує, звідки й походить слот 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, чий docstring вказує встановити 0.0 для IK лише за позицією на недоактуйованих руках. Ви можете побудувати міст, але орієнтаційна половина кожної запозиченої дії залишається апроксимованою.

3. Частота керування

DROID працює на 15 Hz, BridgeData V2 на 5 Hz, зріз google_robot на 3 fps; автори pi0 описують відкриту частину своєї суміші як низькочастотне керування між 2 та 10 Hz. DatasetRecordConfig LeRobot за замовчуванням встановлює fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50. навчена на даних 5 Hz, дізналася, що одна дія охоплює 200 ms. Відтворення її на 30 Hz призводить до повільного руху руки; наївна передискретизація розмазує кадр, де захват закривається. Це також погано взаємодіє з : 100-step chunk становить 20 seconds при 5 Hz, 3.3 при 30 Hz.

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; виправте це, і ви натрапите на перевірку ознак, 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 проти SmolVLA.

Три шляхи, які варто розглянути

Шлях A: доналаштування з контрольної точки, яка вже «з'їла» дані

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

ПолітикаПараметриМін. епізодівФормат набору данихРівень GPUВисновокБазовий контрольний пункт
GR00T N1.7~3 B, ~40 M trained in fine-tuning50LeRobot v2.0 or v2.1A100 or H100 80 GB152 ms per stepnvidia/GR00T-N1.7-3B
GR00T N1.5~3 B50LeRobot v2.0 or v2.1A100 or H100 80 GB165 msnvidia/GR00T-N1.5-3B
Pi0.5~3 B, PaliGemma backbone50LeRobot v3.0A100 or H100 80 GB485 mslerobot/pi05_base
SmolVLA~450 M30LeRobot v3.0RTX 4090 or any 24 GB245 mslerobot/smolvla_base
ACT~80 M50LeRobot v3.0RTX 4090 or any 24 GB20 msnone, from scratch

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 власних епізодівкілька ГБ100 хв запису1 to 3 USDвисока
GR00T N1.7, 50 власних епізодівкілька ГБ100 хв запису4 to 12 USDвисока
ACT з нуля, 50 власних епізодівкілька ГБ100 хв запису1 to 3 USDвисока, 20 ms інференсу
Зразок DROID як тестовий пристрій2 GBодин деньone short runвисока, як валідація

Асиметрія є ключовим моментом: шлях, який запозичує найбільше даних, є найдорожчим і найменш імовірним для руху вашої руки. Менш ніж дві години вашої власної телеоперації перевершують терабайт чужої Franka. Ще немає маніпулятора? /live транслює фізичний SO-100 без реєстрації. Потім навчіть свою першу політику, і SmolVLA на SO-100 для конкретного посібника.

Розумний план за замовчуванням

Завантажте зразок DROID розміром 2 GB і використовуйте його для перевірки вашого конвеєра. Ігноруйте інші 1.7 TB. Запишіть 50 епізодів одного завдання з фіксованими камерами. Спочатку доналаштуйте SmolVLA, оскільки при мінімум 30 епізодах на карті 24 GB це найдешевший варіант для ітерацій, потім спробуйте GR00T N1.7 на тих самих даних. Порівнюйте на своєму завданні, а не на бенчмарку.

Записуйте набори даних, які вже відповідають вашому маніпулятору

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

Отримати настільний клієнт
Чи можу я навчити політику на DROID і запустити її на своєму SO-100?

Не безпосередньо. У збірці LeRobot дії DROID — це 7-D команди кінцевого ефектора для Franka Panda з частотою 15 fps; у сирому RLDS це 6 швидкостей суглобів плюс позиція захвату. SO-100 приймає 6 абсолютних позицій суглобів. Вам знадобився б шар зворотної кінематики, і навіть тоді 5-DoF зап'ястя не зможе відтворити довільні 6-DoF пози.

Чи можу я змішувати епізоди DROID або Bridge зі своїми власними епізодами SO-100?

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

Чи є Open X-Embodiment марним для недорогого маніпулятора?

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

Яка політика найбільше виграє від публічних даних крос-тілесності?

Pi0.5 та моделі GR00T мають найбільше попереднього навчання крос-тілесності, але SmolVLA часто поводиться найкраще на недорогому маніпуляторі: його набір для попереднього навчання складається з 481 громадського набору даних, 22.9K епізодів та 10.6M кадрів, оцінених на реальних маніпуляторах SO-100 та SO-101. ACT є протилежністю: без базової моделі, 20 ms на крок дії.

Скільки власних епізодів мені насправді потрібно?

30 для SmolVLA, 50 для GR00T N1.7, GR00T N1.5, Pi0.5 та ACT. За стандартних налаштувань LeRobot 60 s на епізод та 60 s скидання, 50 епізодів — це 100 minutes реального часу. Запозичені дані крос-тілесності не зменшують ці числа.

Sources

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started