AY-Robots pamācības lapa jūsu pirmās LeRobot datu kopas ierakstīšanai ar SO-100 robotu roku
LeRobotSO-100Datu kopas ierakstīšanaTeleoperācijaImitācijas mācīšanās

Ierakstiet savu pirmo LeRobot datu kopu ar SO-100

AY-Robots ResearchAugust 23, 202616 min lasīšanai

Ierakstiet izmantojamu LeRobot datu kopu ar SO-100: kalibrēšana, līderis-sekotājs teleoperācija, reālās lerobot-record karodziņi un noklusējuma vērtības, kameras iestatīšana, epizožu skaits un defekti, kas sabojā izpildi.

Kāds SO-100 sekotājs, tāda paša dizaina vadošā roka un divas USB kameras var precizēt politiku pēcpusdienā. Tas pats stends var tikpat viegli radīt sešdesmit epizodes, kas failu pārlūkprogrammā izskatās veselīgas un izniekot sešu stundu GPU darbību. Atšķirība reti ir modelī; tā ir tajā, kas notika starp servomotoriem un parketa failu.

Šeit ir manuālais ceļš, tad īsākais. Katra komanda ir no lerobot 0.6.1, kas tika izlaista 2026. gada 3. augustā un ir pašreizējā versija PyPI. Tā pārgāja uz konsoles ieejas punktiem, tāpēc apmācības, kas palaiž python lerobot/scripts/control_robot.py apraksta failu, kas vairs nepastāv.

Īsā versija

  • lerobot 0.6.1 ieraksta v3.0; GR00T N1.7 un N1.5 vēlas v2.1. Vienojieties par formātu pirms nospiežat ierakstīšanas pogu.
  • Četras komandas: lerobot-find-port, lerobot-setup-motors, lerobot-calibrate, lerobot-record. Izmantojiet tos pašus --robot.id un --teleop.id no kalibrēšanas ierakstīšanas sesijā.
  • Reālās noklusējuma vērtības: 30 fps, 60 s uz epizodi, 60 s atiestatīšana, 50 epizodes, aptuveni 100 minūtes reālā laika.
  • Minimālais epizožu skaits šeit: 30 priekš SmolVLA, 50 pārējiem.
  • Daudzveidība pārspēj apjomu. Datu kopas iet bojā četru iemeslu dēļ: samainīti kameras indeksi, izlaisti vai iesaldēti kadri, savienojums apstājies pie tā robežas, nesalasāma uzdevuma virkne.

Ko fiksē ierakstīšanas sesija

A LeRobot datu kopa nav video mape, bet gan laika indeksēta tabula ar pievienotu video: katra vadības cilpas takts ieraksta vienu rindu, kas satur komandēto darbību, stāvokli, ko sasniedzis sekotājs, vienu kadru no katras kameras, laika zīmogu un indeksus. Politika redz tikai šīs kolonnas. Shēma lerobot/svla_so100_pickplace, nolasīta no tās meta/info.json.

FunkcijaDatu tipsFormaApraksts
actionfloat32[6]savienojumu mērķi no vadošās rokas
observation.statefloat32[6]savienojumu pozīcijas, ko sasniedzis sekotājs
observation.images.topvideo[480, 640, 3]ainas kamera, MP4 (šeit av1)
observation.images.wristvideo[480, 640, 3]plaukstas kamera, ar tādu pašu ātrumu
timestampfloat32[1]sekundes kopš epizodes sākuma
frame_index, episode_index, index, task_indexint64[1]automātiski aizpildīta uzskaite

Savienojumi ir main_shoulder_pan, main_shoulder_lift, main_elbow_flex, main_wrist_flex, main_wrist_roll un main_gripper: SO-100 sešas brīvības pakāpes. Darbībai un stāvoklim ir kopīga forma, jo vadošā-sekotāja tālvadība ieraksta mērķi un pozīciju, kas sasniegta vienu soli vēlāk. Šī atšķirība ir informācija: kur roka cīnījās ar gravitāciju vai iestrēgušu objektu. Šīs virknes pieder šai datu kopai. Sesija, kas šodien ierakstīta ar 0.6.1, raksta shoulder_pan.pos līdz gripper.pos, ID no 1 līdz 6 uz kopnes: tie paši seši savienojumi, dažādas atslēgas, kam ir nozīme brīdī, kad konfigurācija adresē funkciju pēc nosaukuma.

