
DROID, BridgeData V2 dhe Open X-Embodiment konvertohen në veprime të fund-efektorit 7-D në krahë me 6 dhe 7-DoF. Një SO-100 merr 6 pozicione nyjesh. Çfarë transferohet, çfarë jo, çfarë të bëni në vend të kësaj.
Versioni i shkurtër
- •Ndërtimet LeRobot të të treve ndajnë një konventë: një veprim fund-efektor 7-D [x, y, z, roll, pitch, yaw, gripper] dhe një gjendje 8-D me një vend mbushës. Një SO-100 merr gjashtë pozicione absolute të nyjeve.
- •Ai vektor 7-D është artefakti i konvertuesit: fusha e veprimit RLDS e DROID-it është 6 shpejtësi nyjesh plus një pozicion kapëseje, me pamjen karteziane në action_dict.
- •Katër orë: DROID 15 fps, BridgeData V2 5 fps, pjesa google_robot 3 fps, një SO-100 që regjistron në 30 fps.
- •Nuk mund t'i bashkoni me të dhënat tuaja. validate_all_metadata ngre një gabim në të parën nga fps, robot_type ose features që ndryshon, dhe të tre ndryshojnë.
- •Ajo që transferohet janë peshat e para-trajnuara, jo episodet. Të dhënat me burim të hapur janë 9.1 për qind e përzierjes së para-trajnimit të pi0.
- •Përdorimi i tyre më i lirë real është një pajisje testimi: një mostër DROID e njohur dhe e mirë prej 2 GB, 100 episodesh që vërteton tubacionin tuaj përpara se të regjistroni për një fundjavë.
Ekziston një grup të dhënash publik me një milion trajektore në një bucket të Google Cloud dhe një SO-100 në tavolinë që kushtoi 110 deri në 150 EUR në pjesë. Pse e para nuk mund t'i mësojë të dytës? Pjesërisht mundet, por pothuajse asnjë nga transferimi nuk ndodh aty ku njerëzit presin, dhe pjesa që duket më e lehtë nuk funksionon fare.
Çfarë vijon: çfarë ka brenda DROID, BridgeData V2 dhe Open X-Embodiment, ku secila përplaset me një krah 5-DoF me kosto të ulët, dhe çfarë të bëni në vend të kësaj. Çdo numër më poshtë erdhi nga punimi, karta e grupit të të dhënave ose skedari burimor të cilit i përket.
Çfarë përmbajnë në të vërtetë tre grupet e të dhënave
| 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 |
| Shkalla | 76k trajectories, 350 hours | 60,096 trajectories | 1M+ trajectories, 527 skills |
| Diversiteti | 564 scenes, 84 tasks, 50 collectors | 24 environments, 13 skills | 160,266 tasks, 21 institutions |
| Përbërja | all teleoperated | 50,365 teleoperated, 9,731 scripted | per source lab |
| Shkalla e kontrollit | 15 Hz | 5 Hz | varies, 3 fps upwards |
| Kamera | 2 x ZED 2 exterior, 1 x ZED Mini wrist | up to 4, most episodes only the fixed one | whatever the lab used |
| Shkarkimi i papërpunuar | 1.7 TB RLDS, 8.7 TB raw stereo | JPEG archives | per-dataset TFDS buckets |
Pak njerëz ende shkarkojnë 1.7 TB të RLDS TFRecords. Organizata e komunitetit IPEC-COMMUNITY ka ripublikuar pjesën më të madhe të Open X-Embodiment në formën LeRobot dataset me video AV1, ku DROID zë 392 GB. Ky është versioni me të cilin do të punoni, dhe meta/info.json është ajo që duhet lexuar së pari.
DROID
Më i standardizuari nga të tre. Një pajisje kudo: një Franka Panda me një kapëse Robotiq 2F-85, dy kamera stereo të rregullueshme ZED 2 dhe një ZED Mini për kyçin e dorës, e teleoperuar me kontrollues Meta Quest 2, e regjistruar përmes Polymetis në 15 Hz si në hapësirën e nyjeve ashtu edhe në atë të efektorin fundor hapësirë. Etiketat gjuhësore erdhën më vonë nëpërmjet tasq.ai, deri në tre për episod.
- 76k trajektore, 350 orë, 564 skena, 84 detyra, 50 kolektorë në tre kontinente.
- Rezultati kryesor është bashkë-trajnimi, jo trajnimi i pavarur: grupet e përziera 50/50 me demonstrime brenda-domenit tejkaluan metodën tjetër më të mirë me 22 për qind sukses absolut në shpërndarje, 17 për qind jashtë saj.
- IPEC-COMMUNITY/droid_lerobot: 92,233 episode, 27,044,326 korniza, franka, 15 fps, codebase_version v2.0, tre transmetime AV1 në 180x320, 392 GB.
- Një mostër debugimi prej 2 GB, 100-episodësh ndodhet në gs://gresearch/robotics/droid_100. Filloni aty.
BridgeData V2
Më afër një konfigurimi hobi: një krah WidowX 250 6-DoF, 60,096 trajektore në 24 mjedise dhe 13 aftësi në 5 Hz. Vini re përbërjen: 50,365 demonstrime ekspertësh të teleoperuar plus 9,731 nga një politikë e rastësishme e skriptuar pick-and-place, kështu që rreth 16 për qind nuk është demonstrim njerëzor, gjë që ka rëndësi për mësimi imitues cilësinë. Shkarkimi i zakonshëm, IPEC-COMMUNITY/bridge_orig_lerobot, raporton 53,192 episode dhe 1,893,026 korniza në 5 fps, robot_type widowx: më pak se 60,096 të punimit, prandaj lexoni numrin nga meta/info.json në vend që të citoni njërën prej tyre.
Open X-Embodiment
Jo një grup të dhënash në të njëjtin kuptim: 60 grupe të dhënash ekzistuese robotësh nga 34 laboratorë të bashkuara në një koleksion RLDS që mbulon 22 mishërime dhe mbi një milion trajektore. BridgeData V2 ndodhet brenda tij si bridge_orig; pjesa google_robot, fractal20220817_data, konvertohet në 87,212 episode me 3 fps.
Bashkimi i të dhënave përmban një paralajmërim që artikulli e thekson qartë. Për eksperimentet RT-X, autorët konvertojnë çdo burim në një veprim fund-efektor me 7-DoF, por nuk i rreshtojnë kornizat koordinative nëpër grupe të dhënash, dhe lejojnë që vlerat e veprimit të jenë pozicione ose shpejtësi absolute ose relative, sipas skemës origjinale të kontrollit të çdo roboti. Përfundimi i tyre: i njëjti vektor veprimi mund të shkaktojë lëvizje shumë të ndryshme për robotë të ndryshëm.

