AY-Robotsin julkisen tietokannan hakemisto, joka näyttää SO-100-luokan varsilla tallennettuja LeRobot-tietokantoja
TietokannatOpen X-EmbodimentDROIDSO-100LeRobot

DROIDin, BridgeData V2:n ja Open X:n käyttö SO-100:lla

AY-Robots ResearchAugust 23, 202618 minuutin luku

DROID, BridgeData V2 ja Open X-Embodiment muuntuvat 7-ulotteisiksi tarttujan toimiksi 6 ja 7 vapausasteen varsissa. SO-100 ottaa 6 nivelasentoa. Mikä siirtyy, mikä ei, ja mitä tehdä sen sijaan.

Lyhyt versio

  • Kaikkien kolmen LeRobotin rakenteet jakavat yhden konvention: 7-ulotteinen loppukäsittelytoiminto [x, y, z, roll, pitch, yaw, gripper] ja 8-ulotteinen tila täytepaikalla. SO-100 ottaa kuusi absoluuttista nivelasentoa.
  • Tuo 7-ulotteinen vektori on muuntimen artefakti: DROIDin oma RLDS-toimintokenttä on 6 nivelnopeutta plus tarttujan asento, ja karteesinen näkymä on action_dictissä.
  • Neljä kellotaajuutta: DROID 15 fps, BridgeData V2 5 fps, google_robot-viipale 3 fps, SO-100-tallennus 30 fps.
  • Et voi yhdistää niitä omiin tietoihisi. validate_all_metadata antaa virheen ensimmäisestä eroavasta fps:stä, robot_type:stä tai ominaisuudesta, ja kaikki kolme eroavat.
  • Siirtyvät asiat ovat esikoulutetut painot, eivät episodit. Avoimen lähdekoodin data on 9.1 prosenttia pi0:n esikoulutusseoksesta.
  • Niiden halvin todellinen käyttötarkoitus on testilaite: tunnetusti toimiva 2 GB:n, 100 episodin DROID-näyte, joka todistaa putkilinjasi toimivuuden ennen kuin tallennat viikonlopun ajan.

Google Cloud -säilössä on miljoonan trajektorin julkinen tietokokonaisuus ja pöydällä, joka maksoi 110–150 EUR osina. Miksi ensimmäinen ei voi opettaa toista? Osittain se voi, mutta lähes mikään siirto ei tapahdu siellä, missä ihmiset odottavat, ja helpoimmalta näyttävä osa ei toimi lainkaan.

Seuraavaksi: mitä on sisällä , ja , missä jokainen törmää edulliseen 5-DoF-varteen, ja mitä tehdä sen sijaan. Jokainen alla oleva luku on peräisin siihen kuuluvasta paperista, tietokortista tai lähdetiedostosta.

Mitä kolme tietokokonaisuutta todella sisältävät

DROIDBridgeData V2Open X-Embodiment
RobottiFranka Panda, 7 DoF, Robotiq 2F-85WidowX 250, 6 DoF, ~4,000 USD laitteisto22 toteutusta, 60 datajoukkoa, 34 laboratoriota
Skaala76k trajektoria, 350 tuntia60 096 trajektoria1M+ trajektoria, 527 taitoa
Monimuotoisuus564 kohtausta, 84 tehtävää, 50 kerääjää24 ympäristöä, 13 taitoa160 266 tehtävää, 21 instituutiota
Koostumuskaikki etäohjattuja50 365 etäohjattua, 9 731 skriptattualähdelaboratorion mukaan
Ohjausnopeus15 Hz5 Hzvaihtelee, 3 fps ylöspäin
Kamerat2 x ZED 2 ulkoinen, 1 x ZED Mini ranteessaenintään 4, useimmissa jaksoissa vain kiinteämitä laboratorio käytti
Raakalataus1.7 TB RLDS, 8.7 TB raakaa stereokuvaaJPEG-arkistotdatajoukkokohtaiset TFDS-säiliöt
Aloituspiste on LeRobot-muunnos, ei alkuperäinen säiliö

