
DROID, BridgeData V2 e Open X-Embodiment si convertono in azioni dell'end-effector 7-D su bracci a 6 e 7 DoF. Un SO-100 accetta 6 posizioni articolari. Cosa si trasferisce, cosa no, e cosa fare invece.
La versione breve
- •Le build LeRobot di tutti e tre condividono una convenzione: un'azione dell'end-effector 7-D [x, y, z, roll, pitch, yaw, gripper] e uno stato 8-D con uno slot pad. Un SO-100 acquisisce sei posizioni assolute delle giunture.
- •Quel vettore 7-D è l'artefatto del convertitore: il campo d'azione RLDS di DROID è di 6 velocità delle giunture più una posizione del gripper, con la vista cartesiana in action_dict.
- •Quattro clock: DROID 15 fps, BridgeData V2 5 fps, lo slice google_robot 3 fps, una registrazione SO-100 a 30 fps.
- •Non puoi unirli con i tuoi dati. validate_all_metadata solleva un errore al primo tra fps, robot_type o features che differisce, e tutti e tre differiscono.
- •Ciò che viene trasferito sono i pesi pre-addestrati, non gli episodi. I dati open-source rappresentano il 9.1 percento della miscela di pre-addestramento di pi0.
- •Il loro uso reale più economico è un banco di prova: un campione DROID da 2 GB, 100 episodi, noto per essere buono, che dimostra la tua pipeline prima di registrare per un fine settimana.
C'è un dataset pubblico di un milione di traiettorie su un Google Cloud bucket e un SO-100 sulla scrivania che è costato da 110 a 150 EUR in parti. Perché il primo non può insegnare al secondo? In parte può, ma quasi nessuno del trasferimento avviene dove le persone si aspettano, e la parte che sembra più facile non funziona affatto.
Cosa segue: cosa c'è dentro DROID, BridgeData V2 e Open X-Embodiment, dove ciascuno si scontra con un braccio 5-DoF a basso costo, e cosa fare invece. Ogni numero riportato di seguito proviene dal documento, dalla scheda del dataset o dal file sorgente a cui appartiene.
Cosa contengono realmente i tre dataset
| DROID | BridgeData V2 | Open X-Embodiment | |
|---|---|---|---|
| Robot | Franka Panda, 7 DoF, Robotiq 2F-85 | WidowX 250, 6 DoF, ~4,000 USD rig | 22 embodiments, 60 datasets, 34 labs |
| Scala | 76k trajectories, 350 hours | 60,096 trajectories | 1M+ trajectories, 527 skills |
| Diversità | 564 scenes, 84 tasks, 50 collectors | 24 environments, 13 skills | 160,266 tasks, 21 institutions |
| Composizione | tutto teleoperato | 50.365 teleoperati, 9.731 scriptati | per laboratorio di origine |
| Frequenza di controllo | 15 Hz | 5 Hz | varia, da 3 fps in su |
| Telecamere | 2 x ZED 2 esterne, 1 x ZED Mini da polso | fino a 4, la maggior parte degli episodi solo quella fissa | qualsiasi cosa usasse il laboratorio |
| Download grezzo | 1.7 TB RLDS, 8.7 TB stereo grezzo | archivi JPEG | bucket TFDS per dataset |
Poche persone scaricano ancora 1.7 TB di TFRecords RLDS. L'organizzazione della comunità IPEC-COMMUNITY ha ripubblicato la maggior parte di Open X-Embodiment in formato dataset LeRobot con video AV1, dove DROID si attesta a 392 GB. Questa è la versione con cui lavorerai, e il suo meta/info.json è ciò che devi leggere per primo.
DROID
Il più standardizzato dei tre. Un unico setup ovunque: un Franka Panda con una pinza Robotiq 2F-85, due telecamere stereo ZED 2 regolabili e una ZED Mini da polso, teleoperato con controller Meta Quest 2, registrato tramite Polymetis a 15 Hz sia nello spazio articolare che in quello dell'end-effector . Le etichette linguistiche sono arrivate in seguito tramite tasq.ai, fino a tre per episodio.
- 76k traiettorie, 350 ore, 564 scene, 84 compiti, 50 raccoglitori su tre continenti.
- Il risultato principale è il co-training, non l'addestramento autonomo: i batch miscelati 50/50 con dimostrazioni in-domain superano il metodo successivo migliore del 22 percento di successo assoluto nella distribuzione, e del 17 percento fuori di essa.
- IPEC-COMMUNITY/droid_lerobot: 92,233 episodes, 27,044,326 frames, franka, 15 fps, codebase_version v2.0, three AV1 streams at 180x320, 392 GB.
- Un campione di debug di 2 GB e 100 episodi si trova su gs://gresearch/robotics/droid_100. Inizia da lì.
BridgeData V2
Il più vicino a una configurazione amatoriale: un braccio WidowX 250 a 6 DoF, 60,096 traiettorie attraverso 24 ambienti e 13 abilità a 5 Hz. Si noti la composizione: 50,365 dimostrazioni esperte teleoperate più 9,731 da una politica di pick-and-place scriptata randomizzata, quindi circa il 16 percento non è una dimostrazione umana, il che è importante per la apprendimento per imitazione qualità. Il download usuale, IPEC-COMMUNITY/bridge_orig_lerobot, riporta 53,192 episodes e 1,893,026 frames a 5 fps, robot_type widowx: meno dei 60,096 del paper, quindi leggere il conteggio da meta/info.json piuttosto che citare l'uno o l'altro.
Open X-Embodiment
Non un dataset nello stesso senso: 60 dataset di robot esistenti da 34 laboratori raggruppati in un'unica collezione RLDS che copre 22 implementazioni e oltre un milione di traiettorie. BridgeData V2 si trova al suo interno come bridge_orig; la sezione google_robot, fractal20220817_data, si converte in 87.212 episodi a 3 fps.
Il raggruppamento comporta un'avvertenza che il documento dichiara apertamente. Per gli esperimenti RT-X, gli autori convertono ogni sorgente in un'azione dell'end-effector a 7-DoF, ma non allineano i sistemi di coordinate tra i dataset e consentono che i valori di azione siano posizioni o velocità assolute o relative, secondo lo schema di controllo originale di ciascun robot. La loro conclusione: lo stesso vettore di azione può indurre movimenti molto diversi per robot diversi.