Mosbalancimi, në katër pjesë
Përputhja e gabuar e mishërimit zakonisht trajtohet si një problem i paqartë. Janë katër, ato dështojnë ndryshe, dhe dy nuk mund të rregullohen me skriptim.
1. Shkallët e lirisë
Një SO-100 ka pesë nyje krahu plus një kapëse. E numëruar si motorë, është një krah 6-DoF, dhe dokumenti SmolVLA e quan kështu; e numëruar si mekanizëm pozicionimi është 5-DoF, dhe LeRobot e quan kështu në docstring-un e tij të kinematikës së anasjelltë, i cili përshkruan IK me orientim të butë në SO-101 5-DOF ku kyçi i dorës ndjek orientimin vetëm pjesërisht. Një Franka ka shtatë nyje pozicionimi. Ky boshllëk vendos se cilat poza ekzistojnë: një krah 5-DoF nuk mund të arrijë përgjithësisht një pozicion dhe orientim arbitrar menjëherë, kështu që zgjidhësi kthen atë më të afërtin që mundet, një lëvizje e ndryshme nga ajo e demonstruar. Sfondi: shkallët e lirisë.
# 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-DPra, një pikë kontrolli DROID e gatshme nuk është një rrugë e shkurtër. Physical Intelligence dërgon pi05_droid në gs://openpi-assets/checkpoints/pi05_droid, dhe i njëjti README që lavdëron gjerësinë e tij paralajmëron se këto pika kontrolli ekspertësh mund të mos përgjithësohen në konfigurimin tuaj. Gjendja e tij është tetë numra nyjesh Franka dhe çelësat e imazhit të tij janë exterior_image_1_left dhe wrist_image_left. Asnjë flamur nuk e kthen atë në një komandë SO-100 me gjashtë motorë.
2. Çfarë thotë në të vërtetë vektori i veprimit
Më thellë se dimensionaliteti. Në konvertimet LeRobot të treja thonë ku duhet të shkojë kapësi, në hapësirën karteziane. Një SO-100 thotë ku duhet të shkojnë gjashtë servo. Konvertimi kërkon një model kinematik dhe një zgjidhës, jo një ri-formësim.
| Vetia | OXE, DROID dhe Bridge në formën LeRobot | SO-100 në LeRobot |
|---|---|---|
| Vektori i veprimit | 7-D: x, y, z, rrotullim, pjerrësi, devijim, kapës | 6-D: një pozicion objektiv për motor |
| Vektori i gjendjes | 8-D, me një vend mbushës (google_robot përdor një kuaternion) | 6-D, një për motor |
| Korniza | Karteziane, e pa-rreshtuar nëpër grupe të dhënash | hapësira e nyjeve, kalibrim për krah |
| Absolute apo relative | ose njëra, ose tjetra, vendosur nga laboratori burimor | pozicione absolute të objektivit |
| Njësitë | të normalizuara për grup të dhënash, pastaj të diskretizuara | gradë si parazgjedhje (use_degrees=True), përndryshe -100 deri në 100 |
| Dështim i heshtur | një delta e lexuar si absolute | një krah i pa-kalibruar |
README-ja e openx2lerobot dokumenton një gjendje të unifikuar 8-dim dhe një veprim 7-dim për çdo grup të dhënash që konverton, nga ku vjen fusha `pad`. Skema e vetë DROID-it RLDS ndryshon: `action`-i i saj i nivelit të lartë është një 7-vektor prej *6 shpejtësish nyjesh plus 1 pozicion kapëseje*, me `cartesian_position`, `cartesian_velocity`, `joint_position` dhe `joint_velocity` nën `action_dict`. openpi lexon pamjen e hapësirës së nyjeve, ndërsa versioni i LeRobot ju jep atë kartezian. Asnjëra nuk është gjashtë kënde absolute servo.
LeRobot ofron pjesën që mungon: ndjekësi SO ka një procesor kinematike me hapat InverseKinematicsEEToJoints dhe ForwardKinematicsJointsToEE. Çelësat e tij janë ee.x, ee.y, ee.z plus një vektor rrotullimi ee.wx, ee.wy, ee.wz dhe ee.gripper_pos, kështu që edhe kodimi i orientimit ndryshon nga roll-pitch-yaw në skedarë. Hapi IK merr një orientation_weight, parazgjedhur 0.01, docstring-u i të cilit thotë të vendoset 0.0 për IK vetëm me pozicion në krahë të nën-aktuuar. Ju mund të ndërtoni urën, por gjysma e orientimit të çdo veprimi të huazuar mbetet e përafërt.
3. Shpejtësia e kontrollit
DROID është 15 Hz, BridgeData V2 5 Hz, pjesa google_robot 3 fps; autorët e pi0 e përshkruajnë pjesën me burim të hapur të përzierjes së tyre si kontroll me frekuencë të ulët midis 2 dhe 10 Hz. DatasetRecordConfig i LeRobot parazgjedh fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50. Një i trajnuar me të dhëna 5 Hz mësoi se një veprim mbulon 200 ms. Riprodhojeni atë në 30 Hz dhe krahu zvarritet; ri-mostroni në mënyrë naive dhe ju turbulloni kornizën ku kapësja mbyllet. Gjithashtu ndërvepron keq me : një bllok me 100 hapa është 20 sekonda në 5 Hz, 3.3 në 30 Hz.
4. Kamera
BridgeData V2 randomizoi dy poza kamerash çdo 50 trajektore, dhe faqja e projektit të tij thekson se shumica e të dhënave mbartin gjithsesi vetëm pamjen fikse. DROID përdori montime të rregullueshme ZED 2 plus një ZED Mini në kyç. Ju keni dy kamera USB të pozicionuara me sy. Pozicioni i kamerës nuk është një variabël bezdisës për një ; është shumë nga ajo që enkoderi vizual ka fokusuar, dhe asgjë në formatin e skedarit nuk tregon se pozat ndryshojnë.
Pjesët përshtaten mjaft mirë për të funksionuar. Seti i të dhënave ngarkohet, trajnimi fillon, humbja bie, shfaqen pikat e kontrollit, asgjë nuk jep gabim. Më pas, politika nuk bën asgjë të njohur në krah dhe ju kaloni një ditë duke gjuajtur një gabim në skriptin tuaj të trajnimit. Nuk ka gabim: modeli mësoi një shpërndarje veprimi kartezian për një robot që nuk ekziston në dhomën tuaj. Filloni te humbja bie, politika nuk bën asgjë, jo te hiperparametrat tuaj.
Çfarë ndodh kur përpiqeni t'i bashkoni të dhënat gjithsesi
Plani i qartë është të bashkëngjisni: disa mijëra episode DROID plus 50 tuajat. LeRobot refuzon, dhe refuzimi emëron tre gjërat që ndryshojnë.
- 1Shkarkoni mostër prej 100 episodesh, jo të plotë 1.7 TB
2 GB mjaftojnë për të parë strukturën.
bashpip install gsutil tensorflow tensorflow-datasets gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 2Konvertoni RLDS në formatin LeRobot
openx2lerobot përfshin transformimet standarde OXE dhe shënon llojin e robotit dhe frekuencën e kontrollit. README e vendos këtë 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 - 3Lexoni meta/info.json para çdo gjëje tjetër
Kjo skedar vendos nëse pjesa tjetër e ditës suaj funksionon.
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'])" - 4Provoni bashkimin dhe lexoni gabimin
merge ngarkon çdo dataset, pastaj validate_all_metadata kontrollon fps, robot_type dhe features kundrejt të parit në listë, duke ngritur një gabim në mospërputhjen e parë.
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.
Vlerat referencë vijnë nga cilido dataset që keni listuar i pari, prandaj mesazhi ankohet për 30 fps tuajat në vend të 15 të DROID. Rregulloni fps dhe do të hasni kontrollin robot_type; rregulloni atë dhe do të hasni kontrollin e veçorive, 7 kundrejt 6 për veprimin. Asnjë renditje nuk kalon, dhe i njëjti kontrollues ekzekutohet në kohën e regjistrimit nëpërmjet sanity_check_dataset_robot_compatibility.
Në LeRobot main aktual, so100_follower dhe so101_follower janë të dyja të regjistruara në një SOFollowerRobotConfig të përbashkët, kështu që stringa nga një regjistrim real nuk është domosdoshmërisht ajo që prisni. Lexojeni nga meta/info.json juaj, dhe trajtoni një kontroll që ju duhej ta çaktivizonit si një kontroll që po ju tregonte diçka.
Pra, çfarë transferohet në të vërtetë?
Peshat, jo episodet. Çdo politikë moderne gjeneralistësh ka absorbuar një pjesë të saj në paratrajnim, dhe kur ju nga një të lëshuar, ju e trashëgoni atë tashmë të pajtuar nga njerëz me fuqinë llogaritëse për ta bërë siç duhet. Punimi i pi0 është i sinqertë për proporcionin: 9.1 për qind e përzierjes së tij të paratrajnimit, e numëruar në hapa kohorë, janë të dhëna me burim të hapur duke përfshirë OXE, Bridge v2 dhe DROID. Kjo shifër është e pi0-s; përzierja e çdo shitësi ndryshon.
- Paraprakë vizualë dhe gjuhësorë: koduesi ka parë mijëra kuzhina dhe filxhanë dhe e di se çfarë i referohet "bllokut të kuq".
- Një paraprak mbi strukturën e manipulimit: afrim, mbyllje, ngritje, transport, lëshim, i pavarur nga trupi edhe kur numrat nuk janë.
- Një grup të dhënash i njohur dhe i mirë për testim. Nëse puna juaj nuk mund të mbipërshtatet me 100 episode DROID, problemi është konfigurimi juaj.
- Pika referimi: në domenet e grupeve të të dhënave në shkallë të vogël, RT-1-X arriti një normë suksesi mesatare 50 për qind më të lartë se metoda origjinale ose RT-1, dhe RT-2-X mundi RT-2 me rreth 3 herë në aftësitë emergjente.
- Asnjë mbikëqyrje e veprimit e përdorshme. Një objektiv kartezian 7-D nuk është një komandë e përbashkët 6-D.
- Asnjë transferim i pozës së kamerës, dhe asgjë në të dhëna nuk tregon se pozat ndryshojnë.
- Asnjë transferim i kohës: burime 3, 5 dhe 15 fps kundrejt një regjistruesi 30 fps.
- Asnjë transferim i kapëses. Një Robotiq 2F-85 dhe një nofull e printuar në një STS3215 ndryshojnë në forcë, goditje dhe dinamikë.
- Vetëm shkalla nuk ishte e mjaftueshme as për autorët e saj: në domenet e grupeve të të dhënave të mëdha, RT-1-X nuk e mundi një RT-1 të trajnuar vetëm në atë grup të dhënash.
- Asnjë reduktim në numrin e episodeve tuaja që ju nevojiten.
| Shtresa e modelit | Transferohet? | Pse |
|---|---|---|
| Koduesi i vizionit | Po, fuqishëm | Objektet dhe skenat janë të pavarura nga trupi |
| Bazimi gjuhësor | Po | Udhëzimet janë tekst, jo gjeometri |
| Shkrirja ndër-modale | Kryesisht | I kushton vëmendje objektit të emërtuar në kërkesë |
| Koduesi i proprioceptimit | Jo | Dimensioni i hyrjes dhe semantika e përbashkët ndryshojnë |
| Koka e veprimit | Jo | E trajnuar në një hapësirë karteziane 7-D në të cilën nuk jeni |
| Statistikat e normalizimit | Jo, dhe e rrezikshme | Statistikat e huaja zhvendosin çdo komandë |
Kjo është arsyeja pse SmolVLA sillet ndryshe në një krah me kosto të ulët. Punimi i tij zgjedh 481 grupe të dhënash komunitare nga Hugging Face, të filtruara sipas llojit të mishërimit, numrit të episodeve, cilësisë së të dhënave dhe mbulimit të kornizës: 22.9K episode, 10.6M korniza, të vlerësuara në krahë realë SO-100 dhe SO-101. E vogla dhe e përputhur mund të mëdhenjtë dhe të papërputhurit. Krahasoni në ACT kundrejt SmolVLA.
Tre rrugë që ia vlen të ndiqen
Rruga A: rregullim i imët nga një pikë kontrolli që tashmë ka përthithur të dhënat
Shumica e njerëzve duhet ta zgjedhin këtë. Ju nuk prekni kurrë DROID ose Open X-Embodiment: zgjidhni një politikë, paratrajnimi i së cilës tashmë ka përthithur të dhëna ndër-mishërimi, regjistroni episodet tuaja, bëni rregullimin e imët.
| Politika | Parametrat | Epizodat min | Formati i grupit të të dhënave | Niveli i GPU-së | Inferenca | Pika bazë e kontrollit |
|---|---|---|---|---|---|---|
| GR00T N1.7 | ~3 B, ~40 M të trajnuar në rregullim të imët | 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, shtylla kurrizore PaliGemma | 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 | asnjë, nga e para |
ACT është rasti i sinqertë kufitar: pa model bazë, kështu që asnjë nga të dhënat publike nuk e arrin atë. Jo automatikisht një disavantazh, pasi me 20 ms për hap veprimi është i vetmi nga të pesë që mund të mbyllë një lak të shpejtë, siç faqja e ACT parashtron. Zgjidhni sipas detyrës duke përdorur të pesë të krahasuara, GR00T N1.7 kundrejt Pi0.5, dhe 332 rezultatet e standardeve në 85 modele në arena.
Rruga B: përdorni DROID si pajisje testimi
Mostra me 100 episode është 2 GB më e mira që do të shkarkoni këtë muaj, dhe jo për trajnim. Është një grup të dhënash që e dini se është i saktë. Ekzekutoni konvertuesin, ngarkuesin dhe një punë të shkurtër GPU-je mbi të; çdo gjë që dështon është një gabim infrastrukture i gjetur ndërsa ishte i lirë. NVIDIA bën të njëjtën gjë në shkallë: karta GR00T N1.7 liston katër variante të post-trajnuara, për Bridge dhe Fractal në SimplerEnv, DROID dhe LIBERO.
Rruga C: regjistroni tuajat, me qëllim
Tridhjetë deri në pesëdhjetë tingëllon pak pranë 76,000 derisa të kujtoni se tuajat janë të vetmet me krahun tuaj, kamerat tuaja dhe tavolinën tuaj. Me parazgjedhjet e LeRobot, 50 episode janë 100 minuta kohë reale. Shih , dhe .

