
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.
| Kipengele | Aina ya data | Umbo | Ni nini |
|---|---|---|---|
| action | float32 | [6] | malengo ya viungo kutoka mkono wa kiongozi |
| observation.state | float32 | [6] | nafasi za viungo ambazo mfuasi alifikia |
| observation.images.top | video | [480, 640, 3] | kamera ya eneo, MP4 (av1 hapa) |
| observation.images.wrist | video | [480, 640, 3] | kamera ya kifundo cha mkono, kiwango sawa |
| timestamp | float32 | [1] | sekunde tangu kuanza kwa kipindi |
| frame_index, episode_index, index, task_index | int64 | [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.
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.

Unachohitaji kwenye benchi
| Kipengee | Maelezo | Kumbuka |
|---|---|---|
| Mkono wa mfuasi | SO-100, Feetech STS3215 servosi sita | kama EUR 110 hadi 150 kwa vipuri |
| Mkono wa kiongozi | SO-100 ya pili, gia zimeondolewa | gia zimeondolewa kutoka kwa mota zote sita za kiongozi: kirekodi tu, msuguano mdogo |
| Nguvu | inalingana na toleo la 7.4 V STS3215 katika orodha ya vifaa | tazama onyo hapa chini |
| Kamera | kamera mbili za USB, 640x480 kwa 30 fps | mtazamo mmoja wa eneo, mmoja kwenye kifundo cha mkono |
| Mwenyeji | Python 3.12 au mpya zaidi, ffmpeg | requires-python >= 3.12 |
| Akaunti ya Hub | tokeni ya kuandika ya Hugging Face | optional with --dataset.push_to_hub=false |
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
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-infoViongezeo 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.
- 1Pata 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.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. - 2Andika 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.
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 3Sawazisha mikono yote miwili
Sogeza kila kiungo katikati ya masafa yake, bonyeza Enter, kisha pitisha kila kimoja kupitia masafa yake kamili.
idinakuwa jina la faili ya wasifu.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 - 4Endesha 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.
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
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
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.0Mitazamo 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.
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
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=2Mipangilio chaguomsingi iliyo hapa chini inatoka src/lerobot/configs/dataset.py kwenye tawi kuu, si mafunzo. Baadhi si kama watu wanavyodhani.
| Bendera | Chaguomsingi | Inachofanya |
|---|---|---|
| --dataset.repo_id | empty | jina; muhuri wa muda huongezwa kwa chaguomsingi |
| --dataset.single_task | empty | mfuatano wa kazi unaohifadhiwa na kila kipindi |
| --dataset.root | $HF_LEROBOT_HOME/repo_id | njia ya kuandika, chaguomsingi ~/.cache/huggingface/lerobot/ |
| --dataset.fps | 30 | kiwango cha kitanzi cha udhibiti na kiwango cha fremu cha hifadhidata |
| --dataset.episode_time_s | 60 | sekunde kabla ya kipindi kuendelea kiotomatiki |
| --dataset.reset_time_s | 60 | kuweka upya eneo; mkono husogea, hakuna kinachohifadhiwa |
| --dataset.num_episodes | 50 | vipindi vilivyorekodiwa katika kikao hiki |
| --dataset.push_to_hub | true | pakia mwishoni mwa kikao; false hubaki ndani |
| --dataset.streaming_encoding | false in the dataclass, true in the docs table | encode wakati wa kunasa; iweke wazi |
| --dataset.encoder_queue_maxsize | 30 | fremu zilizohifadhiwa kwa kila kamera, ~1 s kwa 30 fps |
| --dataset.encoder_threads | null (codec decides) | nyuzi kwa kila encoder; punguza ikiwa unasa unakwama |
| --dataset.no_stamp | false | weka repo_id kama ilivyoandikwa |
| --resume | false | ongeza kwenye hifadhidata iliyopo; inahitaji --dataset.root |
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.
| Sera | Vipindi vya chini kabisa | Muundo wa data | Kiwango cha GPU | Gharama kwa kila utekelezaji |
|---|---|---|---|---|
| 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 |
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.
- 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
- 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.
| Kasoro | Inaonekanaje | Inatoka wapi | Jinsi ya kuigundua |
|---|---|---|---|
| Mionekano ya kamera iliyobadilishana | picha ya kifundo cha mkono chini ya kitufe cha juu | ugawaji upya wa faharisi baada ya kuchomeka tena | lerobot-find-cameras each session; by-id paths |
| Fremu zilizoganda | picha ileile kwa safu nyingi | kamera inaacha kutoa; kitanzi kinarudia fremu ya mwisho | isafishe katika lerobot-dataset-viz |
| Fremu zilizodondoshwa | idadi ya safu chini ya fps mara sekunde | foleni inafurika, inadondosha badala ya kuzuia | 'Encoder queue full' kwenye logi; safu dhidi ya fps mara muda |
| Kiungo kiko kwenye kikomo chake | kiungo kimoja kimetulia kwenye kiwango cha chini au cha juu | masafa ya kiongozi yanazidi ya mfuasi, au mkao mbaya wa kati | min/max kwa kila kiungo katika ds.meta.stats; lerobot-find-joint-limits kabla |
| Picha na kitendo havilingani | sera inatarajia au inachelewa | kamera zenye fps tofauti na kitanzi | weka kila kamera kwenye --dataset.fps |
| Muda uliokufa | mifuatano mirefu ya safu za vitendo zinazofanana | opereta alisitisha huku kinasa sauti kikiendelea | sehemu ya safu za vitendo zinazofanana mfululizo |
| Mfuatano wa kazi usiotumika | task1, demo2, test | kuandika haraka | meta/tasks.parquet katika v3.0 (ilikuwa meta/tasks.jsonl katika v2.1); rekebisha kwa lerobot-edit-dataset modify_tasks |
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.
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"])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.
# 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 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.1 | LeRobot v3.0 | |
|---|---|---|
| Mpangilio | parquet moja na MP4 moja kwa kila kipindi | vipindi vingi kwa kila shadi |
| Metadata ya Kipindi | Faili za JSONL | parquet iliyogawanywa chini ya meta/episodes/, kupitia mrundikano wa hifadhidata |
| Kutiririsha kutoka Kituo | hapana | ndiyo, kupitia StreamingLeRobotDataset |
| Imeandikwa na lerobot 0.6.1 | hapana | ndiyo, unachopata leo |
| Inasomwa na GR00T N1.7 na N1.5 | ndiyo | hapana, lazima ibadilishwe chini |
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.
# 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=falseNjia 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.
Muda: jioni moja kwa kila mkono kukusanya, calibration ya kwanza ngumu, na kikao cha kwanza unachotupa kwa sababu kamera ilikuwa kwenye nafasi isiyo sahihi.
Mteja wa kompyuta ya mezani hurekodi hifadhidata za LeRobot, vipindi, mitiririko ya kamera na hali za viungo, moja kwa moja kutoka kwa kikao cha teleoperation. Hifadhidata hiyo hulisha fomu ya mafunzo: chagua modeli, hifadhidata na vigezo vya ziada, na backend hukodisha GPU yenye ukubwa kulingana na VRAM ya modeli, huendesha mkufunzi na kuandika checkpoints kwenye hifadhi ya vitu.
- 1Sakinisha mteja
Kwenye ukurasa wa kupakua; usanidi katika nyaraka za mteja.
- 2Rekodi kutoka kikao cha teleop
Endesha mkono; mteja huandika vipindi katika umbizo la LeRobot. Mwongozo: rekodi hifadhidata yako ya kwanza.
- 3Au leta data yako mwenyewe
Hifadhidata inaweza pia kutoka kwa kitambulisho cha repo cha Hugging Face au mashine yako mwenyewe: nyaraka za hifadhidata, saraka ya umma.
- 4Funza na uirudishe
Chagua mchanganyiko kwenye matrix ya mafunzo, kisha endesha sera hiyo tena kwenye mkono. Takriban USD 1 hadi 3 kwenye kiwango cha GB 24, 4 hadi 12 kwenye kiwango cha A100 au H100.
Haikusanyi au kurekebisha mkono wako, na hairekebishi kipindi chenye kasoro, kwa hivyo hatua ya ukaguzi bado inatumika. Pia kuna kikomo kikali upande mwingine: kwa kazi za haraka, inference inapaswa kukaa karibu na servos. Kitanzi cha udhibiti huendesha 20 hadi 485 ms kwa kila hatua ya kitendo, na safari za kwenda na kurudi za intaneti ya umma juu yake hubadilisha sera inayofanya kazi kuwa isiyo na uhakika.
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 mezaniKutoka 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.
Sources
- LeRobot: Kujifunza Kuiga kwenye Roboti Halisi za Ulimwengu
- LeRobot: Kuunganisha SO-100, kuweka injini na kusawazisha
- LeRobot: Kamera na lerobot-find-cameras
- LeRobot: Usakinishaji na matriki ya nyongeza
- LeRobotDataset v3.0: mpangilio na uhamiaji wa v2.1
- LeRobot: Usimbaji wa video ya kutiririsha na fremu zilizopotea
- LeRobot: Kuhamisha seti kubwa za data hadi v3.0 (DROID)
- lerobot v0.6.1 toleo, 3 Agosti 2026
- DatasetRecordConfig: mipangilio chaguomsingi halisi ya kurekodi
- lerobot_record.py: kitanzi cha kurekodi na kushughulikia kuendelea
- TheRobotStudio/SO-ARM100: hazina ya ujenzi na orodha ya vifaa
- Hugging Face: Orodha ya ukaguzi ya Seti za Data za Jumuiya ya LeRobot
- lerobot/svla_so100_pickplace: vipindi 50, fremu 19,631
- Lin et al. (2024), Sheria za Kuongeza Data katika Kujifunza Kuiga
- Mandlekar et al. (2021), Kinachojalisha katika Kujifunza kutoka kwa Maonyesho ya Nje ya Mtandao ya Binadamu
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