Vadnica AY-Robots za snemanje vašega prvega nabora podatkov LeRobot z roko SO-100
LeRobotSO-100Snemanje nabora podatkovTeleoperacijaUčenje z imitacijo

Posnemite svoj prvi nabor podatkov LeRobot z SO-100

AY-Robots ResearchAugust 23, 202616 min branja

Posnemite uporaben nabor podatkov LeRobot z SO-100: kalibracija, teleoperacija vodja-sledilec, dejanske zastavice in privzete vrednosti lerobot-record, nastavitev kamere, število epizod in napake, ki uničijo izvedbo.

Neki SO-100 sledilnik, vodilna roka enake zasnove in dve USB kameri lahko v popoldnevu natančno nastavijo politiko. Ista delovna postaja lahko enostavno ustvari šestdeset epizod, ki so videti zdrave v brskalniku datotek in zapravijo šesturno delovanje GPU-ja. Razlika je redko v modelu; je v tem, kar se je zgodilo med servomotorji in datoteko parquet.

Tukaj je ročna pot, nato krajša. Vsak ukaz je iz lerobot 0.6.1, izdanega 3. avgusta 2026 in trenutno na PyPI. Premaknil se je na vstopne točke konzole, zato vadnice, ki izvajajo python lerobot/scripts/control_robot.py opisujejo datoteko, ki ne obstaja več.

Kratka različica

  • lerobot 0.6.1 snema v3.0; GR00T N1.7 in N1.5 želita v2.1. Določite format, preden pritisnete snemanje.
  • Štirje ukazi: lerobot-find-port, lerobot-setup-motors, lerobot-calibrate, lerobot-record. Uporabite enaka --robot.id in --teleop.id iz kalibracije v sejo snemanja.
  • Dejanske privzete vrednosti: 30 fps, 60 s na epizodo, 60 s ponastavitev, 50 epizod, približno 100 minut dejanskega časa.
  • Minimalno število epizod tukaj: 30 za SmolVLA, 50 za ostale.
  • Raznolikost premaga količino. Podatkovni nizi propadejo zaradi štirih stvari: zamenjanih indeksov kamer, izpuščenih ali zamrznjenih sličic, spoja, parkiranega na svoji meji, neberljivega niza naloge.

Kaj zajame seja snemanja

Nabor podatkov LeRobot nabor podatkov ni mapa videoposnetkov, temveč časovno indeksirana tabela s priloženim videom: vsak takt krmilne zanke zapiše eno vrstico, ki vsebuje ukazano dejanje, stanje, ki ga je dosegel sledilec, eno sličico na kamero, časovni žig in indekse. Politika vidi samo te stolpce. Shema lerobot/svla_so100_pickplace, prebrana iz njegove meta/info.json.

ZnačilnostdtypeOblikaKaj je to
actionfloat32[6]cilji sklepov iz vodilne roke
observation.statefloat32[6]položaji sklepov, ki jih je dosegel sledilec
observation.images.topvideo[480, 640, 3]scenska kamera, MP4 (tukaj av1)
observation.images.wristvideo[480, 640, 3]zapestna kamera, enaka hitrost
timestampfloat32[1]sekunde od začetka epizode
frame_index, episode_index, index, task_indexint64[1]samodejno posodobljeno vodenje evidenc

Sklepi so main_shoulder_pan, main_shoulder_lift, main_elbow_flex, main_wrist_flex, main_wrist_roll in main_gripper: šest stopinj svobode. Akcija in stanje si delita obliko, ker teleoperacija vodja-sledilec zabeleži cilj in položaj, dosežen en korak kasneje. Ta vrzel je informacija: kje se je roka borila proti gravitaciji ali zataknjenemu predmetu. Ti nizi so iz tega nabora podatkov. Seja, posneta z 0.6.1 danes, zapiše shoulder_pan.pos do gripper.pos, ID-je od 1 do 6 na vodilu: istih šest sklepov, različni ključi, kar je pomembno v trenutku, ko konfiguracija naslovi značilnost po imenu.