Harva enää lataa 1.7 TB RLDS TFRecords -tiedostoja. Yhteisöorganisaatio IPEC-COMMUNITY on julkaissut uudelleen suurimman osan Open X-Embodimentista LeRobot-datajoukko-muodossa AV1-videolla, jossa DROID on 392 GB. Tämä on versio, jonka kanssa työskentelet, ja sen meta/info.json on luettava ensin.

DROID

Kolmesta standardoiduin. Yksi laitteisto kaikkialla: Franka Panda Robotiq 2F-85 -tarttujalla, kaksi säädettävää ZED 2 -stereokameraa ja ranteessa ZED Mini, etäohjattu Meta Quest 2 -ohjaimilla, tallennettu Polymetiksen kautta 15 Hz:n taajuudella sekä nivel- että loppukäsittelylaite tilassa. Kielimerkinnät tulivat myöhemmin tasq.ai:n kautta, enintään kolme per jakso.

  • 76k trajektoria, 350 tuntia, 564 kohtausta, 84 tehtävää, 50 kerääjää kolmella mantereella.
  • Päätulos on yhteiskoulutus, ei itsenäinen koulutus: erät, jotka on sekoitettu 50/50 toimialueen sisäisten demonstraatioiden kanssa, voittivat seuraavaksi parhaan menetelmän 22 prosentilla absoluuttisella menestyksellä jakaumassa, 17 prosentilla sen ulkopuolella.
  • 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.
  • 2 GB:n, 100 jakson virheenkorjausnäyte sijaitsee osoitteessa gs://gresearch/robotics/droid_100. Aloita siitä.

BridgeData V2

Lähimpänä harrastajakokoonpanoa: WidowX 250 6-DoF-varsi, 60,096 trajektoria 24 ympäristössä ja 13 taidossa 5 Hz:n taajuudella. Huomaa koostumus: 50,365 asiantuntijan etäohjattua demonstraatiota plus 9,731 satunnaistetusta skriptatusta poimi-ja-aseta-politiikasta, joten noin 16 prosenttia ei ole ihmisen demonstraatiota, mikä on tärkeää jäljittelyoppimisen laadun kannalta. Tavallinen lataus, IPEC-COMMUNITY/bridge_orig_lerobot, ilmoittaa 53,192 jaksoa ja 1,893,026 kuvaa 5 fps:n nopeudella, robot_type widowx: vähemmän kuin artikkelin 60,096, joten lue määrä meta/info.json-tiedostosta sen sijaan, että lainaisit kumpaakaan.

Open X-Embodiment

Ei tietojoukko samassa mielessä: 60 olemassa olevaa robottitietojoukkoa 34 laboratoriosta yhdistettynä yhdeksi RLDS-kokoelmaksi, joka kattaa 22 toteutusta ja yli miljoona trajektoria. BridgeData V2 sijaitsee sen sisällä nimellä bridge_orig; google_robot-viipale, fractal20220817_data, muuntuu 87 212 jaksoksi nopeudella 3 fps.

Yhdistämiseen liittyy varoitus, jonka artikkeli toteaa suoraan. RT-X-kokeissa kirjoittajat muuntavat jokaisen lähteen 7-DoF-loppukäsittelytoiminnoksi, mutta eivät kohdista koordinaattikehyksiä tietojoukkojen välillä, ja sallivat toiminta-arvojen olevan absoluuttisia tai suhteellisia sijainteja tai nopeuksia kunkin robotin alkuperäisen ohjausjärjestelmän mukaisesti. Heidän johtopäätöksensä: sama toimintavektori voi aiheuttaa hyvin erilaisia liikkeitä eri roboteille.

AY-Robots-tietojoukkojen hakemisto, joka listaa julkisia LeRobot-tietojoukkoja jaksojen määrineen ja tehtäväkuvauksineen.
Julkinen tietojoukkojen hakemisto osoitteessa /directory: tietojoukot jo LeRobot-muodossa, jotka vastaavat jo tuettua kättä.

