
DROID, BridgeData V2 și Open X-Embodiment se convertesc în acțiuni de efector final 7-D pe brațe cu 6 și 7 grade de libertate. Un SO-100 preia 6 poziții de articulație. Ce se transferă, ce nu, ce să faci în schimb.
Pe scurt
- •Versiunile LeRobot ale tuturor celor trei partajează o convenție: o acțiune a efectorului final 7-D [x, y, z, roll, pitch, yaw, gripper] și o stare 8-D cu un slot de umplutură. Un SO-100 preia șase poziții absolute ale articulațiilor.
- •Acel vector 7-D este artefactul convertorului: propriul câmp de acțiune RLDS al DROID este de 6 viteze ale articulațiilor plus o poziție a prehensorului, cu vizualizarea carteziană în action_dict.
- •Patru frecvențe: DROID 15 fps, BridgeData V2 5 fps, secțiunea google_robot 3 fps, o înregistrare SO-100 la 30 fps.
- •Nu le puteți îmbina cu propriile date. validate_all_metadata generează o eroare la prima diferență de fps, robot_type sau caracteristici, iar toate trei diferă.
- •Ceea ce se transferă sunt ponderile pre-antrenate, nu episoadele. Datele open-source reprezintă 9.1 percent din amestecul de pre-antrenare al pi0.
- •Cea mai ieftină utilizare reală a lor este un dispozitiv de testare: o mostră DROID de 2 GB, 100 de episoade, cunoscută ca fiind bună, care vă validează pipeline-ul înainte de a înregistra un weekend întreg.
Există un set de date public cu un milion de traiectorii pe un bucket Google Cloud și un SO-100 pe birou care a costat 110 to 150 EUR în piese. De ce primul nu-l poate învăța pe al doilea? Parțial poate, dar aproape niciun transfer nu se întâmplă acolo unde se așteaptă oamenii, iar partea care pare cea mai ușoară nu funcționează deloc.
Ce urmează: ce se află în DROID, BridgeData V2 și Open X-Embodiment, unde fiecare se ciocnește cu un braț 5-DoF cu cost redus, și ce să faceți în schimb. Fiecare număr de mai jos provine din lucrarea, fișa setului de date sau fișierul sursă căruia îi aparține.
Ce conțin de fapt cele trei seturi de date
| 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 |
| Scală | 76k trajectories, 350 hours | 60,096 trajectories | 1M+ trajectories, 527 skills |
| Diversitate | 564 scenes, 84 tasks, 50 collectors | 24 environments, 13 skills | 160,266 tasks, 21 institutions |
| Compoziție | toate teleoperate | 50.365 teleoperate, 9.731 scriptate | per laborator sursă |
| Rată de control | 15 Hz | 5 Hz | variază, de la 3 fps în sus |
| Camere | 2 x ZED 2 exterior, 1 x ZED Mini la încheietură | până la 4, majoritatea episoadelor doar cea fixă | ce a folosit laboratorul |
| Descărcare brută | 1.7 TB RLDS, 8.7 TB stereo brut | Arhive JPEG | containere TFDS per set de date |
Puțini oameni mai descarcă 1.7 TB de TFRecords RLDS. Organizația comunitară IPEC-COMMUNITY a republicat majoritatea Open X-Embodiment sub formă de set de date LeRobot cu video AV1, unde DROID ajunge la 392 GB. Aceasta este versiunea cu care veți lucra, iar meta/info.json este ceea ce trebuie citit mai întâi.
DROID
Cel mai standardizat dintre cele trei. Un singur echipament peste tot: un Franka Panda cu un gripper Robotiq 2F-85, două camere stereo ZED 2 reglabile și un ZED Mini la încheietură, teleoperat cu controlere Meta Quest 2, înregistrat prin Polymetis la 15 Hz atât în spațiul articulațiilor, cât și în spațiul efector final . Etichetele lingvistice au venit mai târziu prin tasq.ai, până la trei per episod.
- 76k traiectorii, 350 ore, 564 scene, 84 sarcini, 50 colectori pe trei continente.
- Rezultatul principal este co-antrenarea, nu antrenarea independentă: loturile amestecate 50/50 cu demonstrații în domeniu au depășit următoarea cea mai bună metodă cu 22 procente succes absolut în distribuție, 17 procente în afara acesteia.
- IPEC-COMMUNITY/droid_lerobot: 92,233 episoade, 27,044,326 cadre, franka, 15 fps, codebase_version v2.0, trei fluxuri AV1 la 180x320, 392 GB.
- Un eșantion de depanare de 2 GB, 100 de episoade, se află la gs://gresearch/robotics/droid_100. Începeți de acolo.
BridgeData V2
Cel mai apropiat de o configurație de hobby: un braț WidowX 250 cu 6 grade de libertate, 60,096 traiectorii în 24 de medii și 13 abilități la 5 Hz. Rețineți compoziția: 50,365 demonstrații teleoperate de experți plus 9,731 dintr-o politică scriptată aleatorie de tip pick-and-place, deci aproximativ 16 procente nu reprezintă demonstrații umane, ceea ce contează pentru învățare prin imitație calitate. Descărcarea obișnuită, IPEC-COMMUNITY/bridge_orig_lerobot, raportează 53,192 episoade și 1,893,026 cadre la 5 fps, robot_type widowx: mai puține decât cele 60,096 din lucrare, așa că citiți numărul din meta/info.json în loc să citați oricare dintre ele.
Open X-Embodiment
Nu este un set de date în același sens: 60 de seturi de date robotice existente de la 34 de laboratoare, reunite într-o singură colecție RLDS, acoperind 22 de implementări și peste un milion de traiectorii. BridgeData V2 se află în interiorul acesteia ca bridge_orig; secțiunea google_robot, fractal20220817_data, se convertește în 87.212 episoade la 3 fps.
Reunirea seturilor de date implică o avertizare pe care lucrarea o menționează explicit. Pentru experimentele RT-X, autorii convertesc fiecare sursă într-o acțiune a efectorului final cu 7 grade de libertate (DoF), dar nu aliniază sistemele de coordonate între seturile de date și permit ca valorile acțiunilor să fie poziții sau viteze absolute sau relative, conform schemei de control originale a fiecărui robot. Concluzia lor: același vector de acțiune poate induce mișcări foarte diferite pentru roboți diferiți.