Merilo iz resničnega nabora podatkov

Ta nabor podatkov vsebuje 50 epizod in 19.631 sličic pri 30 sličicah na sekundo: približno 393 sličic ali 13 sekund na epizodo. Če vaše povprečje znaša minuto, delate nekaj težjega ali snemate mrtev čas na obeh koncih.

Vnos v slovar AY-Robots za format podatkovnega nabora LeRobot, ki prikazuje postavitev direktorijev in metapodatkovne datoteke.
Kaj se nahaja v data/, videos/ in meta/, in katere politike berejo katero različico.

Kaj potrebujete na delovni mizi

PostavkaPodrobnostiOpomba
Sledilna rokaSO-100, šest Feetech STS3215 servomotorjevpribližno 110 do 150 EUR za dele
Vodila rokadruga SO-100, odstranjeni zobnikizobniki odstranjeni iz vseh šestih motorjev vodilne roke: samo dajalnik, manj trenja
Napajanjeujema se z različico STS3215 7.4 V v seznamu materialaglejte opozorilo spodaj
Kameredve USB kameri, 640x480 pri 30 fpsen pogled na sceno, ena na zapestju
GostiteljPython 3.12 ali novejši, ffmpegrequires-python >= 3.12
Hub računHugging Face write tokenneobvezno z --dataset.push_to_hub=false
7.4 V, ne 12 V

STS3215 je na voljo v dveh različicah: README za SO-ARM100 ocenjuje različico 7.4 V na 16.5 kg.cm zapornega navora, izmerjenega pri 6 V, in različico 12 V na 30 kg.cm, ter opozarja, da izbira 12 V motorjev pomeni tudi nakup 12 V 5 A+ napajalnika namesto 5 V. Seznam materiala navaja 7.4 V servomotorje. Napajanje 12 V servomotorjem, ocenjenim na 7.4 V, jih uniči, zato preberite oznako motorja, preden karkoli ožičite. Servo se ne odziva.

Če roka še ni sestavljena, je to ločen večer: začnite pri Začetek z SO-100 in popoln vodnik za nastavitev SO-100. Če še niste ničesar kupili, najprej preberite primerjavo SO-100 proti SO-101: SO-101 je novejša revizija z izboljšano napeljavo in brez koraka odstranjevanja zobnikov, potek dela snemanja pa je enak.

Namestite lerobot 0.6.1

bash
conda create -y -n lerobot python=3.12
conda activate lerobot

# TorchCodec is the default video decoder and needs ffmpeg
conda install ffmpeg -c conda-forge

# core_scripts = dataset + hardware + viz extras (record, replay, calibrate)
# feetech     = SDK for the STS3215 bus servos in the SO-100
pip install 'lerobot[core_scripts,feetech]'

lerobot-info
lerobot-info izpiše povzetek sistema, vključno z različico ffmpeg, ki jo najde v PATH.

Dodatki so tisto, kar večino ljudi zmede. pip install lerobot namesti samo osnovne odvisnosti ML, ničesar, kar bi komuniciralo z robotom. Roke Koch potrebujejo dynamixel namesto feetech. Če vaš shell še nikoli ni slišal za lerobot-record, je to razlog.

Vrata, ID-ji motorjev in kalibracija