Epäsuhta, neljässä osassa

Ruumiillistumisen epäsuhta käsitetään yleensä yhtenä epämääräisenä ongelmana. Niitä on neljä, ne epäonnistuvat eri tavoin, ja kahta ei voi korjata skriptaamalla.

1. Vapausasteet

SO-100:ssa on viisi käsivarsiniveltä ja tarttuja. Moottoreina laskettuna se on 6-DoF-käsivarsi, ja SmolVLA-paperi kutsuu sitä sellaiseksi; paikannusmekanismina laskettuna se on 5-DoF, ja LeRobot kutsuu sitä sellaiseksi käänteisen kinematiikan docstringissään, joka kuvaa pehmeän suunnan IK:ta 5-DOF SO-101:ssä, jossa ranne seuraa suuntaa vain osittain. Frankassa on seitsemän paikannusniveltä. Tämä ero määrittää, mitkä asennot ovat mahdollisia: 5-DoF-käsivarsi ei yleensä voi saavuttaa mielivaltaista sijaintia ja suuntaa samanaikaisesti, joten ratkaisija palauttaa lähimmän mahdollisen, joka on erilainen liike kuin esitetty. Taustaa: vapausasteet.

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
Vasen: LeRobotin SO-seuraaja, tiedostosta src/lerobot/robots/so_follower/so_follower.py. Oikea: openpi:n DROID-politiikan syöte. Kuusi vastaan kahdeksan.

Valmis DROID-tarkistuspiste ei siis ole oikotie. Physical Intelligence toimittaa pi05_droidin osoitteessa gs://openpi-assets/checkpoints/pi05_droid, ja sama README, joka ylistää sen laajuutta, varoittaa, että nämä asiantuntijatarkistuspisteet eivät välttämättä yleisty sinun kokoonpanoosi. Sen tila on kahdeksan Frankan nivelnumeroa ja sen kuvien avaimet ovat exterior_image_1_left ja wrist_image_left. Mikään lippu ei muuta sitä kuusimoottoriseksi SO-100-komennoksi.

2. Mitä toimintavektori todellisuudessa kertoo

Syvemmälle kuin ulottuvuus. LeRobotin muunnoksissa kaikki kolme kertovat, minne tarttujan tulisi mennä, karteesisessa avaruudessa. SO-100 kertoo, minne kuuden servon tulisi mennä. Muuntaminen vaatii kinemaattisen mallin ja ratkaisijan, ei uudelleenmuotoilua.

OminaisuusOXE, DROID ja Bridge LeRobot-muodossaSO-100 LeRobotissa
Toimintavektori7-D: x, y, z, roll, pitch, yaw, gripper6-D: yksi tavoiteasento per moottori
Tilavektori8-D, täytepaikalla (google_robot käyttää kvaternionia)6-D, yksi per moottori
KehysKarteesinen, epäyhtenäinen eri aineistoissanivelavaruus, käsivarsikohtainen kalibrointi
Absoluuttinen vai suhteellinenkumpi tahansa, lähdelaboratorion päättämäabsoluuttiset tavoiteasennot
Yksikötnormalisoitu aineistokohtaisesti, sitten diskretoituasteita oletuksena (use_degrees=True), muuten -100 - 100
Hiljainen vikadelta luettuna absoluuttisenakalibroimaton käsivarsi
7D-karteesinen vektori on muuntimen käytäntö, ei DROIDin

openx2lerobot README dokumentoi yhtenäisen 8-ulotteisen tilan ja 7-ulotteisen toiminnon jokaiselle muuntamalleen datajoukolle, mistä pad-paikka tulee. DROIDin oma RLDS-skeema eroaa: sen ylätason action on 7-vektori, joka koostuu 6 nivelnopeudesta plus 1 tarttujan asennosta, ja cartesian_position, cartesian_velocity, joint_position sekä joint_velocity ovat action_dict-kohdassa. openpi lukee nivelavaruusnäkymän, LeRobot-kooste antaa sinulle karteesisen. Kumpikaan ei ole kuusi absoluuttista servo-kulmaa.