Mēraukla no reālas datu kopas

Šī datu kopa satur 50 epizodes un 19 631 kadru ar 30 kadriem sekundē: aptuveni 393 kadrus jeb 13 sekundes katrā epizodē. Ja jūsu vidējais laiks ir minūte, jūs darāt kaut ko grūtāku vai ierakstāt dīkstāves laiku abos galos.

AY-Robots glosārija ieraksts LeRobot datu kopas formātam, parādot direktoriju izkārtojumu un metadatu failus.
Kas atrodas data/, videos/ un meta/, un kuras politikas lasa kuru versiju.

Kas nepieciešams uz darbagalda

VienumsDetaļaPiezīme
Sekotāja rokaSO-100, seši Feetech STS3215 servomotoriaptuveni 110 līdz 150 EUR detaļās
Vadītāja rokaotra SO-100, noņemti zobratizobrati noņemti no visiem sešiem vadītāja motoriem: tikai kodētājs, mazāka berze
Barošanasaskaņota ar 7.4 V STS3215 variantu materiālu sarakstāskatīt brīdinājumu zemāk
Kamerasdivas USB kameras, 640x480 pie 30 kadriem sekundēviens skats uz ainu, viens uz plaukstas locītavas
ResursdatorsPython 3.12 vai jaunāks, ffmpegrequires-python >= 3.12
Hub kontsHugging Face rakstīšanas marķierisoptional with --dataset.push_to_hub=false
7.4 V, nevis 12 V

STS3215 ir pieejams divās versijās: SO-ARM100 README norāda, ka 7.4 V versijas bloķēšanas griezes moments ir 16.5 kg.cm, mērot pie 6 V, un 12 V versijas bloķēšanas griezes moments ir 30 kg.cm, un atzīmē, ka 12 V motoru izvēle nozīmē arī 12 V 5 A+ barošanas avota iegādi, nevis 5 V avota. Materiālu sarakstā ir norādīti 7.4 V servomotori. Barojot 7.4 V servomotorus ar 12 V, tie tiek sabojāti, tāpēc pirms jebkādas vadu pievienošanas izlasiet motora etiķeti. Servomotors nereaģē.

Ja roka vēl nav uzbūvēta, tas ir atsevišķs vakars: sāciet ar SO-100 darba sākšana un pilnīgu SO-100 iestatīšanas rokasgrāmatu. Ja vēl neko neesat iegādājies, vispirms izlasiet SO-100 pret SO-101 salīdzinājumu vispirms: SO-101 ir jaunāka versija ar uzlabotu vadu sistēmu un bez zobratu noņemšanas soļa, un ierakstīšanas darbplūsma ir identiska.

Instalēt 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 izdrukā sistēmas kopsavilkumu, ieskaitot ffmpeg versiju, ko tas var atrast PATH.

Papildinājumi visbiežāk rada problēmas. pip install lerobot instalē tikai galvenās ML atkarības, neko, kas sazinās ar robotu. Koch rokas prasa dynamixel nevis feetech. Ja jūsu čaula nekad nav dzirdējusi par lerobot-record, tas ir iemesls.

Porti, motoru ID un kalibrēšana

Trīs vienreizēji soļi atdala detaļas no funkcionējošas tālvadības cilpas. , ļaujot uz jūsu rokas apmācītai politikai darboties uz citas rokas, kartējot neapstrādātus kodētāja rādījumus kopīgā savienojumu konvencijā.

  1. 1
    Atrodiet katras rokas USB portu

    Palaidiet to ar abām pievienotām rokām, atvienojiet to, kuru identificējat, kad tiek prasīts, un pierakstiet, kurš ports pazūd. Linux sistēmā jums var būt nepieciešams 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
    Ierakstiet motoru ID un datu pārraides ātrumus

    ID tiek rakstīti pa vienam motoram, un dokumentācija ir stingra par to, kā: pievienojiet tieši vienu motoru kontroliera platei, vēl nesavienotu ar citiem. Skripts iet atpakaļgaitā pa ķēdi, vispirms prasot satvērēju un piešķirot tam ID 6, tad plaukstas locītavas rullim ID 5, līdz pleca pannai ID 1. Dariet to pirms montāžas.

    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
    Kalibrējiet abas rokas

    Pārvietojiet katru savienojumu uz tā diapazona vidu, nospiediet Enter, pēc tam izvelciet katru cauri tā pilnam diapazonam. id kļūst par profila faila nosaukumu.

    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
    Veiciet tālvadību pirms jebkā ierakstīšanas

    Pieņemšanas tests visam iepriekš minētajam. Ja tālvadība ir saraustīta, spoguļota vai viens savienojums neseko, ierakstīšana to saglabā 50 epizodēs.

    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
