AY-Robots õpetuse leht oma esimese LeRoboti andmestiku salvestamiseks SO-100 käega
LeRobotSO-100Andmestiku salvestamineTeleoperatsioonImitatsioonõpe

Salvesta oma esimene LeRoboti andmestik SO-100-ga

AY-Robots ResearchAugust 23, 202616 min lugemist

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.

TunnusandmetüüpKujuMida see on
actionfloat32[6]juhtkäe liigeste sihtmärgid
observation.statefloat32[6]jälgija saavutatud liigeste asendid
observation.images.topvideo[480, 640, 3]stseenikaamera, MP4 (siin av1)
observation.images.wristvideo[480, 640, 3]randmekaamera, sama kiirus
timestampfloat32[1]sekundid alates episoodi algusest
frame_index, episode_index, index, task_indexint64[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.

Mõõdupuu reaalsest andmestikust

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.

AY-Robots sõnastiku kirje LeRobot andmestiku formaadi kohta, näidates kataloogistruktuuri ja metaandmete faile.
Mis asub kaustades data/, videos/ ja meta/, ning millised poliitikad loevad millist versiooni.

Mida vajate töölaual

EseDetailMärkus
Järgija käsiSO-100, six Feetech STS3215 servosumbes 110 kuni 150 EUR osadena
Juhtkäsia second SO-100, gears removedkõigilt kuuelt juhtmootorilt eemaldatud käigud: ainult kodeerija, vähem hõõrdumist
Toidematched to the 7.4 V STS3215 variant in the bill of materialsvt allolevat hoiatust
Kaameradtwo USB cameras, 640x480 at 30 fpsüks stseenivaade, üks randmel
HostPython 3.12 or newer, ffmpegrequires-python >= 3.12
Hubi kontoHugging Face write tokenoptional with --dataset.push_to_hub=false
7.4 V, mitte 12 V

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

bash
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-info
lerobot-info prindib süsteemi kokkuvõtte, sealhulgas ffmpeg versiooni, mille see PATH-ist leiab.

Lisad 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.

  1. 1
    Leidke 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.

    bash
    lerobot-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.
  2. 2
    Kirjutage 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.

    bash
    lerobot-setup-motors \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0
    
    lerobot-setup-motors \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1
  3. 3
    Kalibreerige 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.

    bash
    lerobot-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
  4. 4
    Teleopereerige 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.

    bash
    lerobot-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
Kuhu kalibreerimine salvestatakse ja miks ID oluline on

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

bash
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.0
Käivita see igal sessioonil: dokumendid hoiatavad, et need identifikaatorid võivad pärast taaskäivitust või uuesti ühendamist muutuda, sõltuvalt operatsioonisüsteemist.

Kaks 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.

Kaamera indeks ei ole stabiilne identifikaator

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

bash
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=2
Kaamera sõnastik on üks shelli-tsiteeritud string; pesastatud sulud ei ole shelli süntaks.

Allpool toodud vaikeväärtused pärinevad failist src/lerobot/configs/dataset.py (main harust), mitte õpetusest. Mõned neist ei ole need, mida inimesed eeldavad.

LippVaikeväärtusMida see teeb
--dataset.repo_idemptynimi; ajatempel lisatakse vaikimisi
--dataset.single_taskemptyülesande string, mis salvestatakse iga episoodiga
--dataset.root$HF_LEROBOT_HOME/repo_idkirjutamise tee, vaikeväärtus ~/.cache/huggingface/lerobot/
--dataset.fps30juhtimistsükli kiirus ja andmestiku kaadrisagedus
--dataset.episode_time_s60sekundid enne episoodi automaatset edasiliikumist
--dataset.reset_time_s60stseeni lähtestamine; käsi liigub, midagi ei salvestata
--dataset.num_episodes50sellel sessioonil salvestatud episoodid
--dataset.push_to_hubtruelaadimine üles sessiooni lõpus; false jätab kohalikuks
--dataset.streaming_encodingfalse in the dataclass, true in the docs tablekodeerimine jäädvustamise ajal; määra see selgesõnaliselt
--dataset.encoder_queue_maxsize30puhverdatud kaadrid kaamera kohta, ~1 s kiirusel 30 fps
--dataset.encoder_threadsnull (codec decides)lõimed kodeerija kohta; vähenda, kui jäädvustamine katkeb
--dataset.no_stampfalsehoia repo_id täpselt nii, nagu sisestatud
--resumefalselisa olemasolevale andmestikule; vajab --dataset.root
Kaks lippu, mis ootamatult tunni maksma lähevad

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.

PoliitikaMinimaalselt episoodeAndmestiku formaatGPU taseKulu käituse kohta
SmolVLA30LeRobot v3.0RTX 4090 or any 24 GB cardabout 1 to 3 USD
ACT50LeRobot v3.0RTX 4090 or any 24 GB cardabout 1 to 3 USD
GR00T N1.750LeRobot v2.0 or v2.1A100 80 GB or H100 80 GBabout 4 to 12 USD
GR00T N1.550LeRobot v2.0 or v2.1A100 80 GB or H100 80 GBabout 4 to 12 USD
Pi0.550LeRobot v3.0A100 80 GB or H100 80 GBabout 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.

Juht-järgija teleoperatsioon andmeallikana
Eelised
  • 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
Kompromissid
  • 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.

VigaKuidas see välja näebKust see tulebKuidas seda tabada
Vahetatud kaameravaatedrandme pilt ülemise võtme allindeksi ümberjaotamine pärast uuesti ühendamistlerobot-find-cameras each session; by-id paths
Külmunud kaadridsama pilt kümnete ridade jaokskaamera lõpetab edastamise; tsükkel kordab viimast kaadritscrub it in lerobot-dataset-viz
Kaotatud kaadridridade arv alla kaadrite sekundis korda sekunditejä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 maksimumisjuhtiva liigendi ulatus ületab järgija oma, või halb keskmine asendper-joint min/max in ds.meta.stats; lerobot-find-joint-limits beforehand
Pilt ja tegevus sünkroonist väljaspoliitika ennetab või jääb mahakaamerad erineva kaadrite sekundis kiirusega kui tsükkelkeep every camera at --dataset.fps
Surnud aegpikad jooksmised identsete tegevusridadegaoperaator peatas salvestaja töötamise ajaljärjestikuste identsete tegevusridade osakaal
Kasutamatu ülesande stringtask1, demo2, testkiire tippiminemeta/tasks.parquet in v3.0 (it was meta/tasks.jsonl in v2.1); fix with lerobot-edit-dataset modify_tasks
Kaotatud kaadrid peidavad end

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.

python
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"])
Episood, mille kaadrisagedus korda kestus on oluliselt erinev, on kustutamise, mitte treenimise kandidaat.

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.

bash
# 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]"
lerobot-edit-dataset teeb ka jagamist, ühendamist, tunnuste eemaldamist, ülesannete muutmist ja statistika ümberarvutamist. Kustutage heldelt: halb episood maksab ühe episoodi; selle allesjätmine maksab iga sellel treenitud käivituse.
AY-Robotsi andmestiku kataloog, mis loetleb avalikke LeRoboti andmestikke episoodide arvu ja formaatidega
Kuidas võrreldavad andmestikud on suuruse ja annotatsiooniga.

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.1LeRobot v3.0
Paigutusüks parquet ja üks MP4 episoodi kohtamitu episoodi killu kohta
Episoodi metaandmedJSONL failidtükeldatud parquet kausta meta/episodes/ all, läbi andmestiku virna
Voogedastus Hubisteijah, läbi StreamingLeRobotDataset
Kirjutanud lerobot 0.6.1eijah, mida täna saad
Loetav GR00T N1.7 ja N1.5 pooltjahei, tuleb teisendada allapoole
Salvestamine täna, GR00T treenimine homme

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.

bash
# 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=false
Kiire 50 episoodi jaoks. Mastaap on teine töö: lerobot'i teisaldusjuhend, toore DROID-i v3.0-ks teisendamiseks, arvestab 7+ päeva kohalikku töötlemist ja umbes 400 GB.

Kaks 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.

Mida see tee maksab

Aeg: õhtu käe kohta kokkupanekuks, tülikas esimene kalibreerimine ja esimene seanss, mille viskate minema, sest kaamera oli vales pesas.

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öölauaklient

Andmestikust 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.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started