LeRobot toimittaa puuttuvan palan: SO-seuraajassa on kinematiikkaprosessori, jossa on InverseKinematicsEEToJoints- ja ForwardKinematicsJointsToEE-vaiheet. Sen avaimet ovat ee.x, ee.y, ee.z sekä rotaatiovektori ee.wx, ee.wy, ee.wz ja ee.gripper_pos, joten jopa orientaation koodaus eroaa tiedostojen roll-pitch-yaw-muodosta. IK-vaihe ottaa orientation_weight-arvon, oletuksena 0.01, jonka dokumentaatio kehottaa asettamaan 0.0:ksi vain-asennon IK:lle alitoiminnallisilla käsivarsilla. Voit rakentaa sillan, mutta jokaisen lainatun toiminnon orientaatio-osa pysyy approksimoituna.

3. Ohjausnopeus

DROID on 15 Hz, BridgeData V2 5 Hz, google_robot-viipale 3 fps; pi0:n kirjoittajat kuvailevat seoksensa avoimen lähdekoodin osaa matalataajuisena ohjauksena 2 ja 10 Hz:n välillä. LeRobotin DatasetRecordConfigin oletusarvot ovat fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50. joka on koulutettu 5 Hz:n datalla, oppi, että yksi toiminto kattaa 200 ms. Toista se 30 Hz:llä ja käsivarsi ryömii; näytteenotto naiivisti levittää kuvan, jossa tarttuja sulkeutuu. Se myös toimii huonosti kanssa: 100-askeleen palanen on 20 sekuntia 5 Hz:llä, 3.3 sekuntia 30 Hz:llä.

4. Kamerat

BridgeData V2 satunnaisti kaksi kameran asentoa joka 50. trajektorin kohdalla, ja sen projektisivulla todetaan, että suurin osa datasta sisältää joka tapauksessa vain kiinteän näkymän. DROID käytti säädettäviä ZED 2 -kiinnikkeitä sekä ranteeseen kiinnitettyä ZED Miniä. Sinulla on kaksi USB-webkameraa sijoitettuna silmämääräisesti. Kameran asento ei ole häiritsevä muuttuja ; se on suuri osa siitä, mihin visuaalinen enkooderi perustui, eikä tiedostomuoto kerro sinulle, että asennot eroavat.

Päivän syövä ansa

Osat sopivat riittävän hyvin yhteen ajettavaksi. Aineisto latautuu, koulutus alkaa, häviö pienenee, tarkistuspisteet ilmestyvät, eikä virheitä tapahdu. Sitten toimintamalli ei tee mitään tunnistettavaa käsivarrella ja vietät päivän etsien virhettä koulutusskriptistäsi. Virhettä ei ole: malli oppi karteesisen toimintajakauman robotille, jota ei ole huoneessasi. Aloita kohdasta häviö pienenee, toimintamalli ei tee mitään, älä hyperparametreistasi.

Mitä tapahtuu, kun yrität yhdistää tiedot joka tapauksessa

Ilmeinen suunnitelma on yhdistää: muutama tuhat DROID-jaksoa plus omat 50 jaksosi. LeRobot kieltäytyy, ja kieltäytyminen nimeää kolme asiaa, jotka eroavat.

  1. 1
    Hae 100 jakson näyte, älä koko 1,7 Tt.

    2 Gt riittää rakenteen näkemiseen.

    bash
    pip install gsutil tensorflow tensorflow-datasets
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/
  2. 2
    Muunna RLDS LeRobot-muotoon

    openx2lerobot käärii OXE-standardimuunnokset ja annotoi robottityypin ja ohjaustaajuuden. README sijoittaa tämän convert.sh-tiedostoon.

    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
    Lue meta/info.json ennen kaikkea muuta

    Tämä tiedosto päättää, toimiiko loppupäiväsi.

    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
    Kokeile yhdistämistä ja lue virhe

    merge lataa jokaisen tietojoukon, sitten validate_all_metadata tarkistaa fps:n, robot_type:n ja ominaisuudet listan ensimmäistä vastaan, nostaen virheen ensimmäisestä epäyhteensopivuudesta.

    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.

