
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čilnost | dtype | Oblika | Kaj je to |
|---|---|---|---|
| action | float32 | [6] | cilji sklepov iz vodilne roke |
| observation.state | float32 | [6] | položaji sklepov, ki jih je dosegel sledilec |
| observation.images.top | video | [480, 640, 3] | scenska kamera, MP4 (tukaj av1) |
| observation.images.wrist | video | [480, 640, 3] | zapestna kamera, enaka hitrost |
| timestamp | float32 | [1] | sekunde od začetka epizode |
| frame_index, episode_index, index, task_index | int64 | [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.
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.

Kaj potrebujete na delovni mizi
| Postavka | Podrobnosti | Opomba |
|---|---|---|
| Sledilna roka | SO-100, šest Feetech STS3215 servomotorjev | približno 110 do 150 EUR za dele |
| Vodila roka | druga SO-100, odstranjeni zobniki | zobniki odstranjeni iz vseh šestih motorjev vodilne roke: samo dajalnik, manj trenja |
| Napajanje | ujema se z različico STS3215 7.4 V v seznamu materiala | glejte opozorilo spodaj |
| Kamere | dve USB kameri, 640x480 pri 30 fps | en pogled na sceno, ena na zapestju |
| Gostitelj | Python 3.12 ali novejši, ffmpeg | requires-python >= 3.12 |
| Hub račun | Hugging Face write token | neobvezno z --dataset.push_to_hub=false |
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
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-infoDodatki 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.
- 1Poišč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.bashlerobot-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. - 2Zapiš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.
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 3Kalibrirajte obe roki
Premaknite vsak sklep v sredino njegovega območja, pritisnite Enter, nato pa vsakega premaknite skozi celotno območje.
idpostane ime datoteke profila.bashlerobot-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 - 4Teleoperirajte 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.
bashlerobot-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
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
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.0Dva 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.
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
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=2Spodnje privzete vrednosti izhajajo iz src/lerobot/configs/dataset.py na glavni veji, ne iz vadnice. Nekatere niso takšne, kot si ljudje predstavljajo.
| Zastavica | Privzeto | Kaj počne |
|---|---|---|
| --dataset.repo_id | prazno | ime; časovni žig dodan privzeto |
| --dataset.single_task | prazno | niz naloge, shranjen z vsako epizodo |
| --dataset.root | $HF_LEROBOT_HOME/repo_id | pot za pisanje, privzeto ~/.cache/huggingface/lerobot/ |
| --dataset.fps | 30 | hitrost krmilne zanke in hitrost sličic nabora podatkov |
| --dataset.episode_time_s | 60 | sekund, preden se epizoda samodejno nadaljuje |
| --dataset.reset_time_s | 60 | ponastavitev scene; roka se premakne, nič ni shranjeno |
| --dataset.num_episodes | 50 | epizode, posnete v tej seji |
| --dataset.push_to_hub | true | naloži ob koncu seje; false ostane lokalno |
| --dataset.streaming_encoding | false v podatkovnem razredu, true v tabeli dokumentacije | kodiraj med zajemanjem; nastavi eksplicitno |
| --dataset.encoder_queue_maxsize | 30 | medpomnilniške sličice na kamero, ~1 s pri 30 fps |
| --dataset.encoder_threads | null (kodek odloča) | niti na kodirnik; znižaj, če zajemanje zatika |
| --dataset.no_stamp | false | ohrani repo_id natančno tako, kot je vneseno |
| --resume | false | dodaj k obstoječemu naboru podatkov; potrebuje --dataset.root |
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.
| Politika | Min. epizod | Format podatkovnega nabora | Razred GPU-ja | Cena na izvajanje |
|---|---|---|---|---|
| SmolVLA | 30 | LeRobot v3.0 | RTX 4090 or any 24 GB card | about 1 to 3 USD |
| ACT | 50 | LeRobot v3.0 | RTX 4090 or any 24 GB card | about 1 to 3 USD |
| GR00T N1.7 | 50 | LeRobot v2.0 or v2.1 | A100 80 GB or H100 80 GB | about 4 to 12 USD |
| GR00T N1.5 | 50 | LeRobot v2.0 or v2.1 | A100 80 GB or H100 80 GB | about 4 to 12 USD |
| Pi0.5 | 50 | LeRobot v3.0 | A100 80 GB or H100 80 GB | about 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.
- 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
- 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.
| Napaka | Kako izgleda | Od kod prihaja | Kako jo odkriti |
|---|---|---|---|
| Zamenjani pogledi kamere | slika zapestja pod zgornjim ključem | ponovna dodelitev indeksa po ponovnem priklopu | lerobot-find-cameras each session; by-id paths |
| Zamrznjeni posnetki | ista slika za ducate vrstic | kamera preneha oddajati; zanka ponavlja zadnji posnetek | scrub it in lerobot-dataset-viz |
| Izpuščeni posnetki | število vrstic pod fps krat sekund | vrsta se prelije, izpušča namesto blokira | 'Encoder queue full' in the log; rows vs fps times duration |
| Zglob na svoji meji | en zglob raven na min ali max | razpon vodje presega razpon sledilca, ali slab srednji položaj | per-joint min/max in ds.meta.stats; lerobot-find-joint-limits beforehand |
| Slika in dejanje nista usklajena | politika predvideva ali zaostaja | kamere z drugačnim fps kot zanka | keep every camera at --dataset.fps |
| Mrtvi čas | dolgi nizi enakih vrstic dejanj | operater je pavziral z vključenim snemalnikom | share of consecutive identical action rows |
| Neuporaben niz opravila | task1, demo2, test | hitro tipkanje | meta/tasks.parquet in v3.0 (it was meta/tasks.jsonl in v2.1); fix with lerobot-edit-dataset modify_tasks |
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.
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"])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.
# 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]"
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.1 | LeRobot v3.0 | |
|---|---|---|
| Postavitev | ena parquet in ena MP4 datoteka na epizodo | veliko epizod na delček (shard) |
| Metapodatki epizode | datoteke JSONL | razdeljen parquet pod meta/episodes/, preko sklada podatkovnih zbirk |
| Pretakanje iz Huba | ne | da, preko StreamingLeRobotDataset |
| Zapisano z lerobot 0.6.1 | ne | da, kar dobite danes |
| Bere GR00T N1.7 in N1.5 | da | ne, mora biti pretvorjeno navzdol |
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.
# 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=falseDve 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.
Č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.
Namizni odjemalec beleži nabore podatkov v formatu LeRobot, epizode, video tokove kamer in stanja sklepov, neposredno iz teleoperacijske seje. Ta nabor podatkov napaja obrazec za usposabljanje: izberite model, nabor podatkov in hiperparametre, zaledje pa najame GPU, dimenzioniran glede na VRAM modela, zažene trenerja in zapiše kontrolne točke v objektno shrambo.
- 1Namestite odjemalca
Na strani za prenos; namestitev v dokumentaciji odjemalca.
- 2Posnemite iz teleoperacijske seje
Upravljajte roko; odjemalec zapisuje epizode v formatu LeRobot. Vodnik: posnemite svoj prvi nabor podatkov.
- 3Ali prinesite svoje podatke
Nabor podatkov lahko prihaja tudi iz repozitorija Hugging Face ali vašega lastnega stroja: dokumentacija naborov podatkov, javni imenik.
- 4Usposobite in ponovno zaženite
Izberite kombinacijo na matriki usposabljanja, nato pa politiko ponovno zaženite na roki. Približno 1 do 3 USD na ravni 24 GB, 4 do 12 na ravni A100 ali H100.
Ne sestavlja ali kalibrira vaše roke in ne popravlja okvarjene epizode, zato korak pregleda še vedno velja. Obstaja tudi stroga omejitev na drugem koncu: za hitre naloge mora sklepanje potekati ob servo motorjih. Krmilna zanka deluje 20 do 485 ms na korak dejanja, javni internetni povratni časi pa delujočo politiko spremenijo v neodločno.
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 odjemalcaOd 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.
Sources
- LeRobot: Učenje z imitacijo na robotih v realnem svetu
- LeRobot: Sestavljanje SO-100, nastavitev motorja in kalibracija
- LeRobot: Kamere in lerobot-find-cameras
- LeRobot: Namestitev in matrika dodatkov
- LeRobotDataset v3.0: postavitev in migracija iz v2.1
- LeRobot: Kodiranje pretočnega videa in izpuščeni sličice
- LeRobot: Prenos velikih naborov podatkov na v3.0 (DROID)
- lerobot v0.6.1 izdaja, 3 August 2026
- DatasetRecordConfig: privzete nastavitve snemanja v realnem času
- lerobot_record.py: zanka snemanja in obravnava nadaljevanja
- TheRobotStudio/SO-ARM100: repozitorij za izdelavo in seznam materialov
- Hugging Face: Kontrolni seznam naborov podatkov skupnosti LeRobot
- lerobot/svla_so100_pickplace: 50 epizod, 19.631 sličic
- Lin et al. (2024), Zakoni skaliranja podatkov pri učenju z imitacijo
- Mandlekar et al. (2021), Kaj je pomembno pri učenju iz demonstracij človeka brez povezave
Sources
- LeRobot: Imitation Learning on Real-World Robots
- LeRobot: SO-100 assembly, motor setup and calibration
- LeRobot: Cameras and lerobot-find-cameras
- LeRobot: Installation and the extras matrix
- LeRobotDataset v3.0: layout and v2.1 migration
- LeRobot: Streaming video encoding and dropped frames
- LeRobot: Porting large datasets to v3.0 (DROID)
- lerobot v0.6.1 release, 3 August 2026
- DatasetRecordConfig: the real recording defaults
- lerobot_record.py: record loop and resume handling
- TheRobotStudio/SO-ARM100: build repo and bill of materials
- Hugging Face: LeRobot Community Datasets checklist
- lerobot/svla_so100_pickplace: 50 episodes, 19,631 frames
- Lin et al. (2024), Data Scaling Laws in Imitation Learning
- Mandlekar et al. (2021), What Matters in Learning from Offline Human Demonstrations
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started