
Snimite upotrebljiv LeRobot skup podataka sa SO-100: kalibracija, teleoperacija vođa-pratilac, stvarne lerobot-record zastavice i podrazumevane vrednosti, postavka kamere, broj epizoda i defekti koji kvare izvođenje.
SO-100 pratilac, SO-100 pratilac, vodeća ruka istog dizajna i dvije USB kamere mogu fino podesiti politiku za jedno popodne. Ista radna stanica može jednako lako proizvesti šezdeset epizoda koje izgledaju zdravo u pregledniku datoteka i protraćiti šestosatno GPU pokretanje. Razlika je rijetko u modelu; ona je u onome što se dogodilo između servoa i parquet datoteke.
Evo ručne rute, a zatim kraće. Svaka komanda je iz lerobot 0.6.1, objavljenog 3. avgusta 2026. i aktuelnog na PyPI-ju. Prešao je na konzolne ulazne tačke, 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 komande: lerobot-find-port, lerobot-setup-motors, lerobot-calibrate, lerobot-record. Prenesite iste --robot.id i --teleop.id iz kalibracije u sesiju snimanja.
- •Stvarne podrazumijevane vrijednosti: 30 fps, 60 s po epizodi, 60 s reset, 50 epizoda, oko 100 minuta stvarnog vremena.
- •Minimalan 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.
Šta sesija snimanja bilježi
LeRobot skup podataka LeRobot skup podataka nije fascikla video zapisa, već vremenski indeksirana tabela sa priloženim videom: svaki takt kontrolne petlje piše jedan red koji sadrži komandovanu akciju, stanje koje je pratilac dostigao, jedan kadar po kameri, vremensku oznaku i indekse. Politika vidi samo te kolone. Šema lerobot/svla_so100_pickplace, pročitana iz meta/info.json.
| Funkcija | dtype | Oblik | Šta je to |
|---|---|---|---|
| action | float32 | [6] | ciljevi zglobova sa vodeće ruke |
| observation.state | float32 | [6] | pozicije zglobova koje je pratilac dostigao |
| observation.images.top | video | [480, 640, 3] | kamera scene, MP4 (av1 ovde) |
| 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 vođenje evidencije |
Zglobovi su main_shoulder_pan, main_shoulder_lift, main_elbow_flex, main_wrist_flex, main_wrist_roll i main_gripper: šest stepeni slobode SO-100. Akcija i stanje dele oblik jer teleoperacija vođa-pratilac beleži cilj i poziciju dostignutu jedan korak kasnije. Taj jaz je informacija: gde se ruka borila protiv gravitacije ili zaglavljenog objekta. Ti stringovi pripadaju tom skupu podataka. Sesija snimljena sa 0.6.1 danas piše shoulder_pan.pos do gripper.pos, ID-jevi 1 do 6 na magistrali: istih šest zglobova, različiti ključevi, što je važno u trenutku kada konfiguracija adresira funkciju 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 proseku traju minut, radite nešto teže ili snimate prazan hod na oba kraja.