Viitearvot tulevat siitä tietojoukosta, jonka listasit ensimmäisenä, minkä vuoksi viesti valittaa omasta 30 fps:stäsi DROIDin 15 fps:n sijaan. Korjaa fps, ja törmäät robot_type-tarkistukseen; korjaa se, ja törmäät ominaisuustarkistukseen, 7 vastaan 6 toiminnolle. Mikään järjestys ei mene läpi, ja sama tarkistus suoritetaan tallennushetkellä sanity_check_dataset_robot_compatibility-funktion kautta.

Älä kovakoodaa robot_type-arvoa ohittaaksesi tarkistuksen

Nykyisessä LeRobot mainissa so100_follower ja so101_follower on molemmat rekisteröity yhdelle jaetulle SOFollowerRobotConfig-konfiguraatiolle, joten todellisesta tallenteesta tuleva merkkijono ei välttämättä ole se, mitä odotat. Lue se omasta meta/info.json-tiedostostasi ja käsittele tarkistusta, jonka jouduit poistamaan käytöstä, tarkistuksena, joka kertoi sinulle jotain.

Mitä siis todella siirtyy?

Painot, ei episodit. Jokainen moderni yleiskäyttöinen toimintamalli on omaksunut osan siitä esikoulutuksessa, ja kun julkaistusta perit sen jo sovitettuna ihmisiltä, joilla on laskentatehoa tehdä se oikein. pi0:n julkaisu on suoraan sanainen osuudesta: 9,1 prosenttia sen esikoulutusseoksesta, laskettuna aikavaiheina, on avoimen lähdekoodin dataa, mukaan lukien OXE, Bridge v2 ja DROID. Tämä luku on pi0:n; kunkin toimittajan seos eroaa.

Julkinen kehojen välinen data SO-100-projektissa
Edut
  • Visuaaliset ja kielelliset prioriteetit: enkooderi on nähnyt tuhansia keittiöitä ja mukeja ja tietää, mihin "punainen palikka" viittaa.
  • Prioriteetti manipulointirakenteesta: lähesty, sulje, nosta, kuljeta, vapauta, kehosta riippumaton, vaikka numerot eivät olisikaan.
  • Tunnettu hyvä tietojoukko testausta varten. Jos työsi ei pysty ylisovittamaan 100 DROID-episodia, ongelma on asetuksissasi.
  • Vertailukohdat: pienimuotoisilla tietojoukkoalueilla RT-1-X saavutti 50 prosenttia korkeamman keskimääräisen onnistumisasteen kuin alkuperäinen menetelmä tai RT-1, ja RT-2-X voitti RT-2:n noin 3-kertaisesti uusissa taidoissa.
Kompromissit
  • Ei käyttökelpoista toiminnan ohjausta. 7-ulotteinen karteesinen kohde ei ole 6-ulotteinen nivelkomento.
  • Ei kameran asennon siirtoa, eikä mikään datassa kerro, että asennot eroavat.
  • Ei ajoituksen siirtoa: 3, 5 ja 15 kuvaa sekunnissa lähteet verrattuna 30 kuvaa sekunnissa tallentimeen.
  • Ei tarttujan siirtoa. Robotiq 2F-85 ja STS3215:een painettu leuka eroavat voiman, iskunpituuden ja dynamiikan suhteen.
  • Pelkkä skaala ei riittänyt edes sen tekijöille: suurten tietojoukkojen alueilla RT-1-X ei voittanut pelkästään kyseisellä tietojoukolla koulutettua RT-1:tä.
  • Ei vähennystä tarvitsemiesi omien episodien määrässä.
