Ukurasa wa mafunzo wa AY-Robots kwa ajili ya kurekodi seti yako ya kwanza ya data ya LeRobot ukitumia mkono wa SO-100
LeRobotSO-100Kurekodi Seti ya DataUendeshaji wa MbaliKujifunza kwa Kuiga

Rekodi Seti Yako ya Kwanza ya Data ya LeRobot Ukitumia SO-100

AY-Robots ResearchAugust 23, 202616 dakika za kusoma

Rekodi seti ya data ya LeRobot inayoweza kutumika ukitumia SO-100: usawazishaji, uendeshaji wa mbali wa kiongozi-mfuasi, bendera na mipangilio halisi ya lerobot-record, usanidi wa kamera, idadi ya vipindi, na kasoro zinazoharibu utendaji.

Kifuatiliaji cha SO-100, mkono kiongozi wa muundo uleule na kamera mbili za USB zinaweza kurekebisha sera kwa usahihi alasiri moja. Benchi hilohilo linaweza kutoa kwa urahisi vipindi sitini vinavyoonekana vizuri kwenye kivinjari cha faili na kupoteza muda wa saa sita wa kuendesha GPU. Tofauti mara chache siyo modeli; ni kile kilichotokea kati ya serva na faili ya parquet.

Huu hapa ni njia ya mwongozo, kisha ile fupi zaidi. Kila amri inatoka lerobot 0.6.1, iliyotolewa Agosti 3, 2026 na ya sasa kwenye PyPI. Imehamia kwenye sehemu za kuingilia za koni, kwa hivyo mafunzo yanayoendesha python lerobot/scripts/control_robot.py yanaelezea faili ambayo haipo tena.

Toleo fupi

  • lerobot 0.6.1 hurekodi v3.0; GR00T N1.7 na N1.5 zinataka v2.1. Kaa sawa na umbizo kabla ya kubonyeza rekodi.
  • Amri nne: lerobot-find-port, lerobot-setup-motors, lerobot-calibrate, lerobot-record. Beba --robot.id na --teleop.id zilezile kutoka kwenye urekebishaji hadi kwenye kipindi cha kurekodi.
  • Mipangilio chaguomsingi halisi: 30 fps, sekunde 60 kwa kila kipindi, sekunde 60 za kuweka upya, vipindi 50, takriban dakika 100 za saa halisi.
  • Vipindi vya chini kabisa hapa: 30 kwa SmolVLA, 50 kwa vingine.
  • Utofauti unashinda wingi. Seti za data hufa kutokana na mambo manne: faharisi za kamera zilizobadilishwa, fremu zilizodondoshwa au kuganda, kiungo kilichosimama kwenye kikomo chake, mfuatano wa kazi usiosomeka.

Kile ambacho kipindi cha kurekodi kinanasa

Hifadhidata ya LeRobot si folda ya video bali ni jedwali lililopangwa kwa wakati na video iliyoambatishwa: kila tiki ya kitanzi cha udhibiti huandika safu moja yenye kitendo kilichoamriwa, hali ambayo mfuasi alifikia, fremu moja kwa kila kamera, muhuri wa muda na faharisi. Sera huona safu hizo tu. Mpangilio wa lerobot/svla_so100_pickplace, iliyosomwa kutoka meta/info.json yake.

KipengeleAina ya dataUmboNi nini
actionfloat32[6]malengo ya viungo kutoka mkono wa kiongozi
observation.statefloat32[6]nafasi za viungo ambazo mfuasi alifikia
observation.images.topvideo[480, 640, 3]kamera ya eneo, MP4 (av1 hapa)
observation.images.wristvideo[480, 640, 3]kamera ya kifundo cha mkono, kiwango sawa
timestampfloat32[1]sekunde tangu kuanza kwa kipindi
frame_index, episode_index, index, task_indexint64[1]uhasibu unaojazwa kiotomatiki

Viungo ni main_shoulder_pan, main_shoulder_lift, main_elbow_flex, main_wrist_flex, main_wrist_roll na main_gripper: sita za SO-100 viwango vya uhuru. Kitendo na hali hushiriki umbo kwa sababu teleoperesheni ya kiongozi-mfuasi hurekodi lengo na nafasi iliyofikiwa hatua moja baadaye. Pengo hilo ni habari: ambapo mkono ulipambana na mvuto au kitu kilichokwama. Nyongeza hizo ni za hifadhidata hiyo. Kipindi kilichorekodiwa na 0.6.1 leo huandika shoulder_pan.pos kupitia gripper.pos, vitambulisho 1 hadi 6 kwenye basi: viungo sita vile vile, funguo tofauti, jambo ambalo ni muhimu wakati usanidi unapotaja kipengele kwa jina.