Kur nonāk kalibrēšana un kāpēc ID ir svarīgs

Profili tiek saglabāti $HF_LEROBOT_CALIBRATION, noklusējuma ~/.cache/huggingface/lerobot/calibration, un ID ir meklēšanas atslēga. Dodiet lerobot-record kalibrētu ID, un tas piedāvās Enter, lai atkārtoti izmantotu profilu, vai c, lai to pārtaisītu. Dodiet tam nezināmu ID, un faila nebūs, tāpēc tas pāries kalibrēšanas režīmā sesijas vidū.

Kameras nosaka, ko redz politika

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
Palaidiet to katrā sesijā: dokumentācija brīdina, ka šie identifikatori var mainīties pēc pārstartēšanas vai atkārtotas pievienošanas, atkarībā no operētājsistēmas.

Divi skati, un to novietojumam ir nozīme: fiksēta ainas kamera, kas aptver darba zonu, un plaukstas kamera netālu no gala izpildmehānisma rādot, kam satvērējs grasās pieskarties. LeRobot kopienas datu kopu kontrolsaraksts prasa vēlams divus skatus ar izšķirtspēju 480x640 / 720p vai labāku, statisku fonu, neitrālu stabilu apgaismojumu, un lai vadošā roka un cilvēka ekstremitātes būtu ārpus kadra. Ierakstīšanas ceļvedis piebilst īkšķa likumu: jums vajadzētu spēt veikt uzdevumu pats, skatoties tikai uz kameras attēliem.

Kameras indekss nav stabila identitāte

OpenCV indeksi nāk no uzskaitījuma secības, tāpēc pārstartēšana vai atkārtota pievienošana var likt indeksam 0 un 2 mainīties vietām un novietot plaukstas skatu augšējā slotā uz visu sesiju. lerobot pats to saka: tā kameras klase pieņem ierīces ceļu, kā arī veselu skaitli, un brīdina, ka indeksi ir nestabili pēc pārstartēšanas vai portu maiņas, īpaši Linux sistēmās. Norādiet index_or_path uz udev simbolisko saiti zem /dev/v4l/by-id/, kas seko ierīcei, nevis uzskaitījuma secībai. Tas ir visbiežākais veids, kā datu kopa kļūst iekšēji nekonsekventa, un apmācība to nevar labot. Kamera nav atrasta.

Ierakstīšanas komanda un katrs karogs

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
Kameras vārdnīca ir viena ar čaulas pēdiņām iekļauta virkne; ligzdotās figūriekavas nav čaulas sintakse.

Zemāk norādītās noklusējuma vērtības nāk no src/lerobot/configs/dataset.py galvenajā zarā, nevis no pamācības. Vairākas nav tādas, kā cilvēki pieņem.