La discrepanza, in quattro parti
La discrepanza di incarnazione è solitamente trattata come un unico problema vago. Sono quattro, falliscono in modi diversi, e due non sono risolvibili tramite scripting.
1. Gradi di libertà
Un SO-100 ha cinque giunti del braccio più una pinza. Contato come motori, è un braccio a 6-DoF, e il paper SmolVLA lo definisce così; contato come meccanismo di posizionamento è a 5-DoF, e LeRobot lo definisce così nella sua docstring di cinematica inversa, che descrive l'IK a orientamento morbido sul SO-101 a 5-DOF dove il polso traccia l'orientamento solo parzialmente. Un Franka ha sette giunti di posizionamento. Questo divario decide quali pose esistono: un braccio a 5-DoF non può generalmente raggiungere una posizione e un orientamento arbitrari contemporaneamente, quindi il risolutore restituisce il più vicino possibile, un movimento diverso da quello dimostrato. Contesto: gradi di libertà.
# 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-DQuindi un checkpoint DROID già pronto non è una scorciatoia. Physical Intelligence distribuisce pi05_droid all'indirizzo gs://openpi-assets/checkpoints/pi05_droid, e lo stesso README che ne loda l'ampiezza avverte che questi checkpoint esperti potrebbero non generalizzare alla tua configurazione. Il suo stato è composto da otto numeri di giunto Franka e le sue chiavi immagine sono exterior_image_1_left e wrist_image_left. Nessun flag lo trasforma in un comando SO-100 a sei motori.
2. Cosa dice realmente il vettore di azione
Più profondo della dimensionalità. Nelle conversioni LeRobot, tutti e tre indicano dove dovrebbe andare la pinza, nello spazio cartesiano. Un SO-100 indica dove dovrebbero andare sei servomotori. La conversione richiede un modello cinematico e un risolutore, non un semplice rimodellamento.
| Proprietà | OXE, DROID e Bridge in formato LeRobot | SO-100 in LeRobot |
|---|---|---|
| Vettore di azione | 7-D: x, y, z, roll, pitch, yaw, pinza | 6-D: una posizione obiettivo per motore |
| Vettore di stato | 8-D, con uno slot di riempimento (google_robot usa un quaternione) | 6-D, uno per motore |
| Sistema di riferimento | Cartesiano, non allineato tra i dataset | spazio articolare, calibrazione per braccio |
| Assoluto o relativo | entrambi, deciso dal laboratorio di origine | posizioni obiettivo assolute |
| Unità | normalizzato per dataset, poi discretizzato | gradi per impostazione predefinita (use_degrees=True), altrimenti da -100 a 100 |
| Guasto silenzioso | un delta letto come assoluto | un braccio non calibrato |
Il README di openx2lerobot documenta uno stato unificato a 8 dimensioni e un'azione a 7 dimensioni per ogni dataset che converte, da cui deriva lo slot pad. Lo schema RLDS di DROID differisce: la sua action di livello superiore è un 7-vettore di 6 velocità articolari più 1 posizione del gripper, con cartesian_position, cartesian_velocity, joint_position e joint_velocity sotto action_dict. openpi legge la vista nello spazio articolare, la build di LeRobot ti fornisce quella cartesiana. Nessuna delle due è sei angoli assoluti del servo.
LeRobot fornisce il pezzo mancante: il follower SO ha un processore cinematico con i passaggi InverseKinematicsEEToJoints e ForwardKinematicsJointsToEE. Le sue chiavi sono ee.x, ee.y, ee.z più un vettore di rotazione ee.wx, ee.wy, ee.wz e ee.gripper_pos, quindi anche la codifica dell'orientamento differisce dal rollio-beccheggio-imbardata nei file. Il passaggio IK accetta un orientation_weight, predefinito 0.01, il cui docstring indica di impostare 0.0 per IK solo di posizione su bracci sotto-attuati. Puoi costruire il ponte, ma la metà dell'orientamento di ogni azione presa in prestito rimane approssimata.
3. Frequenza di controllo
DROID è a 15 Hz, BridgeData V2 a 5 Hz, la slice google_robot a 3 fps; gli autori di pi0 descrivono la parte open-source della loro miscela come controllo a bassa frequenza tra 2 e 10 Hz. DatasetRecordConfig di LeRobot ha come valori predefiniti fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50. Una addestrata su dati a 5 Hz ha imparato che un'azione copre 200 ms. Riproducendola a 30 Hz il braccio si muove lentamente; ricampionando ingenuamente si sfoca il frame in cui il gripper si chiude. Interagisce anche male con : un chunk di 100 passi è di 20 secondi a 5 Hz, 3.3 a 30 Hz.
4. Telecamere
BridgeData V2 ha randomizzato due pose della telecamera ogni 50 traiettorie, e la sua pagina di progetto nota che la maggior parte dei dati contiene comunque solo la vista fissa. DROID ha utilizzato supporti ZED 2 regolabili più una ZED Mini da polso. Hai due webcam USB posizionate a occhio. La posa della telecamera non è una variabile di disturbo per un ; è gran parte di ciò su cui l'encoder visivo si è basato, e nulla nel formato del file indica che le pose differiscono.
I pezzi si incastrano abbastanza bene da funzionare. Il dataset si carica, l'addestramento inizia, la perdita diminuisce, i checkpoint appaiono, nessun errore. Poi la policy non fa nulla di riconoscibile sul braccio e si passa una giornata a caccia di un bug nello script di addestramento. Non c'è nessun bug: il modello ha imparato una distribuzione di azioni cartesiane per un robot che non esiste nella tua stanza. Inizia da la perdita diminuisce, la policy non fa nulla, non dai tuoi iperparametri.
Cosa succede quando provi comunque a unire i dati
Il piano ovvio è concatenare: qualche migliaio di episodi DROID più i tuoi 50. LeRobot si rifiuta, e il rifiuto elenca le tre cose che differiscono.
- 1Scarica il campione di 100 episodi, non l'intero 1.7 TB
2 GB sono sufficienti per vedere la struttura.
bashpip install gsutil tensorflow tensorflow-datasets gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 2Converti RLDS nel formato LeRobot
openx2lerobot incapsula le trasformazioni standard OXE e annota il tipo di robot e la frequenza di controllo. Il README lo inserisce in convert.sh.
bashgit 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 - 3Leggi meta/info.json prima di ogni altra cosa
Questo file decide se il resto della tua giornata funzionerà.
bashpython -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'])" - 4Prova l'unione e leggi l'errore
merge carica ogni dataset, quindi validate_all_metadata controlla fps, robot_type e features rispetto al primo nell'elenco, sollevando un errore al primo disallineamento.
bashlerobot-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.
I valori di riferimento provengono da qualsiasi dataset tu abbia elencato per primo, motivo per cui il messaggio si lamenta dei tuoi 30 fps anziché dei 15 di DROID. Correggi gli fps e incontrerai il controllo robot_type; correggi quello e incontrerai il controllo delle feature, 7 contro 6 per l'azione. Nessun ordinamento funziona, e la stessa protezione viene eseguita al momento della registrazione tramite sanity_check_dataset_robot_compatibility.
Sulla versione principale attuale di LeRobot, so100_follower e so101_follower sono entrambi registrati su un'unica SOFollowerRobotConfig condivisa, quindi la stringa di una registrazione reale non è necessariamente quella che ti aspetti. Leggila dal tuo meta/info.json e considera un controllo che hai dovuto disabilitare come un controllo che ti stava dicendo qualcosa.
Quindi cosa si trasferisce effettivamente?
Pesi, non episodi. Ogni moderna policy generalista ne ha assorbito una parte nel pre-addestramento, e quando si da un rilasciato, lo si eredita già riconciliato da persone con la potenza di calcolo necessaria per farlo correttamente. Il paper di pi0 è esplicito sulla proporzione: il 9,1 percento della sua miscela di pre-addestramento, contata in passi temporali, è costituito da dati open-source inclusi OXE, Bridge v2 e DROID. Questa cifra è di pi0; la miscela di ogni fornitore differisce.
- Prior visivi e linguistici: l'encoder ha visto migliaia di cucine e tazze e sa a cosa si riferisce "il blocco rosso".
- Un prior sulla struttura di manipolazione: avvicinamento, chiusura, sollevamento, trasporto, rilascio, indipendente dall'embodiment anche quando i numeri non lo sono.
- Un dataset noto e valido per i test. Se il tuo lavoro non riesce a sovradattare 100 episodi DROID, il problema è la tua configurazione.
- Punti di riferimento: nei domini con dataset su piccola scala, RT-1-X ha raggiunto un tasso di successo medio superiore del 50 percento rispetto al metodo originale o a RT-1, e RT-2-X ha superato RT-2 di circa 3 volte sulle abilità emergenti.
- Nessuna supervisione dell'azione utilizzabile. Un target cartesiano 7D non è un comando di giunto 6D.
- Nessun trasferimento della posa della telecamera, e nulla nei dati indica che le pose differiscono.
- Nessun trasferimento della temporizzazione: sorgenti a 3, 5 e 15 fps contro un registratore a 30 fps.
- Nessun trasferimento del gripper. Un Robotiq 2F-85 e una ganascia stampata su un STS3215 differiscono per forza, corsa e dinamica.
- La sola scala non è stata sufficiente nemmeno per i suoi autori: nei domini con grandi dataset, RT-1-X non ha superato un RT-1 addestrato solo su quel dataset.
- Nessuna riduzione del numero di episodi propri necessari.
| Strato del modello | Si trasferisce? | Perché |
|---|---|---|
| Encoder visivo | Sì, fortemente | Oggetti e scene sono indipendenti dall'embodiment |
| Ancoraggio linguistico | Sì | Le istruzioni sono testo, non geometria |
| Fusione cross-modale | Per lo più | Si concentra sull'oggetto nominato nel prompt |
| Encoder di propriocezione | No | La dimensione dell'input e la semantica dei giunti differiscono |
| Testa d'azione | No | Addestrato su uno spazio cartesiano 7D in cui non ti trovi |
| Statistiche di normalizzazione | No, e pericoloso | Statistiche esterne alterano ogni comando |
Questo è il motivo per cui SmolVLA si comporta in modo diverso su un braccio a basso costo. Il suo articolo seleziona 481 dataset della community da Hugging Face, filtrati per tipo di embodiment, numero di episodi, qualità dei dati e copertura dei frame: 22.9K episodi, 10.6M frame, valutati su bracci reali SO-100 e SO-101. Piccolo e corrispondente batte grande e non corrispondente. Confronta ACT contro SmolVLA.
Tre percorsi che vale la pena intraprendere
Percorso A: fine-tuning da un checkpoint che ha già assimilato i dati
La maggior parte delle persone dovrebbe scegliere questo. Non si toccano mai DROID o Open X-Embodiment: scegli una policy il cui pre-training ha già assorbito dati cross-embodiment, registra i tuoi episodi, esegui il fine-tuning.
| Policy | Parametri | Episodi minimi | Formato del dataset | Livello GPU | Inferenza | Checkpoint di base |
|---|---|---|---|---|---|---|
| GR00T N1.7 | ~3 B, ~40 M trained in fine-tuning | 50 | LeRobot v2.0 or v2.1 | A100 or H100 80 GB | 152 ms per step | nvidia/GR00T-N1.7-3B |
| GR00T N1.5 | ~3 B | 50 | LeRobot v2.0 or v2.1 | A100 or H100 80 GB | 165 ms | nvidia/GR00T-N1.5-3B |
| Pi0.5 | ~3 B, PaliGemma backbone | 50 | LeRobot v3.0 | A100 or H100 80 GB | 485 ms | lerobot/pi05_base |
| SmolVLA | ~450 M | 30 | LeRobot v3.0 | RTX 4090 or any 24 GB | 245 ms | lerobot/smolvla_base |
| ACT | ~80 M | 50 | LeRobot v3.0 | RTX 4090 or any 24 GB | 20 ms | none, from scratch |
ACT è il caso limite onesto: nessun modello di base, quindi nessuno dei dati pubblici lo raggiunge mai. Non è automaticamente uno svantaggio, poiché a 20 ms per passo d'azione è l'unico dei cinque che può chiudere un ciclo veloce, come la pagina di ACT illustra. Scegli in base al compito usando tutti e cinque confrontati, GR00T N1.7 contro Pi0.5, e i 332 risultati di benchmark su 85 modelli in l'arena.
Percorso B: usa DROID come banco di prova
Il campione di 100 episodi è il miglior 2 GB che scaricherai questo mese, e non per l'addestramento. È un dataset che sai essere corretto. Esegui il tuo convertitore, loader e un breve lavoro GPU su di esso; qualsiasi cosa fallisca è un bug dell'infrastruttura trovato quando era economico. NVIDIA fa lo stesso su larga scala: la scheda GR00T N1.7 elenca quattro varianti post-addestrate, per Bridge e Fractal in SimplerEnv, DROID e LIBERO.
Percorso C: registra il tuo, deliberatamente
Da trenta a cinquanta sembra poco rispetto a 76.000 finché non ricordi che i tuoi sono gli unici con il tuo braccio, le tue telecamere e il tuo tavolo. Con le impostazioni predefinite di LeRobot, 50 episodi equivalgono a 100 minuti di tempo effettivo. Vedi , e .