Kipimo kutoka hifadhidata halisi

Hifadhidata hiyo ina vipindi 50 na fremu 19,631 kwa 30 fps: takriban fremu 393, au sekunde 13, kwa kila kipindi. Ikiwa yako wastani wa dakika moja, unafanya kitu kigumu zaidi au unarekodi muda usiotumika pande zote mbili.

Kuingia kwa faharasa ya AY-Robots kwa umbizo la hifadhidata ya LeRobot, ikionyesha mpangilio wa saraka na faili za metadata
Kinachokaa katika data/, videos/ na meta/, na sera zipi husoma toleo lipi.

Unachohitaji kwenye benchi

KipengeeMaelezoKumbuka
Mkono wa mfuasiSO-100, Feetech STS3215 servosi sitakama EUR 110 hadi 150 kwa vipuri
Mkono wa kiongoziSO-100 ya pili, gia zimeondolewagia zimeondolewa kutoka kwa mota zote sita za kiongozi: kirekodi tu, msuguano mdogo
Nguvuinalingana na toleo la 7.4 V STS3215 katika orodha ya vifaatazama onyo hapa chini
Kamerakamera mbili za USB, 640x480 kwa 30 fpsmtazamo mmoja wa eneo, mmoja kwenye kifundo cha mkono
MwenyejiPython 3.12 au mpya zaidi, ffmpegrequires-python >= 3.12
Akaunti ya Hubtokeni ya kuandika ya Hugging Faceoptional with --dataset.push_to_hub=false
7.4 V, si 12 V

STS3215 inakuja katika matoleo mawili: SO-ARM100 README inakadiria toleo la 7.4 V kwa torque ya kukwama ya 16.5 kg.cm iliyopimwa kwa 6 V na toleo la 12 V kwa 30 kg.cm, na inabainisha kuwa kuchukua mota za 12 V pia kunamaanisha kununua usambazaji wa 12 V 5 A+ badala ya ule wa 5 V. Orodha ya vifaa inaorodhesha servosi za 7.4 V. Kutoa 12 V kwa servosi zilizokadiriwa 7.4 V huziharibu, kwa hivyo soma lebo ya mota kabla ya kuunganisha chochote. Servo haijibu.

Ikiwa mkono haujajengwa bado, hiyo ni kazi ya jioni tofauti: anza na SO-100 kuanza kutumia na mwongozo kamili wa usanidi wa SO-100. Ikiwa haujanunua chochote, soma ulinganisho wa SO-100 dhidi ya SO-101 kwanza: SO-101 ni toleo jipya zaidi lenye nyaya zilizoboreshwa na hakuna hatua ya kuondoa gia, na mchakato wa kurekodi ni sawa.

Sakinisha 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 huchapisha muhtasari wa mfumo, ikijumuisha toleo la ffmpeg linaloweza kupatikana kwenye PATH.

Viongezeo huwachanganya watu zaidi. pip install lerobot husakinisha tu vitegemezi vya msingi vya ML, hakuna kinachozungumza na roboti. Mikono ya Koch inahitaji dynamixel badala ya feetech. Ikiwa shell yako haijawahi kusikia kuhusu lerobot-record, hii ndiyo sababu.

Bandari, Vitambulisho vya Motori na Usawazishaji

