
Nahrajte použiteľný dataset LeRobot s SO-100: kalibrácia, teleoperácia leader-follower, skutočné flagy a predvolené nastavenia lerobot-record, nastavenie kamery, počty epizód a chyby, ktoré zničia beh.
Sledovač SO-100, vedúce rameno rovnakého dizajnu a dve USB kamery dokážu doladiť politiku za jedno popoludnie. Rovnaká testovacia stolica dokáže rovnako ľahko vyprodukovať šesťdesiat epizód, ktoré vyzerajú zdravo v prehliadači súborov a premárniť šesťhodinový beh GPU. Rozdiel je zriedka v modeli; je to to, čo sa stalo medzi servami a súborom parquet.
Tu je manuálna cesta, potom tá kratšia. Každý príkaz je z lerobot 0.6.1, vydaného 3. augusta 2026 a aktuálneho na PyPI. Presunul sa na vstupné body konzoly, takže tutoriály, ktoré spúšťajú python lerobot/scripts/control_robot.py popisujú súbor, ktorý už neexistuje.
Stručná verzia
- •lerobot 0.6.1 zaznamenáva v3.0; GR00T N1.7 a N1.5 vyžadujú v2.1. Pred stlačením záznamu si ujasnite formát.
- •Štyri príkazy: lerobot-find-port, lerobot-setup-motors, lerobot-calibrate, lerobot-record. Preneste rovnaké --robot.id a --teleop.id z kalibrácie do nahrávacej relácie.
- •Skutočné predvolené hodnoty: 30 fps, 60 s na epizódu, 60 s reset, 50 epizód, približne 100 minút reálneho času.
- •Minimálny počet epizód tu: 30 pre SmolVLA, 50 pre zvyšok.
- •Rozmanitosť prekonáva objem. Dátové súbory umierajú na štyri veci: prehodené indexy kamier, vynechané alebo zamrznuté snímky, kĺb zaparkovaný na svojom limite, nečitateľný reťazec úlohy.
Čo zachytáva nahrávacia relácia
Dátový súbor LeRobot dataset nie je priečinok videí, ale časovo indexovaná tabuľka s priloženým videom: každý takt riadiacej slučky zapíše jeden riadok obsahujúci príkazovú akciu, stav, ktorý dosiahol sledovač, jeden snímok z každej kamery, časovú značku a indexy. Politika vidí iba tieto stĺpce. Schéma lerobot/svla_so100_pickplace, načítaná z jeho meta/info.json.
| Funkcia | Dátový typ | Tvar | Popis |
|---|---|---|---|
| action | float32 | [6] | cieľové polohy kĺbov z ramena lídra |
| observation.state | float32 | [6] | polohy kĺbov, ktoré dosiahol sledovač |
| observation.images.top | video | [480, 640, 3] | scénická kamera, MP4 (tu av1) |
| observation.images.wrist | video | [480, 640, 3] | kamera na zápästí, rovnaká frekvencia |
| timestamp | float32 | [1] | sekundy od začiatku epizódy |
| frame_index, episode_index, index, task_index | int64 | [1] | automaticky vyplnené záznamy |
Kĺby sú main_shoulder_pan, main_shoulder_lift, main_elbow_flex, main_wrist_flex, main_wrist_roll a main_gripper: šesť stupňov voľnosti SO-100. Akcia a stav zdieľajú rovnaký tvar, pretože teleoperácia líder-sledovač zaznamenáva cieľ a polohu dosiahnutú o jeden krok neskôr. Táto medzera je informácia: kde rameno bojovalo s gravitáciou alebo zaseknutým objektom. Tieto reťazce patria k danému dátovému súboru. Relácia zaznamenaná dnes s verziou 0.6.1 zapisuje shoulder_pan.pos až po gripper.pos, ID 1 až 6 na zbernici: rovnakých šesť kĺbov, rôzne kľúče, čo je dôležité v momente, keď konfigurácia odkazuje na funkciu podľa názvu.
Tento dátový súbor obsahuje 50 epizód a 19 631 snímok pri 30 fps: približne 393 snímok, alebo 13 sekúnd, na epizódu. Ak vaše v priemere trvajú minútu, robíte niečo ťažšie alebo nahrávate mŕtvy čas na oboch koncoch.