KarogsNoklusējumsKo tas dara
--dataset.repo_idemptynosaukums; pēc noklusējuma pievienots laika zīmogs
--dataset.single_taskemptyuzdevuma virkne, kas tiek saglabāta ar katru epizodi
--dataset.root$HF_LEROBOT_HOME/repo_idrakstīšanas ceļš, noklusējums ~/.cache/huggingface/lerobot/
--dataset.fps30vadības cilpas ātrums un datu kopas kadru ātrums
--dataset.episode_time_s60sekundes pirms epizode automātiski pāriet uz nākamo
--dataset.reset_time_s60ainas atiestatīšana; roka kustas, nekas netiek saglabāts
--dataset.num_episodes50epizodes, kas ierakstītas šajā sesijā
--dataset.push_to_hubtrueaugšupielādēt sesijas beigās; false paliek lokāli
--dataset.streaming_encodingfalse in the dataclass, true in the docs tablekodēt tveršanas laikā; iestatiet to skaidri
--dataset.encoder_queue_maxsize30buferizēti kadri katrai kamerai, ~1 s pie 30 kadriem/s
--dataset.encoder_threadsnull (codec decides)pavedieni katram kodētājam; samaziniet, ja tveršana raustās
--dataset.no_stampfalsesaglabāt repo_id tieši tā, kā ievadīts
--resumefalsepievienot esošai datu kopai; nepieciešams --dataset.root
Divas karodziņas, kas negaidīti maksā stundu

Jūsu datu kopa netiek saukta tā, kā ievadījāt. lerobot pievieno datuma-laika tagu, tāpēc so100_pick_cube kļūst par so100_pick_cube_20260823_141530. Izmantojiet --dataset.no_stamp=true stabilam nosaukumam. Atsākšana skaita papildinājumus, nevis kopsummas. Ar --resume=true, --dataset.num_episodes skaita papildu epizodes un --dataset.root kļūst obligāts. Pieprasiet 50 uz 30 epizožu datu kopas un jūs iegūsiet 80.

Tastatūras vadība sesijas laikā

  • Labā bultiņa vai n: beigt epizodi vai agri atiestatīt fāzi. Šo taustiņu izmantosiet visbiežāk, jo tīrai satveršanai reti nepieciešamas 25 sekundes.
  • Kreisā bultiņa vai r: atmest epizodi un atkārtot to. Slikts mēģinājums tagad neko nemaksā, bet vēlāk daudz.
  • Escape vai q: apturēt sesiju, pabeigt kodēšanu, augšupielādēt.
  • Tie darbojas X11, Wayland un bezgalvas SSH: bez globāla taustiņu aizmugursistēmas, lerobot-record nolasa tos pašus taustiņus no kontrolējošā termināļa. Burti saglabājas aizkavētās SSH saitēs, kur bultiņu secības sadalās.
  • Tastatūras teleoperācija ir atšķirīga un tai ir nepieciešama globāla aizmugursistēma: X11, Windows vai macOS ar pieejamību.

Cik daudz epizožu un kā izskatās laba epizode

Ierakstīšanas ceļvedis iesaka vismaz 50 epizodes pirmajam uzdevumam, apmēram 10 katrai objekta atrašanās vietai. Politikas lapas uzskaita minimālo skaitu katram modelim, zem kura izpilde nav GPU laika vērta.

PolitikaMin. epizodesDatu kopas formātsGPU līmenisIzmaksas par izpildi
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

Labāks jautājums ir, cik daudz un kāda veida. Datu mērogošanas likumi imitācijas mācībās robotu manipulācijai (Lin et al., 2024) savāca vairāk nekā 40 000 demonstrāciju un veica vairāk nekā 15 000 reālās pasaules izpildes. Generalizācija aptuveni sekoja pakāpes likuma attiecībām ar vides un objektu skaitu, un, pārsniedzot slieksni katrai videi vai objektam, papildu demonstrācijām bija minimāla ietekme. Uz viena stenda: pārvietojiet objektu, mainiet apgaismojumu, nomainiet kubu, nevis atkārtojiet vienu pašu paņēmienu.

Līderis-sekotājs tālvadība kā datu avots
Priekšrocības
  • Nepārtrauktas savienojumu trajektorijas, ko var reproducēt servo, atšķirībā no tastatūras vai spēļu pults
  • Darbība un stāvoklis dala koordinātu konvenciju, tāpēc politika apgūst mērķi, ko tā var tieši komandēt
  • 25 sekunžu epizode plus 10 sekunžu atiestatīšana ir aptuveni 100 epizodes stundā
  • Operators jūt, ka sekotājs apstājas vai iestrēgst, tāpēc kļūdas parādās pirms datu apstiprināšanas