Hatua tatu za mara moja zinasimama kati ya sehemu na kitanzi cha teleop kinachofanya kazi. hufanya sera iliyefunzwa kwenye mkono wako iendeshwe kwenye mkono wa mtu mwingine, ikipanga hesabu za encoder ghafi kwenye makubaliano ya pamoja ya viungo.

  1. 1
    Pata bandari ya USB ya kila mkono

    Iendeshe ikiwa na mikono yote miwili imechomekwa, chomoa ule unaoutambua unapoombwa, na uangalie ni bandari ipi inayopotea. Kwenye Linux unaweza kuhitaji 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
    Andika vitambulisho vya motor na baudrates

    Vitambulisho huandikwa motor moja kwa wakati, na nyaraka ni kali kuhusu jinsi: unganisha motor moja tu kwenye bodi ya kidhibiti, bado haijaunganishwa kwa mnyororo na nyingine yoyote. Skripti inatembea mnyororo kinyume, ikiomba gripper kwanza na kuipa kitambulisho 6, kisha wrist_roll kama 5, hadi shoulder_pan kama 1. Ifanye kabla ya kuunganisha.

    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
    Sawazisha mikono yote miwili

    Sogeza kila kiungo katikati ya masafa yake, bonyeza Enter, kisha pitisha kila kimoja kupitia masafa yake kamili. id inakuwa jina la faili ya wasifu.

    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
    Endesha teleoperation kabla ya kurekodi chochote

    Jaribio la kukubalika kwa yote yaliyo hapo juu. Ikiwa teleoperation inatetemeka, imeakisiwa, au kiungo kimoja hakitafuata, kurekodi huhifadhi hilo katika vipindi 50.

    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
Usawazishaji unakohifadhiwa, na kwa nini kitambulisho ni muhimu

Wasifu huenda kwenye $HF_LEROBOT_CALIBRATION, chaguomsingi ~/.cache/huggingface/lerobot/calibration, na kitambulisho ndicho ufunguo wa kutafuta. Ipe lerobot-record kitambulisho kilichosawazishwa na itatoa Enter ili kutumia tena wasifu au c ili kuufanya upya. Ipe kitambulisho kisichojulikana na hakuna faili, kwa hivyo itaingia kwenye usawazishaji katikati ya kipindi.

Kamera huamua sera inaona nini

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
Endesha hii kila kipindi: nyaraka zinaonya vitambulisho hivi vinaweza kubadilika baada ya kuwasha upya au kuunganisha tena, kulingana na mfumo wa uendeshaji.

Mitazamo miwili, na mahali inakokaa ni muhimu: kamera ya eneo isiyohamishika inayofunika nafasi ya kazi, na kamera ya mkono karibu na kiambato cha mwisho inayoonyesha kile kishikio kinakaribia kugusa. Orodha ya LeRobot ya hifadhidata za jamii inaomba ikiwezekana mitazamo miwili kwa 480x640 / 720p au bora zaidi, mandharinyuma tuli, mwangaza thabiti usioegemea upande wowote, na mkono wa kiongozi na viungo vya binadamu nje ya fremu. Mwongozo wa kurekodi unaongeza kanuni ya jumla: unapaswa kuweza kufanya kazi mwenyewe kwa kuangalia tu picha za kamera.

Kielezo cha kamera si utambulisho thabiti

Viashiria vya OpenCV hutokana na mpangilio wa kuorodhesha, kwa hivyo kuwasha upya au kuunganisha tena kunaweza kufanya viashiria 0 na 2 kubadilishana nafasi na kuweka mtazamo wa mkono kwenye nafasi ya juu kwa kipindi chote. lerobot inasema yenyewe: darasa lake la kamera huchukua njia ya kifaa pamoja na nambari kamili, na inaonya kuwa viashiria si thabiti baada ya kuwasha upya au mabadiliko ya bandari, hasa kwenye Linux. Elekeza index_or_path kwenye symlink ya udev chini ya /dev/v4l/by-id/, ambayo inafuata kifaa badala ya mpangilio wa kuorodhesha. Hii ndiyo njia ya kawaida ambayo hifadhidata huishia kutofautiana ndani, na mafunzo hayawezi kurekebisha. Kamera haijagunduliwa.

Amri ya kurekodi na kila bendera

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
Kamusi ya kamera ni mfuatano mmoja uliowekwa nukuu na shell; mabano yaliyowekwa ndani si sintaksia ya shell.

Mipangilio chaguomsingi iliyo hapa chini inatoka src/lerobot/configs/dataset.py kwenye tawi kuu, si mafunzo. Baadhi si kama watu wanavyodhani.

