
Snimite upotrebljiv LeRobot skup podataka s SO-100: kalibracija, teleoperacija vođa-sljedbenik, stvarne lerobot-record zastavice i zadane vrijednosti, postavke kamere, broj epizoda i nedostaci koji kvare izvođenje.
Sljedbenik SO-100 sljedbenik, vodeća ruka istog dizajna i dvije USB kamere mogu fino podesiti politiku u jednom popodnevu. Ista radna stanica može jednako lako proizvesti šezdeset epizoda koje izgledaju zdravo u pregledniku datoteka i potrošiti šestosatno GPU izvođenje. Razlika je rijetko u modelu; ona je u onome što se dogodilo između serva i parquet datoteke.
Ovo je ručna ruta, zatim kraća. Svaka naredba je iz lerobot 0.6.1, objavljenog 3. kolovoza 2026. i aktualnog na PyPI-ju. Prešao je na ulazne točke konzole, tako da tutorijali koji pokreću python lerobot/scripts/control_robot.py opisuju datoteku koja više ne postoji.
Kratka verzija
- •lerobot 0.6.1 snima v3.0; GR00T N1.7 i N1.5 žele v2.1. Dogovorite format prije nego što pritisnete snimanje.
- •Četiri naredbe: lerobot-find-port, lerobot-setup-motors, lerobot-calibrate, lerobot-record. Prenesite iste --robot.id i --teleop.id iz kalibracije u sesiju snimanja.
- •Stvarne zadane vrijednosti: 30 fps, 60 s po epizodi, 60 s reset, 50 epizoda, oko 100 minuta stvarnog vremena.
- •Minimalni broj epizoda ovdje: 30 za SmolVLA, 50 za ostale.
- •Raznolikost pobjeđuje volumen. Skupovi podataka propadaju zbog četiri stvari: zamijenjeni indeksi kamere, ispušteni ili zamrznuti okviri, zglob parkiran na svojoj granici, nečitljiv niz zadataka.
Što sesija snimanja bilježi
LeRobot skup podataka nije mapa videozapisa već vremenski indeksirana tablica s priloženim videozapisom: svaki takt upravljačke petlje zapisuje jedan redak koji sadrži zadanu akciju, stanje koje je pratitelj dosegao, jedan kadar po kameri, vremensku oznaku i indekse. Politika vidi samo te stupce. Shema lerobot/svla_so100_pickplace, pročitana iz meta/info.json.
| Značajka | dtype | Oblik | Što je to |
|---|---|---|---|
| action | float32 | [6] | ciljevi zglobova s vodeće ruke |
| observation.state | float32 | [6] | položaji zglobova koje je pratitelj dosegao |
| observation.images.top | video | [480, 640, 3] | kamera scene, MP4 (ovdje av1) |
| observation.images.wrist | video | [480, 640, 3] | kamera zgloba, ista brzina |
| timestamp | float32 | [1] | sekunde od početka epizode |
| frame_index, episode_index, index, task_index | int64 | [1] | automatski popunjeno knjigovodstvo |
Zglobovi su main_shoulder_pan, main_shoulder_lift, main_elbow_flex, main_wrist_flex, main_wrist_roll i main_gripper: šest stupnjeva slobode SO-100. Akcija i stanje dijele oblik jer teleoperacija vođa-pratitelj bilježi cilj i položaj dosegnut jedan korak kasnije. Taj jaz je informacija: gdje se ruka borila protiv gravitacije ili zaglavljenog objekta. Ti su nizovi znakova iz tog skupa podataka. Sesija snimljena s 0.6.1 danas zapisuje shoulder_pan.pos do gripper.pos, ID-ove 1 do 6 na sabirnici: istih šest zglobova, različiti ključevi, što je važno u trenutku kada konfiguracija adresira značajku po imenu.
Taj skup podataka sadrži 50 epizoda i 19.631 kadar pri 30 fps: oko 393 kadra, ili 13 sekundi, po epizodi. Ako vaše u prosjeku traju minutu, radite nešto teže ili snimate prazan hod na oba kraja.