Šta vam je potrebno na radnom stolu
| Stavka | Detalji | Napomena |
|---|---|---|
| Ruka pratioca | SO-100, six Feetech STS3215 servos | oko 110 do 150 EUR u dijelovima |
| Ruka vođe | a second SO-100, uklonjeni zupčanici | zupčanici uklonjeni sa svih šest motora vođe: samo enkoder, manje trenja |
| Napajanje | usklađeno sa varijantom STS3215 od 7.4 V u specifikaciji materijala | pogledajte upozorenje ispod |
| Kamere | two USB cameras, 640x480 at 30 fps | jedan pogled na scenu, jedan na zglobu |
| Host | Python 3.12 or newer, ffmpeg | requires-python >= 3.12 |
| Hub nalog | Hugging Face write token | optional with --dataset.push_to_hub=false |
STS3215 dolazi u dvije verzije: SO-ARM100 README ocjenjuje verziju od 7.4 V sa obrtnim momentom zastoja od 16.5 kg.cm mjerenim na 6 V, a verziju od 12 V sa 30 kg.cm, te napominje da uzimanje motora od 12 V također znači kupovinu napajanja od 12 V 5 A+ umjesto onog od 5 V. Specifikacija materijala navodi servo motore od 7.4 V. Napajanje servo motora od 7.4 V sa 12 V ih uništava, stoga pročitajte oznaku motora prije nego što bilo šta povežete. Servo ne reaguje.
Ako ruka još nije sastavljena, to je zasebna večer: počnite sa SO-100 početak rada i kompletan vodič za postavljanje SO-100. Ako još ništa niste kupili, prvo pročitajte poređenje SO-100 i SO-101 prvo: SO-101 je novija revizija sa poboljšanim ožičenjem i bez koraka uklanjanja zupčanika, a radni tok 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 zavisnosti, ništa što komunicira sa robotom. Koch ruke trebaju dynamixel umjesto feetech. Ako vaša ljuska nikada nije čula za lerobot-record, to je razlog.
Portovi, ID-ovi motora i kalibracija
Tri jednokratna koraka stoje između dijelova i funkcionalne teleop petlje. omogućava da se politika obučena na vašoj ruci pokreće na tuđoj, mapirajući sirove brojeve enkodera na zajedničku konvenciju zglobova.
- 1Pronađite USB port svake ruke
Pokrenite ga sa obje ruke priključene, isključite onu koju identifikujete kada se to zatraži, i zabilježite koji port 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. - 2Napišite ID-ove motora i brzine prijenosa
ID-ovi se pišu jedan po jedan motor, a dokumentacija je stroga o tome kako: povežite tačno jedan motor na kontrolnu ploču, još ne serijski povezan sa bilo kojim drugim. Skripta prolazi kroz lanac unazad, prvo tražeći hvataljku i dajući joj ID 6, zatim zglob zgloba (wrist_roll) kao 5, pa sve do zgloba ramena (shoulder_pan) kao 1. Uradite to prije montaže.
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
Pomjerite svaki zglob u sredinu njegovog opsega, pritisnite Enter, a zatim svaki provucite kroz cijeli opseg.
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 bilo kakvog snimanja
Test prihvatanja za sve navedeno. Ako je teleoperacija trzava, zrcaljena, ili jedan zglob neće pratiti, snimanje to čuva 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, podrazumijevano ~/.cache/huggingface/lerobot/calibration, a ID je ključ za pretragu. Dajte lerobot-record kalibrirani ID i ponudit će Enter za ponovnu upotrebu profila ili c za ponovno kalibriranje. Dajte mu nepoznati ID i neće biti datoteke, pa će se prebaciti u kalibraciju usred sesije.
Kamere odlučuju šta 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 gdje se nalaze je važno: fiksna kamera scene koja pokriva radni prostor, i kamera na zglobu blizu krajnjeg efektora pokazujući šta će hvataljka dodirnuti. Kontrolna lista LeRobot zajedničkih skupova podataka traži po mogućnosti dva pogleda na 480x640 / 720p ili bolje, statičnu pozadinu, neutralno stabilno osvjetljenje, te da su vodeća ruka i ljudski udovi izvan kadra. Vodič za snimanje dodaje pravilo: trebali biste biti u mogućnosti sami obaviti zadatak samo gledajući slike kamere.
OpenCV indeksi dolaze iz redoslijeda nabrajanja, tako da ponovno pokretanje ili ponovno priključivanje može uzrokovati zamjenu mjesta indeksa 0 i 2 i postaviti pogled zgloba u gornji slot za cijelu sesiju. lerobot to sam kaže: njegova klasa kamere prihvata putanju uređaja kao i cijeli broj, i upozorava da su indeksi nestabilni pri ponovnom pokretanju ili promjenama portova, posebno na Linuxu. Usmjerite index_or_path na udev simboličku vezu pod /dev/v4l/by-id/, koja prati uređaj umjesto redoslijeda nabrajanja. Ovo je najčešći način na koji skup podataka postaje interno nedosljedan, i obuka to ne može popraviti. Kamera nije detektovana.
Naredba za snimanje 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=2Podrazumijevane vrijednosti ispod dolaze iz src/lerobot/configs/dataset.py na glavnoj grani, a ne iz tutorijala. Nekoliko njih nije ono što ljudi pretpostavljaju.
| Zastavica | Podrazumijevano | Šta radi |
|---|---|---|
| --dataset.repo_id | prazno | ime; vremenska oznaka se dodaje podrazumijevano |
| --dataset.single_task | prazno | string zadatka pohranjen sa svakom epizodom |
| --dataset.root | $HF_LEROBOT_HOME/repo_id | putanja za pisanje, podrazumijevano ~/.cache/huggingface/lerobot/ |
| --dataset.fps | 30 | brzina kontrolne petlje i brzina kadrova skupa podataka |
| --dataset.episode_time_s | 60 | sekundi prije nego što se epizoda automatski nastavi |
| --dataset.reset_time_s | 60 | reset scene; ruka se pomjera, ništa se ne pohranjuje |
| --dataset.num_episodes | 50 | epizode snimljene u ovoj sesiji |
| --dataset.push_to_hub | true | otpremanje na kraju sesije; false ostaje lokalno |
| --dataset.streaming_encoding | false in the dataclass, true in the docs table | kodiranje tokom snimanja; postavite eksplicitno |
| --dataset.encoder_queue_maxsize | 30 | baferovani kadrovi 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 tačno onako kako je upisan |
| --resume | false | dodajte postojećem skupu podataka; zahtijeva --dataset.root |
Vaš skup podataka se ne zove onako kako ste ukucali. 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. Sa --resume=true, --dataset.num_episodes broji dodatne epizode i --dataset.root postaje obavezan. Zatražite 50 na skupu podataka od 30 epizoda i dobićete 80.
Kontrola tastaturom tokom sesije
- Desna strelica ili
n: završite epizodu ili resetujte fazu ranije. Ovo je taster koji najviše koristite, jer čisto hvatanje rijetko zahtijeva 25 sekundi. - Lijeva strelica ili
r: odbacite epizodu i ponovite je. Loš snimak sada ne košta ništa, a kasnije mnogo. - Escape ili
q: zaustavite sesiju, završite kodiranje, otpremite. - Ovo radi na X11, Waylandu i SSH-u bez glave: bez globalnog pozadinskog sistema za tastere, lerobot-record čita iste tastere sa kontrolnog terminala. Slova preživljavaju spore SSH veze, gdje se sekvence strelica razdvajaju.
- Tastaturna teleoperacija je drugačija i zahtijeva globalni pozadinski sistem: X11, Windows ili macOS sa pristupačnošću.
Koliko epizoda, i kako izgleda dobra
Vodič za snimanje predlaže najmanje 50 epizoda za prvi zadatak, oko 10 po lokaciji objekta. stranice sa politikama navode minimum po modelu, ispod kojeg pokretanje nije vrijedno GPU vremena.
| Politika | Min. epizoda | Format skupa podataka | GPU nivo | Cijena 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 izvršili više od 15.000 simulacija u stvarnom svijetu. Generalizacija je pratila približno odnos zakona snage sa brojem okruženja i objekata, a nakon praga po okruženju ili objektu, dodatne demonstracije imale su minimalan učinak. Na jednoj radnoj stanici: pomjerite objekat, promijenite osvjetljenje, zamijenite kocku, umjesto da ponavljate jedan snimak.
- Kontinuirane putanje zglobova koje servo može reproducirati, za razliku od tastature ili gamepada
- Akcija i stanje dijele koordinatnu konvenciju, tako da politika uči cilj kojim može direktno upravljati
- Epizoda od 25 sekundi plus reset od 10 sekundi je otprilike 100 epizoda na sat
- Operater osjeća zastoj ili vezivanje pratioca, tako da se greške pojavljuju prije nego što se podaci obavežu
- Druga ruka otprilike udvostručuje cijenu dijelova
- Demonstracije nasljeđuju navike operatera; Mandlekar et al. su otkrili da kvalitet politike uvelike ovisi o kvalitetu demonstracija
- Vođa se uzorkuje brzinom petlje, tako da pauze postaju gotovo identični redovi koji uče politiku da čeka
- Ništa ne osigurava dosljednost između sesija: kamera pomjerena za 5 cm je skrivena promjena distribucije
Dobra epizoda je dosadna: ponovljiva početna poza, jedna stvar urađena, završena kada je objekat u kanti, niz zadataka od 25 do 50 znakova koje preporučuje kontrolna lista. Uzmi crvenu kocku i spusti je u kutiju je niz zadataka; task1 je anti-uzorak koji kontrolna lista eksplicitno navodi. Nejasne anotacije su na vrhu liste problema, a najvažnije su za modele vida, jezika i akcije, gdje je niz ulaz za model, a ne naziv datoteke.
Defekti koji tiho uništavaju skup podataka
Nijedan ne baca izuzetak. Svi preživljavaju do treninga, pojavljujući se kao kriva gubitka koja izgleda dobro i robot koji ne radi ništa. Provjerite dok je scena postavljena.
| Defekt | Kako izgleda | Odakle dolazi | Kako ga uhvatiti |
|---|---|---|---|
| Zamijenjeni prikazi kamere | slika zgloba ispod gornjeg ključa | ponovno dodjeljivanje indeksa nakon ponovnog priključivanja | lerobot-find-cameras each session; by-id paths |
| Zamrznuti okviri | ista slika za desetine redova | kamera prestaje isporučivati; petlja ponavlja posljednji kadar | scrub it in lerobot-dataset-viz |
| Ispušteni okviri | broj redova 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 lidera premašuje raspon pratioca, ili loša srednja poza | per-joint min/max in ds.meta.stats; lerobot-find-joint-limits beforehand |
| Slika i akcija van koraka | politika anticipira ili kasni | kamere na drugačijem fps-u od petlje | keep every camera at --dataset.fps |
| Mrtvo vrijeme | dugi nizovi identičnih redova akcija | operator pauzirao dok je snimač radio | udio uzastopnih identičnih redova akcija |
| Neupotrebljiv niz zadataka | task1, demo2, test | brzo kucanje | meta/tasks.parquet in v3.0 (it was meta/tasks.jsonl in v2.1); fix with lerobot-edit-dataset modify_tasks |
Enkoder drži ograničeni red po kameri, podrazumevano 30 frejmova. Kada ne može da prati, frejmovi se ispuštaju umesto da se blokiraju: snimanje se nastavlja i ništa se ne ruši. Dobijate Encoder queue full for {camera}, dropped N frame(s) i ukupan broj po kameri na kraju epizode. Lerobot prag: oko 5 procenata nedostajućih znači preopterećen sistem, 2 procenta je očekivano opterećenje pri pokretanju. Rešenja po redu: --display_data=false, niži --dataset.encoder_threads, vcodec=h264, isključivanje striminga.
Jedna napomena: tabela vodiča za striming-enkodiranje navodi podrazumevanu vrednost kao True, dok dataclass na glavnoj grani čita streaming_encoding: bool = False. Dokumentacija i kod se ne slažu, pa je postavite eksplicitno; lerobot beleži savet koji to preporučuje kad god se pokrene sa isključenom zastavicom.
Proverite skup podataka pre iznajmljivanja GPU-a
Test prihvatanja iz dokumentacije: uporedite trajanje videa sa trajanjem epizode koje je prijavio CLI, i potvrdite da je broj redova 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 ga pogledajte. lerobot-dataset-viz ponavlja epizodu kadar po kadar sa 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 šardove i obnavlja granice iz metapodataka, tako da info.json nosi šablone putanja kao što su 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 sistem u velikom obimu.
| LeRobot v2.1 | LeRobot v3.0 | |
|---|---|---|
| Raspored | jedan parquet i jedan MP4 po epizodi | mnogo epizoda po šardu |
| Metapodaci epizode | JSONL datoteke | chunked parquet pod meta/episodes/, putem datasets stacka |
| Striming sa Huba | ne | da, putem StreamingLeRobotDataset |
| Napisano od lerobot 0.6.1 | ne | da, ono što dobijate danas |
| Čitano od GR00T N1.7 i N1.5 | da | ne, mora se konvertovati naniže |
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. Primijetite smjer kretanja: 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: dataset 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šoj mašini: vi ste vlasnik USB enumeracije, ffmpeg builda, podešavanja enkodera i kalibracionih datoteka. Pravi put za razumevanje pipeline-a, pokretanje neobične konfiguracije kamere ili čuvanje podataka lokalno.
Vreme: jedno veče po ruci za sastavljanje, nezgodna prva kalibracija i prva sesija koju ćete odbaciti jer je kamera bila u pogrešnom slotu.
Desktop klijent snima skupove podataka u LeRobot formatu, epizode, streamove kamere i stanja zglobova, direktno iz teleoperacije sesije. Taj skup podataka se unosi u formu za obuku: odaberite model, skup podataka i hiperparametre, a backend iznajmljuje GPU veličine VRAM-a modela, pokreće trener i piše kontrolne tačke u skladište objekata.
- 1Instalirajte klijent
Na stranici za preuzimanje; podešavanje u dokumentaciji klijenta.
- 2Snimanje iz sesije teleoperacije
Upravljajte rukom; klijent piše epizode u LeRobot formatu. Uputstvo: snimite svoj prvi skup podataka.
- 3Ili donesite svoje podatke
Skup podataka takođe može doći iz Hugging Face repo ID-a ili vaše mašine: dokumentacija o skupovima podataka, javni direktorijum.
- 4Obučite i pokrenite nazad
Odaberite kombinaciju na matrici za obuku, zatim pokrenite politiku nazad na ruci. Otprilike 1 do 3 USD na nivou od 24 GB, 4 do 12 na A100 ili H100 nivou.
Ne sastavlja niti kalibriše vašu ruku, niti popravlja neispravnu epizodu, tako da korak inspekcije i dalje važi. Postoji i strogo ograničenje na drugom kraju: za brze zadatke, inferencija mora biti pored servoa. Kontrolna petlja radi 20 do 485 ms po koraku akcije, a povratna putovanja preko javnog interneta pretvaraju radnu politiku u oklevajuću.
Snimajte LeRobot skupove podataka bez samostalnog povezivanja pipeline-a
AY-Robots desktop klijent snima epizode, streamove kamere i stanja zglobova u LeRobot formatu iz sesije teleoperacije, 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 kretanjem. 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 zaista potrebno za prvu funkcionalnu politiku?▾
Trideset za SmolVLA, pedeset za ACT, Pi0.5, GR00T N1.5 i N1.7, 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 snimaka na pet različitih 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: leader-follower daje kontinuirane putanje zglobova u koordinatnoj konvenciji snimljene akcije, dok unos tipkovnicom proizvodi stepenasto kretanje koje politika uči kao trzaj. Teleoperacija tipkovnicom također zahtijeva globalni pozadinski sustav za tipke, pa ne radi na Waylandu i bez glave.
Mogu li snimati na Raspberry Pi-u ili malom mini PC-u?▾
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. Ocjenjuje dvije kamere na 640x480 kao oko 55 milijuna piksela u sekundi i dvije na 1920x1080 kao oko 373 milijuna.
Kako znam da je skup podataka koji sam upravo snimio zapravo ispravan?▾
Tri jeftine 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 min jednak njegovom max 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 dogovorite format prije obuke, ili koristite politiku koja izvorno čita v3.0: Pi0.5, SmolVLA ili ACT. lerobot isporučuje pretvarač v2.1 u v3.0 i ništa obrnuto.
Sources
- LeRobot: Učenje imitacijom na robotima iz stvarnog svijeta
- LeRobot: SO-100 montaža, podešavanje motora i kalibracija
- LeRobot: Kamere i lerobot-find-cameras
- LeRobot: Instalacija i matrica dodataka
- LeRobotDataset v3.0: raspored i migracija v2.1
- LeRobot: Kodiranje streaming videa i ispušteni okviri
- LeRobot: Portiranje velikih skupova podataka na v3.0 (DROID)
- lerobot v0.6.1 izdanje, 3. august 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 okvira
- 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