BenderaChaguomsingiInachofanya
--dataset.repo_idemptyjina; muhuri wa muda huongezwa kwa chaguomsingi
--dataset.single_taskemptymfuatano wa kazi unaohifadhiwa na kila kipindi
--dataset.root$HF_LEROBOT_HOME/repo_idnjia ya kuandika, chaguomsingi ~/.cache/huggingface/lerobot/
--dataset.fps30kiwango cha kitanzi cha udhibiti na kiwango cha fremu cha hifadhidata
--dataset.episode_time_s60sekunde kabla ya kipindi kuendelea kiotomatiki
--dataset.reset_time_s60kuweka upya eneo; mkono husogea, hakuna kinachohifadhiwa
--dataset.num_episodes50vipindi vilivyorekodiwa katika kikao hiki
--dataset.push_to_hubtruepakia mwishoni mwa kikao; false hubaki ndani
--dataset.streaming_encodingfalse in the dataclass, true in the docs tableencode wakati wa kunasa; iweke wazi
--dataset.encoder_queue_maxsize30fremu zilizohifadhiwa kwa kila kamera, ~1 s kwa 30 fps
--dataset.encoder_threadsnull (codec decides)nyuzi kwa kila encoder; punguza ikiwa unasa unakwama
--dataset.no_stampfalseweka repo_id kama ilivyoandikwa
--resumefalseongeza kwenye hifadhidata iliyopo; inahitaji --dataset.root
Bendera mbili zinazogharimu saa moja bila kutarajia

Hifadhidata yako haiitwi kama ulivyoandika. lerobot huongeza lebo ya tarehe na saa, hivyo so100_pick_cube inakuwa so100_pick_cube_20260823_141530. Tumia --dataset.no_stamp=true kwa jina thabiti. Endelea huhesabu nyongeza, si jumla. Ukiwa na --resume=true, --dataset.num_episodes huhesabu vipindi vya ziada na --dataset.root inakuwa lazima. Omba 50 kwenye hifadhidata ya vipindi 30 na utapata 80.

Udhibiti wa kibodi wakati wa kipindi

  • Mshale wa kulia au n: maliza kipindi au weka upya awamu mapema. Ufunguo unaotumia zaidi, kwa sababu mshiko safi mara chache hauhitaji sekunde 25.
  • Mshale wa kushoto au r: tupa kipindi na ukifanye upya. Jaribio baya haligharimu chochote sasa na litagharimu sana baadaye.
  • Escape au q: simamisha kipindi, maliza usimbaji, pakia.
  • Hizi hufanya kazi kwenye X11, Wayland na SSH isiyo na kichwa: bila backend ya funguo ya kimataifa, lerobot-record husoma funguo zile zile kutoka kwenye terminal inayodhibiti. Herufi huendelea kufanya kazi kwenye viungo vya SSH vyenye ucheleweshaji, ambapo mfuatano wa mishale hugawanyika.
  • Teleoperation ya kibodi ni tofauti na inahitaji backend ya kimataifa: X11, Windows, au macOS yenye Accessibility.

Idadi ya vipindi, na jinsi kipindi kizuri kinavyoonekana

Mwongozo wa kurekodi unapendekeza angalau vipindi 50 kwa kazi ya kwanza, takriban 10 kwa kila eneo la kitu. Kurasa za sera zinaorodhesha kiwango cha chini kwa kila modeli, chini ya hapo utekelezaji haustahili muda wa GPU.

SeraVipindi vya chini kabisaMuundo wa dataKiwango cha GPUGharama kwa kila utekelezaji
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

Swali bora ni ngapi za nini. Data Scaling Laws in Imitation Learning for Robotic Manipulation (Lin et al., 2024) walikusanya zaidi ya maonyesho 40,000 na kufanya zaidi ya utekelezaji 15,000 wa ulimwengu halisi. Ujumlishaji ulifuata uhusiano wa sheria ya nguvu na idadi ya mazingira na vitu, na baada ya kizingiti kwa kila mazingira au kitu, maonyesho ya ziada yalikuwa na athari ndogo. Kwenye benchi moja: songesha kitu, badilisha mwangaza, badilisha mchemraba, badala ya kurudia zoezi moja.

Uendeshaji wa mbali wa kiongozi-mfuasi kama chanzo cha data
Faida
  • Mielekeo ya viungo inayoendelea ambayo servo inaweza kuzalisha tena, tofauti na kibodi au gamepad
  • Kitendo na hali hushiriki makubaliano ya kuratibu, hivyo sera hujifunza lengo ambalo inaweza kuamuru moja kwa moja
  • Kipindi cha sekunde 25 pamoja na kuweka upya kwa sekunde 10 ni takriban vipindi 100 kwa saa
  • Opereta anahisi mfuasi akisimama au kukwama, hivyo kasoro hujitokeza kabla ya data kuwekwa