Trije enkratni koraki ločijo dele od delujoče teleoperacijske zanke. omogoča, da se politika, usposobljena na vaši roki, izvaja na tuji, s preslikavo surovih vrednosti dajalnika na skupno konvencijo sklepov.

  1. 1
    Poiščite USB vrata vsake roke

    Zaženite ga z obema priključenima rokama, odklopite tisto, ki jo identificirate, ko ste pozvani, in si zabeležite, katera vrata izginejo. Na Linuxu boste morda potrebovali sudo chmod 666 /dev/ttyACM0.

    bash
    lerobot-find-port
    # Finding all available ports for the MotorsBus.
    # Ports before disconnecting: ['/dev/ttyACM0', '/dev/ttyACM1']
    # Remove the USB cable from your MotorsBus and press Enter when done.
    # The port of this MotorsBus is '/dev/ttyACM1'
    # Reconnect the USB cable.
  2. 2
    Zapišite ID-je motorjev in hitrosti prenosa

    ID-ji se zapisujejo en motor naenkrat, in dokumentacija je stroga glede tega, kako: priključite točno en motor na krmilno ploščo, ki še ni zaporedno povezan z nobenim drugim. Skripta prehodi verigo nazaj, najprej pozove za prijemalo in mu dodeli ID 6, nato za zapestje (wrist_roll) ID 5, vse do ramena (shoulder_pan) ID 1. To storite pred sestavljanjem.

    bash
    lerobot-setup-motors \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0
    
    lerobot-setup-motors \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1
  3. 3
    Kalibrirajte obe roki

    Premaknite vsak sklep v sredino njegovega območja, pritisnite Enter, nato pa vsakega premaknite skozi celotno območje. id postane ime datoteke profila.

    bash
    lerobot-calibrate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_so100_follower
    
    lerobot-calibrate \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_so100_leader
  4. 4
    Teleoperirajte pred snemanjem česar koli

    Sprejemni test za vse zgoraj navedeno. Če je teleoperacija sunkovita, zrcaljena ali en sklep ne sledi, se to ohrani v 50 epizodah snemanja.

    bash
    lerobot-teleoperate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_so100_follower \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_so100_leader \
        --display_data=true
Kam se shranjuje kalibracija in zakaj je ID pomemben

Profili se shranijo v $HF_LEROBOT_CALIBRATION, privzeto ~/.cache/huggingface/lerobot/calibration, in ID je ključ za iskanje. Dajte lerobot-record kalibriran ID in ponudil bo Enter za ponovno uporabo profila ali c za ponovno izvedbo. Dajte mu neznan ID in datoteke ne bo, zato bo sredi seje prešel v kalibracijo.

Kamere določajo, kaj vidi politika delovanja

bash
lerobot-find-cameras opencv   # or: lerobot-find-cameras realsense

# --- Detected Cameras ---
# Camera #0:
#   Name: OpenCV Camera @ 0
#   Type: OpenCV
#   Id: 0
#   Backend api: AVFOUNDATION
#   Default stream profile:
#     Format: 16.0
#     Width: 1920
#     Height: 1080
#     Fps: 15.0
To zaženite vsako sejo: dokumentacija opozarja, da se ti identifikatorji lahko spremenijo po ponovnem zagonu ali ponovnem priklopu, odvisno od operacijskega sistema.

Dva pogleda, in pomembno je, kje sta nameščena: fiksna scenska kamera, ki pokriva delovni prostor, in zapestna kamera blizu končnega efektorja ki prikazuje, česa se bo prijemalo dotaknilo. Kontrolni seznam skupnostnih podatkovnih zbirk LeRobot zahteva prednostno dva pogleda pri 480x640 / 720p ali bolje, statično ozadje, nevtralno stabilno osvetlitev ter vodilno roko in človeške ude izven kadra. Vodnik za snemanje dodaja splošno pravilo: nalogo bi morali biti sposobni opraviti sami, samo z gledanjem slik kamere.

Indeks kamere ni stabilna identiteta

Indeksi OpenCV izhajajo iz vrstnega reda naštevanja, zato lahko ponovni zagon ali ponovni priklop povzroči zamenjavo indeksov 0 in 2 ter postavitev pogleda zapestja v zgornjo režo za celotno sejo. lerobot sam pravi: njegov razred kamere sprejme pot naprave in celo število ter opozarja, da so indeksi nestabilni ob ponovnih zagonih ali spremembah vrat, zlasti na Linuxu. Usmerite index_or_path na udev simbolno povezavo pod /dev/v4l/by-id/, ki sledi napravi in ne vrstnemu redu naštevanja. To je najpogostejši način, da podatkovna zbirka postane notranje nedosledna, in usposabljanje tega ne more popraviti. Kamera ni zaznana.