Nepotrivirea, în patru părți
Discrepanța de întruchipare este de obicei tratată ca o problemă vagă. Sunt patru, eșuează diferit, și două nu pot fi remediate prin scriptare.
1. Grade de libertate
Un SO-100 are cinci articulații ale brațului plus un gripper. Numărat ca motoare, este un braț cu 6-DoF, și lucrarea SmolVLA îl numește astfel; numărat ca mecanism de poziționare este un 5-DoF, și LeRobot îl numește astfel în docstring-ul său de cinematică inversă, care descrie IK cu orientare moale pe SO-101 cu 5-DOF unde încheietura urmărește orientarea doar parțial. O Franka are șapte articulații de poziționare. Acest decalaj decide ce poziții există: un braț cu 5-DoF nu poate atinge în general o poziție și orientare arbitrară simultan, așa că rezolvitorul returnează cea mai apropiată poziție pe care o poate atinge, o mișcare diferită de cea demonstrată. Context: grade de libertate.
# 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-DAșadar, un checkpoint DROID gata făcut nu este o scurtătură. Physical Intelligence livrează pi05_droid la gs://openpi-assets/checkpoints/pi05_droid, iar același README care îi laudă amploarea avertizează că aceste checkpoint-uri expert s-ar putea să nu se generalizeze la configurația dumneavoastră. Starea sa este formată din opt numere de articulație Franka, iar cheile sale de imagine sunt exterior_image_1_left și wrist_image_left. Niciun flag nu transformă asta într-o comandă SO-100 cu șase motoare.
2. Ce spune de fapt vectorul de acțiune
Mai profund decât dimensionalitatea. În conversiile LeRobot, toate cele trei spun unde ar trebui să meargă gripper-ul, în spațiul cartezian. Un SO-100 spune unde ar trebui să meargă șase servomotoare. Conversia necesită un model cinematic și un rezolvitor, nu o reconfigurare.
| Proprietate | OXE, DROID și Bridge în format LeRobot | SO-100 în LeRobot |
|---|---|---|
| Vector de acțiune | 7-D: x, y, z, ruliu, tangaj, girație, gripper | 6-D: o poziție țintă per motor |
| Vector de stare | 8-D, cu un slot de umplutură (google_robot folosește un quaternion) | 6-D, unul per motor |
| Cadru | Cartezian, nealiniat între seturile de date | spațiu articular, calibrare per braț |
| Absolut sau relativ | oricare, decis de laboratorul sursă | poziții țintă absolute |
| Unități | normalizate per set de date, apoi discretizate | grade implicit (use_degrees=True), altfel -100 la 100 |
| Eșec silențios | o delta citită ca o valoare absolută | un braț necalibrat |
Fișierul README al openx2lerobot documentează o stare unificată de 8 dimensiuni și o acțiune de 7 dimensiuni pentru fiecare set de date pe care îl convertește, de unde provine slotul pad. Schema RLDS proprie a DROID diferă: action-ul său de nivel superior este un 7-vector de 6 viteze articulare plus 1 poziție a prehensorului, cu cartesian_position, cartesian_velocity, joint_position și joint_velocity sub action_dict. openpi citește vizualizarea în spațiul articulațiilor, iar versiunea LeRobot vă oferă pe cea carteziană. Niciuna nu reprezintă șase unghiuri absolute de servo.
LeRobot livrează piesa lipsă: urmăritorul SO are un procesor de cinematică cu pași InverseKinematicsEEToJoints și ForwardKinematicsJointsToEE. Cheile sale sunt ee.x, ee.y, ee.z plus un vector de rotație ee.wx, ee.wy, ee.wz și ee.gripper_pos, astfel încât chiar și codificarea orientării diferă de roll-pitch-yaw din fișiere. Pasul IK preia un orientation_weight, implicit 0.01, al cărui docstring spune să setați 0.0 pentru IK doar pe poziție pe brațe sub-acționate. Puteți construi puntea, dar jumătatea de orientare a fiecărei acțiuni împrumutate rămâne aproximată.
3. Frecvența de control
DROID este de 15 Hz, BridgeData V2 de 5 Hz, secțiunea google_robot de 3 fps; autorii pi0 descriu partea open-source a amestecului lor ca fiind un control de joasă frecvență între 2 și 10 Hz. DatasetRecordConfig al LeRobot are ca valori implicite fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50. O , antrenată pe date de 5 Hz a învățat că o acțiune acoperă 200 ms. Redați-o la 30 Hz și brațul se mișcă lent; reeșantionați naiv și veți estompa cadrul în care se închide prehensorul. De asemenea, interacționează prost cu : un fragment de 100 de pași este de 20 de secunde la 5 Hz, 3.3 la 30 Hz.
4. Camere
BridgeData V2 a randomizat două poziții de cameră la fiecare 50 de traiectorii, iar pagina sa de proiect menționează că majoritatea datelor conțin oricum doar vizualizarea fixă. DROID a folosit suporturi reglabile ZED 2 plus un ZED Mini la încheietura mâinii. Aveți două camere web USB poziționate la ochi. Poziția camerei nu este o variabilă deranjantă pentru un ; este o mare parte din ceea ce a folosit encoderul vizual, și nimic din formatul fișierului nu indică faptul că pozițiile diferă.
Piesele se potrivesc suficient de bine pentru a rula. Setul de date se încarcă, antrenamentul începe, pierderea scade, apar puncte de salvare, nimic nu dă erori. Apoi, politica nu face nimic recognoscibil pe braț și petreci o zi căutând o eroare în scriptul tău de antrenament. Nu există nicio eroare: modelul a învățat o distribuție carteziană a acțiunilor pentru un robot care nu există în camera ta. Începe de la pierderea scade, politica nu face nimic, nu de la hiperparametrii tăi.
Ce se întâmplă când încerci oricum să combini datele
Planul evident este să se concateneze: câteva mii de episoade DROID plus cele 50 ale tale. LeRobot refuză, iar refuzul menționează cele trei lucruri care diferă.
- 1Descarcă eșantionul de 100 de episoade, nu întregul 1.7 TB
2 GB sunt suficiente pentru a vedea structura.
bashpip install gsutil tensorflow tensorflow-datasets gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 2Convertește RLDS în format LeRobot
openx2lerobot încapsulează transformările standard OXE și adnotează tipul robotului și frecvența de control. Fișierul README plasează acest lucru în 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 - 3Citește meta/info.json înainte de orice altceva
Acest fișier decide dacă restul zilei tale va funcționa.
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'])" - 4Încearcă îmbinarea și citește eroarea
Operația de îmbinare încarcă fiecare set de date, apoi validate_all_metadata verifică fps, robot_type și caracteristicile în raport cu primul din listă, generând o eroare la prima nepotrivire.
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.
Valorile de referință provin de la setul de date pe care l-ați listat primul, motiv pentru care mesajul se plânge de cei 30 fps ai dumneavoastră, mai degrabă decât de cei 15 ai DROID. Corectați fps-ul și veți întâlni verificarea robot_type; corectați-o și veți întâlni verificarea caracteristicilor, 7 față de 6 pentru acțiune. Nicio ordine nu trece, iar aceeași verificare rulează la momentul înregistrării prin sanity_check_dataset_robot_compatibility.
Pe ramura principală actuală a LeRobot, so100_follower și so101_follower sunt ambele înregistrate pe o singură SOFollowerRobotConfig partajată, astfel încât șirul de caractere dintr-o înregistrare reală nu este neapărat cel pe care îl așteptați. Citiți-l din propriul fișier meta/info.json și tratați o verificare pe care ați fost nevoit să o dezactivați ca pe o verificare care vă spunea ceva.
Deci ce se transferă de fapt?
Ponderi, nu episoade. Fiecare politică generalistă modernă a absorbit o parte din acestea în preantrenare, iar când de la un îl moșteniți deja reconciliat de oameni cu puterea de calcul necesară pentru a o face corect. Lucrarea lui pi0 este sinceră în privința proporției: 9.1 la sută din amestecul său de pre-antrenare, numărat în pași de timp, este reprezentat de date open-source, inclusiv OXE, Bridge v2 și DROID. Această cifră este a lui pi0; amestecul fiecărui furnizor diferă.
- Prorități vizuale și lingvistice: codificatorul a văzut mii de bucătării și căni și știe la ce se referă „blocul roșu”.
- O prioritate asupra structurii de manipulare: apropiere, închidere, ridicare, transport, eliberare, independentă de corp chiar și atunci când numerele nu sunt.
- Un set de date cunoscut și bun pentru testare. Dacă sarcina dvs. nu poate supra-antrena 100 de episoade DROID, problema este configurația dvs.
- Puncte de referință: în domeniile cu seturi de date la scară mică, RT-1-X a atins o rată medie de succes cu 50 la sută mai mare decât metoda originală sau RT-1, iar RT-2-X a depășit RT-2 de aproximativ 3 ori în ceea ce privește abilitățile emergente.
- Fără supervizare utilă a acțiunilor. O țintă carteziană 7D nu este o comandă de articulație 6D.
- Fără transfer de poziție a camerei, și nimic din date nu indică diferențe de poziție.
- Fără transfer de sincronizare: surse de 3, 5 și 15 fps față de un înregistrator de 30 fps.
- Fără transfer de prehensor. Un Robotiq 2F-85 și o falcă imprimată pe un STS3215 diferă în forță, cursă și dinamică.
- Scala singură nu a fost suficientă nici măcar pentru autorii săi: în domeniile cu seturi de date mari, RT-1-X nu a depășit un RT-1 antrenat doar pe acel set de date.
- Fără reducere a numărului de episoade proprii necesare.
| Stratul modelului | Se transferă? | De ce |
|---|---|---|
| Codificator vizual | Da, puternic | Obiectele și scenele sunt independente de corp |
| Ancorare lingvistică | Da | Instrucțiunile sunt text, nu geometrie |
| Fuziune inter-modală | În mare parte | Se concentrează pe obiectul numit în prompt |
| Codificator de propriocepție | Nu | Dimensiunea de intrare și semantica articulațiilor diferă |
| Cap de acțiune | Nu | Antrenat pe un spațiu cartezian 7D în care nu vă aflați |
| Statistici de normalizare | Nu, și periculos | Statisticile externe modifică fiecare comandă |
Acesta este motivul pentru care SmolVLA se comportă diferit pe un braț cu cost redus. Lucrarea sa selectează 481 de seturi de date din comunitate de la Hugging Face, filtrate după tipul de întruchipare, numărul de episoade, calitatea datelor și acoperirea cadrelor: 22.9K episoade, 10.6M cadre, evaluate pe brațe reale SO-100 și SO-101. Micul și potrivitul învinge marele și nepotrivit. Comparați ACT împotriva SmolVLA.
Trei căi demne de urmat
Calea A: ajustare fină dintr-un punct de control care a absorbit deja datele
Majoritatea oamenilor ar trebui să o aleagă pe aceasta. Nu atingeți niciodată DROID sau Open X-Embodiment: alegeți o politică a cărei pre-antrenare a absorbit deja date cross-embodiment, înregistrați-vă propriile episoade, ajustați fin.
| Politică | Parametri | Episoade minime | Format set de date | Nivel GPU | Inferență | Checkpoint de bază |
|---|---|---|---|---|---|---|
| GR00T N1.7 | ~3 B, ~40 M antrenat prin 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 | niciunul, de la zero |
ACT este cazul limită onest: fără model de bază, deci niciuna dintre datele publice nu ajunge vreodată la el. Nu este automat un dezavantaj, deoarece la 20 ms per pas de acțiune este singurul dintre cele cinci care poate închide o buclă rapidă, așa cum pagina ACT se arată. Alegeți după sarcină folosind toate cele cinci comparate, GR00T N1.7 versus Pi0.5, și cele 332 de rezultate de benchmark pentru 85 de modele în arena.
Calea B: utilizați DROID ca dispozitiv de testare
Eșantionul de 100 de episoade este cei mai buni 2 GB pe care îi veți descărca luna aceasta, și nu pentru antrenament. Este un set de date despre care știți că este corect. Rulați convertorul, încărcătorul și o scurtă sarcină GPU pe el; orice eșec este o eroare de infrastructură găsită cât timp a fost ieftin. NVIDIA face același lucru la scară: placa GR00T N1.7 listează patru variante post-antrenate, pentru Bridge și Fractal în SimplerEnv, DROID și LIBERO.
Calea C: înregistrați-vă propriile date, în mod deliberat
Treizeci până la cincizeci sună puțin lângă 76.000 până când vă amintiți că ale dumneavoastră sunt singurele cu brațul, camerele și masa dumneavoastră. La setările implicite ale LeRobot, 50 de episoade înseamnă 100 de minute de timp real. Consultați , și .