Mabadilishano
  • Mkono wa pili huongeza mara mbili gharama ya sehemu
  • Maonyesho hurithi tabia za opereta; Mandlekar et al. waligundua kuwa ubora wa sera unategemea sana ubora wa maonyesho
  • Kiongozi huchukuliwa sampuli kwa kasi ya kitanzi, hivyo vituo vinakuwa safu karibu zinazofanana zinazofundisha sera kusubiri
  • Hakuna kinacholazimisha uthabiti kati ya vipindi: kamera iliyosogezwa 5 cm ni mabadiliko ya usambazaji yaliyofichwa

Kipindi kizuri hakina msisimko: mkao wa nyumbani unaorudiwa, kitu kimoja kimekamilika, kimeisha mara tu kitu kikiwa kwenye pipa, mfuatano wa kazi wenye herufi 25 hadi 50 kama inavyopendekezwa na orodha ya ukaguzi. Pick the red cube and drop it in the box ni mfuatano wa kazi; task1 ndio kinyume cha muundo ambao orodha ya ukaguzi inautaja waziwazi. Maelezo yasiyo wazi yanaongoza orodha yake ya matatizo, na yana umuhimu mkubwa kwa mifumo ya kuona-lugha-vitendo, ambapo mfuatano huo ni ingizo la mfumo, sio jina la faili.

Kasoro zinazoharibu data seti kimyakimya

Hakuna inayotoa hitilafu. Zote huendelea hadi kwenye mafunzo, zikionekana kama mkunjo wa hasara unaoonekana sawa na roboti isiyofanya chochote. Angalia wakati eneo limewekwa tayari.

KasoroInaonekanajeInatoka wapiJinsi ya kuigundua
Mionekano ya kamera iliyobadilishanapicha ya kifundo cha mkono chini ya kitufe cha juuugawaji upya wa faharisi baada ya kuchomeka tenalerobot-find-cameras each session; by-id paths
Fremu zilizogandapicha ileile kwa safu nyingikamera inaacha kutoa; kitanzi kinarudia fremu ya mwishoisafishe katika lerobot-dataset-viz
Fremu zilizodondoshwaidadi ya safu chini ya fps mara sekundefoleni inafurika, inadondosha badala ya kuzuia'Encoder queue full' kwenye logi; safu dhidi ya fps mara muda
Kiungo kiko kwenye kikomo chakekiungo kimoja kimetulia kwenye kiwango cha chini au cha juumasafa ya kiongozi yanazidi ya mfuasi, au mkao mbaya wa katimin/max kwa kila kiungo katika ds.meta.stats; lerobot-find-joint-limits kabla
Picha na kitendo havilinganisera inatarajia au inachelewakamera zenye fps tofauti na kitanziweka kila kamera kwenye --dataset.fps
Muda uliokufamifuatano mirefu ya safu za vitendo zinazofananaopereta alisitisha huku kinasa sauti kikiendeleasehemu ya safu za vitendo zinazofanana mfululizo
Mfuatano wa kazi usiotumikatask1, demo2, testkuandika harakameta/tasks.parquet katika v3.0 (ilikuwa meta/tasks.jsonl katika v2.1); rekebisha kwa lerobot-edit-dataset modify_tasks
Fremu zilizoangushwa hujificha

Kisimbuzi huweka foleni yenye kikomo kwa kila kamera, fremu 30 kwa chaguo-msingi. Kinaposhindwa kuendana, fremu huangushwa badala ya kuzuiwa: upigaji picha huendelea na hakuna kinachoharibika. Unapata Encoder queue full for {camera}, dropped N frame(s) na jumla ya kila kamera mwishoni mwa kipindi. Kizingiti cha lerobot: takriban asilimia 5 kukosekana kunamaanisha mfumo umelemewa, asilimia 2 inatarajiwa kuwa mzigo wa kuanza. Marekebisho kwa mpangilio: --display_data=false, punguza --dataset.encoder_threads, vcodec=h264, kuzima utiririshaji.

Tahadhari moja: jedwali la mwongozo wa usimbaji-utiririshaji linaorodhesha chaguo-msingi kama True, wakati dataclass kwenye main inasoma streaming_encoding: bool = False. Nyaraka na msimbo havikubaliani, kwa hivyo iweke wazi; lerobot huweka kidokezo kinachoipendekeza kila inapoanza na bendera imezimwa.

Kagua seti ya data kabla ya kukodisha GPU