Ukaz za snemanje in vsaka zastavica

bash
HF_USER=$(NO_COLOR=1 hf auth whoami | awk -F': *' 'NR==1 {print $2}')

lerobot-record \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_so100_follower \
    --robot.cameras="{ top: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30}}" \
    --teleop.type=so100_leader \
    --teleop.port=/dev/ttyACM1 \
    --teleop.id=my_so100_leader \
    --display_data=true \
    --dataset.repo_id=${HF_USER}/so100_pick_cube \
    --dataset.single_task="Pick the red cube and drop it in the box" \
    --dataset.num_episodes=50 \
    --dataset.fps=30 \
    --dataset.episode_time_s=25 \
    --dataset.reset_time_s=10 \
    --dataset.streaming_encoding=true \
    --dataset.encoder_threads=2
Slovar kamere je en lupinsko-citiran niz; ugnezdene zanke niso lupinska sintaksa.

Spodnje privzete vrednosti izhajajo iz src/lerobot/configs/dataset.py na glavni veji, ne iz vadnice. Nekatere niso takšne, kot si ljudje predstavljajo.

ZastavicaPrivzetoKaj počne
--dataset.repo_idpraznoime; časovni žig dodan privzeto
--dataset.single_taskpraznoniz naloge, shranjen z vsako epizodo
--dataset.root$HF_LEROBOT_HOME/repo_idpot za pisanje, privzeto ~/.cache/huggingface/lerobot/
--dataset.fps30hitrost krmilne zanke in hitrost sličic nabora podatkov
--dataset.episode_time_s60sekund, preden se epizoda samodejno nadaljuje
--dataset.reset_time_s60ponastavitev scene; roka se premakne, nič ni shranjeno
--dataset.num_episodes50epizode, posnete v tej seji
--dataset.push_to_hubtruenaloži ob koncu seje; false ostane lokalno
--dataset.streaming_encodingfalse v podatkovnem razredu, true v tabeli dokumentacijekodiraj med zajemanjem; nastavi eksplicitno
--dataset.encoder_queue_maxsize30medpomnilniške sličice na kamero, ~1 s pri 30 fps
--dataset.encoder_threadsnull (kodek odloča)niti na kodirnik; znižaj, če zajemanje zatika
--dataset.no_stampfalseohrani repo_id natančno tako, kot je vneseno
--resumefalsedodaj k obstoječemu naboru podatkov; potrebuje --dataset.root
Dve zastavici, ki vas lahko presenetljivo staneta uro časa

Vaš nabor podatkov se ne imenuje tako, kot ste vnesli. lerobot doda oznako datuma in časa, tako da so100_pick_cube postane so100_pick_cube_20260823_141530. Uporabite --dataset.no_stamp=true za stabilno ime. Nadaljevanje šteje dodatke, ne skupnih vrednosti. Z --resume=true, --dataset.num_episodes šteje dodatne epizode in --dataset.root postane obvezen. Zahtevajte 50 na naboru podatkov s 30 epizodami in dobili boste 80.

Upravljanje s tipkovnico med sejo

  • Desna puščica ali n: predčasno končajte epizodo ali fazo ponastavitve. To tipko boste uporabljali največ, saj čisto prijemanje redko potrebuje 25 sekund.
  • Leva puščica ali r: zavrzite epizodo in jo ponovite. Slab poskus zdaj ne stane nič, kasneje pa veliko.
  • Escape ali q: ustavite sejo, dokončajte kodiranje, naložite.
  • To deluje na X11, Wayland in brezglavem SSH: brez globalnega zaledja za tipke, lerobot-record bere iste tipke iz nadzornega terminala. Črke preživijo počasne SSH povezave, kjer se zaporedja puščic razdelijo.
  • Tipkovniška teleoperacija je drugačna in potrebuje globalno zaledje: X11, Windows ali macOS z dostopnostjo.

