
Salvesta kasutatav LeRoboti andmestik SO-100-ga: kalibreerimine, juht-järgija teleoperatsioon, tõelised lerobot-record lipud ja vaikesätted, kaamera seadistus, episoodide arvud ja vead, mis rikuvad käivituse.
Üks SO-100 jälgija, sama disainiga juhtkäsi ja kaks USB-kaamerat saavad poliitikat pärastlõunal peenhäälestada. Sama testpink suudab sama hõlpsalt toota kuuskümmend episoodi, mis näevad failibrauseris terved välja ja raiskavad kuuetunnise GPU tööaja. Erinevus on harva mudelis; see on see, mis juhtus servode ja parquet-faili vahel.
Siin on käsitsi tee, seejärel lühem. Iga käsk on pärit lerobot 0.6.1-st, mis ilmus 3. augustil 2026 ja on PyPI-s praegune. See liikus konsooli sisenemispunktidesse, nii et õpetused, mis käivitavad python lerobot/scripts/control_robot.py kirjeldavad faili, mida enam ei eksisteeri.
Lühiversioon
- •lerobot 0.6.1 salvestab v3.0; GR00T N1.7 ja N1.5 soovivad v2.1. Leppige formaadis kokku enne salvestamise alustamist.
- •Neli käsku: lerobot-find-port, lerobot-setup-motors, lerobot-calibrate, lerobot-record. Kandke samad --robot.id ja --teleop.id kalibreerimisest salvestusseanssi.
- •Tegelikud vaikeseaded: 30 kaadrit sekundis, 60 sekundit episoodi kohta, 60 sekundit lähtestamist, 50 episoodi, umbes 100 minutit reaalajas.
- •Minimaalsed episoodid siin: 30 SmolVLA jaoks, 50 ülejäänute jaoks.
- •Mitmekesisus võidab mahu. Andmestikud surevad nelja asja tõttu: vahetatud kaamera indeksid, kaotatud või külmunud kaadrid, liigend, mis on pargitud oma piirini, loetamatu ülesande string.
Mida salvestusseanss jäädvustab
A LeRoboti andmestik ei ole videokaust, vaid ajaliselt indekseeritud tabel koos lisatud videoga: iga juhtsilmuse takti korral kirjutatakse üks rida, mis sisaldab kästud tegevust, jälgija saavutatud olekut, ühe kaadri kaamera kohta, ajatemplit ja indekseid. Poliitika näeb ainult neid veerge. Skeem lerobot/svla_so100_pickplace, loetud selle meta/info.json-ist.
| Tunnus | andmetüüp | Kuju | Mida see on |
|---|---|---|---|
| action | float32 | [6] | juhtkäe liigeste sihtmärgid |
| observation.state | float32 | [6] | jälgija saavutatud liigeste asendid |
| observation.images.top | video | [480, 640, 3] | stseenikaamera, MP4 (siin av1) |
| observation.images.wrist | video | [480, 640, 3] | randmekaamera, sama kiirus |
| timestamp | float32 | [1] | sekundid alates episoodi algusest |
| frame_index, episode_index, index, task_index | int64 | [1] | automaatselt täidetud arvepidamine |
Liigesed on main_shoulder_pan, main_shoulder_lift, main_elbow_flex, main_wrist_flex, main_wrist_roll ja main_gripper: SO-100 kuus vabadusastet. Tegevus ja olek jagavad kuju, sest juht-jälgija teleoperatsioon salvestab sihtmärgi ja ühe sammu võrra hiljem saavutatud asendi. See vahe on informatsioon: kus käsi võitles gravitatsiooni või kinni jäänud objektiga. Need stringid kuuluvad sellele andmestikule. Täna versiooniga 0.6.1 salvestatud sessioon kirjutab shoulder_pan.pos kuni gripper.pos, id-d 1 kuni 6 siinil: samad kuus liigest, erinevad võtmed, mis on oluline hetkel, kui konfiguratsioon pöördub tunnuse poole nime järgi.
See andmestik sisaldab 50 episoodi ja 19 631 kaadrit kiirusega 30 kaadrit sekundis: umbes 393 kaadrit ehk 13 sekundit episoodi kohta. Kui teie omad on keskmiselt minuti pikkused, teete te midagi raskemat või salvestate mõlemas otsas tühja aega.