Jaribio la kukubalika kutoka kwa nyaraka: linganisha muda wa video dhidi ya muda wa kipindi ulioripotiwa na CLI, na uthibitishe kuwa idadi ya safu inalingana na fps mara muda. Kwa kila kipindi, si kwa jumla.

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"])
Kipindi ambacho kiko mbali na fps mara muda ni mgombea wa kufutwa, siyo mafunzo.

Kisha kiangalie. lerobot-dataset-viz hurudia kipindi fremu kwa fremu na alama za viungo kando ya mitazamo ya kamera, katika Rerun au Foxglove. Kamera zilizobadilishwa na fremu zilizoganda huonekana ndani ya sekunde kumi. Watu huruka hatua hii.

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 pia hufanya kugawanya, kuunganisha, kuondoa kipengele, kurekebisha kazi na kuhesabu upya takwimu. Futa kwa ukarimu: kipindi kibaya hugharimu kipindi kimoja; kukiweka hugharimu kila uendeshaji uliofunzwa juu yake.
Saraka ya seti za data za AY-Robots ikiorodhesha seti za data za umma za LeRobot na idadi ya vipindi na fomati.
Jinsi seti za data zinazofanana zinavyopimwa na kuwekewa maelezo.

v2.1 au v3.0: amua kabla ya kurekodi

v2.1 iliandika faili moja ya parquet na MP4 moja kwa kila kipindi. v3.0 huunganisha vipindi vingi kwenye shadi zilizoshirikiwa na hujenga upya mipaka kutoka kwa metadata, kwa hivyo info.json hubeba violezo vya njia kama data/chunk-{chunk_index:03d}/file-{file_index:03d}.parquet badala ya nambari ya kipindi. Sababu kuu ni faili chache, kubwa zaidi: uanzishaji wa haraka na shinikizo dogo la mfumo wa faili kwa kiwango kikubwa.

LeRobot v2.1LeRobot v3.0
Mpangilioparquet moja na MP4 moja kwa kila kipindivipindi vingi kwa kila shadi
Metadata ya KipindiFaili za JSONLparquet iliyogawanywa chini ya meta/episodes/, kupitia mrundikano wa hifadhidata
Kutiririsha kutoka Kituohapanandiyo, kupitia StreamingLeRobotDataset
Imeandikwa na lerobot 0.6.1hapanandiyo, unachopata leo
Inasomwa na GR00T N1.7 na N1.5ndiyohapana, lazima ibadilishwe chini
Kurekodi leo, kufunza GR00T kesho

lerobot 0.6.1 huandika v3.0, lakini GR00T N1.7 na N1.5 husoma v2.0 au v2.1 na huanguka juu yake. Kumbuka mwelekeo wa safari: src/lerobot/scripts/ ina convert_dataset_v21_to_v30.py na hakuna kinachokwenda upande mwingine. Tatua hili kabla ya kikao. Suluhisho: hifadhidata imekataliwa kama 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
Haraka kwa vipindi 50. Ukubwa ni kazi tofauti: mwongozo wa uhamishaji wa lerobot, kwa DROID ghafi hadi v3.0, unatoa bajeti ya siku 7+ za usindikaji wa ndani na takriban GB 400.

Njia mbili za kufikia hifadhidata ileile

Kila kitu hapo juu, kwenye mashine yako mwenyewe: unamiliki hesabu ya USB, ujenzi wa ffmpeg, urekebishaji wa encoder na faili za calibration. Njia sahihi ya kuelewa bomba, kuendesha kifaa cha kamera kisicho cha kawaida, au kuweka data ndani.

Gharama za njia hii

Muda: jioni moja kwa kila mkono kukusanya, calibration ya kwanza ngumu, na kikao cha kwanza unachotupa kwa sababu kamera ilikuwa kwenye nafasi isiyo sahihi.

Rekodi hifadhidata za LeRobot bila kuunganisha bomba mwenyewe

Mteja wa kompyuta ya mezani wa AY-Robots hurekodi vipindi, mitiririko ya kamera na hali za viungo katika umbizo la LeRobot kutoka kikao cha teleoperation, kisha huwasilisha hifadhidata kwa mkufunzi.

Pata mteja wa kompyuta ya mezani

Kutoka seti ya data hadi sera