Due modi per passare dai dati pubblici a una policy funzionante
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.
- 1Install LeRobot with the extras the scripts need
The record and train entry points each declare their own extra.
bashpip install 'lerobot[core_scripts]' # lerobot-record pip install 'lerobot[training]' # lerobot-train pip install gsutil tensorflow tensorflow-datasets - 2Get a small, known-good slice
100 DROID episodes, 2 GB.
bashgsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 3Convert to LeRobot form
Writes the unified 8-D state and 7-D action, annotating robot type and control frequency.
bashpython openx_rlds.py \ --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \ --local-dir ~/lerobot_droid100 \ --repo-id you/droid100_lerobot \ --use-videos - 4Check 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.
bashpython src/lerobot/scripts/convert_dataset_v21_to_v30.py \ --repo-id=you/droid100_lerobot - 5Record your own episodes
Defaults: 30 fps, 60 s per episode, 60 s reset, 50 episodes. The teleoperator type is so100_leader.
bashlerobot-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" - 6Fine-tune on your data only
Weights from public data, actions from your own. Do not mix the datasets.
bashlerobot-train \ --policy.path=lerobot/smolvla_base \ --dataset.repo_id=you/so100_pick_block \ --policy.device=cuda \ --batch_size=4 \ --steps=20000
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.
The platform removes the GPU and pipeline plumbing. It does not remove the embodiment mismatch: point the trainer at a converted DROID dataset and you get a policy trained on Franka actions, exactly as you would locally.
- 1Pick a policy, not a dataset
The five trainable policies, with parameter counts, GPU tiers and latencies, are at /policies.
- 2Record with the desktop client
It writes LeRobot-format datasets, episodes, camera streams and joint states, straight out of a teleop session. No conversion step to get wrong.
- 3Or bring a dataset you already have
The training form accepts one from /directory, a Hugging Face repo id, or your own machine. A repo id means a converted OXE dataset will load, and the mismatch loads with it.
- 4Train on a rented GPU
The backend rents a card on a spot market by required VRAM. SmolVLA or ACT on 24 GB: 2 to 5 hours, about 1 to 3 USD. GR00T or Pi0.5 on A100 or H100: 3 to 6 hours, about 4 to 12 USD. See /pricing.
- 5Serve it back to the arm
/api/inference/pod auto-provisions a GPU pod serving the policy; the local client talks to that endpoint. Pods carry an idle watchdog and destroy themselves, so nothing keeps billing silently.
Inference has to sit next to the servos for fast tasks. The control loop is 20 to 485 ms per action step depending on the model, and public-internet round trips turn a working policy into a hesitant one. Remote inference is fine for slow pick-and-place, not fast reactive motion.
The platform helps with the boring parts: the right format for the right arm at the right frame rate, and no babysitting a spot instance. It helps with nothing else in this article.

