
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.
| Funkcija | Datu tips | Forma | Apraksts |
|---|---|---|---|
| action | float32 | [6] | savienojumu mērķi no vadošās rokas |
| observation.state | float32 | [6] | savienojumu pozīcijas, ko sasniedzis sekotājs |
| observation.images.top | video | [480, 640, 3] | ainas kamera, MP4 (šeit av1) |
| observation.images.wrist | video | [480, 640, 3] | plaukstas kamera, ar tādu pašu ātrumu |
| timestamp | float32 | [1] | sekundes kopš epizodes sākuma |
| frame_index, episode_index, index, task_index | int64 | [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.
Šī 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.

Kas nepieciešams uz darbagalda
| Vienums | Detaļa | Piezīme |
|---|---|---|
| Sekotāja roka | SO-100, seši Feetech STS3215 servomotori | aptuveni 110 līdz 150 EUR detaļās |
| Vadītāja roka | otra SO-100, noņemti zobrati | zobrati noņemti no visiem sešiem vadītāja motoriem: tikai kodētājs, mazāka berze |
| Barošana | saskaņota ar 7.4 V STS3215 variantu materiālu sarakstā | skatīt brīdinājumu zemāk |
| Kameras | divas USB kameras, 640x480 pie 30 kadriem sekundē | viens skats uz ainu, viens uz plaukstas locītavas |
| Resursdators | Python 3.12 vai jaunāks, ffmpeg | requires-python >= 3.12 |
| Hub konts | Hugging Face rakstīšanas marķieris | optional with --dataset.push_to_hub=false |
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
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-infoPapildinā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ā.
- 1Atrodiet 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.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. - 2Ierakstiet 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.
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 3Kalibrējiet abas rokas
Pārvietojiet katru savienojumu uz tā diapazona vidu, nospiediet Enter, pēc tam izvelciet katru cauri tā pilnam diapazonam.
idkļūst par profila faila nosaukumu.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 - 4Veiciet 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.
bashlerobot-teleoperate \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 \ --robot.id=my_so100_follower \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 \ --teleop.id=my_so100_leader \ --display_data=true
Profili 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
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.0Divi 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.
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
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=2Zemā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.
| Karogs | Noklusējums | Ko tas dara |
|---|---|---|
| --dataset.repo_id | empty | nosaukums; pēc noklusējuma pievienots laika zīmogs |
| --dataset.single_task | empty | uzdevuma virkne, kas tiek saglabāta ar katru epizodi |
| --dataset.root | $HF_LEROBOT_HOME/repo_id | rakstīšanas ceļš, noklusējums ~/.cache/huggingface/lerobot/ |
| --dataset.fps | 30 | vadības cilpas ātrums un datu kopas kadru ātrums |
| --dataset.episode_time_s | 60 | sekundes pirms epizode automātiski pāriet uz nākamo |
| --dataset.reset_time_s | 60 | ainas atiestatīšana; roka kustas, nekas netiek saglabāts |
| --dataset.num_episodes | 50 | epizodes, kas ierakstītas šajā sesijā |
| --dataset.push_to_hub | true | augšupielādēt sesijas beigās; false paliek lokāli |
| --dataset.streaming_encoding | false in the dataclass, true in the docs table | kodēt tveršanas laikā; iestatiet to skaidri |
| --dataset.encoder_queue_maxsize | 30 | buferizēti kadri katrai kamerai, ~1 s pie 30 kadriem/s |
| --dataset.encoder_threads | null (codec decides) | pavedieni katram kodētājam; samaziniet, ja tveršana raustās |
| --dataset.no_stamp | false | saglabāt repo_id tieši tā, kā ievadīts |
| --resume | false | pievienot esošai datu kopai; nepieciešams --dataset.root |
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.
| Politika | Min. epizodes | Datu kopas formāts | GPU līmenis | Izmaksas par izpildi |
|---|---|---|---|---|
| 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 |
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.
- 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
- 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.
| Defekts | Kā tas izskatās | No kurienes tas nāk | Kā to atklāt |
|---|---|---|---|
| Apmainīti kameras skati | plaukstas attēls zem augšējās atslēgas | indeksa pārdalīšana pēc atkārtotas pievienošanas | lerobot-find-cameras each session; by-id paths |
| Iesaldēti kadri | viens un tas pats attēls desmitiem rindu | kamera pārtrauc piegādāt; cilpa atkārto pēdējo kadru | scrub it in lerobot-dataset-viz |
| Izlaisti kadri | rindu skaits zem kadriem sekundē reiz sekundes | rinda pārpildās, izlaiž, nevis bloķē | 'Encoder queue full' in the log; rows vs fps times duration |
| Savienojums pie tā robežas | viens savienojums plakans pie min vai max | vadītāja diapazons pārsniedz sekotāja diapazonu, vai slikta vidējā poza | per-joint min/max in ds.meta.stats; lerobot-find-joint-limits beforehand |
| Attēls un darbība nesinhroni | politika paredz vai atpaliek | kameras ar atšķirīgu kadru ātrumu nekā cilpa | keep every camera at --dataset.fps |
| Dīkstāve | garas vienādu darbību rindu sērijas | operators apturēja ierakstītāju, kamēr tas darbojās | share of consecutive identical action rows |
| Neizmantojama uzdevuma virkne | task1, demo2, test | ātra rakstīšana | meta/tasks.parquet in v3.0 (it was meta/tasks.jsonl in v2.1); fix with lerobot-edit-dataset modify_tasks |
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ā.
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"])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.
# 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 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.1 | LeRobot v3.0 | |
|---|---|---|
| Izkārtojums | viens parquet un viens MP4 fails katrai epizodei | daudzas epizodes katrā daļā |
| Epizodes metadati | JSONL faili | sadalīts parquet zem meta/episodes/, izmantojot datu kopu steku |
| Straumes no Hub | nē | jā, izmantojot StreamingLeRobotDataset |
| Rakstījis lerobot 0.6.1 | nē | jā, ko saņemat šodien |
| Lasījis GR00T N1.7 un N1.5 | jā | nē, jākonvertē uz leju |
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.
# 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=falseDivi 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.
Laiks: viens vakars katrai rokai montāžai, sarežģīta pirmā kalibrēšana un pirmā sesija, ko izmetat, jo kamera bija nepareizā slotā.
Darbvirsmas klients ieraksta LeRobot formāta datu kopas, epizodes, kameru plūsmas un savienojumu stāvokļus tieši no teleoperācijas sesijas. Šī datu kopa tiek izmantota apmācības veidlapā: izvēlieties modeli, datu kopu un hiperparametrus, un aizmugursistēma iznomā GPU, kura izmērs atbilst modeļa VRAM, palaiž apmācītāju un raksta kontrolpunktus uz objektu krātuvi.
- 1Instalēt klientu
Uz lejupielādes lapas; iestatīšana klienta dokumentācijā.
- 2Ierakstīt no teleoperācijas sesijas
Vadiet roku; klients raksta epizodes LeRobot formātā. Pamācība: ierakstiet savu pirmo datu kopu.
- 3Vai izmantojiet savus datus
Datu kopa var nākt arī no Hugging Face repozitorija ID vai jūsu pašu mašīnas: datu kopu dokumentācija, publiskais direktorijs.
- 4Apmācīt un palaist atpakaļ
Izvēlieties kombināciju apmācības matricā, pēc tam palaidiet politiku atpakaļ uz rokas. Aptuveni 1 līdz 3 USD 24 GB līmenī, 4 līdz 12 USD A100 vai H100 līmenī.
Tas nemontē un nekalibrē jūsu roku, un tas nelabo bojātu epizodi, tāpēc pārbaudes solis joprojām ir spēkā. Ir arī stingrs ierobežojums otrā galā: ātriem uzdevumiem secinājumiem jāatrodas blakus servomotoriem. Vadības cilpa darbojas 20 līdz 485 ms katram darbības solim, un publiskā interneta apļveida ceļojumi pārvērš strādājošu politiku par svārstīgu.
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 klientuNo 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ā.
Sources
- LeRobot: Atdarināšanas mācīšanās uz reāliem robotiem
- LeRobot: SO-100 montāža, motora iestatīšana un kalibrēšana
- LeRobot: Kameras un lerobot-find-cameras
- LeRobot: Instalācija un papildinājumu matrica
- LeRobotDataset v3.0: izkārtojums un v2.1 migrācija
- LeRobot: Video straumēšanas kodēšana un izlaistie kadri
- LeRobot: Lielu datu kopu pārvietošana uz v3.0 (DROID)
- lerobot v0.6.1 izlaidums, 2026. gada 3. augusts
- DatasetRecordConfig: faktiskie ierakstīšanas noklusējuma iestatījumi
- lerobot_record.py: ierakstīšanas cikls un atsākšanas apstrāde
- TheRobotStudio/SO-ARM100: būvēšanas repozitorijs un materiālu saraksts
- Hugging Face: LeRobot kopienas datu kopu kontrolsaraksts
- lerobot/svla_so100_pickplace: 50 epizodes, 19 631 kadrs
- Lin et al. (2024), Datu mērogošanas likumi atdarināšanas mācīšanā
- Mandlekar et al. (2021), Kas ir svarīgi mācoties no bezsaistes cilvēku demonstrācijām
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