Două moduri de a ajunge de la date publice la o politică funcțională
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.

Cât costă fiecare cale
| Cale | Stocare | Timp uman | Cost GPU | Probabilitatea de a mișca brațul |
|---|---|---|---|---|
| DROID convertit singur | 392 GB | zile de conversie | 4 to 12 USD | foarte scăzută, spațiu de acțiune greșit |
| DROID fuzionat cu episoadele tale | ambele | blocked by validate_all_metadata | n/a | niciuna, nu rulează |
| SmolVLA, 30 până la 50 de episoade proprii | câțiva GB | 100 min înregistrare | 1 to 3 USD | ridicată |
| GR00T N1.7, 50 de episoade proprii | câțiva GB | 100 min înregistrare | 4 to 12 USD | ridicată |
| ACT de la zero, 50 de episoade proprii | câțiva GB | 100 min înregistrare | 1 to 3 USD | ridicată, 20 ms inferență |
| Eșantion DROID ca dispozitiv de testare | 2 GB | o după-amiază | o scurtă rulare | ridicată, ca validare |
Asimetria este esențială: calea care împrumută cele mai multe date este cea mai costisitoare și cel mai puțin probabil să-ți miște brațul. Mai puțin de două ore de teleoperare proprie învinge un terabyte de date Franka ale altcuiva. Nu ai încă un braț? /live transmite în direct un SO-100 fizic fără înregistrare. Apoi antrenează-ți prima politică, și SmolVLA pe SO-100 pentru ghidul specific.
Descarcă eșantionul DROID de 2 GB și folosește-l pentru a-ți valida pipeline-ul. Ignoră ceilalți 1.7 TB. Înregistrează 50 de episoade ale unei singure sarcini cu camere fixe. Ajustează fin SmolVLA mai întâi, deoarece la un minim de 30 de episoade pe o placă de 24 GB este cel mai ieftin de iterat, apoi încearcă GR00T N1.7 pe aceleași date. Compară pe sarcina ta, nu pe un benchmark.
Înregistrează seturi de date care se potrivesc deja brațului tău
Clientul desktop scrie seturi de date în format LeRobot direct dintr-o sesiune de teleoperare: brațul potrivit, rata de cadre potrivită, spațiul de acțiune potrivit. Fără conversie RLDS, fără remapping.
Obține clientul desktopPot antrena o politică pe DROID și să o rulez pe SO-100-ul meu?▾
Nu direct. În versiunea LeRobot, acțiunile DROID sunt comenzi de efector final 7-D pe un Franka Panda la 15 fps; în RLDS-ul brut, acestea sunt 6 viteze de articulație plus o poziție a gripper-ului. Un SO-100 preia 6 poziții absolute ale articulațiilor. Ai avea nevoie de un strat de cinematică inversă, și chiar și atunci o încheietură cu 5-DoF nu poate reproduce poziții arbitrare 6-DoF.
Pot amesteca episoade DROID sau Bridge cu propriile mele episoade SO-100?▾
Nu. validate_all_metadata necesită fps, robot_type și schema de caracteristici identice și generează ValueError la prima nepotrivire. Toate trei diferă: 15 sau 5 fps față de 30, franka sau widowx față de brațul tău, forme de acțiune de 7 față de 6. Rescrierea metadatelor pentru a trece verificarea nu rezolvă semantica.
Este Open X-Embodiment inutil pentru un braț cu cost redus atunci?▾
Nu, dar valoarea sa ajunge la tine prin ponderi pre-antrenate, nu prin episoade. Seturile de date open-source, inclusiv OXE, Bridge v2 și DROID, reprezintă 9.1 procente din amestecul de pre-antrenare al pi0, iar NVIDIA livrează variante GR00T N1.7 post-antrenate pe Bridge, Fractal, DROID și LIBERO. Ceea ce nu poți face este să adaugi acele episoade la propria înregistrare.
Ce politică beneficiază cel mai mult de datele publice cross-embodiment?▾
Pi0.5 și modelele GR00T au cel mai mult pre-antrenament cross-embodiment, dar SmolVLA se comportă adesea cel mai bine pe un braț cu cost redus: setul său de pre-antrenare este format din 481 de seturi de date comunitare, 22.9K episoade și 10.6M cadre, evaluate pe brațe reale SO-100 și SO-101. ACT este opusul: fără model de bază, 20 ms per pas de acțiune.
Câte episoade proprii am nevoie de fapt?▾
30 pentru SmolVLA, 50 pentru GR00T N1.7, GR00T N1.5, Pi0.5 și ACT. La setările implicite ale LeRobot de 60 s per episod și 60 s reset, 50 de episoade înseamnă 100 de minute de timp real. Datele împrumutate cross-embodiment nu reduc aceste numere.
Sources
- DROID: Un set de date de manipulare a roboților la scară largă în mediul real
- Documentație DROID: dimensiuni de descărcare și schema de episoade RLDS
- BridgeData V2: Un set de date pentru învățarea roboților la scară
- Pagina proiectului BridgeData V2: compoziție și acoperire a camerei
- Open X-Embodiment: Seturi de date pentru învățarea robotică și modele RT-X
- Pagina proiectului Open X-Embodiment
- google-deepmind/open_x_embodiment: lista seturilor de date și puncte de control RT-1-X
- any4lerobot: convertorul openx2lerobot și starea sa unificată 8-D, acțiunea 7-D
- IPEC-COMMUNITY/droid_lerobot: meta/info.json și dimensiunea depozitului
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: secțiunea google_robot la 3 fps
- huggingface/lerobot: urmăritor SO, procesor de cinematică, configurații de agregare și înregistrare
- openpi: intrări de politică DROID și punctul de control pi05_droid
- pi0: Un model de flux Viziune-Limbaj-Acțiune pentru controlul general al roboților
- SmolVLA: Un model Viziune-Limbaj-Acțiune pentru robotică accesibilă și eficientă
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