Vipindi hamsini safi hulisha kila inayoendeshwa hapa. hufunzwa kuanzia mwanzo kwenye kazi yako pekee, takriban vigezo milioni 80 kwa takriban milisekunde 20 kwa kila hatua ya kitendo, ndiyo pekee kati ya tano inayostarehesha na mwendo wa haraka. ina takriban vigezo milioni 450 kwenye kadi ya GB 24. ni mfumo msingi wa takriban vigezo bilioni 3 ambapo hugusa takriban vigezo milioni 40, inahitaji A100 au H100, na inataka seti ya data ya v2.1.

Ifuatayo, mwongozo wa mchanganyiko wako: , au ; kwa mara ya kwanza, ni fupi zaidi. Wakati sera inafanya kazi kwenye benchi lakini inaporomoka mara tu unaposogeza meza, hilo ni tatizo la data: na huenda kwa undani zaidi kuhusu utofauti.

Ninahitaji vipindi vingapi hasa kwa sera ya kwanza inayofanya kazi?

Thelathini kwa SmolVLA, hamsini kwa ACT, Pi0.5, GR00T N1.5 na N1.7, viwango vya chini ambavyo wakufunzi wa AY-Robots wanatekeleza. Mwongozo wa LeRobot unapendekeza kwa uhuru angalau 50 kwa kazi ya kwanza, takriban 10 kwa kila eneo la kitu. Kazi ya kuongeza data iligundua kuwa ujanibishaji huongezeka na mazingira na vitu badala ya idadi ya maonyesho, kwa hivyo picha mia moja za eneo moja ni mbaya kuliko hamsini katika maeneo matano.

Ninahitaji mkono wa kiongozi, au ninaweza kuendesha kwa mbali kwa kutumia kibodi?

lerobot husafirisha teleoperators za kibodi na gamepad, kwa hivyo mkono wa kiongozi hauhitajiki kabisa, lakini unapendelewa sana: kiongozi-mfuasi hutoa mienendo endelevu ya viungo katika makubaliano ya kuratibu ya kitendo kilichorekodiwa, wakati ingizo la kibodi hutoa mwendo wa hatua ambao sera hujifunza kama mshtuko. Uendeshaji wa mbali kwa kibodi pia unahitaji backend ya funguo za kimataifa, kwa hivyo inashindwa kwenye Wayland na headless.

Ninaweza kurekodi kwenye Raspberry Pi au kompyuta ndogo?

Ndio, kwa kurekebisha. Mwongozo wa usimbaji wa utiririshaji una kiwango cha rasilimali kidogo kinachojumuisha mashine za kisasa za cores 4 na Raspberry Pi 5, na huweka kamera mbili kwa 640x480 na 30 fps kwenye safu yake inayohitaji marekebisho. Ushauri wake: simamisha kisimbaji kushindana na kitanzi cha kunasa, kupitia --dataset.rgb_encoder.vcodec=h264 na --dataset.streaming_encoding=false. Inakadiri kamera mbili kwa 640x480 kuwa takriban pikseli milioni 55 kwa sekunde na mbili kwa 1920x1080 kuwa takriban milioni 373.

Ninajuaje kuwa seti ya data niliyorekodi sasa hivi iko sawa?

Ukaguzi tatu rahisi. Linganisha muda wa video ya kila kipindi na muda ulioripotiwa na CLI na uthibitishe kuwa idadi ya safu inalingana na fps mara muda huo, kwa kila kipindi badala ya jumla; huo ndio mtihani wa kukubalika ambao mwongozo wa usimbaji wa lerobot unatoa. Soma ds.meta.stats, ambapo kiungo ambacho min yake inalingana na max yake hakikusogea kamwe. Kisha cheza tena vipindi viwili au vitatu katika lerobot-dataset-viz, ndiyo njia pekee ambayo maoni yaliyobadilishwa na fremu zilizoganda huonekana. Kwenye fremu zilizopotea mwongozo unaweka kikomo kwa takriban asilimia 5 kukosekana; takriban asilimia 2 ni mzigo wa kawaida wa muda mfupi, mara nyingi ni kuanza tu.

Kazi yangu ya mafunzo ilikataa seti ya data kama v3.0. Nifanye nini sasa?

GR00T N1.7 na N1.5 husoma LeRobot v2.0 au v2.1 na huanguka kwenye v3.0, ambayo ndiyo lerobot 0.6.1 inarekodi. Ama kamilisha umbizo kabla ya mafunzo, au tumia sera inayosoma v3.0 asilia: Pi0.5, SmolVLA au ACT. lerobot husafirisha kigeuzi cha v2.1 hadi v3.0 na hakuna chochote kinyume chake.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started