Mallin kerrosSiirtyykö?Miksi
Visuaalinen enkooderiKyllä, vahvastiObjektit ja kohtaukset ovat kehosta riippumattomia
Kielen maadoitusKylläOhjeet ovat tekstiä, eivät geometriaa
Modaalisuuksien välinen fuusioEnimmäkseenKiinnittää huomiota kehotteessa nimettyyn objektiin
ProprioseptioenkooderiEiSyötteen ulottuvuus ja nivelten semantiikka eroavat
ToimintapääEiKoulutettu 7-ulotteisessa karteesisessa avaruudessa, jossa et ole
NormalisointitilastotEi, ja vaarallistaVieraat tilastot siirtävät jokaista komentoa

Tästä syystä SmolVLA käyttäytyy eri tavalla edullisella varrella. Sen julkaisussa valitaan 481 yhteisön datasettiä Hugging Facesta, jotka on suodatettu ruumiillistumistyypin, episodien määrän, datan laadun ja kehysten kattavuuden perusteella: 22.9K episodia, 10.6M kehystä, arvioitu todellisilla SO-100- ja SO-101-varsilla. Pieni ja yhteensopiva voittaa suuren ja yhteensopimattoman. Vertaa ACT vs. SmolVLA.

Kolme harkitsemisen arvoista polkua

Polku A: hienosäädä tarkistuspisteestä, joka on jo käsitellyt datan

Useimpien ihmisten tulisi valita tämä. Et koskaan koske DROIDiin tai Open X-Embodimentiin: valitse toimintamalli, jonka esikoulutus on jo omaksunut eri ruumiillistumien datan, tallenna omat episodisi, hienosäädä.

ToimintamalliParametritMinimijaksotAineiston muotoGPU-tasoPäättelyPerustarkistuspiste
GR00T N1.7~3 B, ~40 M trained in fine-tuning50LeRobot v2.0 or v2.1A100 or H100 80 GB152 ms per stepnvidia/GR00T-N1.7-3B
GR00T N1.5~3 B50LeRobot v2.0 or v2.1A100 or H100 80 GB165 msnvidia/GR00T-N1.5-3B
Pi0.5~3 B, PaliGemma backbone50LeRobot v3.0A100 or H100 80 GB485 mslerobot/pi05_base
SmolVLA~450 M30LeRobot v3.0RTX 4090 or any 24 GB245 mslerobot/smolvla_base
ACT~80 M50LeRobot v3.0RTX 4090 or any 24 GB20 msnone, from scratch

ACT on rehellinen reunatapaus: ei perusmallia, joten mikään julkinen data ei koskaan saavuta sitä. Tämä ei ole automaattisesti haitta, sillä 20 ms:n toimintavaiheella se on ainoa viidestä, joka voi sulkea nopean silmukan, kuten ACT-sivu esittää. Valitse tehtävän mukaan käyttäen kaikkia viittä verrattuna, GR00T N1.7 vastaan Pi0.5, ja 332 vertailutulosta 85 mallista areenalla.

Polku B: käytä DROIDia testilaitteena

100 jakson näyte on paras 2 Gt, jonka lataat tässä kuussa, eikä se ole tarkoitettu koulutukseen. Se on aineisto, jonka tiedät olevan oikein. Suorita muunnin, lataaja ja lyhyt GPU-työ sen kanssa; kaikki mikä epäonnistuu, on infrastruktuurivirhe, joka löytyi edullisesti. NVIDIA tekee samoin mittakaavassa: GR00T N1.7 -kortti listaa neljä jälkikoulutettua varianttia Bridge- ja Fractal-malleille SimplerEnvissä, DROIDille ja LIBEROlle.

Polku C: tallenna omasi tarkoituksella

Kolmestakymmenestä viiteenkymmeneen kuulostaa vähäiseltä 76 000:n rinnalla, kunnes muistat, että omasi ovat ainoita, joissa on sinun kätesi, kamerasi ja pöytäsi. LeRobotin oletusasetuksilla 50 jaksoa on 100 minuuttia todellista aikaa. Katso , ja .

AY-Robotsin tallennusopassivu, joka näyttää vaiheet LeRobot-datasetin keräämiseksi teleoperaatiosessiosta
Tallennusohje osoitteessa /learn/record-your-first-dataset: vaihe, jota julkinen data ei voi korvata.