Mida vajate töölaual
| Ese | Detail | Märkus |
|---|---|---|
| Järgija käsi | SO-100, six Feetech STS3215 servos | umbes 110 kuni 150 EUR osadena |
| Juhtkäsi | a second SO-100, gears removed | kõigilt kuuelt juhtmootorilt eemaldatud käigud: ainult kodeerija, vähem hõõrdumist |
| Toide | matched to the 7.4 V STS3215 variant in the bill of materials | vt allolevat hoiatust |
| Kaamerad | two USB cameras, 640x480 at 30 fps | üks stseenivaade, üks randmel |
| Host | Python 3.12 or newer, ffmpeg | requires-python >= 3.12 |
| Hubi konto | Hugging Face write token | optional with --dataset.push_to_hub=false |
STS3215 on saadaval kahes versioonis: SO-ARM100 README hindab 7.4 V versiooni 16.5 kg.cm seiskamismomendiga, mõõdetuna 6 V juures, ja 12 V versiooni 30 kg.cm-ga, ning märgib, et 12 V mootorite valimine tähendab ka 12 V 5 A+ toiteallika ostmist 5 V asemel. Materjalide loetelu sisaldab 7.4 V servosid. 12 V andmine 7.4 V nimipingega servodele hävitab need, seega lugege mootori silti enne midagi ühendamist. Servo ei reageeri.
Kui käsi pole veel ehitatud, on see eraldi õhtu: alusta aadressilt ja . Kui te pole midagi ostnud, lugege esmalt esmalt: SO-101 on uuem versioon parema juhtmestiku ja ilma hammasrataste eemaldamise sammuta ning salvestamise töövoog on identne.
Installi 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-infoLisad ajavad inimesi kõige rohkem segadusse. pip install lerobot installib ainult põhilised ML-sõltuvused, mitte midagi, mis robotiga suhtleks. Kochi käed vajavad dynamixel asemel feetech. Kui teie kest pole kunagi lerobot-recordist kuulnud, siis see on põhjus.
Pordid, mootori ID-d ja kalibreerimine
Kolm ühekordset sammu eraldavad osi töötavast teleoperatsiooni tsüklist. võimaldab teie käel treenitud poliitikal töötada kellegi teise käel, kaardistades toored enkoodri näidud ühisele liigeste konventsioonile.
- 1Leidke iga käe USB-port
Käivitage see mõlema käe ühendatuna, eemaldage tuvastatav käsi, kui seda palutakse, ja märkige üles, milline port kaob. Linuxis võib vaja minna
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. - 2Kirjutage mootori ID-d ja edastuskiirused
ID-d kirjutatakse ühele mootorile korraga ja dokumentatsioon on selle osas range: ühendage kontrolleri plaadiga täpselt üks mootor, mis ei ole veel teistega ahelas. Skript läbib ahela tagurpidi, küsides esmalt haaratsi kohta ja andes sellele ID 6, seejärel randmerulli ID 5, kuni õla-panni ID 1. Tehke seda enne kokkupanekut.
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 3Kalibreerige mõlemad käed
Liigutage iga liigend oma liikumisulatuse keskele, vajutage Enter, seejärel liigutage iga liigendit läbi kogu selle ulatuse.
id-st saab profiili failinimi.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 - 4Teleopereerige enne midagi salvestamist
Kõige eelneva vastuvõtutest. Kui teleoperatsioon on tõmblev, peegeldatud või üks liigend ei järgi, säilitab salvestus selle 50 episoodis.
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
Profiilid salvestatakse asukohta $HF_LEROBOT_CALIBRATION, vaikimisi ~/.cache/huggingface/lerobot/calibration, ja ID on otsinguvõti. Andke lerobot-record-ile kalibreeritud ID ja see pakub Enter-klahvi profiili taaskasutamiseks või c-klahvi selle uuesti tegemiseks. Andke sellele tundmatu ID ja faili pole, nii et see alustab kalibreerimist sessiooni keskel.
Kaamerad otsustavad, mida poliitika näeb
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.0Kaks vaadet ja nende asukoht on olulised: fikseeritud stseenikaamera, mis katab tööruumi, ja randmekaamera lõppefektor lähedal, mis näitab, mida haarats puudutama hakkab. LeRoboti kogukonna andmestike kontrollnimekiri nõuab eelistatavalt kahte vaadet eraldusvõimega 480x640 / 720p või parem, staatilist tausta, neutraalset stabiilset valgustust ning et juhtiv käsi ja inimjäsemed oleksid kaadrist väljas. Salvestusjuhend lisab rusikareegli: peaksite suutma ülesannet ise täita, vaadates ainult kaamerate pilte.
OpenCV indeksid tulenevad loendamise järjekorrast, nii et taaskäivitus või uuesti ühendamine võib panna indeksid 0 ja 2 kohti vahetama ning randmevaate terveks sessiooniks ülemisse pessa. lerobot ütleb seda ise: selle kaameraklass võtab vastu nii seadme tee kui ka täisarvu ning hoiatab, et indeksid on ebastabiilsed taaskäivituste või pordi muutuste korral, eriti Linuxis. Suunake index_or_path udev sümlingile kataloogis /dev/v4l/by-id/, mis järgib seadet, mitte loendamise järjekorda. See on kõige tavalisem viis, kuidas andmestik muutub sisemiselt ebajärjepidevaks, ja treening ei suuda seda parandada. Kaamerat ei tuvastatud.
Käsk record ja kõik lipud
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=2Allpool toodud vaikeväärtused pärinevad failist src/lerobot/configs/dataset.py (main harust), mitte õpetusest. Mõned neist ei ole need, mida inimesed eeldavad.
| Lipp | Vaikeväärtus | Mida see teeb |
|---|---|---|
| --dataset.repo_id | empty | nimi; ajatempel lisatakse vaikimisi |
| --dataset.single_task | empty | ülesande string, mis salvestatakse iga episoodiga |
| --dataset.root | $HF_LEROBOT_HOME/repo_id | kirjutamise tee, vaikeväärtus ~/.cache/huggingface/lerobot/ |
| --dataset.fps | 30 | juhtimistsükli kiirus ja andmestiku kaadrisagedus |
| --dataset.episode_time_s | 60 | sekundid enne episoodi automaatset edasiliikumist |
| --dataset.reset_time_s | 60 | stseeni lähtestamine; käsi liigub, midagi ei salvestata |
| --dataset.num_episodes | 50 | sellel sessioonil salvestatud episoodid |
| --dataset.push_to_hub | true | laadimine üles sessiooni lõpus; false jätab kohalikuks |
| --dataset.streaming_encoding | false in the dataclass, true in the docs table | kodeerimine jäädvustamise ajal; määra see selgesõnaliselt |
| --dataset.encoder_queue_maxsize | 30 | puhverdatud kaadrid kaamera kohta, ~1 s kiirusel 30 fps |
| --dataset.encoder_threads | null (codec decides) | lõimed kodeerija kohta; vähenda, kui jäädvustamine katkeb |
| --dataset.no_stamp | false | hoia repo_id täpselt nii, nagu sisestatud |
| --resume | false | lisa olemasolevale andmestikule; vajab --dataset.root |
Teie andmestikku ei nimetata nii, nagu te sisestasite. lerobot lisab kuupäeva-kellaaja sildi, nii et so100_pick_cube muutub so100_pick_cube_20260823_141530. Kasutage --dataset.no_stamp=true stabiilse nime saamiseks. Jätkamine loeb lisandusi, mitte kogusummasid. --resume=true korral loeb --dataset.num_episodes täiendavaid episoode ja --dataset.root muutub kohustuslikuks. Kui küsite 30-episoodilisest andmestikust 50, saate 80.
Klaviatuuri juhtimine seansi ajal
- Parem nool või
n: lõpetab episoodi või lähtestab faasi varakult. See on klahv, mida kasutate kõige rohkem, sest puhas haare vajab harva 25 seconds. - Vasak nool või
r: tühistab episoodi ja teeb selle uuesti. Halb võte ei maksa praegu midagi, kuid hiljem palju. - Escape või
q: peatab seansi, lõpetab kodeerimise, laadib üles. - Need töötavad X11-s, Waylandis ja peata SSH-s: ilma globaalse klahvitaustaprogrammita loeb lerobot-record samad klahvid juhtterminalist. Tähed jäävad ellu viivitavate SSH-ühenduste korral, kus noolejärjestused jagunevad.
- Klaviatuuri teleoperatsioon on erinev ja vajab globaalset taustaprogrammi: X11, Windows või macOS koos Accessibility'ga.
Mitu episoodi ja milline näeb välja hea episood
Salvestusjuhend soovitab esimese ülesande jaoks vähemalt 50 episoodi, umbes 10 objekti asukoha kohta. poliitikalehed loetlevad iga mudeli kohta miinimumi, millest allapoole jääv käitus ei ole GPU aega väärt.
| Poliitika | Minimaalselt episoode | Andmestiku formaat | GPU tase | Kulu käituse kohta |
|---|---|---|---|---|
| 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 |
Parem küsimus on, kui palju ja mida. Data Scaling Laws in Imitation Learning for Robotic Manipulation (Lin et al., 2024) kogus üle 40 000 demonstratsiooni ja tegi üle 15 000 reaalse maailma käituse. Üldistamine järgis ligikaudu astmefunktsiooni seost keskkondade ja objektide, ja pärast teatud läve ületamist keskkonna või objekti kohta oli täiendavatel demonstratsioonidel minimaalne mõju. Ühel katsestendil: liiguta objekti, muuda valgustust, vaheta kuubikut, selle asemel et korrata ühte võtet.
- Pidevad liigeste trajektoorid, mida servo suudab reprodutseerida, erinevalt klaviatuurist või mängupuldist
- Tegevus ja olek jagavad koordinaatide konventsiooni, nii et poliitika õpib sihtmärki, mida see saab otse juhtida
- 25-sekundiline episood pluss 10-sekundiline lähtestamine on ligikaudu 100 episoodi tunnis
- Operaator tunneb järgija seiskumist või kinnijäämist, nii et vead ilmnevad enne andmete salvestamist
- Teine käsi kahekordistab ligikaudu osade maksumuse
- Demonstratsioonid pärivad operaatori harjumused; Mandlekar et al. leidsid, et poliitika kvaliteet sõltub suuresti demonstratsiooni kvaliteedist
- Juhti proovitakse tsükli kiirusega, nii et pausidest saavad peaaegu identsed read, mis õpetavad poliitikat ootama
- Miski ei taga järjepidevust sessioonide vahel: 5 cm nihutatud kaamera on varjatud jaotuse nihe
Hea episood on igav: korratav algasend, üks asi tehtud, lõpeb kui objekt on prügikastis, ülesande string 25 kuni 50 tähemärgi pikkune, nagu kontrollnimekiri soovitab. Võta punane kuubik ja aseta see kasti on ülesande string; task1 on vastumuster, mille kontrollnimekiri selgesõnaliselt nimetab. Ebamäärased annotatsioonid on selle probleemide nimekirja tipus ja need on kõige olulisemad nägemis-keele-tegevuse mudelite, kus string on mudeli sisend, mitte failinimi.
Vead, mis vaikselt rikuvad andmestiku
Ükski ei viska erandit. Kõik jäävad treeningusse, ilmudes kaotusfunktsiooni kõverana, mis näeb hea välja, ja robotina, mis ei tee midagi. Kontrolli stseeni ülesseadmise ajal.
| Viga | Kuidas see välja näeb | Kust see tuleb | Kuidas seda tabada |
|---|---|---|---|
| Vahetatud kaameravaated | randme pilt ülemise võtme all | indeksi ümberjaotamine pärast uuesti ühendamist | lerobot-find-cameras each session; by-id paths |
| Külmunud kaadrid | sama pilt kümnete ridade jaoks | kaamera lõpetab edastamise; tsükkel kordab viimast kaadrit | scrub it in lerobot-dataset-viz |
| Kaotatud kaadrid | ridade arv alla kaadrite sekundis korda sekundite | järjekord voolab üle, kaotab pigem kui blokeerib | 'Encoder queue full' in the log; rows vs fps times duration |
| Liigend oma piiril | üks liigend tasane miinimumis või maksimumis | juhtiva liigendi ulatus ületab järgija oma, või halb keskmine asend | per-joint min/max in ds.meta.stats; lerobot-find-joint-limits beforehand |
| Pilt ja tegevus sünkroonist väljas | poliitika ennetab või jääb maha | kaamerad erineva kaadrite sekundis kiirusega kui tsükkel | keep every camera at --dataset.fps |
| Surnud aeg | pikad jooksmised identsete tegevusridadega | operaator peatas salvestaja töötamise ajal | järjestikuste identsete tegevusridade osakaal |
| Kasutamatu ülesande string | task1, demo2, test | kiire tippimine | meta/tasks.parquet in v3.0 (it was meta/tasks.jsonl in v2.1); fix with lerobot-edit-dataset modify_tasks |
Kodeerija hoiab kaamera kohta piiratud järjekorda, vaikimisi 30 kaadrit. Kui see ei suuda sammu pidada, siis kaadrid jäetakse pigem vahele kui blokeeritakse: jäädvustamine jätkub ja miski ei jookse kokku. Saate teate Encoder queue full for {camera}, dropped N frame(s) ja kaamera kohta koondsumma episoodi lõpus. Leroboti lävi: umbes 5 protsenti puuduolevaid kaadreid tähendab ülekoormatud süsteemi, 2 protsenti on oodatav käivituskoormus. Lahendused järjekorras: --display_data=false, madalam --dataset.encoder_threads, vcodec=h264, voogedastus välja lülitatud.
Üks hoiatus: voogedastuse kodeerimise juhendi tabelis on vaikimisi väärtuseks True, samas kui peamise haru andmeklassis on streaming_encoding: bool = False. Dokumentatsioon ja kood ei ühti, seega määrake see selgesõnaliselt; lerobot logib vihje, mis soovitab seda alati, kui see käivitub liputa.
Kontrollige andmestikku enne GPU rentimist
Dokumentatsioonis kirjeldatud vastuvõtutest: võrrelge video kestust CLI poolt teatatud episoodi kestusega ja veenduge, et ridade arv võrdub kaadrite arvuga sekundis korda kestus. Episoodi kohta, mitte kogusumma kohta.
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"])Seejärel vaadake seda. lerobot-dataset-viz esitab episoodi kaaderhaaval koos liigeste jälgedega kaameravaadete kõrval, Rerunis või Foxglove'is. Vahetatud kaamerad ja külmunud kaadrid ilmuvad kümne sekundi jooksul. Inimesed jätavad selle sammu vahele.
# 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 või v3.0: otsusta enne salvestamist
v2.1 kirjutas ühe parqueti ja ühe MP4 episoodi kohta. v3.0 liidab mitu episoodi jagatud kildudeks ja taastab piirid metaandmetest, nii et info.json sisaldab teemalle nagu data/chunk-{chunk_index:03d}/file-{file_index:03d}.parquet episoodinumbri asemel. Ülesvoolu põhjendus on vähem, suuremaid faile: kiirem initsialiseerimine ja väiksem failisüsteemi koormus suuremas mastaabis.
| LeRobot v2.1 | LeRobot v3.0 | |
|---|---|---|
| Paigutus | üks parquet ja üks MP4 episoodi kohta | mitu episoodi killu kohta |
| Episoodi metaandmed | JSONL failid | tükeldatud parquet kausta meta/episodes/ all, läbi andmestiku virna |
| Voogedastus Hubist | ei | jah, läbi StreamingLeRobotDataset |
| Kirjutanud lerobot 0.6.1 | ei | jah, mida täna saad |
| Loetav GR00T N1.7 ja N1.5 poolt | jah | ei, tuleb teisendada allapoole |
lerobot 0.6.1 kirjutab v3.0, kuid GR00T N1.7 ja N1.5 loevad v2.0 või v2.1 ja jooksevad selle peale kokku. Pange tähele suunda: src/lerobot/scripts/ sisaldab convert_dataset_v21_to_v30.py ja midagi vastupidist pole. Lahendage see enne sessiooni. Parandus: andmestik tagasi lükatud kui 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=falseKaks teed sama andmestikuni
Kõik eelnev, teie enda masinas: teie vastutate USB-loenduse, ffmpeg-i ehituse, kodeerija häälestuse ja kalibreerimisfailide eest. Õige tee torujuhtme mõistmiseks, ebatavalise kaameraseadistuse käitamiseks või andmete kohapeal hoidmiseks.
Aeg: õhtu käe kohta kokkupanekuks, tülikas esimene kalibreerimine ja esimene seanss, mille viskate minema, sest kaamera oli vales pesas.
Töölauaklient salvestab LeRobot-vormingus andmestikke, episoode, kaameravooge ja liigeste olekuid otse teleoperatsiooni seansist. See andmestik toidab treeningvormi: valige mudel, andmestik ja hüperparameetrid ning taustaprogramm rendib mudeli VRAM-i järgi suurusega GPU, käivitab treeneri ja kirjutab kontrollpunktid objektisalvestusse.
- 1Installige klient
Leiate allalaadimislehelt; seadistamine kliendi dokumentatsioonis.
- 2Salvestage teleoperatsiooni seansist
Juhtige kätt; klient kirjutab episoode LeRobot-vormingus. Juhend: salvestage oma esimene andmestik.
- 3Või tooge oma andmed
Andmestik võib pärineda ka Hugging Face'i repo id-st või teie enda masinast: andmestiku dokumendid, avalik kataloog.
- 4Treenige ja käivitage uuesti
Valige kombinatsioon treeningmaatriksist, seejärel käivitage poliitika uuesti käel. Ligikaudu 1 kuni 3 USD 24 GB tasemel, 4 kuni 12 A100 või H100 tasemel.
See ei pane teie kätt kokku ega kalibreeri seda ega paranda defektset episoodi, seega kehtib endiselt kontrollietapp. Teises otsas on ka range piirang: kiirete ülesannete puhul peab järeldamine toimuma servode kõrval. Juhtimissilmus töötab 20 kuni 485 ms tegevussammu kohta ja avaliku interneti edasi-tagasi reisid muudavad töötava poliitika kõhklevaks.
Salvestage LeRobot andmestikke ilma torujuhet ise ühendamata
AY-Robotsi töölauaklient salvestab episoode, kaameravooge ja liigeste olekuid LeRobot-vormingus teleoperatsiooni seansist, seejärel annab andmestiku treenerile.
Hankige töölauaklientAndmestikust poliitikani
Viiskümmend puhast episoodi toidab iga käivitust siin. treenib nullist ainult teie ülesande jaoks, umbes 80 miljoni parameetriga ja ligikaudu 20 ms tegevussammu kohta, olles ainus viiest, mis sobib kiire liikumisega. on umbes 450 miljoni parameetriga 24 GB kaardil. on ligikaudu 3 miljardi parameetriga alusmudel, kus puudutab umbes 40 miljonit parameetrit, vajab A100 või H100 ja soovib seda v2.1 andmestikku.
Järgmisena juhend teie kombinatsioonile: , või ; esimeseks käivituseks, on lühem. Kui poliitika töötab testpingil, kuid kukub kokku hetkel, mil lauda liigutate, on see andmeprobleem: ja käsitlevad mitmekesisust sügavamalt.
Mitu episoodi on mul tegelikult vaja esimese töötava poliitika jaoks?▾
Kolmkümmend SmolVLA jaoks, viiskümmend ACT, Pi0.5, GR00T N1.5 ja N1.7 jaoks – need on AY-Robots treenerite poolt kehtestatud miinimumid. LeRoboti juhend soovitab iseseisvalt vähemalt 50 episoodi esimese ülesande jaoks, umbes 10 objekti asukoha kohta. Andmete skaleerimise uuringud leidsid, et üldistamine sõltub pigem keskkondadest ja objektidest kui demonstratsioonide arvust, seega on sada võtet ühest stseenist halvem kui viiskümmend viie erineva paigutuse korral.
Kas ma vajan juhtkätt või saan teleopereerida klaviatuuriga?▾
lerobot tarnib klaviatuuri ja mängupuldi teleoperaatoreid, seega juhtkäsi ei ole rangelt vajalik, kuid see on tungivalt eelistatav: juht-järgija annab pidevad liigeste trajektoorid salvestatud tegevuse koordinaatide konventsioonis, samas kui klaviatuuri sisend tekitab astmelise liikumise, mida poliitika õpib tõmblusena. Klaviatuuri teleoperatsioon vajab ka globaalset klahvide taustaprogrammi, mistõttu see ebaõnnestub Waylandis ja peata režiimis.
Kas ma saan salvestada Raspberry Pi-l või väikesel mini-PC-l?▾
Jah, häälestamisega. Voogedastuse kodeerimise juhendil on madala ressursi kategooria, mis hõlmab kaasaegseid 4-tuumalisi masinaid ja Raspberry Pi 5, ning paigutab kaks kaamerat eraldusvõimega 640x480 ja 30 kaadrit sekundis oma "vajab-mõningast-häälestamist" veergu. Selle nõuanne: peatage kodeerija konkureerimine jäädvustamistsükliga, kasutades --dataset.rgb_encoder.vcodec=h264 ja --dataset.streaming_encoding=false. See hindab kahte kaamerat eraldusvõimega 640x480 umbes 55 miljoni pikslina sekundis ja kahte kaamerat eraldusvõimega 1920x1080 umbes 373 miljoni pikslina.
Kuidas ma tean, et äsja salvestatud andmestik on tegelikult terve?▾
Kolm lihtsat kontrolli. Võrrelge iga episoodi video kestust CLI poolt teatatud kestusega ja veenduge, et ridade arv võrdub kaadrite arvuga sekundis korrutatuna selle kestusega, episoodi kohta, mitte kogu andmestiku kohta; see on leroboti kodeerimisjuhendi vastuvõtutest. Lugege ds.meta.stats, kus liiges, mille miinimum võrdub maksimumiga, pole kunagi liikunud. Seejärel esitage kaks või kolm episoodi uuesti lerobot-dataset-vizis, mis on ainus viis vahetatud vaadete ja külmunud kaadrite tuvastamiseks. Kaadrite kadumise osas tõmbab juhend piiri umbes 5 protsendi puudumise juurde; umbes 2 protsenti on normaalne ajutine koormus, sageli lihtsalt käivitamisel.
Minu treeningtöö lükkas andmestiku v3.0-na tagasi. Mis nüüd?▾
GR00T N1.7 ja N1.5 loevad LeRobot v2.0 või v2.1 ja jooksevad v3.0-l kokku, mis on see, mida lerobot 0.6.1 salvestab. Kas lahendage formaat enne treenimist või kasutage poliitikat, mis loeb v3.0-i loomupäraselt: Pi0.5, SmolVLA või ACT. lerobot tarnib v2.1-lt v3.0-le konverteri ja midagi vastupidist ei ole.
Sources
- LeRobot: Imitatsioonõpe reaalmaailma robotitel
- LeRobot: SO-100 kokkupanek, mootori seadistamine ja kalibreerimine
- LeRobot: Kaamerad ja lerobot-find-cameras
- LeRobot: Paigaldus ja lisade maatriks
- LeRobotDataset v3.0: paigutus ja v2.1 migratsioon
- LeRobot: Video voogedastuse kodeerimine ja kaotatud kaadrid
- LeRobot: Suurte andmekogumite portimine versioonile v3.0 (DROID)
- lerobot v0.6.1 väljalase, 3. august 2026
- DatasetRecordConfig: tegelikud salvestamise vaikesätted
- lerobot_record.py: salvestussilmus ja jätkamise haldamine
- TheRobotStudio/SO-ARM100: ehitusrepo ja materjalide nimekiri
- Hugging Face: LeRoboti kogukonna andmekogumite kontrollnimekiri
- lerobot/svla_so100_pickplace: 50 episoodi, 19 631 kaadrit
- Lin jt (2024), Andmete skaleerimise seadused imitatsioonõppes
- Mandlekar jt (2021), Mis on oluline võrguväliste inimdemonstratsioonide põhjal õppimisel
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