
Snimite upotrebljiv LeRobot skup podataka sa SO-100: kalibracija, teleoperacija vođa-pratilac, stvarne lerobot-record zastavice i podrazumevane vrednosti, podešavanje kamere, broj epizoda i defekti koji kvare pokretanje.
Prateći SO-100 pratilac, vodeća ruka istog dizajna i dve USB kamere mogu fino podesiti politiku za jedno popodne. Ista radna stanica može jednako lako proizvesti šezdeset epizoda koje izgledaju zdravo u pregledaču datoteka i potrošiti šestosatno GPU pokretanje. Razlika je retko u modelu; ona je u onome što se dogodilo između servoa i parquet datoteke.
Evo ručne rute, pa onda kraće. Svaka komanda je iz lerobot 0.6.1, objavljenog 3. avgusta 2026. i aktuelnog na PyPI-ju. Premešten je na ulazne tač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 pre 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 podrazumevane vrednosti: 30 fps, 60 s po epizodi, 60 s reset, 50 epizoda, oko 100 minuta realnog vremena.
- •Minimalan broj epizoda ovde: 30 za SmolVLA, 50 za ostale.
- •Raznolikost pobeđuje kvantitet. Skupovi podataka propadaju zbog četiri stvari: zamenjeni indeksi kamera, ispušteni ili zamrznuti frejmovi, zglob parkiran na svojoj granici, nečitljiv string zadatka.
Šta sesija snimanja beleži
LeRobot skup podataka nije fascikla video zapisa, već tabela indeksirana vremenom sa priloženim videom: svaki takt kontrolne petlje upisuje 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.
| Karakteristika | dtype | Oblik | Šta predstavlja |
|---|---|---|---|
| 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 (ovde 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 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. 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 upisuje shoulder_pan.pos do gripper.pos, ID-jeve 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 mrtvo vreme na oba kraja.

Šta vam je potrebno na radnom stolu
| Stavka | Detalj | Napomena |
|---|---|---|
| Ruka pratioca | SO-100, six Feetech STS3215 servos | oko 110 do 150 EUR u delovima |
| Ruka vođe | druga SO-100, zupčanici uklonjeni | 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 | dve USB kamere, 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 dve verzije: SO-ARM100 README ocenjuje verziju od 7.4 V na 16.5 kg.cm obrtnog momenta pri zaustavljanju merenog na 6 V, a verziju od 12 V na 30 kg.cm, i napominje da uzimanje motora od 12 V takođe znači kupovinu napajanja od 12 V 5 A+ umesto 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, zato pročitajte etiketu motora pre nego što bilo šta povežete. Servo ne reaguje.
Ako ruka još nije sastavljena, to je zasebno veče: počnite sa SO-100 početak rada i kompletnim SO-100 vodičem za podešavanje. Ako još niste ništa kupili, 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 tok 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 zavisnosti, ništa što komunicira sa robotom. Koch ruke trebaju dynamixel umesto 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 delova i funkcionalne teleop petlje. omogućava da se politika obučena na vašoj ruci pokreće na tuđoj, mapirajući sirove vrednosti enkodera na zajedničku konvenciju zglobova.
- 1Pronađite USB port svake ruke
Pokrenite ga sa obe ruke priključene, isključite onu koju identifikujete kada se to zatraži i zabeležite koji port nestaje. Na Linuxu će vam 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 prenosa
ID-ovi se pišu jedan po jedan motor, a dokumentacija je stroga po pitanju načina: povežite tačno jedan motor na kontrolnu ploču, još uvek ne serijski povezan sa bilo kojim drugim. Skripta prolazi 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 pre sklapanja.
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 3Kalibrirajte obe ruke
Pomerite svaki zglob u sredinu njegovog opsega, pritisnite Enter, a zatim svaki provucite kroz ceo 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 - 4Teleoperišite pre snimanja bilo čega
Test prihvatanja za sve navedeno. Ako je teleoperacija trzava, ogledalna, ili jedan zglob neće pratiti, snimanje to belež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, podrazumevano ~/.cache/huggingface/lerobot/calibration, a ID je ključ za pretragu. Dajte lerobot-record kalibrisani ID i on će ponuditi Enter za ponovnu upotrebu profila ili c za ponovno kalibrisanje. 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 njihov položaj je važan: fiksna kamera scene koja pokriva radni prostor, i kamera na zglobu blizu krajnjeg efektora koja pokazuje šta hvataljka namerava da dodirne. LeRobot kontrolna lista za skupove podataka zajednice traži po mogućnosti dva pogleda na 480x640 / 720p ili bolje, statičnu pozadinu, neutralno stabilno osvetljenje, i da ruka vođe i ljudski udovi budu van kadra. Vodič za snimanje dodaje pravilo: trebalo bi da ste u mogućnosti da sami obavite zadatak samo gledajući slike sa kamere.
OpenCV indeksi potiču iz redosleda nabrajanja, tako da ponovno pokretanje ili ponovno priključivanje može dovesti do zamene mesta indeksa 0 i 2 i postaviti pogled sa zgloba u gornji slot za celu sesiju. lerobot to sam kaže: njegova klasa kamere prihvata putanju uređaja kao i ceo broj, i upozorava da su indeksi nestabilni pri ponovnim pokretanjima ili promenama portova, posebno na Linuxu. Usmjerite index_or_path na udev simboličku vezu pod /dev/v4l/by-id/, koja prati uređaj, a ne redosled nabrajanja. Ovo je najčešći način da skup podataka postane interno nedosledan, i obuka to ne može popraviti. Kamera nije detektovana.
Komanda 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=2Podrazumevane vrednosti ispod potiču iz src/lerobot/configs/dataset.py na glavnoj grani, a ne iz tutorijala. Nekoliko njih nije ono što ljudi pretpostavljaju.
| Zastavica | Podrazumevano | Šta radi |
|---|---|---|
| --dataset.repo_id | empty | ime; vremenska oznaka se podrazumevano dodaje |
| --dataset.single_task | empty | string zadatka sačuvan sa svakom epizodom |
| --dataset.root | $HF_LEROBOT_HOME/repo_id | putanja za pisanje, podrazumevano ~/.cache/huggingface/lerobot/ |
| --dataset.fps | 30 | brzina kontrolne petlje i brzina kadrova skupa podataka |
| --dataset.episode_time_s | 60 | sekundi pre nego što se epizoda automatski nastavi |
| --dataset.reset_time_s | 60 | reset scene; ruka se pomera, ništa se ne čuva |
| --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 secka |
| --dataset.no_stamp | false | zadržite repo_id tačno onako kako je unet |
| --resume | false | dodajte postojećem skupu podataka; zahteva --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 vrednosti. 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. Taster koji najviše koristite, jer čisto hvatanje retko zahteva 25 sekundi. - Leva 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, Wayland i headless SSH: bez globalnog pozadinskog sistema za tastere, lerobot-record čita iste tastere sa kontrolnog terminala. Slova preživljavaju spore SSH veze, gde se sekvence strelica razdvajaju.
- Tastaturna teleoperacija je drugačija i zahteva 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 vredno GPU vremena.
| Politika | Min. epizoda | Format skupa podataka | GPU nivo | Cena 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) su prikupili preko 40.000 demonstracija i izvršili više od 15.000 simulacija u stvarnom svetu. Generalizacija je pratila približno odnos zakona snage sa brojem okruženja i objekata, a nakon praga po okruženju ili objektu, dodatne demonstracije su imale minimalan efekat. Na jednoj klupi: pomerite objekat, promenite osvetljenje, zamenite kocku, umesto da ponavljate jedan snimak.
- Kontinuirane putanje zglobova koje servo može reprodukovati, za razliku od tastature ili gamepada
- Akcija i stanje dele koordinatnu konvenciju, tako da politika uči cilj kojim može direktno da komanduje
- Epizoda od 25 sekundi plus reset od 10 sekundi je otprilike 100 epizoda na sat
- Operater oseća zastoj ili zaglavljivanje pratioca, tako da se greške pojavljuju pre nego što se podaci obavežu
- Druga ruka otprilike udvostručuje troškove delova
- Demonstracije nasleđuju navike operatera; Mandlekar et al. su otkrili da kvalitet politike u velikoj meri zavisi od kvaliteta demonstracija
- Vođa se uzorkuje brzinom petlje, tako da pauze postaju skoro identični redovi koji uče politiku da čeka
- Ništa ne obezbeđuje doslednost između sesija: kamera pomerena za 5 cm je skrivena promena distribucije
Dobra epizoda je dosadna: ponovljiva početna pozicija, jedna stvar urađena, završena kada je objekat u kanti, string zadatka od 25 do 50 karaktera koje preporučuje kontrolna lista. Uzmi crvenu kocku i spusti je u kutiju je string zadatka; task1 je anti-obrazac koji kontrolna lista eksplicitno navodi. Nejasne anotacije su na vrhu liste problema, i one su najvažnije za , gde je string ulaz za model, a ne naziv datoteke.
Defekti koji tiho uništavaju skup podataka
Nijedan ne izaziva izuzetak. Svi preživljavaju do treninga, pojavljujući se kao kriva gubitka koja izgleda dobro i robot koji ne radi ništa. Proverite dok je scena postavljena.
| Defekt | Kako izgleda | Odakle dolazi | Kako ga uhvatiti |
|---|---|---|---|
| Zamenjeni prikazi kamere | slika zgloba pod gornjim ključem | ponovno dodeljivanje indeksa nakon ponovnog priključivanja | lerobot-find-cameras each session; by-id paths |
| Zamrznuti frejmovi | ista slika za desetine redova | kamera prestaje da isporučuje; petlja ponavlja poslednji frejm | scrub it in lerobot-dataset-viz |
| Ispušteni frejmovi | broj redova ispod fps puta sekundi | red se preliva, ispušta umesto da blokira | 'Encoder queue full' in the log; rows vs fps times duration |
| Zglob na svojoj granici | jedan zglob ravan na min ili max | opseg lidera premašuje opseg 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 vreme | dugi nizovi identičnih redova akcija | operator pauzirao dok je snimač radio | share of consecutive identical action rows |
| Neupotrebljiv string zadatka | 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 isprati, 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, smanjiti --dataset.encoder_threads, vcodec=h264, isključiti striming.
Jedna napomena: tabela u vodiču 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čenim flagom.
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 je pogledajte. lerobot-dataset-viz ponavlja epizodu kadar po kadar sa tragovima zglobova pored prikaza kamere, u Rerunu ili Foxglove-u. Zamenjene kamere i zamrznuti kadrovi se pojavljuju 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 pre snimanja
v2.1 je pisao jedan parquet i jedan MP4 po epizodi. v3.0 spaja mnoge epizode u deljene šardove i ponovo gradi granice iz metapodataka, tako da info.json nosi šablone putanja kao što su data/chunk-{chunk_index:03d}/file-{file_index:03d}.parquet umesto broja epizode. Opravdanje je manje, veće datoteke: brža inicijalizacija i manji pritisak na sistem datoteka 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/, preko datasets steka |
| Strimovanje sa Huba | ne | da, preko StreamingLeRobotDataset |
| Napisano od strane lerobot 0.6.1 | ne | da, ono što dobijate danas |
| Čita 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 padaju na njemu. Obratite pažnju na smer kretanja: src/lerobot/scripts/ sadrži convert_dataset_v21_to_v30.py i ništa što ide u drugom smeru. Rešite ovo pre sesije. Popravka: dataset rejected as 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 odgovorni za USB enumeraciju, ffmpeg build, podešavanje enkodera i kalibracione fajlove. Pravi put za razumevanje pajplajna, pokretanje neobične konfiguracije kamere ili čuvanje podataka lokalno.
Vreme: jedno veče po ruci za sklapanje, 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, strimove kamera i stanja zglobova, direktno iz teleoperacione sesije. Taj skup podataka se koristi za formu za obuku: odaberite model, skup podataka i hiperparametre, a backend iznajmljuje GPU veličine VRAM-a modela, pokreće trenera i piše kontrolne tačke u skladište objekata.
- 1Instalirajte klijent
Na stranici za preuzimanje; podešavanje u dokumentaciji klijenta.
- 2Snimanje iz teleoperacione sesije
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 sa 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 nivou A100 ili H100.
Ne sklapa 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 dodatna putovanja preko javnog interneta pretvaraju funkcionalnu politiku u oklevajuću.
Snimajte LeRobot skupove podataka bez samostalnog povezivanja pajplajna
AY-Robots desktop klijent snima epizode, strimove kamera i stanja zglobova u LeRobot formatu iz teleoperacione sesije, a zatim predaje skup podataka treneru.
Preuzmite desktop klijentOd skupa podataka do politike
Pedeset čistih epizoda napaja svako učenje imitacijom pokretanje ovde. ACT se trenira od nule samo na vašem zadatku, sa oko 80 M parametara i otprilike 20 ms po koraku akcije, jedini od pet koji je udoban sa brzim pokretima. SmolVLA ima oko 450 M parametara na kartici od 24 GB. GR00T N1.7 je temeljni model sa otprilike 3 B parametara gde fino podešavanje dotiče oko 40 M parametara, zahteva A100 ili H100, i želi taj v2.1 skup podataka.
Zatim, vodič za vašu kombinaciju: ACT na SO-100, SmolVLA na SO-100 ili GR00T N1.7 na SO-100; za prvo pokretanje, trenirajte svoju prvu politiku je kraći. Kada politika radi na stolu, ali se sruši čim pomerite sto, to je problem sa podacima: politika radi samo u jednom podešavanju i prikupljanje visokokvalitetnih VLA podataka za obuku dublje ulaze u raznolikost.
Koliko epizoda mi je zaista 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č nezavisno preporučuje najmanje 50 za prvi zadatak, oko 10 po lokaciji objekta. Rad na skaliranju podataka je pokazao da se generalizacija skalira sa okruženjima i objektima, a ne sa brojem demonstracija, tako da je sto snimaka jedne scene gore od pedeset snimaka na pet različitih pozicija.
Da li mi je potrebna vodeća ruka, ili mogu da teleoperišem tastaturom?▾
lerobot isporučuje teleoperatore za tastaturu i gamepad, tako da vodeća ruka nije strogo neophodna, ali je izrazito poželjna: sistem vođa-pratilac daje kontinuirane putanje zglobova u koordinatnoj konvenciji snimljene akcije, dok unos sa tastature proizvodi stepenasto kretanje koje politika uči kao trzaj. Teleoperacija tastaturom takođe zahteva globalni pozadinski sistem za tastere, pa ne radi na Wayland-u i u bezglavom režimu (headless).
Mogu li snimati na Raspberry Pi-u ili malom mini PC-u?▾
Da, uz podešavanje. Vodič za striming-kodiranje ima odeljak za niske resurse koji pokriva moderne mašine sa 4 jezgra i Raspberry Pi 5, i stavlja dve kamere na 640x480 i 30 fps u svoju kolonu 'zahteva-neko-podešavanje'. Njegov savet: zaustavite enkoder da se takmiči sa petljom za snimanje, putem --dataset.rgb_encoder.vcodec=h264 i --dataset.streaming_encoding=false. Ocenjuje dve kamere na 640x480 kao oko 55 miliona piksela u sekundi, a dve na 1920x1080 kao oko 373 miliona.
Kako da znam da je skup podataka koji sam upravo snimio zaista ispravan?▾
Tri jednostavne provere. Uporedite trajanje videa svake epizode sa trajanjem koje je prijavio CLI i potvrdite da je broj redova jednak fps puta to trajanje, po epizodi, a ne ukupno; to je test prihvatanja koji daje lerobot-ov vodič za kodiranje. Pročitajte ds.meta.stats, gde se zglob čiji je min jednak njegovom max nikada nije pomerio. Zatim ponovo reprodukujte dve ili tri epizode u lerobot-dataset-viz, što je jedini način da se prikažu zamenjeni prikazi i zamrznuti kadrovi. Kada su u pitanju ispušteni kadrovi, vodič povlači crtu na otprilike 5 procenata nedostajućih; oko 2 procenta je normalno prolazno opterećenje, često samo pri pokretanju.
Moj zadatak obuke je odbio skup podataka kao v3.0. Šta sada?▾
GR00T N1.7 i N1.5 čitaju LeRobot v2.0 ili v2.1 i padaju na v3.0, što je ono što lerobot 0.6.1 snima. Ili usaglasite format pre obuke, ili koristite politiku koja nativno čita v3.0: Pi0.5, SmolVLA ili ACT. lerobot isporučuje konverter v2.1 u v3.0 i ništa obrnuto.
Sources
- LeRobot: Učenje imitacijom na robotima iz stvarnog sveta
- LeRobot: SO-100 sklapanje, podešavanje motora i kalibracija
- LeRobot: Kamere i lerobot-find-cameras
- LeRobot: Instalacija i matrica dodataka
- LeRobotDataset v3.0: raspored i migracija sa v2.1
- LeRobot: Kodiranje strimovanog videa i ispušteni frejmovi
- LeRobot: Prebacivanje velikih skupova podataka na v3.0 (DROID)
- lerobot v0.6.1 izdanje, 3 August 2026
- DatasetRecordConfig: stvarne podrazumevane vrednosti snimanja
- lerobot_record.py: petlja snimanja i rukovanje nastavkom
- TheRobotStudio/SO-ARM100: repozitorijum za izradu i spisak materijala
- Hugging Face: Kontrolna lista skupova podataka zajednice LeRobot
- lerobot/svla_so100_pickplace: 50 episodes, 19,631 frames
- Lin et al. (2024), Zakoni skaliranja podataka u učenju imitacijom
- Mandlekar et al. (2021), Šta je važno u učenju iz oflajn 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