Što vam je potrebno na stolu
| Stavka | Detalj | Napomena |
|---|---|---|
| Ruka pratilac | SO-100, šest Feetech STS3215 servo motora | oko 110 do 150 EUR u dijelovima |
| Vodeća ruka | drugi SO-100, uklonjeni zupčanici | zupčanici uklonjeni sa svih šest vodećih motora: samo enkoder, manje trenja |
| Napajanje | usklađeno s varijantom STS3215 od 7.4 V u popisu materijala | pogledajte upozorenje ispod |
| Kamere | dvije USB kamere, 640x480 pri 30 fps | jedan prikaz scene, jedna na zglobu |
| Host | Python 3.12 or newer, ffmpeg | requires-python >= 3.12 |
| Hub račun | Hugging Face write token | opcionalno s --dataset.push_to_hub=false |
STS3215 dolazi u dvije verzije: SO-ARM100 README ocjenjuje verziju od 7.4 V na 16.5 kg.cm zakretnog momenta pri zaustavljanju mjerenog pri 6 V, a verziju od 12 V na 30 kg.cm, te napominje da uzimanje motora od 12 V također znači kupnju napajanja od 12 V 5 A+ umjesto onog od 5 V. Popis materijala navodi servo motore od 7.4 V. Napajanje servo motora od 7.4 V s 12 V ih uništava, stoga pročitajte naljepnicu motora prije nego što išta spojite. Servo ne reagira.
Ako ruka još nije sastavljena, to je zasebna večernja aktivnost: počnite s SO-100 početak rada i potpunim vodičem za postavljanje SO-100. Ako još niste ništa kupili, prvo pročitajte usporedbu SO-100 i SO-101: SO-101 je novija revizija s poboljšanim ožičenjem i bez koraka uklanjanja zupčanika, a tijek rada snimanja je identičan.
Instalirajte 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-infoDodaci najviše zbunjuju ljude. pip install lerobot instalira samo osnovne ML ovisnosti, ništa što komunicira s robotom. Koch ruke trebaju dynamixel umjesto feetech. Ako vaša ljuska nikada nije čula za lerobot-record, to je razlog.
Priključci, ID-ovi motora i kalibracija
Tri jednokratna koraka stoje između dijelova i funkcionalne teleop petlje. omogućuje da se politika trenirana na vašoj ruci pokreće na tuđoj, mapirajući sirove brojače enkodera na zajedničku konvenciju zglobova.
- 1Pronađite USB priključak svake ruke
Pokrenite ga s obje ruke priključene, isključite onu koju identificirate kada se to zatraži i zabilježite koji priključak nestaje. Na Linuxu ćete možda trebati
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-ove motora i brzine prijenosa
ID-ovi se pišu jedan po jedan motor, a dokumentacija je stroga o tome kako: spojite točno jedan motor na kontrolnu ploču, još ne serijski spojen na bilo koji drugi. Skripta prolazi lanac unatrag, prvo tražeći hvataljku i dajući joj ID 6, zatim zglob_zgloba kao 5, sve do ramena_pan kao 1. Učinite to prije sastavljanja.
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 3Kalibrirajte obje ruke
Pomaknite svaki zglob u sredinu njegovog raspona, pritisnite Enter, a zatim svaki provucite kroz cijeli raspon.
idpostaje naziv 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 prije snimanja bilo čega
Prihvatni test za sve navedeno. Ako je teleoperacija trzava, zrcaljena ili jedan zglob neće slijediti, snimanje to bilježi u 50 epizoda.
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 idu u $HF_LEROBOT_CALIBRATION, zadano ~/.cache/huggingface/lerobot/calibration, a ID je ključ za pretraživanje. Dajte lerobot-record kalibrirani ID i ponudit će Enter za ponovnu upotrebu profila ili c za ponovno izvođenje. Dajte mu nepoznati ID i neće biti datoteke, pa će se prebaciti u kalibraciju usred sesije.
Kamere odlučuju što politika vidi
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, i njihov položaj je važan: fiksna kamera scene koja pokriva radni prostor, i kamera na zglobu blizu krajnjeg efektora koja pokazuje što će hvataljka dodirnuti. Popis za provjeru LeRobot skupova podataka zajednice traži po mogućnosti dva pogleda na 480x640 / 720p ili bolje, statičnu pozadinu, neutralno stabilno osvjetljenje, te da ruka voditelja i ljudski udovi budu izvan kadra. Vodič za snimanje dodaje pravilo: trebali biste moći sami obaviti zadatak samo gledajući slike s kamere.
OpenCV indeksi dolaze iz redoslijeda nabrajanja, tako da ponovno pokretanje ili ponovno spajanje može uzrokovati zamjenu mjesta indeksa 0 i 2 i postaviti pogled zgloba u gornji utor za cijelu sesiju. lerobot to sam kaže: njegova klasa kamere prihvaća putanju uređaja kao i cijeli broj, i upozorava da su indeksi nestabilni pri ponovnim pokretanjima ili promjenama portova, posebno na Linuxu. Usmjerite index_or_path na udev simboličku vezu pod /dev/v4l/by-id/, koja prati uređaj, a ne redoslijed nabrajanja. Ovo je najčešći način na koji skup podataka postaje interno nedosljedan, a obuka to ne može popraviti. Kamera nije detektirana.
Naredba record i svaka 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=2Zadane vrijednosti u nastavku dolaze iz src/lerobot/configs/dataset.py na glavnoj grani, a ne iz tutoriala. Nekoliko njih nije ono što ljudi pretpostavljaju.
| Zastavica | Zadano | Što radi |
|---|---|---|
| --dataset.repo_id | empty | naziv; vremenska oznaka dodana po zadanoj vrijednosti |
| --dataset.single_task | empty | niz zadataka pohranjen sa svakom epizodom |
| --dataset.root | $HF_LEROBOT_HOME/repo_id | putanja za pisanje, zadano ~/.cache/huggingface/lerobot/ |
| --dataset.fps | 30 | brzina kontrolne petlje i brzina sličica skupa podataka |
| --dataset.episode_time_s | 60 | sekunde prije nego što epizoda automatski napreduje |
| --dataset.reset_time_s | 60 | resetiranje scene; ruka se pomiče, ništa nije pohranjeno |
| --dataset.num_episodes | 50 | epizode snimljene u ovoj sesiji |
| --dataset.push_to_hub | true | učitavanje na kraju sesije; false ostaje lokalno |
| --dataset.streaming_encoding | false in the dataclass, true in the docs table | kodiranje tijekom snimanja; postavite ga eksplicitno |
| --dataset.encoder_queue_maxsize | 30 | međuspremljene sličice po kameri, ~1 s pri 30 fps |
| --dataset.encoder_threads | null (codec decides) | niti po enkoderu; smanjite ako snimanje zastajkuje |
| --dataset.no_stamp | false | zadržite repo_id točno kako je upisan |
| --resume | false | dodajte postojećem skupu podataka; zahtijeva --dataset.root |
Vaš skup podataka ne zove se onako kako ste upisali. lerobot dodaje oznaku datuma i vremena, tako da so100_pick_cube postaje so100_pick_cube_20260823_141530. Koristite --dataset.no_stamp=true za stabilno ime. Nastavak broji dodatke, ne ukupne iznose. S --resume=true, --dataset.num_episodes broji dodatne epizode, a --dataset.root postaje obavezan. Zatražite 50 na skupu podataka od 30 epizoda i dobit ćete 80.
Upravljanje tipkovnicom tijekom sesije
- Desna strelica ili
n: završite epizodu ili ranije resetirajte fazu. Tipka koju najviše koristite, jer čisto hvatanje rijetko treba 25 sekundi. - Lijeva strelica ili
r: odbacite epizodu i ponovite je. Loš pokušaj sada ne košta ništa, a kasnije puno. - Escape ili
q: zaustavite sesiju, završite kodiranje, prenesite. - Ovo radi na X11, Waylandu i headless SSH-u: bez globalnog pozadinskog sustava za tipke, lerobot-record čita iste tipke s kontrolnog terminala. Slova preživljavaju spore SSH veze, gdje se sekvence strelica razdvajaju.
- Tipkovnička teleoperacija je drugačija i zahtijeva globalni pozadinski sustav: X11, Windows ili macOS s pristupačnošću.
Koliko epizoda, i kako izgleda dobra epizoda
Vodič za snimanje predlaže najmanje 50 epizoda za prvi zadatak, oko 10 po lokaciji objekta. stranice s pravilima navode minimum po modelu, ispod kojeg pokretanje nije vrijedno GPU vremena.
| Pravilo | Min. epizoda | Format skupa podataka | GPU razina | Trošak po pokretanju |
|---|---|---|---|---|
| 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 |
Bolje pitanje je koliko čega. Data Scaling Laws in Imitation Learning for Robotic Manipulation (Lin et al., 2024) prikupili su preko 40.000 demonstracija i izveli više od 15.000 stvarnih izvođenja. Generalizacija je slijedila približno odnos zakona snage s brojem okruženja i objekata, a nakon praga po okruženju ili objektu, dodatne demonstracije imale su minimalan učinak. Na jednoj klupi: pomaknite objekt, promijenite osvjetljenje, zamijenite kocku, umjesto da ponavljate jedan snimak.
- Kontinuirane putanje zglobova koje servo može reproducirati, za razliku od tipkovnice ili gamepada
- Akcija i stanje dijele koordinatnu konvenciju, tako da pravilo uči cilj kojim može izravno upravljati
- Epizoda od 25 sekundi plus reset od 10 sekundi je otprilike 100 epizoda na sat
- Operater osjeća zastoj ili vezanje sljedbenika, tako da se greške pojavljuju prije nego što se podaci pohrane
- Druga ruka otprilike udvostručuje trošak dijelova
- Demonstracije nasljeđuju navike operatera; Mandlekar et al. otkrili su da kvaliteta pravila uvelike ovisi o kvaliteti demonstracija
- Vođa se uzorkuje brzinom petlje, tako da pauze postaju gotovo identični redovi koji uče pravilo da čeka
- Ništa ne osigurava dosljednost između sesija: kamera pomaknuta za 5 cm je skrivena promjena distribucije
Dobra epizoda je dosadna: ponovljiva početna poza, jedna stvar obavljena, završena kada je objekt u kanti, niz zadataka od 25 do 50 znakova kako preporučuje kontrolna lista. Uzmi crvenu kocku i spusti je u kutiju je niz zadataka; task1 je anti-uzorak koji kontrolna lista izričito navodi. Nejasne bilješke predvode popis problema, a najvažnije su za , gdje je niz ulaz za model, a ne naziv datoteke.
Greške koje tiho uništavaju skup podataka
Nijedna ne baca iznimku. Sve prežive do treninga, pojavljujući se kao krivulja gubitka koja izgleda dobro i robot koji ne radi ništa. Provjerite dok je scena postavljena.
| Greška | Kako izgleda | Odakle dolazi | Kako je otkriti |
|---|---|---|---|
| Zamijenjeni prikazi kamere | slika zgloba pod gornjim ključem | ponovno dodjeljivanje indeksa nakon ponovnog spajanja | lerobot-find-cameras each session; by-id paths |
| Zamrznuti okviri | ista slika za desetke redaka | kamera prestaje isporučivati; petlja ponavlja zadnji kadar | scrub it in lerobot-dataset-viz |
| Ispušteni okviri | broj redaka ispod fps puta sekunde | red se prelijeva, ispušta umjesto da blokira | 'Encoder queue full' in the log; rows vs fps times duration |
| Zglob na svojoj granici | jedan zglob ravan na min ili max | raspon vođe premašuje raspon sljedbenika, ili loša srednja poza | per-joint min/max in ds.meta.stats; lerobot-find-joint-limits beforehand |
| Slika i akcija izvan koraka | politika predviđa ili kasni | kamere na drugačijem fps-u od petlje | keep every camera at --dataset.fps |
| Mrtvo vrijeme | dugi nizovi identičnih redaka akcija | operator pauzirao s uključenim snimačem | share of consecutive identical action rows |
| Neupotrebljiv niz zadataka | task1, demo2, test | brzo tipkanje | meta/tasks.parquet in v3.0 (it was meta/tasks.jsonl in v2.1); fix with lerobot-edit-dataset modify_tasks |
Koder drži ograničeni red čekanja po kameri, 30 okvira po zadanoj vrijednosti. Kada ne može pratiti, okviri se ispuštaju umjesto blokiraju: snimanje se nastavlja i ništa se ne ruši. Dobivate Encoder queue full for {camera}, dropped N frame(s) i ukupni broj po kameri na kraju epizode. Prag za lerobot: oko 5 posto nedostajućih znači preopterećen sustav, 2 posto je očekivano opterećenje pri pokretanju. Popravci po redu: --display_data=false, smanjiti --dataset.encoder_threads, vcodec=h264, isključiti streaming.
Jedna napomena: tablica vodiča za streaming-kodiranje navodi zadanu vrijednost kao True, dok dataclass na glavnoj grani čita streaming_encoding: bool = False. Dokumentacija i kod se ne slažu, stoga postavite eksplicitno; lerobot bilježi savjet preporučujući to kad god se pokrene s isključenom zastavicom.
Provjerite skup podataka prije najma GPU-a
Test prihvaćanja iz dokumentacije: usporedite trajanje videa s trajanjem epizode koje je prijavio CLI i potvrdite da je broj redaka jednak fps puta trajanje. Po epizodi, ne ukupno.
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"])Zatim je pogledajte. lerobot-dataset-viz reproducira epizodu kadar po kadar s tragovima zglobova pored prikaza kamere, u Rerunu ili Foxgloveu. Zamijenjene kamere i zamrznuti kadrovi pojavljuju se za deset sekundi. Ljudi preskaču ovaj korak.
# 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 ili v3.0: odlučite prije snimanja
v2.1 je pisao jedan parquet i jedan MP4 po epizodi. v3.0 spaja mnoge epizode u zajedničke dijelove (shards) i ponovno gradi granice iz metapodataka, tako da info.json sadrži predloške putanja poput data/chunk-{chunk_index:03d}/file-{file_index:03d}.parquet umjesto broja epizode. Opravdanje je manje, veće datoteke: brža inicijalizacija i manji pritisak na datotečni sustav u velikim razmjerima.
| LeRobot v2.1 | LeRobot v3.0 | |
|---|---|---|
| Raspored | jedan parquet i jedan MP4 po epizodi | mnogo epizoda po dijelu (shardu) |
| Metapodaci epizode | JSONL datoteke | chunked parquet pod meta/episodes/, putem skupa podataka |
| Striming s Huba | ne | da, putem StreamingLeRobotDataset |
| Napisano od lerobot 0.6.1 | ne | da, ono što dobivate danas |
| Čita GR00T N1.7 i N1.5 | da | ne, mora se pretvoriti u nižu verziju |
lerobot 0.6.1 piše v3.0, ali GR00T N1.7 i N1.5 čitaju v2.0 ili v2.1 i ruše se na njemu. Obratite pažnju na smjer razvoja: src/lerobot/scripts/ sadrži convert_dataset_v21_to_v30.py i ništa što ide u drugom smjeru. Riješite ovo prije sesije. Popravak: skup podataka odbijen kao 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=falseDva puta do istog skupa podataka
Sve navedeno, na vašem vlastitom stroju: vi ste odgovorni za USB enumeraciju, ffmpeg izgradnju, podešavanje enkodera i datoteke kalibracije. Pravi put za razumijevanje cjevovoda, pokretanje neobične konfiguracije kamere ili čuvanje podataka lokalno.
Vrijeme: jedna večer po ruci za sastavljanje, mukotrpna prva kalibracija i prva sesija koju ćete odbaciti jer je kamera bila u pogrešnom utoru.
Desktop klijent snima skupove podataka, epizode, video streamove kamera i stanja zglobova u LeRobot formatu, izravno iz teleoperacijske sesije. Taj skup podataka napaja obrazac za treniranje: odaberite model, skup podataka i hiperparametre, a pozadinski sustav unajmljuje GPU veličine VRAM-a modela, pokreće trener i piše kontrolne točke u objektno skladište.
- 1Instalirajte klijent
Na stranici za preuzimanje; postavljanje u dokumentaciji klijenta.
- 2Snimanje iz teleoperacijske sesije
Upravljajte rukom; klijent piše epizode u LeRobot formatu. Vodič: snimite svoj prvi skup podataka.
- 3Ili donesite vlastite podatke
Skup podataka također može doći iz Hugging Face repo ID-a ili vašeg vlastitog stroja: dokumentacija o skupovima podataka, javni direktorij.
- 4Trenirajte i pokrenite natrag
Odaberite kombinaciju na matrici za treniranje, zatim pokrenite politiku natrag na ruci. Otprilike 1 do 3 USD na razini od 24 GB, 4 do 12 na razini A100 ili H100.
Ne sastavlja niti kalibrira vašu ruku, niti popravlja neispravnu epizodu, tako da korak inspekcije i dalje vrijedi. Postoji i strogo ograničenje na drugom kraju: za brze zadatke, inferencija mora biti blizu serva. Kontrolna petlja radi 20 do 485 ms po koraku akcije, a dodatna javna internetska povratna putovanja pretvaraju funkcionalnu politiku u oklijevajuću.
Snimajte LeRobot skupove podataka bez samostalnog ožičenja cjevovoda
AY-Robots desktop klijent snima epizode, video streamove kamera i stanja zglobova u LeRobot formatu iz teleoperacijske sesije, a zatim predaje skup podataka treneru.
Preuzmite desktop klijentOd skupa podataka do politike
Pedeset čistih epizoda napaja svako pokretanje ovdje. trenira od nule samo na vašem zadatku, oko 80 M parametara pri otprilike 20 ms po koraku akcije, jedini od pet koji je udoban s brzim pokretima. ima oko 450 M parametara na 24 GB kartici. je temeljni model s otprilike 3 B parametara gdje dotiče oko 40 M parametara, treba A100 ili H100, i želi taj v2.1 skup podataka.
Zatim, vodič za vašu kombinaciju: , ili ; za prvo pokretanje, je kraći. Kada politika radi na stolu, ali se sruši u trenutku kada pomaknete stol, to je problem s podacima: i idu dublje u raznolikost.
Koliko mi je epizoda stvarno potrebno za prvu funkcionalnu politiku?▾
Trideset za SmolVLA, pedeset za ACT, Pi0.5, GR00T N1.5 i N1.7, to su minimumi koje nameću AY-Robots treneri. LeRobot vodič neovisno preporučuje najmanje 50 za prvi zadatak, oko 10 po lokaciji objekta. Rad na skaliranju podataka pokazao je da se generalizacija skalira s okruženjima i objektima, a ne s brojem demonstracija, tako da je sto snimaka jedne scene gore od pedeset raspoređenih na pet mjesta.
Trebam li vodeću ruku ili mogu teleoperirati tipkovnicom?▾
lerobot isporučuje teleoperatore za tipkovnicu i gamepad, tako da vodeća ruka nije strogo potrebna, ali je izrazito poželjna: sustav vođa-sljedbenik daje kontinuirane putanje zglobova u koordinatnoj konvenciji snimljene akcije, dok unos tipkovnicom proizvodi stupnjevito kretanje koje politika uči kao trzaj. Teleoperacija tipkovnicom također zahtijeva globalni pozadinski sustav za tipke, pa ne radi na Waylandu i u bezglavom načinu rada.
Mogu li snimati na Raspberry Pi-u ili malom mini računalu?▾
Da, uz podešavanje. Vodič za streaming-kodiranje ima kategoriju za niske resurse koja pokriva moderne 4-jezgrene strojeve i Raspberry Pi 5, te stavlja dvije kamere na 640x480 i 30 fps u svoju kolonu 'zahtijeva-neko-podešavanje'. Njegov savjet: zaustavite enkoder da se natječe s petljom snimanja, putem --dataset.rgb_encoder.vcodec=h264 i --dataset.streaming_encoding=false. Procjenjuje dvije kamere na 640x480 kao oko 55 milijuna piksela u sekundi, a dvije na 1920x1080 kao oko 373 milijuna.
Kako znam da je skup podataka koji sam upravo snimio zapravo ispravan?▾
Tri jednostavne provjere. Usporedite trajanje videa svake epizode s trajanjem koje je prijavio CLI i potvrdite da je broj redaka jednak fps puta to trajanje, po epizodi, a ne ukupno; to je test prihvatljivosti koji daje lerobotov vodič za kodiranje. Pročitajte ds.meta.stats, gdje se zglob čiji je minimum jednak maksimumu nikada nije pomaknuo. Zatim ponovno reproducirajte dvije ili tri epizode u lerobot-dataset-viz, jedini način na koji se prikazuju zamijenjeni prikazi i zamrznuti okviri. Kod ispuštenih okvira, vodič povlači crtu na otprilike 5 posto nedostajućih; oko 2 posto je normalno prolazno opterećenje, često samo pri pokretanju.
Moj zadatak obuke odbio je skup podataka kao v3.0. Što sada?▾
GR00T N1.7 i N1.5 čitaju LeRobot v2.0 ili v2.1 i ruše se na v3.0, što je ono što lerobot 0.6.1 bilježi. Ili riješite format prije obuke, ili koristite politiku koja izvorno čita v3.0: Pi0.5, SmolVLA ili ACT. lerobot isporučuje pretvarač iz v2.1 u v3.0 i ništa obrnuto.
Sources
- LeRobot: Učenje imitacijom na robotima iz stvarnog svijeta
- LeRobot: SO-100 sastavljanje, postavljanje motora i kalibracija
- LeRobot: Kamere i lerobot-find-cameras
- LeRobot: Instalacija i matrica dodataka
- LeRobotDataset v3.0: raspored i migracija s v2.1
- LeRobot: Kodiranje streaming videa i ispušteni okviri
- LeRobot: Prijenos velikih skupova podataka na v3.0 (DROID)
- lerobot v0.6.1 izdanje, 3. kolovoza 2026.
- DatasetRecordConfig: stvarne zadane postavke snimanja
- lerobot_record.py: petlja snimanja i rukovanje nastavkom
- TheRobotStudio/SO-ARM100: repozitorij za izradu i popis materijala
- Hugging Face: Kontrolna lista LeRobot skupova podataka zajednice
- lerobot/svla_so100_pickplace: 50 epizoda, 19,631 kadar
- Lin et al. (2024), Zakoni skaliranja podataka u učenju imitacijom
- Mandlekar et al. (2021), Što je važno u učenju iz offline ljudskih demonstracija
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