Koliko epizod in kako izgleda dobra

Priročnik za snemanje predlaga vsaj 50 epizod za prvo nalogo, približno 10 na lokacijo predmeta. Strani s politikami navajajo minimum na model, pod katerim se izvajanje ne splača glede na čas GPU-ja.

PolitikaMin. epizodFormat podatkovnega naboraRazred GPU-jaCena na izvajanje
SmolVLA30LeRobot v3.0RTX 4090 or any 24 GB cardabout 1 to 3 USD
ACT50LeRobot v3.0RTX 4090 or any 24 GB cardabout 1 to 3 USD
GR00T N1.750LeRobot v2.0 or v2.1A100 80 GB or H100 80 GBabout 4 to 12 USD
GR00T N1.550LeRobot v2.0 or v2.1A100 80 GB or H100 80 GBabout 4 to 12 USD
Pi0.550LeRobot v3.0A100 80 GB or H100 80 GBabout 4 to 12 USD

Boljše vprašanje je, koliko česa. Data Scaling Laws in Imitation Learning for Robotic Manipulation (Lin et al., 2024) so zbrali več kot 40.000 demonstracij in izvedli več kot 15.000 izvajanj v realnem svetu. Generalizacija je sledila približno razmerju potenčnega zakona s številom okolij in predmetov, in po preseganju praga na okolje ali predmet so imele dodatne demonstracije minimalen učinek. Na eni delovni mizi: premaknite predmet, spremenite osvetlitev, zamenjajte kocko, namesto da ponavljate en posnetek.

Teleoperacija vodja-sledilec kot vir podatkov
Prednosti
  • Zvezne trajektorije sklepov, ki jih lahko reproducira servo, za razliko od tipkovnice ali igralne palice
  • Akcija in stanje si delita koordinatno konvencijo, zato se politika nauči cilja, ki ga lahko neposredno ukazuje
  • Epizoda, dolga 25 sekund, plus 10-sekundni ponastavitev je približno 100 epizod na uro
  • Operater čuti, da se sledilec zatika ali veže, zato se napake pojavijo, preden so podatki potrjeni
Kompromisi
  • Druga roka približno podvoji stroške delov
  • Demonstracije podedujejo navade operaterja; Mandlekar et al. so ugotovili, da je kakovost politike močno odvisna od kakovosti demonstracij
  • Vodja se vzorči s hitrostjo zanke, zato postanejo premori skoraj enaki zapisi, ki politiko učijo čakati
  • Nič ne zagotavlja doslednosti med sejami: kamera, premaknjena za 5 cm, je skrita sprememba distribucije

Dobra epizoda je dolgočasna: ponovljiv začetni položaj, ena stvar opravljena, končana, ko je predmet v košu, niz opravila v 25 do 50 znakih, kot priporoča kontrolni seznam. Pick the red cube and drop it in the box je niz opravila; task1 je antipattern, ki ga kontrolni seznam izrecno imenuje. Nejasne opombe so na vrhu seznama problemov in so najpomembnejše za vizualno-jezikovne-akcijske modele, kjer je niz vhod za model, ne ime datoteke.

Napake, ki tiho uničijo nabor podatkov

Nobena ne sproži izjeme. Vse preživijo v usposabljanje in se pojavijo kot krivulja izgube, ki izgleda v redu, in robot, ki ne dela ničesar. Preverite, medtem ko je scena postavljena.