Costo di ogni percorso
| Percorso | Archiviazione | Tempo umano | Costo GPU | Probabilità che muova il braccio |
|---|---|---|---|---|
| DROID convertito da solo | 392 GB | giorni di conversione | 4 to 12 USD | molto bassa, spazio di azione errato |
| DROID unito ai tuoi episodi | entrambi | blocked by validate_all_metadata | n/a | nessuna, non viene eseguito |
| SmolVLA, da 30 a 50 episodi propri | pochi GB | 100 min di registrazione | 1 to 3 USD | alta |
| GR00T N1.7, 50 episodi propri | pochi GB | 100 min di registrazione | 4 to 12 USD | alta |
| ACT da zero, 50 episodi propri | pochi GB | 100 min di registrazione | 1 to 3 USD | alta, 20 ms di inferenza |
| Esempio DROID come fixture di test | 2 GB | un pomeriggio | una breve esecuzione | alta, come convalida |
L'asimmetria è il punto: il percorso che prende in prestito più dati è il più costoso e meno propenso a muovere il tuo braccio. Meno di due ore della tua stessa teleoperazione battono un terabyte della Franka di qualcun altro. Nessun braccio ancora? /live trasmette in streaming un SO-100 fisico senza registrazione. Poi addestra la tua prima policy, e SmolVLA su SO-100 per la guida specifica.
Scarica il campione DROID da 2 GB e usalo per testare la tua pipeline. Ignora gli altri 1.7 TB. Registra 50 episodi di un singolo compito con telecamere fisse. Ottimizza SmolVLA per primo, perché con un minimo di 30 episodi su una scheda da 24 GB è il più economico su cui iterare, poi prova GR00T N1.7 sugli stessi dati. Confronta sul tuo compito, non su un benchmark.
Registra dataset che corrispondono già al tuo braccio
Il client desktop scrive dataset in formato LeRobot direttamente da una sessione di teleoperazione: braccio giusto, frame rate giusto, spazio di azione giusto. Nessuna conversione RLDS, nessuna rimappatura.
Ottieni il client desktopPosso addestrare una policy su DROID ed eseguirla sul mio SO-100?▾
Non direttamente. Nella build LeRobot, le azioni DROID sono comandi dell'end-effector a 7 gradi di libertà su un Franka Panda a 15 fps; nel RLDS grezzo sono 6 velocità articolari più una posizione del gripper. Un SO-100 richiede 6 posizioni articolari assolute. Avresti bisogno di un livello di cinematica inversa, e anche in quel caso un polso a 5 DoF non può riprodurre pose arbitrarie a 6 DoF.
Posso mescolare episodi DROID o Bridge con i miei episodi SO-100?▾
No. validate_all_metadata richiede fps, robot_type e schema delle feature identici e solleva un ValueError al primo disallineamento. Tutti e tre differiscono: 15 o 5 fps contro 30, franka o widowx contro il tuo braccio, forme di azione di 7 contro 6. Riscrivere i metadati per superare il controllo non risolve la semantica.
Open X-Embodiment è quindi inutile per un braccio a basso costo?▾
No, ma il suo valore ti arriva tramite pesi pre-addestrati, non episodi. I dataset open-source, inclusi OXE, Bridge v2 e DROID, costituiscono il 9.1 percento della miscela di pre-addestramento di pi0, e NVIDIA distribuisce varianti di GR00T N1.7 post-addestrate su Bridge, Fractal, DROID e LIBERO. Ciò che non puoi fare è aggiungere quegli episodi alla tua registrazione.
Quale policy beneficia maggiormente dei dati pubblici cross-embodiment?▾
Pi0.5 e i modelli GR00T presentano il maggior pre-addestramento cross-embodiment, ma SmolVLA spesso si comporta meglio su un braccio a basso costo: il suo set di pre-addestramento è composto da 481 dataset della community, 22.9K episodi e 10.6M frame, valutati su bracci reali SO-100 e SO-101. ACT è l'opposto: nessun modello base, 20 ms per passo di azione.
Di quanti dei miei episodi ho effettivamente bisogno?▾
30 per SmolVLA, 50 per GR00T N1.7, GR00T N1.5, Pi0.5 e ACT. Con le impostazioni predefinite di LeRobot di 60 s per episodio e 60 s di reset, 50 episodi equivalgono a 100 minuti di tempo effettivo. I dati cross-embodiment presi in prestito non riducono questi numeri.
Sources
- DROID: Un Dataset di Manipolazione Robotica su Larga Scala in Ambienti Reali
- Documentazione DROID: dimensioni di download e lo schema degli episodi RLDS
- BridgeData V2: Un Dataset per l'Apprendimento Robotico su Larga Scala
- Pagina del progetto BridgeData V2: composizione e copertura della telecamera
- Open X-Embodiment: Dataset per l'Apprendimento Robotico e Modelli RT-X
- Pagina del progetto Open X-Embodiment
- google-deepmind/open_x_embodiment: elenco dei dataset e checkpoint RT-1-X
- any4lerobot: il convertitore openx2lerobot e il suo stato unificato 8-D, azione 7-D
- IPEC-COMMUNITY/droid_lerobot: meta/info.json e dimensione del repository
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: la sezione google_robot a 3 fps
- huggingface/lerobot: follower SO, processore di cinematica, configurazioni di aggregazione e registrazione
- openpi: input della policy DROID e il checkpoint pi05_droid
- pi0: Un Modello di Flusso Visione-Linguaggio-Azione per il Controllo Generale dei Robot
- SmolVLA: Un Modello Visione-Linguaggio-Azione per una Robotica Accessibile ed Efficiente
Sources
- DROID: A Large-Scale In-The-Wild Robot Manipulation Dataset
- DROID docs: download sizes and the RLDS episode schema
- BridgeData V2: A Dataset for Robot Learning at Scale
- BridgeData V2 project page: composition and camera coverage
- Open X-Embodiment: Robotic Learning Datasets and RT-X Models
- Open X-Embodiment project page
- google-deepmind/open_x_embodiment: dataset list and RT-1-X checkpoints
- any4lerobot: the openx2lerobot converter and its unified 8-D state, 7-D action
- IPEC-COMMUNITY/droid_lerobot: meta/info.json and repo size
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: the google_robot slice at 3 fps
- huggingface/lerobot: SO follower, kinematics processor, aggregate and record configs
- openpi: DROID policy inputs and the pi05_droid checkpoint
- pi0: A Vision-Language-Action Flow Model for General Robot Control
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started