Dy mënyra për të kaluar nga të dhënat publike në një politikë funksionale
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.

Kostoja e çdo rruge
| Rruga | Ruajtja | Koha njerëzore | Kostoja e GPU-së | Gjasat që të lëvizë krahun tuaj |
|---|---|---|---|---|
| DROID i konvertuar vetëm | 392 GB | ditë konvertimi | 4 to 12 USD | shumë e ulët, hapësirë veprimi e gabuar |
| DROID i bashkuar me episodet tuaja | të dyja | blocked by validate_all_metadata | n/a | asnjë, nuk ekzekutohet |
| SmolVLA, 30 deri në 50 episode tuaja | disa GB | 100 min regjistrim | 1 to 3 USD | e lartë |
| GR00T N1.7, 50 episode tuaja | disa GB | 100 min regjistrim | 4 to 12 USD | e lartë |
| ACT nga fillimi, 50 episode tuaja | disa GB | 100 min regjistrim | 1 to 3 USD | e lartë, 20 ms inference |
| Mostër DROID si pajisje testimi | 2 GB | një pasdite | një ekzekutim i shkurtër | e lartë, si vërtetim |
Asimetria është thelbi: shtegu që merr më shumë të dhëna është më i shtrenjti dhe më pak i mundshëm për të lëvizur krahun tuaj. Më pak se dy orë të tuajat teleoperacion mundin një terabajt të Franka-s së dikujt tjetër. Nuk keni ende një krah? /live transmeton një SO-100 fizik pa regjistrim. Më pas trajnoni politikën tuaj të parë, dhe SmolVLA on SO-100 për udhëzuesin specifik.
Shkarkoni mostrën 2 GB DROID dhe përdoreni atë për të provuar tubacionin tuaj. Injoroni 1.7 TB e tjera. Regjistroni 50 episode të një detyre me kamera fikse. Akordoni imët SmolVLA së pari, sepse me 30 episode minimale në një kartë 24 GB është më e lira për të iteruar, pastaj provoni GR00T N1.7 në të njëjtat të dhëna. Krahasoni në detyrën tuaj, jo në një standard.
Regjistroni grupe të dhënash që tashmë përputhen me krahun tuaj
Klienti i desktopit shkruan grupe të dhënash në formatin LeRobot direkt nga një sesion teleop: krahu i duhur, shpejtësia e duhur e kornizës, hapësira e duhur e veprimit. Pa konvertim RLDS, pa rimapim.
Merrni klientin e desktopitA mund të trajnoj një politikë në DROID dhe ta ekzekutoj në SO-100 tim?▾
Jo direkt. Në ndërtimin e LeRobot, veprimet DROID janë komanda 7-D të efektorit fundor në një Franka Panda me 15 fps; në RLDS-in e papërpunuar ato janë 6 shpejtësi nyjesh plus një pozicion kapëseje. Një SO-100 merr 6 pozicione absolute të nyjeve. Do t'ju duhej një shtresë kinematike inverse, dhe edhe atëherë një kyç 5-DoF nuk mund të riprodhojë poza arbitrare 6-DoF.
A mund të përziej episodet DROID ose Bridge me episodet e mia SO-100?▾
Jo. validate_all_metadata kërkon fps, robot_type dhe feature schema identike dhe ngre ValueError në mospërputhjen e parë. Të tre ndryshojnë: 15 ose 5 fps kundrejt 30, franka ose widowx kundrejt krahut tuaj, format e veprimit 7 kundrejt 6. Rishkrimi i metadata-s për të kaluar kontrollin nuk rregullon semantikën.
A është atëherë Open X-Embodiment i padobishëm për një krah me kosto të ulët?▾
Jo, por vlera e tij ju arrin përmes peshave të para-trajnuara, jo episodeve. Grupet e të dhënave me burim të hapur, duke përfshirë OXE, Bridge v2 dhe DROID, përbëjnë 9.1 për qind të përzierjes së para-trajnimit të pi0, dhe NVIDIA dërgon variante GR00T N1.7 të post-trajnuara në Bridge, Fractal, DROID dhe LIBERO. Ajo që nuk mund të bëni është të shtoni ato episode në regjistrimin tuaj.
Cila politikë përfiton më shumë nga të dhënat publike ndër-trupi?▾
Pi0.5 dhe modelet GR00T mbartin më shumë para-trajnim ndër-trupi, por SmolVLA shpesh sillet më mirë në një krah me kosto të ulët: grupi i tij i para-trajnimit është 481 grupe të dhënash komunitare, 22.9K episode dhe 10.6M korniza, të vlerësuara në krahë realë SO-100 dhe SO-101. ACT është e kundërta: pa model bazë, 20 ms për hap veprimi.
Sa episode të miat më duhen në të vërtetë?▾
30 për SmolVLA, 50 për GR00T N1.7, GR00T N1.5, Pi0.5 dhe ACT. Me parazgjedhjet e LeRobot prej 60 s për episod dhe 60 s rivendosje, 50 episode janë 100 minuta kohë reale. Të dhënat e huazuara ndër-trupi nuk i ulin këto numra.
Sources
- DROID: Një Set të Dhënash Manipulimi Robotik në Shkallë të Gjerë në Mjedise Reale
- Dokumentacioni DROID: madhësitë e shkarkimit dhe skema e episodit RLDS
- BridgeData V2: Një Set të Dhënash për Mësimin Robotik në Shkallë
- Faqja e projektit BridgeData V2: përbërja dhe mbulimi i kamerave
- Open X-Embodiment: Setet e Dhënave të Mësimit Robotik dhe Modelet RT-X
- Faqja e projektit Open X-Embodiment
- google-deepmind/open_x_embodiment: lista e seteve të dhënave dhe pikat e kontrollit RT-1-X
- any4lerobot: konvertuesi openx2lerobot dhe gjendja e tij e unifikuar 8-D, veprimi 7-D
- IPEC-COMMUNITY/droid_lerobot: meta/info.json dhe madhësia e depozitës
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: pjesa google_robot me 3 fps
- huggingface/lerobot: ndjekësi SO, procesori i kinematikës, konfigurimet e agregimit dhe regjistrimit
- openpi: hyrjet e politikës DROID dhe pika e kontrollit pi05_droid
- pi0: Një Model Fluksi Vizion-Gjuhë-Veprim për Kontrollin e Përgjithshëm të Robotëve
- SmolVLA: Një Model Vizion-Gjuhë-Veprim për Robotikë të Përballueshme dhe Efikase
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