NapakaKako izgledaOd kod prihajaKako jo odkriti
Zamenjani pogledi kamereslika zapestja pod zgornjim ključemponovna dodelitev indeksa po ponovnem priklopulerobot-find-cameras each session; by-id paths
Zamrznjeni posnetkiista slika za ducate vrstickamera preneha oddajati; zanka ponavlja zadnji posnetekscrub it in lerobot-dataset-viz
Izpuščeni posnetkištevilo vrstic pod fps krat sekundvrsta se prelije, izpušča namesto blokira'Encoder queue full' in the log; rows vs fps times duration
Zglob na svoji mejien zglob raven na min ali maxrazpon vodje presega razpon sledilca, ali slab srednji položajper-joint min/max in ds.meta.stats; lerobot-find-joint-limits beforehand
Slika in dejanje nista usklajenapolitika predvideva ali zaostajakamere z drugačnim fps kot zankakeep every camera at --dataset.fps
Mrtvi časdolgi nizi enakih vrstic dejanjoperater je pavziral z vključenim snemalnikomshare of consecutive identical action rows
Neuporaben niz opravilatask1, demo2, testhitro tipkanjemeta/tasks.parquet in v3.0 (it was meta/tasks.jsonl in v2.1); fix with lerobot-edit-dataset modify_tasks
Izpuščeni okvirji se skrivajo

Kodirnik vzdržuje omejeno čakalno vrsto za vsako kamero, privzeto 30 sličic. Ko ne more slediti, se sličice izpustijo namesto blokirajo: zajemanje se nadaljuje in nič se ne zruši. Prejmete Encoder queue full for {camera}, dropped N frame(s) in skupno število za vsako kamero ob koncu epizode. Prag za lerobot: približno 5 odstotkov manjkajočih pomeni preobremenjen sistem, 2 odstotka je pričakovana začetna obremenitev. Popravki po vrstnem redu: --display_data=false, znižajte --dataset.encoder_threads, vcodec=h264, izklopite pretakanje.

Ena opozorilo: tabela v vodniku za pretakanje-kodiranje navaja privzeto vrednost kot True, medtem ko dataclass na main bere streaming_encoding: bool = False. Dokumentacija in koda se ne ujemata, zato jo nastavite eksplicitno; lerobot zabeleži namig, ki to priporoča, kadar koli se zažene z izklopljeno zastavico.

Preverite nabor podatkov pred najemom GPE

Sprejemni test iz dokumentacije: primerjajte trajanje videa s trajanjem epizode, ki ga je poročal CLI, in potrdite, da število vrstic ustreza fps krat trajanje. Na epizodo, ne na skupno.

python
from lerobot.datasets import LeRobotDataset

ds = LeRobotDataset("your-user/so100_pick_cube_20260823_141530")
print("fps:", ds.fps, "frames:", ds.num_frames)

# In v3.0 the per-episode records live in meta/episodes/ as chunked parquet:
# lengths, tasks and offsets into the shared parquet and mp4 shards.
# They load through the datasets stack, so this is a datasets.Dataset --
# use .column_names and integer indexing, not pandas .columns / .head().
eps = ds.meta.episodes
print(eps.column_names)
print(eps[0])

# Global feature statistics, including per-joint min and max.
# A joint whose min equals its max never moved. A joint sitting at a
# hard limit for most of the run is the one that will stall the policy.
print(ds.meta.stats["observation.state"])
Epizoda, ki je daleč od fps krat trajanje, je kandidat za izbris, ne za usposabljanje.

Nato si jo oglejte. lerobot-dataset-viz predvaja epizodo sličico za sličico s sledmi sklepov poleg pogledov kamere, v Rerunu ali Foxglovu. Zamenjane kamere in zamrznjene sličice se prikažejo v desetih sekundah. Ljudje ta korak preskočijo.

bash
# Replay one episode with camera views and joint traces
lerobot-dataset-viz \
    --repo-id your-user/so100_pick_cube_20260823_141530 \
    --episode-index 0

# Foxglove instead, for a seekable, scrubbable timeline
lerobot-dataset-viz \
    --repo-id your-user/so100_pick_cube_20260823_141530 \
    --episode-index 0 \
    --display-mode foxglove