Kompromisi
  • Otra roka aptuveni dubulto detaļu izmaksas
  • Demonstrācijas pārmanto operatora ieradumus; Mandlekar et al. atklāja, ka politikas kvalitāte ir ļoti atkarīga no demonstrācijas kvalitātes
  • Līderis tiek ņemts ar cilpas ātrumu, tāpēc pauzes kļūst par gandrīz identiskām rindām, kas māca politikai gaidīt
  • Nekas nenodrošina konsekvenci starp sesijām: kamera, kas pabīdīta par 5 cm, ir slēpta sadalījuma maiņa

Labs labs ir garlaicīgs: atkārtojama sākuma poza, viena lieta paveikta, beidzas, kad objekts ir tvertnē, uzdevuma virkne 25 līdz 50 rakstzīmēs, ko iesaka kontrolsaraksts. Paņem sarkano kubu un iemet to kastē ir uzdevuma virkne; task1 ir pret-modelis, ko kontrolsaraksts skaidri nosauc. Neskaidras anotācijas ir tā problēmu saraksta augšgalā, un tās ir vissvarīgākās , kur virkne ir modeļa ievade, nevis faila nosaukums.

Defekti, kas klusi sabojā datu kopu

Neviens neizraisa izņēmumu. Visi saglabājas apmācībā, parādoties kā zaudējumu līkne, kas izskatās labi, un robots, kas neko nedara. Pārbaudiet, kamēr aina ir iestatīta.

DefektsKā tas izskatāsNo kurienes tas nākKā to atklāt
Apmainīti kameras skatiplaukstas attēls zem augšējās atslēgasindeksa pārdalīšana pēc atkārtotas pievienošanaslerobot-find-cameras each session; by-id paths
Iesaldēti kadriviens un tas pats attēls desmitiem rindukamera pārtrauc piegādāt; cilpa atkārto pēdējo kadruscrub it in lerobot-dataset-viz
Izlaisti kadririndu skaits zem kadriem sekundē reiz sekundesrinda pārpildās, izlaiž, nevis bloķē'Encoder queue full' in the log; rows vs fps times duration
Savienojums pie tā robežasviens savienojums plakans pie min vai maxvadītāja diapazons pārsniedz sekotāja diapazonu, vai slikta vidējā pozaper-joint min/max in ds.meta.stats; lerobot-find-joint-limits beforehand
Attēls un darbība nesinhronipolitika paredz vai atpaliekkameras ar atšķirīgu kadru ātrumu nekā cilpakeep every camera at --dataset.fps
Dīkstāvegaras vienādu darbību rindu sērijasoperators apturēja ierakstītāju, kamēr tas darbojāsshare of consecutive identical action rows
Neizmantojama uzdevuma virknetask1, demo2, testātra rakstīšanameta/tasks.parquet in v3.0 (it was meta/tasks.jsonl in v2.1); fix with lerobot-edit-dataset modify_tasks
Nomestie kadri slēpjas

Kodētājs katrai kamerai uztur ierobežotu rindu, pēc noklusējuma 30 kadrus. Ja tas nespēj tikt līdzi, kadri tiek nomesti, nevis bloķēti: tveršana turpinās un nekas neapstājas. Jūs saņemat Encoder queue full for {camera}, dropped N frame(s) un kopējo kadru skaitu katrai kamerai epizodes beigās. Lerobot slieksnis: aptuveni 5 procenti trūkstošo kadru nozīmē pārslogotu sistēmu, 2 procenti ir paredzamā starta slodze. Labojumi secībā: --display_data=false, samazināt --dataset.encoder_threads, vcodec=h264, izslēgt straumēšanu.

Viens brīdinājums: straumēšanas-kodēšanas ceļveža tabulā noklusējuma vērtība ir norādīta kā True, savukārt galvenajā datu klasē ir norādīts streaming_encoding: bool = False. Dokumentācija un kods atšķiras, tāpēc iestatiet to skaidri; lerobot reģistrē ieteikumu, kad vien tas tiek palaists ar izslēgtu karogu.

Pārbaudiet datu kopu pirms GPU nomas

Pieņemšanas tests no dokumentācijas: salīdziniet video ilgumu ar epizodes ilgumu, ko ziņoja CLI, un apstipriniet, ka rindu skaits ir vienāds ar kadriem sekundē reiz ilgums. Katrā epizodē, nevis kopumā.

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"])
Epizode, kuras kadru skaits sekundē (fps) reiz ilgums ievērojami atšķiras no paredzētā, ir jādzēš, nevis jāizmanto apmācībai.