Kaksi tapaa päästä julkisesta datasta toimivaan käytäntöön

All of this runs on your own machine plus a rented GPU. Knowing the manual path matters because when something breaks you will know which layer broke.

  1. 1
    Install LeRobot with the extras the scripts need

    The record and train entry points each declare their own extra.

    bash
    pip install 'lerobot[core_scripts]'   # lerobot-record
    pip install 'lerobot[training]'      # lerobot-train
    pip install gsutil tensorflow tensorflow-datasets
  2. 2
    Get a small, known-good slice

    100 DROID episodes, 2 GB.

    bash
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/
  3. 3
    Convert to LeRobot form

    Writes the unified 8-D state and 7-D action, annotating robot type and control frequency.

    bash
    python openx_rlds.py \
        --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \
        --local-dir ~/lerobot_droid100 \
        --repo-id you/droid100_lerobot \
        --use-videos
  4. 4
    Check the version against your trainer

    The converter README documents v3.0 output; the published IPEC-COMMUNITY datasets report v2.0. GR00T wants v2.0 or v2.1 and crashes on v3.0; Pi0.5, SmolVLA and ACT want v3.0. Mind the gap: the only conversion script on LeRobot main goes 2.1 to 3.0.

    bash
    python src/lerobot/scripts/convert_dataset_v21_to_v30.py \
        --repo-id=you/droid100_lerobot
  5. 5
    Record your own episodes

    Defaults: 30 fps, 60 s per episode, 60 s reset, 50 episodes. The teleoperator type is so100_leader.

    bash
    lerobot-record \
      --robot.type=so100_follower \
      --robot.port=/dev/ttyACM0 \
      --robot.cameras="{front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
      --teleop.type=so100_leader \
      --teleop.port=/dev/ttyACM1 \
      --dataset.repo_id=you/so100_pick_block \
      --dataset.num_episodes=50 \
      --dataset.single_task="Pick up the red block and put it in the bowl"
  6. 6
    Fine-tune on your data only

    Weights from public data, actions from your own. Do not mix the datasets.

    bash
    lerobot-train \
      --policy.path=lerobot/smolvla_base \
      --dataset.repo_id=you/so100_pick_block \
      --policy.device=cuda \
      --batch_size=4 \
      --steps=20000
Where the time actually goes

Not in training; the GPU job is hours. The conversion, the version mismatch and the moment you find your dataset is v2.0 and your trainer wants v3.0 are days. Read dataset rejected as v3 first.

AY-Robots-työpöytäsovelluksen lataussivu, sovellus joka tallentaa LeRobot-muotoisia aineistoja teleoperaatiosessiosta
Työpöytäsovellus osoitteessa /download kirjoittaa LeRobot-aineistoja suoraan teleoperaatiosessiosta ohittaen RLDS-muunnoksen.

Mitä kukin polku maksaa

PolkuTallennustilaIhmisen aikaGPU-kustannusTodennäköisyys, että se liikuttaa kättäsi
Muunnettu DROID yksin392 GBmuunnospäiviä4 to 12 USDerittäin matala, väärä toimintatila
DROID yhdistettynä omiin jaksoihisimolemmatblocked by validate_all_metadatan/aei mitään, se ei toimi
SmolVLA, 30–50 omaa jaksoamuutama GB100 min nauhoitus1 to 3 USDkorkea
GR00T N1.7, 50 omaa jaksoamuutama GB100 min nauhoitus4 to 12 USDkorkea
ACT alusta alkaen, 50 omaa jaksoamuutama GB100 min nauhoitus1 to 3 USDkorkea, 20 ms päättely
DROID-näyte testikiinnikkeenä2 GBiltapäiväyksi lyhyt ajokorkea, validointina