# Drop the episodes that did not survive review
lerobot-edit-dataset \
    --repo_id your-user/so100_pick_cube_20260823_141530 \
    --new_repo_id your-user/so100_pick_cube_clean \
    --operation.type delete_episodes \
    --operation.episode_indices "[3, 17, 41]"
lerobot-edit-dataset omogoča tudi razdelitev, združitev, odstranitev funkcije, spreminjanje nalog in ponovno izračun statistike. Brišite velikodušno: slaba epizoda stane eno epizodo; njeno ohranjanje stane vsak zagon, ki je bil na njej usposobljen.
Imenik naborov podatkov AY-Robots, ki prikazuje javne nabore podatkov LeRobot s številom epizod in formati.
Kako so primerljivi nabori podatkov velikosti in označeni.

v2.1 ali v3.0: odločite se pred snemanjem

v2.1 je zapisal eno parquet in eno MP4 datoteko na epizodo. v3.0 združuje veliko epizod v skupne delce (shards) in ponovno gradi meje iz metapodatkov, zato info.json vsebuje predloge poti, kot so data/chunk-{chunk_index:03d}/file-{file_index:03d}.parquet namesto številke epizode. Utemeljitev je manjše število večjih datotek: hitrejša inicializacija in manjši pritisk na datotečni sistem v obsegu.

LeRobot v2.1LeRobot v3.0
Postavitevena parquet in ena MP4 datoteka na epizodoveliko epizod na delček (shard)
Metapodatki epizodedatoteke JSONLrazdeljen parquet pod meta/episodes/, preko sklada podatkovnih zbirk
Pretakanje iz Hubaneda, preko StreamingLeRobotDataset
Zapisano z lerobot 0.6.1neda, kar dobite danes
Bere GR00T N1.7 in N1.5dane, mora biti pretvorjeno navzdol
Snemanje danes, usposabljanje GR00T jutri

lerobot 0.6.1 piše v3.0, vendar GR00T N1.7 in N1.5 bereta v2.0 ali v2.1 in se ob tem zrušita. Upoštevajte smer potovanja: src/lerobot/scripts/ vsebuje convert_dataset_v21_to_v30.py in ničesar v obratni smeri. To uredite pred sejo. Popravek: podatkovna zbirka zavrnjena kot v3.

bash
# Upgrade an older v2.1 dataset to v3.0
python -m lerobot.scripts.convert_dataset_v21_to_v30 \
    --repo-id=your-user/so100_pick_cube

# By default it pushes the converted dataset back to the hub and tags it v3.0.
# To convert a local copy and keep it off the hub:
python -m lerobot.scripts.convert_dataset_v21_to_v30 \
    --repo-id=your-user/so100_pick_cube \
    --root=/path/to/dataset/directory \
    --push-to-hub=false
Hitro za 50 epizod. Skaliranje je druga naloga: lerobotov vodnik za prenos, za surov DROID v v3.0, predvideva 7+ dni lokalne obdelave in približno 400 GB.

Dve poti do istega nabora podatkov

Vse zgoraj, na vašem lastnem stroju: vi ste odgovorni za USB naštevanje, gradnjo ffmpeg, nastavitev kodirnika in kalibracijske datoteke. Prava pot za razumevanje cevovoda, zagon nenavadne konfiguracije kamere ali ohranjanje podatkov lokalno.

Kaj stane ta pot

Čas: en večer na roko za sestavljanje, zapletena prva kalibracija in prva seja, ki jo zavržete, ker je bila kamera v napačni reži.

Posnemite nabore podatkov LeRobot, ne da bi sami ožičili cevovod

Namizni odjemalec AY-Robots beleži epizode, video tokove kamer in stanja sklepov v formatu LeRobot iz teleoperacijske seje, nato pa nabor podatkov preda trenerju.

Pridobite namiznega odjemalca

Od nabora podatkov do politike