Pēc tam apskatiet to. lerobot-dataset-viz atkārto epizodi kadru pa kadram ar savienojumu pēdām blakus kameras skatiem, Rerun vai Foxglove. Samainītas kameras un iesaldēti kadri parādās desmit sekundēs. Cilvēki izlaiž šo soli.

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 veic arī sadalīšanu, apvienošanu, funkciju noņemšanu, uzdevumu modificēšanu un statistikas pārrēķināšanu. Dzēsiet dāsni: slikta epizode maksā vienas epizodes vērtību; tās saglabāšana maksā katru apmācību, kas uz tās balstīta.
AY-Robots datu kopu direktorijs, kurā uzskaitītas publiskās LeRobot datu kopas ar epizožu skaitu un formātiem
Kā tiek izmērītas un anotētas salīdzināmas datu kopas.

v2.1 vai v3.0: izlemiet pirms ierakstīšanas

v2.1 katrai epizodei ierakstīja vienu parquet un vienu MP4 failu. v3.0 apvieno daudzas epizodes kopīgās daļās un atjauno robežas no metadatiem, tāpēc info.json satur ceļa veidnes, piemēram, data/chunk-{chunk_index:03d}/file-{file_index:03d}.parquet nevis epizodes numuru. Augšupējais pamatojums ir mazāk, lielāku failu: ātrāka inicializācija un mazāks failu sistēmas noslogojums mērogā.

LeRobot v2.1LeRobot v3.0
Izkārtojumsviens parquet un viens MP4 fails katrai epizodeidaudzas epizodes katrā daļā
Epizodes metadatiJSONL failisadalīts parquet zem meta/episodes/, izmantojot datu kopu steku
Straumes no Hubjā, izmantojot StreamingLeRobotDataset
Rakstījis lerobot 0.6.1jā, ko saņemat šodien
Lasījis GR00T N1.7 un N1.5nē, jākonvertē uz leju
Ierakstīšana šodien, GR00T apmācība rīt

lerobot 0.6.1 raksta v3.0, bet GR00T N1.7 un N1.5 lasa v2.0 vai v2.1 un avarē ar to. Ņemiet vērā virzienu: src/lerobot/scripts/ satur convert_dataset_v21_to_v30.py un nekas nenotiek pretējā virzienā. Atrisiniet to pirms sesijas. Labojums: datu kopa noraidīta kā 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
Ātri 50 epizodēm. Mērogošana ir cits uzdevums: lerobot portēšanas ceļvedis, lai neapstrādātu DROID pārveidotu uz v3.0, paredz 7+ dienas lokālai apstrādei un aptuveni 400 GB.

Divi ceļi uz vienu un to pašu datu kopu

Viss iepriekš minētais, jūsu pašu mašīnā: jūs pārvaldāt USB uzskaitījumu, ffmpeg būvējumu, kodētāja regulēšanu un kalibrēšanas failus. Pareizais ceļš, lai saprastu cauruļvadu, palaistu neparastu kameru iekārtu vai saglabātu datus lokāli.

Cik maksā šis ceļš

Laiks: viens vakars katrai rokai montāžai, sarežģīta pirmā kalibrēšana un pirmā sesija, ko izmetat, jo kamera bija nepareizā slotā.

Ierakstiet LeRobot datu kopas, neinstalējot cauruļvadu pats

AY-Robots darbvirsmas klients ieraksta epizodes, kameru plūsmas un savienojumu stāvokļus LeRobot formātā no teleoperācijas sesijas, pēc tam nodod datu kopu apmācītājam.

Iegūt darbvirsmas klientu

No datu kopas līdz politikai

Piecdesmit tīras epizodes nodrošina katru izpildi šeit. apmācās no nulles tikai jūsu uzdevumam, aptuveni 80 M parametri ar aptuveni 20 ms uz vienu darbības soli, vienīgais no pieciem, kas ir piemērots ātrai kustībai. ir aptuveni 450 M parametri uz 24 GB kartes. ir aptuveni 3 B parametru pamata modelis, kur skar aptuveni 40 M parametrus, nepieciešama A100 vai H100, un vēlas to v2.1 datu kopu.

