Direktoria publike e grupeve të të dhënave AY-Robots që tregon grupet e të dhënave LeRobot të regjistruara në krahë të klasës SO-100
Grupe të dhënashOpen X-EmbodimentDROIDSO-100LeRobot

Përdorimi i DROID, BridgeData V2 dhe Open X në një SO-100

AY-Robots ResearchAugust 23, 202618 minuta lexim

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

DROIDBridgeData V2Open X-Embodiment
RobotFranka Panda, 7 DoF, Robotiq 2F-85WidowX 250, 6 DoF, ~4,000 USD rig22 embodiments, 60 datasets, 34 labs
Shkalla76k trajectories, 350 hours60,096 trajectories1M+ trajectories, 527 skills
Diversiteti564 scenes, 84 tasks, 50 collectors24 environments, 13 skills160,266 tasks, 21 institutions
Përbërjaall teleoperated50,365 teleoperated, 9,731 scriptedper source lab
Shkalla e kontrollit15 Hz5 Hzvaries, 3 fps upwards
Kamera2 x ZED 2 exterior, 1 x ZED Mini wristup to 4, most episodes only the fixed onewhatever the lab used
Shkarkimi i papërpunuar1.7 TB RLDS, 8.7 TB raw stereoJPEG archivesper-dataset TFDS buckets
Pika hyrëse është konvertimi LeRobot, jo grupi origjinal

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.

Direktoria e grupeve të të dhënave AY-Robots që liston grupet publike të të dhënave LeRobot me numër episodesh dhe përshkrime detyrash.
Direktoria publike e grupeve të të dhënave në /directory: grupe të dhënash tashmë në formatin LeRobot, tashmë që përputhen me një krah të mbështetur.

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ë.

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
Majtas: Ndjekësi SO i LeRobot, nga src/lerobot/robots/so_follower/so_follower.py. Djathtas: Hyrja e politikës DROID të openpi. Gjashtë kundër tetë.

Pra, 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.

VetiaOXE, DROID dhe Bridge në formën LeRobotSO-100 në LeRobot
Vektori i veprimit7-D: x, y, z, rrotullim, pjerrësi, devijim, kapës6-D: një pozicion objektiv për motor
Vektori i gjendjes8-D, me një vend mbushës (google_robot përdor një kuaternion)6-D, një për motor
KornizaKarteziane, e pa-rreshtuar nëpër grupe të dhënashhapësira e nyjeve, kalibrim për krah
Absolute apo relativeose njëra, ose tjetra, vendosur nga laboratori burimorpozicione absolute të objektivit
Njësitëtë normalizuara për grup të dhënash, pastaj të diskretizuaragradë si parazgjedhje (use_degrees=True), përndryshe -100 deri në 100
Dështim i heshturnjë delta e lexuar si absolutenjë krah i pa-kalibruar
Vektori kartezian 7-D është konventa e konvertuesit, jo e DROID-it

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ë.

Kurthi që të ha një ditë

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ë.

  1. 1
    Shkarkoni mostër prej 100 episodesh, jo të plotë 1.7 TB

    2 GB mjaftojnë për të parë strukturën.

    bash
    pip install gsutil tensorflow tensorflow-datasets
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/
  2. 2
    Konvertoni 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.

    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
    Lexoni meta/info.json para çdo gjëje tjetër

    Kjo skedar vendos nëse pjesa tjetër e ditës suaj funksionon.

    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
    Provoni 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ë.

    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.

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.

Mos e kodoni fort robot_type për të anashkaluar kontrollin

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.

Të dhëna publike ndër-trupiore në një projekt SO-100
Avantazhe
  • 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.
Kompromise
  • 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 modelitTransferohet?Pse
Koduesi i vizionitPo, fuqishëmObjektet dhe skenat janë të pavarura nga trupi
Bazimi gjuhësorPoUdhëzimet janë tekst, jo gjeometri
Shkrirja ndër-modaleKryesishtI kushton vëmendje objektit të emërtuar në kërkesë
Koduesi i proprioceptimitJoDimensioni i hyrjes dhe semantika e përbashkët ndryshojnë
Koka e veprimitJoE trajnuar në një hapësirë karteziane 7-D në të cilën nuk jeni
Statistikat e normalizimitJo, dhe e rrezikshmeStatistikat 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.

PolitikaParametratEpizodat minFormati i grupit të të dhënaveNiveli i GPU-sëInferencaPika bazë e kontrollit
GR00T N1.7~3 B, ~40 M të trajnuar në rregullim të imët50LeRobot 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, shtylla kurrizore PaliGemma50LeRobot 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 msasnjë, 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 .

Faqja e tutorialit të regjistrimit të AY-Robots që tregon hapat për të kapur një grup të dhënash LeRobot nga një sesion teleoperimi
Udhëzuesi i regjistrimit në /learn/record-your-first-dataset: hapi që të dhënat publike nuk mund ta zëvendësojnë.

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.

  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.

Faqja e shkarkimit të klientit desktop AY-Robots, klienti që regjistron grupe të dhënash në format LeRobot nga një sesion teleoperimi
Klienti desktop në /download shkruan grupe të dhënash LeRobot direkt nga një sesion teleoperimi, duke anashkaluar konvertimin RLDS.

Kostoja e çdo rruge

RrugaRuajtjaKoha njerëzoreKostoja e GPU-sëGjasat që të lëvizë krahun tuaj
DROID i konvertuar vetëm392 GBditë konvertimi4 to 12 USDshumë e ulët, hapësirë veprimi e gabuar
DROID i bashkuar me episodet tuajatë dyjablocked by validate_all_metadatan/aasnjë, nuk ekzekutohet
SmolVLA, 30 deri në 50 episode tuajadisa GB100 min regjistrim1 to 3 USDe lartë
GR00T N1.7, 50 episode tuajadisa GB100 min regjistrim4 to 12 USDe lartë
ACT nga fillimi, 50 episode tuajadisa GB100 min regjistrim1 to 3 USDe lartë, 20 ms inference
Mostër DROID si pajisje testimi2 GBnjë pasditenjë ekzekutim i shkurtëre 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.

Një plan i arsyeshëm parazgjedhur

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 desktopit
A 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.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started