Čo potrebujete na stole
| Položka | Detail | Poznámka |
|---|---|---|
| Rameno nasledovníka | SO-100, šesť servomotorov Feetech STS3215 | približne 110 až 150 EUR v súčiastkach |
| Rameno lídra | druhé SO-100, odstránené prevody | prevody odstránené zo všetkých šiestich motorov lídra: len enkóder, menšie trenie |
| Napájanie | prispôsobené variantu STS3215 7.4 V v zozname materiálu | pozri upozornenie nižšie |
| Kamery | dve USB kamery, 640x480 pri 30 fps | jeden pohľad na scénu, jeden na zápästí |
| Hostiteľ | Python 3.12 alebo novší, ffmpeg | requires-python >= 3.12 |
| Účet Hub | Hugging Face write token | voliteľné s --dataset.push_to_hub=false |
STS3215 sa dodáva v dvoch verziách: README SO-ARM100 hodnotí verziu 7.4 V s krútiacim momentom pri zablokovaní 16.5 kg.cm meraným pri 6 V a verziu 12 V s 30 kg.cm, a poznamenáva, že výber 12 V motorov tiež znamená kúpu 12 V 5 A+ napájacieho zdroja namiesto 5 V. Zoznam materiálu uvádza 7.4 V servomotory. Napájanie 12 V servomotorov určených pre 7.4 V ich zničí, preto si prečítajte štítok motora predtým, ako čokoľvek zapojíte. Servo nereaguje.
Ak rameno ešte nie je zostavené, to je samostatný večer: začnite na a . Ak ste si ešte nič nekúpili, prečítajte si najprv : SO-101 je novšia revízia s vylepšenou kabelážou a bez kroku odstraňovania prevodov, a pracovný postup nahrávania je identický.
Nainštalujte 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-infoDoplnky najčastejšie spôsobujú problémy. pip install lerobot inštaluje iba základné ML závislosti, nič, čo komunikuje s robotom. Ramená Koch potrebujú dynamixel namiesto feetech. Ak váš shell nikdy nepočul o lerobot-record, toto je dôvod.
Porty, ID motorov a kalibrácia
Tri jednorazové kroky stoja medzi dielmi a funkčnou teleoperačnou slučkou. umožňuje, aby politika trénovaná na vašom ramene bežala na ramene niekoho iného, mapujúc surové počty enkodérov na zdieľanú konvenciu kĺbov.
- 1Nájdite USB port každého ramena
Spustite ho s oboma ramenami zapojenými, odpojte to, ktoré identifikujete, keď budete vyzvaní, a poznačte si, ktorý port zmizne. Na Linuxe možno budete potrebovať
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. - 2Zapíšte ID motorov a prenosové rýchlosti
ID sa zapisujú pre každý motor zvlášť a dokumentácia je prísna ohľadom postupu: pripojte presne jeden motor k riadiacej doske, ešte nie zapojený do reťazca s inými. Skript prechádza reťazec dozadu, najprv vyzve na uchopovač a pridelí mu ID 6, potom zápästie (wrist_roll) ako 5, až po ramenný kĺb (shoulder_pan) ako 1. Urobte to pred montážou.
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 3Kalibrujte obe ramená
Posuňte každý kĺb do stredu jeho rozsahu, stlačte Enter a potom prejdite každý kĺb celým jeho rozsahom.
idsa stane názvom súboru profilu.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 - 4Teleoperujte pred nahrávaním čohokoľvek
Akceptačný test pre všetko vyššie uvedené. Ak je teleoperácia trhavá, zrkadlová alebo jeden kĺb nebude nasledovať, nahrávanie to zachová v 50 epizódach.
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
Profily sa ukladajú do $HF_LEROBOT_CALIBRATION, predvolene ~/.cache/huggingface/lerobot/calibration, a ID je vyhľadávací kľúč. Ak dáte lerobot-record kalibrované ID, ponúkne Enter na opätovné použitie profilu alebo c na jeho prepracovanie. Ak mu dáte neznáme ID, súbor neexistuje, takže prejde do kalibrácie uprostred relácie.
Kamery rozhodujú o tom, čo vidí politika
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 pohľady a ich umiestnenie sú dôležité: pevná scéna kamera pokrývajúca pracovný priestor a zápästná kamera blízko koncového efektora ukazujúca, čo sa chystá uchopovač dotknúť. Kontrolný zoznam komunitných dátových sád LeRobot vyžaduje prednostne dva pohľady s rozlíšením 480x640 / 720p alebo lepším, statické pozadie, neutrálne stabilné osvetlenie a rameno lídra a ľudské končatiny mimo záberu. Sprievodca nahrávaním dodáva pravidlo: mali by ste byť schopní vykonať úlohu sami len pohľadom na obrázky z kamery.
Indexy OpenCV pochádzajú z poradia výpočtu, takže reštart alebo opätovné pripojenie môže spôsobiť, že si indexy 0 a 2 vymenia miesta a umiestnia pohľad zo zápästia do hornej pozície na celú reláciu. lerobot to sám hovorí: jeho trieda kamery prijíma cestu k zariadeniu aj celé číslo a varuje, že indexy sú nestabilné pri reštartoch alebo zmenách portov, najmä na Linuxe. Nasmerujte index_or_path na symlink udev pod /dev/v4l/by-id/, ktorý sleduje zariadenie namiesto poradia výpočtu. Toto je najčastejší spôsob, ako sa dátová sada stane vnútorne nekonzistentnou a tréning to nedokáže opraviť. Kamera nerozpoznaná.
Príkaz record a všetky príznaky
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=2Predvolené hodnoty nižšie pochádzajú z src/lerobot/configs/dataset.py, z hlavnej vetvy, nie z tutoriálu. Niektoré nie sú také, aké si ľudia myslia.
| Príznak | Predvolené | Čo robí |
|---|---|---|
| --dataset.repo_id | prázdne | názov; časová pečiatka pridaná predvolene |
| --dataset.single_task | prázdne | reťazec úlohy uložený s každou epizódou |
| --dataset.root | $HF_LEROBOT_HOME/repo_id | cesta na zápis, predvolené ~/.cache/huggingface/lerobot/ |
| --dataset.fps | 30 | frekvencia riadiacej slučky a snímková frekvencia dátovej sady |
| --dataset.episode_time_s | 60 | sekundy pred automatickým posunom epizódy |
| --dataset.reset_time_s | 60 | reset scény; rameno sa pohybuje, nič sa neukladá |
| --dataset.num_episodes | 50 | epizódy zaznamenané v tejto relácii |
| --dataset.push_to_hub | true | nahrať na konci relácie; false zostáva lokálne |
| --dataset.streaming_encoding | false v dátovej triede, true v tabuľke dokumentácie | kódovať počas snímania; nastavte to explicitne |
| --dataset.encoder_queue_maxsize | 30 | bufferované snímky na kameru, ~1 s pri 30 fps |
| --dataset.encoder_threads | null (rozhoduje kodek) | vlákna na kódovač; znížte, ak sa snímanie zadrháva |
| --dataset.no_stamp | false | ponechať repo_id presne tak, ako je zadané |
| --resume | false | pripojiť k existujúcej dátovej sade; vyžaduje --dataset.root |
Váš dataset sa nevolá tak, ako ste zadali. lerobot pripojí časovú značku, takže so100_pick_cube sa stane so100_pick_cube_20260823_141530. Použite --dataset.no_stamp=true pre stabilný názov. Pokračovanie počíta prírastky, nie celkové súčty. S --resume=true, --dataset.num_episodes počíta ďalšie epizódy a --dataset.root sa stáva povinným. Ak požiadate o 50 na datasete s 30 epizódami, dostanete 80.
Ovládanie klávesnicou počas relácie
- Pravá šípka alebo
n: ukončenie epizódy alebo predčasné resetovanie fázy. Kláves, ktorý používate najčastejšie, pretože čisté uchopenie zriedka potrebuje 25 sekúnd. - Ľavá šípka alebo
r: zahodenie epizódy a jej opakovanie. Zlý záber nestojí teraz nič a neskôr veľa. - Escape alebo
q: zastavenie relácie, dokončenie kódovania, nahranie. - Tieto fungujú na X11, Wayland a bezhlavom SSH: bez globálneho backendu klávesov lerobot-record číta rovnaké klávesy z riadiaceho terminálu. Písmená prežijú pomalé SSH spojenia, kde sa sekvencie šípok rozdelia.
- Klávesnicová teleoperácia je iná a vyžaduje globálny backend: X11, Windows alebo macOS s funkciami prístupnosti.
Koľko epizód a ako vyzerá dobrá epizóda
Sprievodca nahrávaním odporúča aspoň 50 epizód pre prvú úlohu, približne 10 na umiestnenie objektu. stránky s politikami uvádzajú minimum pre každý model, pod ktorým sa spustenie neoplatí z hľadiska času GPU.
| Politika | Min. epizód | Formát datasetu | Úroveň GPU | Cena za spustenie |
|---|---|---|---|---|
| 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 |
Lepšia otázka je, koľko čoho. Data Scaling Laws in Imitation Learning for Robotic Manipulation (Lin et al., 2024) zhromaždili viac ako 40 000 demonštrácií a vykonali viac ako 15 000 reálnych spustení. Generalizácia sledovala približne mocninový vzťah s počtom prostredí a objektov, a po prekročení prahu pre každé prostredie alebo objekt mali dodatočné demonštrácie minimálny účinok. Na jednom testovacom stole: presuňte objekt, zmeňte osvetlenie, vymeňte kocku, namiesto opakovania jedného záberu.
- Spojité trajektórie kĺbov, ktoré dokáže servo reprodukovať, na rozdiel od klávesnice alebo gamepadu
- Akcia a stav zdieľajú konvenciu súradníc, takže politika sa učí cieľ, ktorý môže priamo ovládať
- Epizóda trvajúca 25 sekúnd plus 10-sekundový reset je približne 100 epizód za hodinu
- Operátor cíti, keď sa nasledovník zasekne alebo zviaže, takže chyby sa objavia skôr, ako sa dáta uložia
- Druhé rameno zhruba zdvojnásobuje náklady na diely
- Demonštrácie dedia návyky operátora; Mandlekar et al. zistili, že kvalita politiky silne závisí od kvality demonštrácií
- Líder je vzorkovaný s frekvenciou slučky, takže pauzy sa stávajú takmer identickými riadkami, ktoré učia politiku čakať
- Nič nevynucuje konzistentnosť medzi reláciami: kamera posunutá o 5 cm je skrytý posun distribúcie
Dobrá epizóda je nudná: opakovateľná domáca pozícia, jedna vec hotová, ukončená, keď je objekt v koši, reťazec úlohy v rozsahu 25 až 50 znakov, ktoré odporúča kontrolný zoznam. Zoberte červenú kocku a vložte ju do krabice je reťazec úlohy; task1 je anti-vzor, ktorý kontrolný zoznam výslovne uvádza. Nejasné anotácie vedú zoznam problémov a sú najdôležitejšie pre , kde je reťazec vstupom modelu, nie názvom súboru.
Defekty, ktoré potichu ničia dátový súbor
Žiadny nevyvolá výnimku. Všetky prežijú do tréningu, objavia sa ako krivka straty, ktorá vyzerá dobre, a robot, ktorý nič nerobí. Skontrolujte, kým je scéna nastavená.
| Defekt | Ako to vyzerá | Odkiaľ to pochádza | Ako to odhaliť |
|---|---|---|---|
| Vymenené pohľady kamier | obraz zápästia pod horným kľúčom | priradenie indexu po opätovnom zapojení | lerobot-find-cameras each session; by-id paths |
| Zmrazené snímky | rovnaký obraz pre desiatky riadkov | kamera prestane dodávať; slučka opakuje poslednú snímku | prehliadnite to v lerobot-dataset-viz |
| Vynechané snímky | počet riadkov pod fps krát sekundy | fronta pretečie, zahadzuje namiesto blokovania | 'Encoder queue full' v logu; riadky vs fps krát trvanie |
| Kĺb na svojom limite | jeden kĺb naplocho na min alebo max | rozsah lídra presahuje rozsah nasledovníka, alebo zlá stredná pozícia | min/max pre každý kĺb v ds.meta.stats; lerobot-find-joint-limits vopred |
| Obraz a akcia mimo synchronizácie | politika predvída alebo zaostáva | kamery s iným fps ako slučka | udržujte každú kameru na --dataset.fps |
| Mŕtvy čas | dlhé série identických riadkov akcií | operátor pozastavil nahrávanie | podiel po sebe idúcich identických riadkov akcií |
| Nepoužiteľný reťazec úlohy | task1, demo2, test | rýchle písanie | meta/tasks.parquet in v3.0 (it was meta/tasks.jsonl in v2.1); fix with lerobot-edit-dataset modify_tasks |
Enkodér udržiava ohraničený front pre každú kameru, štandardne 30 snímok. Keď nestíha, snímky sú zahodené namiesto zablokovania: snímanie pokračuje a nič nepadá. Dostanete Encoder queue full for {camera}, dropped N frame(s) a celkový počet za kameru na konci epizódy. Prah lerobot: približne 5 percent chýbajúcich znamená preťažený systém, 2 percentá sú očakávané zaťaženie pri štarte. Opravy v poradí: --display_data=false, znížiť --dataset.encoder_threads, vcodec=h264, vypnúť streamovanie.
Jedna výhrada: tabuľka sprievodcu streamovaním a kódovaním uvádza predvolenú hodnotu ako True, zatiaľ čo dátová trieda na main číta streaming_encoding: bool = False. Dokumentácia a kód sa nezhodujú, takže to nastavte explicitne; lerobot zaznamená nápovedu odporúčajúcu to vždy, keď sa spustí s vypnutým príznakom.
Skontrolujte dataset pred prenájmom GPU
Akceptačný test z dokumentácie: porovnajte dĺžku videa s dĺžkou epizódy, ktorú nahlásilo CLI, a potvrďte, že počet riadkov sa rovná fps krát dĺžka. Na epizódu, nie na celok.
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"])Potom sa na to pozrite. lerobot-dataset-viz prehráva epizódu snímku po snímke so stopami kĺbov vedľa pohľadov kamery, v Rerun alebo Foxglove. Vymenené kamery a zamrznuté snímky sa objavia do desiatich sekúnd. Ľudia tento krok preskakujú.
# 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 alebo v3.0: rozhodnite sa pred nahrávaním
v2.1 zapisoval jeden parquet a jeden MP4 na epizódu. v3.0 spája mnoho epizód do zdieľaných shardov a obnovuje hranice z metadát, takže info.json obsahuje šablóny ciest ako data/chunk-{chunk_index:03d}/file-{file_index:03d}.parquet namiesto čísla epizódy. Zdôvodnením je menej, väčších súborov: rýchlejšia inicializácia a menší tlak na súborový systém vo veľkom meradle.
| LeRobot v2.1 | LeRobot v3.0 | |
|---|---|---|
| Rozloženie | jeden parquet a jeden MP4 na epizódu | mnoho epizód na shard |
| Metadáta epizódy | JSONL files | chunked parquet pod meta/episodes/, cez dátový zásobník |
| Streamovanie z Hubu | nie | áno, cez StreamingLeRobotDataset |
| Napísané lerobot 0.6.1 | nie | áno, to, čo získate dnes |
| Čítané GR00T N1.7 a N1.5 | áno | nie, musí byť prevedené na nižšiu verziu |
lerobot 0.6.1 zapisuje v3.0, ale GR00T N1.7 a N1.5 čítajú v2.0 alebo v2.1 a zlyhajú na ňom. Všimnite si smer vývoja: src/lerobot/scripts/ obsahuje convert_dataset_v21_to_v30.py a nič, čo by išlo opačným smerom. Vyriešte to pred stretnutím. Oprava: dátová sada odmietnutá ako 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 cesty k rovnakému datasetu
Všetko vyššie, na vašom vlastnom stroji: vy vlastníte výpočet USB, zostavenie ffmpeg, ladenie kodéra a kalibračné súbory. Správna cesta k pochopeniu pipeline, spusteniu neobvyklej kamerovej zostavy alebo udržaniu dát lokálne.
Čas: večer na rameno na zostavenie, náročná prvá kalibrácia a prvá relácia, ktorú zahodíte, pretože kamera bola v nesprávnom slote.
Desktopový klient zaznamenáva datasety vo formáte LeRobot, epizódy, streamy z kamier a stavy kĺbov priamo z teleoperačnej relácie. Tento dataset potom slúži pre tréningový formulár: vyberte model, dataset a hyperparametre a backend si prenajme GPU dimenzovanú podľa VRAM modelu, spustí tréner a zapisuje kontrolné body do objektového úložiska.
- 1Nainštalujte klienta
Na stránke na stiahnutie; nastavenie v dokumentácii klienta.
- 2Nahrávajte z teleoperačnej relácie
Ovládajte rameno; klient zapisuje epizódy vo formáte LeRobot. Návod: nahrajte svoj prvý dataset.
- 3Alebo prineste vlastné dáta
Dataset môže pochádzať aj z Hugging Face repo id alebo z vášho vlastného stroja: dokumentácia datasetov, verejný adresár.
- 4Trénujte a spustite späť
Vyberte kombináciu na tréningovej matici, potom spustite politiku späť na ramene. Približne 1 až 3 USD na 24 GB úrovni, 4 až 12 na úrovni A100 alebo H100.
Nezostavuje ani nekalibruje vaše rameno a neopravuje chybnú epizódu, takže krok inšpekcie stále platí. Na druhom konci je tiež pevný limit: pre rýchle úlohy musí inferencia sedieť vedľa servomotorov. Riadiaca slučka beží 20 až 485 ms na akčný krok a okružné cesty cez verejný internet navyše menia funkčnú politiku na váhavú.
Nahrávajte datasety LeRobot bez vlastného zapájania pipeline
Desktopový klient AY-Robots zaznamenáva epizódy, streamy z kamier a stavy kĺbov vo formáte LeRobot z teleoperačnej relácie a potom odovzdá dataset trénerovi.
Získajte desktopového klientaOd datasetu k politike
Päťdesiat čistých epizód napája každý beh tu. trénuje od nuly len na vašej úlohe, približne 80 M parametrov pri zhruba 20 ms na akčný krok, jediný z piatich, ktorému vyhovuje rýchly pohyb. má približne 450 M parametrov na 24 GB karte. je základný model s približne 3 B parametrami, kde ovplyvňuje asi 40 M parametrov, potrebuje A100 alebo H100 a vyžaduje dataset v2.1.
Ďalej, sprievodca pre vašu kombináciu: , alebo ; pre prvý beh je kratšie. Keď politika funguje na stole, ale zlyhá vo chvíli, keď pohnete stolom, je to problém s dátami: a idú hlbšie do rozmanitosti.
Koľko epizód skutočne potrebujem pre prvú funkčnú politiku?▾
Tridsať pre SmolVLA, päťdesiat pre ACT, Pi0.5, GR00T N1.5 a N1.7, čo sú minimá, ktoré vynucujú tréneri AY-Robots. Príručka LeRobot nezávisle odporúča aspoň 50 pre prvú úlohu, približne 10 na umiestnenie objektu. Práca so škálovaním dát zistila, že generalizácia sa škáluje s prostrediami a objektmi, nie s počtom demonštrácií, takže sto záberov jednej scény je horších ako päťdesiat naprieč piatimi umiestneniami.
Potrebujem riadiace rameno, alebo môžem teleoperovať pomocou klávesnice?▾
lerobot dodáva klávesnicové a gamepadové teleoperátory, takže riadiace rameno nie je striktne vyžadované, ale je silne preferované: režim leader-follower poskytuje spojité trajektórie kĺbov v súradnicovej konvencii zaznamenanej akcie, zatiaľ čo vstup z klávesnice produkuje krokový pohyb, ktorý si politika osvojí ako trhavý. Klávesnicová teleoperácia tiež potrebuje globálny kľúčový backend, takže zlyháva na Waylande a bezhlavých systémoch.
Môžem nahrávať na Raspberry Pi alebo malom mini PC?▾
Áno, s doladením. Príručka pre streamovacie kódovanie má kategóriu s nízkymi nárokmi pokrývajúcu moderné 4-jadrové stroje a Raspberry Pi 5 a umiestňuje dve kamery s rozlíšením 640x480 a 30 fps do stĺpca „vyžaduje určité doladenie“. Jej rada: zastavte, aby sa kodér nekonkuroval s cyklom snímania, pomocou --dataset.rgb_encoder.vcodec=h264 a --dataset.streaming_encoding=false. Hodnotí dve kamery s rozlíšením 640x480 ako približne 55 miliónov pixelov za sekundu a dve s rozlíšením 1920x1080 ako približne 373 miliónov.
Ako zistím, že práve zaznamenaný dataset je skutočne v poriadku?▾
Tri jednoduché kontroly. Porovnajte dĺžku videa každej epizódy s dĺžkou nahlásenou CLI a potvrďte, že počet riadkov sa rovná fps krát táto dĺžka, pre každú epizódu namiesto celkového súčtu; to je akceptačný test, ktorý poskytuje príručka kódovania lerobot. Prečítajte ds.meta.stats, kde kĺb, ktorého min sa rovná jeho max, sa nikdy nepohol. Potom prehrajte dve alebo tri epizódy v lerobot-dataset-viz, čo je jediný spôsob, ako sa prejavia prehodené pohľady a zamrznuté snímky. Pri vypadnutých snímkach príručka stanovuje hranicu približne 5 percent chýbajúcich; približne 2 percentá sú normálne prechodné zaťaženie, často len pri štarte.
Moja tréningová úloha odmietla dataset ako v3.0. Čo teraz?▾
GR00T N1.7 a N1.5 čítajú LeRobot v2.0 alebo v2.1 a zlyhávajú na v3.0, čo je to, čo zaznamenáva lerobot 0.6.1. Buď sa dohodnite na formáte pred tréningom, alebo použite politiku, ktorá natívne číta v3.0: Pi0.5, SmolVLA alebo ACT. lerobot dodáva konvertor z v2.1 na v3.0 a nič opačne.
Sources
- LeRobot: Učenie napodobňovaním na robotoch v reálnom svete
- LeRobot: Montáž SO-100, nastavenie motora a kalibrácia
- LeRobot: Kamery a lerobot-find-cameras
- LeRobot: Inštalácia a matica doplnkov
- LeRobotDataset v3.0: rozloženie a migrácia z v2.1
- LeRobot: Kódovanie streamovaného videa a vypadnuté snímky
- LeRobot: Portovanie veľkých dátových súborov na v3.0 (DROID)
- lerobot v0.6.1 vydanie, 3. august 2026
- DatasetRecordConfig: skutočné predvolené nastavenia nahrávania
- lerobot_record.py: slučka nahrávania a spracovanie obnovenia
- TheRobotStudio/SO-ARM100: repozitár zostavy a kusovník
- Hugging Face: Kontrolný zoznam komunitných dátových súborov LeRobot
- lerobot/svla_so100_pickplace: 50 epizód, 19 631 snímok
- Lin et al. (2024), Zákony škálovania dát v učení napodobňovaním
- Mandlekar et al. (2021), Čo je dôležité pri učení z offline ľudských demonštrácií
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