Tālāk, ceļvedis jūsu kombinācijai: , vai ; pirmajai palaišanai, ir īsāks. Ja politika darbojas uz stenda, bet sabrūk brīdī, kad pārvietojat galdu, tā ir datu problēma: un iedziļinās daudzveidībā.

Cik daudz epizožu man patiešām nepieciešams pirmajai funkcionējošai politikai?

Trīsdesmit SmolVLA, piecdesmit ACT, Pi0.5, GR00T N1.5 un N1.7, minimālais skaits, ko pieprasa AY-Robots apmācītāji. LeRobot ceļvedis neatkarīgi iesaka vismaz 50 pirmajam uzdevumam, aptuveni 10 uz katru objekta atrašanās vietu. Datu mērogošanas pētījumi atklāja, ka vispārināšana mērogojas ar vidēm un objektiem, nevis demonstrāciju skaitu, tāpēc simts vienas ainas ieraksti ir sliktāki nekā piecdesmit piecās dažādās izvietojumos.

Vai man ir nepieciešama vadošā roka, vai es varu teleoperēt ar tastatūru?

lerobot nodrošina tastatūras un spēļu pults teleoperatorus, tāpēc vadošā roka nav stingri nepieciešama, taču tā ir ļoti ieteicama: vadītājs-sekotājs nodrošina nepārtrauktas locītavu trajektorijas ierakstītās darbības koordinātu konvencijā, savukārt tastatūras ievade rada pakāpenisku kustību, ko politika apgūst kā rāvienu. Tastatūras teleoperācijai ir nepieciešama arī globāla taustiņu aizmugursistēma, tāpēc tā nedarbojas Wayland un bezgalvas režīmā.

Vai es varu ierakstīt ar Raspberry Pi vai mazu mini datoru?

Jā, ar pielāgošanu. Straumes kodēšanas ceļvedī ir zemu resursu kategorija, kas aptver modernas 4 kodolu mašīnas un Raspberry Pi 5, un tas ievieto divas kameras ar 640x480 un 30 fps savā "nepieciešama-kāda-pielāgošana" kolonnā. Tā padoms: apturiet kodētāju, kas konkurē ar uztveršanas cilpu, izmantojot --dataset.rgb_encoder.vcodec=h264 un --dataset.streaming_encoding=false. Tas novērtē divas kameras ar 640x480 kā aptuveni 55 miljonus pikseļu sekundē un divas ar 1920x1080 kā aptuveni 373 miljonus.

Kā es zinu, ka tikko ierakstītā datu kopa patiešām ir veselīga?

Trīs vienkāršas pārbaudes. Salīdziniet katras epizodes video ilgumu ar ilgumu, ko ziņoja CLI, un apstipriniet, ka rindu skaits ir vienāds ar fps reiz šo ilgumu, uz epizodi, nevis kopumā; tas ir pieņemšanas tests, ko sniedz lerobot kodēšanas ceļvedis. Izlasiet ds.meta.stats, kur locītava, kuras min ir vienāds ar tās max, nekad nav kustējusies. Pēc tam atskaņojiet divas vai trīs epizodes lerobot-dataset-viz, tas ir vienīgais veids, kā parādās apmainīti skati un iesaldēti kadri. Par izlaistiem kadriem ceļvedis nosaka robežu aptuveni 5 procentu trūkstošo kadru apmērā; aptuveni 2 procenti ir normāla pārejoša slodze, bieži vien tikai startēšanas laikā.

Mans apmācības uzdevums noraidīja datu kopu kā v3.0. Ko tagad?

GR00T N1.7 un N1.5 lasa LeRobot v2.0 vai v2.1 un avarē ar v3.0, ko ieraksta lerobot 0.6.1. Vai nu vienojieties par formātu pirms apmācības, vai izmantojiet politiku, kas lasa v3.0 dabiski: Pi0.5, SmolVLA vai ACT. lerobot nodrošina v2.1 uz v3.0 pārveidotāju un neko pretējā virzienā.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started