Petdeset čistih epizod napaja vsak zagon tukaj. se uči od začetka samo na vaši nalogi, približno 80 M parametrov pri približno 20 ms na korak dejanja, edini od petih, ki je udoben s hitrim gibanjem. ima približno 450 M parametrov na 24 GB kartici. je temeljni model s približno 3 B parametri, kjer se dotika približno 40 M parametrov, potrebuje A100 ali H100 in želi ta nabor podatkov v2.1.

Nato, vodnik za vašo kombinacijo: , ali ; za prvi zagon, je krajši. Ko politika deluje na mizi, vendar se zruši v trenutku, ko premaknete mizo, je to problem s podatki: in se poglobita v raznolikost.

Koliko epizod resnično potrebujem za prvo delujočo politiko?

Trideset za SmolVLA, petdeset za ACT, Pi0.5, GR00T N1.5 in N1.7, kar so minimumi, ki jih uveljavljajo trenerji AY-Robots. Vodnik LeRobot neodvisno priporoča vsaj 50 za prvo nalogo, približno 10 na lokacijo predmeta. Delo na skaliranju podatkov je pokazalo, da se generalizacija skalira z okolji in predmeti, ne pa s številom demonstracij, zato je sto posnetkov enega prizorišča slabše kot petdeset posnetkov na petih različnih lokacijah.

Ali potrebujem vodilno roko ali lahko teleoperiram s tipkovnico?

lerobot dobavlja teleoperatorje za tipkovnico in igralno ploščo, zato vodilna roka ni strogo potrebna, vendar je močno priporočljiva: vodilni-sledilni sistem zagotavlja zvezne trajektorije sklepov v koordinatni konvenciji posnetega dejanja, medtem ko vnos s tipkovnico proizvaja stopničasto gibanje, ki se ga politika nauči kot sunek. Teleoperacija s tipkovnico potrebuje tudi globalni ključni zaledni sistem, zato ne deluje na Waylandu in brezglavih sistemih.

Ali lahko snemam na Raspberry Pi ali majhnem mini računalniku?

Da, z uglaševanjem. Vodnik za pretakanje in kodiranje ima razdelek za nizke vire, ki pokriva sodobne 4-jedrne stroje in Raspberry Pi 5, ter postavlja dve kameri pri 640x480 in 30 fps v stolpec 'zahteva nekaj uglaševanja'. Njegov nasvet: preprečite, da bi se kodirnik tekmoval z zanko zajemanja, preko --dataset.rgb_encoder.vcodec=h264 in --dataset.streaming_encoding=false. Ocenjuje, da dve kameri pri 640x480 proizvedeta približno 55 milijonov slikovnih pik na sekundo in dve pri 1920x1080 približno 373 milijonov.

Kako vem, da je nabor podatkov, ki sem ga pravkar posnel, dejansko zdrav?

Trije poceni preverjanja. Primerjajte trajanje videa vsake epizode s trajanjem, ki ga je poročal CLI, in potrdite, da število vrstic ustreza fps krat to trajanje, na epizodo in ne na skupno; to je sprejemni test, ki ga ponuja lerobotov vodnik za kodiranje. Preberite ds.meta.stats, kjer se sklep, katerega min je enak max, nikoli ni premaknil. Nato predvajajte dve ali tri epizode v lerobot-dataset-viz, edini način, da se prikažejo zamenjani pogledi in zamrznjeni okvirji. Pri izpuščenih sličicah vodnik potegne črto pri približno 5 odstotkih manjkajočih; približno 2 odstotka je normalna prehodna obremenitev, pogosto samo ob zagonu.

Moje usposabljanje je zavrnilo nabor podatkov kot v3.0. Kaj zdaj?

GR00T N1.7 in N1.5 bereta LeRobot v2.0 ali v2.1 in se zrušita na v3.0, kar je tisto, kar snema lerobot 0.6.1. Bodisi določite format pred usposabljanjem, ali uporabite politiko, ki bere v3.0 izvorno: Pi0.5, SmolVLA ali ACT. lerobot dobavlja pretvornik iz v2.1 v v3.0 in nič v obratni smeri.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started