Epäsymmetria on olennainen: polku, joka lainaa eniten dataa, on kallein ja vähiten todennäköinen liikuttamaan kättäsi. Alle kahden tunnin oma teleoperaatio voittaa teratavun jonkun toisen Frankasta. Eikö sinulla ole vielä kättä? /live suoratoistaa fyysistä SO-100:aa ilman rekisteröitymistä. Sitten kouluta ensimmäinen käytäntösi, ja SmolVLA SO-100:lla tiettyä opasta varten.

Kohtuullinen oletussuunnitelma

Lataa 2 GB DROID-näyte ja käytä sitä putkilinjasi todistamiseen. Jätä huomiotta muut 1.7 TB. Tallenna 50 jaksoa yhdestä tehtävästä kiinteillä kameroilla. Hienosäädä SmolVLA ensin, koska 30 minimijaksolla 24 GB kortilla se on edullisin iteroida, sitten kokeile GR00T N1.7 samalla datalla. Vertaa omassa tehtävässäsi, ei vertailuarvossa.

Tallenna datasettejä, jotka vastaavat jo robottikättäsi

Työpöytäsovellus kirjoittaa LeRobot-muotoisia datasettejä suoraan teleoperaatiosessiosta: oikea robottikäsi, oikea kuvataajuus, oikea toimintatila. Ei RLDS-muunnosta, ei uudelleenmääritystä.

Hanki työpöytäsovellus
Voinko kouluttaa toimintamallin DROIDilla ja ajaa sen SO-100:llani?

Ei suoraan. LeRobot-rakenteessa DROID-toiminnot ovat 7-D-loppukäyttimen komentoja Franka Pandassa nopeudella 15 fps; raa'assa RLDS:ssä ne ovat 6 nivelnopeutta plus tarttujan asento. SO-100 ottaa 6 absoluuttista nivelasentoa. Tarvitsisit käänteisen kinematiikan kerroksen, ja silloinkin 5-DoF-ranne ei voi toistaa mielivaltaisia 6-DoF-asentoja.

Voinko sekoittaa DROID- tai Bridge-jaksoja omien SO-100-jaksojeni kanssa?

Ei. validate_all_metadata vaatii identtiset fps:n, robot_type:n ja feature-skeeman ja nostaa ValueError-virheen ensimmäisestä epäyhteensopivuudesta. Kaikki kolme eroavat: 15 tai 5 fps vs. 30, franka tai widowx vs. oma robottikätesi, toimintamuodot 7 vs. 6. Metadatan uudelleenkirjoittaminen tarkistuksen läpäisemiseksi ei korjaa semantiikkaa.

Onko Open X-Embodiment silloin hyödytön edulliselle robottikäden kanssa?

Ei, mutta sen arvo saavuttaa sinut esikoulutettujen painojen, ei jaksojen kautta. Avoin lähdekoodi -datasettejä, kuten OXE, Bridge v2 ja DROID, on 9.1 prosenttia pi0:n esikoulutusseoksesta, ja NVIDIA toimittaa GR00T N1.7 -variantteja, jotka on jälkikoulutettu Bridge-, Fractal-, DROID- ja LIBERO-dataseteillä. Et voi liittää näitä jaksoja omaan tallenteeseesi.

Mikä toimintamalli hyötyy eniten julkisesta cross-embodiment-datasta?

Pi0.5 ja GR00T-mallit sisältävät eniten cross-embodiment-esikoulutusta, mutta SmolVLA toimii usein parhaiten edullisella robottikäden kanssa: sen esikoulutussetti koostuu 481 yhteisön datasetistä, 22.9K jaksosta ja 10.6M kuvasta, ja se on arvioitu todellisilla SO-100- ja SO-101-robottikäsillä. ACT on päinvastainen: ei perusmallia, 20 ms per toimintavaihe.

Kuinka monta omaa jaksoa todella tarvitsen?

30 SmolVLA:lle, 50 GR00T N1.7:lle, GR00T N1.5:lle, Pi0.5:lle ja ACT:lle. LeRobotin oletusarvoilla 60 s per jakso ja 60 s nollaus, 50 jaksoa on 100 minuuttia todellista aikaa. Lainaattu cross-embodiment-data ei alenna näitä lukuja.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started