AY-Robots оқулық беті алғашқы LeRobot деректер жинағын SO-100 қолымен жазу үшін
LeRobotSO-100Деректер жинағын жазуТелеоперацияЕліктеу арқылы оқыту

Алғашқы LeRobot деректер жинағын SO-100 көмегімен жазыңыз

AY-Robots ResearchAugust 23, 202616 мин оқу

SO-100 көмегімен пайдалануға жарамды LeRobot деректер жинағын жазыңыз: калибрлеу, жетекші-ілесуші телеоперациясы, нақты lerobot-record жалаушалары мен әдепкі мәндері, камераны орнату, эпизод сандары және іске қосуды бұзатын ақаулар.

Бір SO-100 ізбасары, бірдей дизайнды жетекші қол және екі USB камера бір түстен кейін саясатты реттей алады. Дәл сол стенд файл шолғышында сау көрінетін алпыс эпизодты оңай шығара алады және алты сағаттық GPU жұмысын ысырап етеді. Айырмашылық сирек модельде болады; ол сервоприводтар мен parquet файлы арасында болған нәрседе.

Міне, қолмен орындалатын жол, содан кейін қысқасы. Әрбір пәрмен lerobot 0.6.1 нұсқасынан, 2026 жылдың 3 тамызында шығарылған және PyPI-дегі ағымдағы нұсқасы. Ол консольдік кіру нүктелеріне ауысты, сондықтан python lerobot/scripts/control_robot.py іске қосатын оқулықтар енді жоқ файлды сипаттайды.

Қысқа нұсқасы

  • lerobot 0.6.1 v3.0 жазады; GR00T N1.7 және N1.5 v2.1 қажет етеді. Жазуды бастамас бұрын форматты реттеңіз.
  • Төрт пәрмен: lerobot-find-port, lerobot-setup-motors, lerobot-calibrate, lerobot-record. Калибрлеуден алынған бірдей --robot.id және --teleop.id мәндерін жазу сессиясына қолданыңыз.
  • Нақты әдепкі мәндер: 30 fps, әр эпизодқа 60 с, 60 с қалпына келтіру, 50 эпизод, шамамен 100 минут нақты уақыт.
  • Мұндағы ең аз эпизодтар: SmolVLA үшін 30, қалғандары үшін 50.
  • Әртүрлілік көлемнен артық. Деректер жинақтары төрт нәрседен бұзылады: ауыстырылған камера индекстері, түсірілмеген немесе қатып қалған кадрлар, шегіне жеткен буын, оқылмайтын тапсырма жолы.

Жазу сессиясы не түсіреді

A LeRobot дерекқоры бейнелер қалтасы емес, бейне қоса берілген уақыт бойынша индекстелген кесте: әрбір басқару циклінің тілімі басқарылатын әрекетті, ізбасар жеткен күйді, камераға бір кадрды, уақыт белгісін және индекстерді қамтитын бір жолды жазады. Саясат тек осы бағандарды көреді. lerobot/svla_so100_pickplace схемасы, оның meta/info.json файлынан оқылған.

FeaturedtypeShapeWhat it is
actionfloat32[6]joint targets from the leader arm
observation.statefloat32[6]joint positions the follower reached
observation.images.topvideo[480, 640, 3]scene camera, MP4 (av1 here)
observation.images.wristvideo[480, 640, 3]wrist camera, same rate
timestampfloat32[1]seconds since episode start
frame_index, episode_index, index, task_indexint64[1]auto-populated bookkeeping

Буындар main_shoulder_pan, main_shoulder_lift, main_elbow_flex, main_wrist_flex, main_wrist_roll және main_gripper: SO-100-дің алты еркіндік дәрежесі. Әрекет пен күй бір пішінді бөліседі, себебі жетекші-ізбасар телеоперациясы нысананы және бір қадам кейін жеткен позицияны жазады. Бұл айырмашылық ақпарат болып табылады: қолдың тартылыс күшімен немесе кептеліп қалған нысанмен күрескен жері. Бұл жолдар сол дерекқорға тиесілі. Бүгін 0.6.1 нұсқасымен жазылған сессия shoulder_pan.pos-тан gripper.pos-қа дейін, шинадағы 1-ден 6-ға дейінгі идентификаторларды жазады: бірдей алты буын, әртүрлі кілттер, бұл конфигурация функцияны атауы бойынша адрестеген кезде маңызды.

Нақты дерекқордан алынған өлшем

Бұл дерекқорда 30 кадр/сек жылдамдықпен 50 эпизод және 19 631 кадр бар: әр эпизодқа шамамен 393 кадр немесе 13 секунд. Егер сіздікі орташа есеппен бір минут болса, сіз қиынырақ нәрсе істеп жатырсыз немесе екі жағынан да бос уақытты жазып жатырсыз.

AY-Robots глоссарийіндегі LeRobot деректер жинағы форматына арналған жазба, каталог құрылымы мен метадеректер файлдарын көрсетеді
data/, videos/ және meta/ ішінде не бар және қай саясаттар қай нұсқаны оқиды.

Жұмыс үстелінде не қажет

ЭлементТолық ақпаратЕскерту
Ершіл қолSO-100, алты Feetech STS3215 сервосыбөлшектерге шамамен 110-150 ЕУРО
Жетекші қолекінші SO-100, берілістері алынғаналты жетекші мотордың барлық берілістері алынған: тек кодтағыш, үйкеліс аз
Қуатматериалдар тізіміндегі 7.4 В STS3215 нұсқасына сәйкестөмендегі ескертуді қараңыз
Камераларекі USB камера, 640x480, 30 кадр/секбір көрініс, бірі білекте
ХостPython 3.12 немесе одан жаңа, ffmpegrequires-python >= 3.12
Хаб аккаунтыHugging Face write tokenoptional with --dataset.push_to_hub=false
7.4 В, 12 В емес

STS3215 екі нұсқада шығарылады: SO-ARM100 README 7.4 В нұсқасының 6 В-та өлшенген 16.5 kg.cm тоқтау моментін және 12 В нұсқасының 30 kg.cm екенін көрсетеді, сондай-ақ 12 В моторларды алу 5 В-тық қуат көзінің орнына 12 В 5 А+ қуат көзін сатып алуды білдіретінін ескертеді. Материалдар тізімінде 7.4 В серволар көрсетілген. 7.4 В деп бағаланған серволарға 12 В беру оларды істен шығарады, сондықтан кез келген сымды қоспас бұрын мотор белгісін оқыңыз. Серво жауап бермейді.

Егер қол әлі құрастырылмаған болса, бұл бөлек кеш: бастаңыз SO-100 бастау және SO-100 орнату бойынша толық нұсқаулық. Егер сіз ештеңе сатып алмаған болсаңыз, алдымен оқыңыз SO-100 мен SO-101 салыстыруы алдымен: SO-101 – жақсартылған сымдары бар және берілісті алу қадамы жоқ жаңа нұсқа, ал жазу жұмыс процесі бірдей.

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 жүйелік қорытындыны, соның ішінде PATH-тан таба алатын ffmpeg нұсқасын басып шығарады.

Қосымшалар адамдарды жиі шатастырады. pip install lerobot тек негізгі ML тәуелділіктерін орнатады, роботпен сөйлесетін ештеңе жоқ. Koch қолдарына dynamixel орнына feetech қажет. Егер сіздің қабықшаңыз lerobot-record туралы ешқашан естімеген болса, міне себебі осы.

Порттар, қозғалтқыш идентификаторлары және калибрлеу

Бөлшектер мен жұмыс істейтін телеоперация циклі арасында үш бір реттік қадам бар. сіздің қолыңызда үйретілген саясатты басқа біреудің қолында іске қосады, шикі энкодер сандарын ортақ буын конвенциясына сәйкестендіреді.

  1. 1
    Әр қолдың USB портын табыңыз

    Екі қолды да қосып іске қосыңыз, сұралған кезде анықтап жатқан қолды ажыратыңыз және қай порттың жоғалып кеткенін ескеріңіз. Linux жүйесінде сізге 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
    Қозғалтқыш идентификаторлары мен бод жылдамдықтарын жазыңыз

    Идентификаторлар бір қозғалтқыштан кейін жазылады, және құжаттама қалай жасау керектігі туралы қатаң: контроллер тақтасына дәл бір қозғалтқышты қосыңыз, әлі басқаларға тізбектелмеген. Скрипт тізбекті кері қарай жүріп, алдымен қысқышты сұрайды және оған 6 идентификаторын береді, содан кейін білек айналымын 5, иық панорамасын 1-ге дейін береді. Мұны құрастыру алдында жасаңыз.

    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
    Екі қолды да калибрлеңіз

    Әрбір буынды диапазонының ортасына жылжытыңыз, Enter пернесін басыңыз, содан кейін әрқайсысын толық диапазоны бойынша жылжытыңыз. id профиль файл атауы болады.

    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
    Ештеңе жазбас бұрын телеоперация жасаңыз

    Жоғарыда айтылғандардың барлығына арналған қабылдау сынағы. Егер телеоперация дірілдесе, айналанса немесе бір буын ілеспесе, жазу оны 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
Калибрлеу қайда сақталады және идентификатор неліктен маңызды

Профильдер $HF_LEROBOT_CALIBRATION мекенжайына барады, әдепкі бойынша ~/.cache/huggingface/lerobot/calibration, және идентификатор іздеу кілті болып табылады. lerobot-record-қа калибрленген идентификатор берсеңіз, ол профильді қайта пайдалану үшін Enter немесе қайта жасау үшін c пернесін басуды ұсынады. Оған белгісіз идентификатор берсеңіз, файл болмайды, сондықтан ол сессия ортасында калибрлеуге өтеді.

Камералар саясаттың нені көретінін анықтайды

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
Мұны әр сессияда іске қосыңыз: құжаттар бұл идентификаторлар операциялық жүйеге байланысты қайта жүктеуден немесе қайта қосудан кейін өзгеруі мүмкін екенін ескертеді.

Екі көрініс және олардың орналасуы маңызды: жұмыс кеңістігін қамтитын тұрақты көрініс камерасы және соңғы эффекті ұстағыштың неге тиетінін көрсететін білек камерасы. LeRobot қауымдастық деректер жинақтарының тізімі 480x640 / 720p немесе одан да жақсы екі көріністі, статикалық фонды, бейтарап тұрақты жарықтандыруды және жетекші қол мен адам аяқ-қолдарын кадрдан тыс қалдыруды сұрайды. Жазу нұсқаулығы мынадай ережені қосады: сіз камера кескіндеріне қарап қана тапсырманы өзіңіз орындай алуыңыз керек.

Камера индексі тұрақты идентификатор емес

OpenCV индекстері санау ретінен келеді, сондықтан қайта жүктеу немесе қайта қосу 0 және 2 индекстерін ауыстырып, білек көрінісін бүкіл сессия бойы жоғарғы орынға қоюы мүмкін. lerobot өзі айтқандай: оның камера класы құрылғы жолын да, бүтін санды да қабылдайды және индекстердің қайта жүктеулер немесе порт өзгерістері кезінде, әсіресе Linux-та тұрақсыз екенін ескертеді. `index_or_path` параметрін `/dev/v4l/by-id/` астындағы udev симлинкіне бағыттаңыз, ол санау ретінен гөрі құрылғыны қадағалайды. Бұл деректер жинағының ішкі қайшылыққа ұшырауының ең көп таралған жолы, және оқыту оны жөндеуге қабілетсіз. Камера анықталмады.

Жазу пәрмені және әрбір жалауша

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
Камера сөздігі бір қабықшамен тырнақшаға алынған жол; ішкі жақшалар қабықша синтаксисі емес.

Төмендегі әдепкі мәндер src/lerobot/configs/dataset.py негізгі тармақтағы файлдан алынған, оқулықтан емес. Кейбіреулері адамдар болжағандай емес.

ЖалаушаӘдепкі мәнНе істейді
--dataset.repo_idбосатауы; әдепкі бойынша уақыт белгісі қосылады
--dataset.single_taskбосәр эпизодпен бірге сақталатын тапсырма жолы
--dataset.root$HF_LEROBOT_HOME/repo_idжазу жолы, әдепкі бойынша ~/.cache/huggingface/lerobot/
--dataset.fps30басқару циклінің жылдамдығы және деректер жинағының кадр жиілігі
--dataset.episode_time_s60эпизод автоматты түрде алға жылжығанға дейінгі секундтар
--dataset.reset_time_s60көріністі қалпына келтіру; қол қозғалады, ештеңе сақталмайды
--dataset.num_episodes50осы сессияда жазылған эпизодтар
--dataset.push_to_hubtrueсессия соңында жүктеу; false жергілікті болып қалады
--dataset.streaming_encodingдеректер класында false, құжаттар кестесінде trueтүсіру кезінде кодтау; оны нақты орнатыңыз
--dataset.encoder_queue_maxsize30камераға буферленген кадрлар, 30 кадр/сек жылдамдықта ~1 с
--dataset.encoder_threadsnull (кодек шешеді)әр кодтағышқа арналған ағындар; түсіру кезінде кедергілер болса, төмендетіңіз
--dataset.no_stampfalserepo_id-ді терілгендей дәл сақтау
--resumefalseбар деректер жинағына қосу; --dataset.root қажет
Күтпеген жерден бір сағатты жоғалтатын екі белгі

Сіздің деректер жинағыңыз сіз терген атаумен аталмайды. lerobot деректерге уақыт белгісін қосады, сондықтан so100_pick_cube атауы so100_pick_cube_20260823_141530 болып өзгереді. Тұрақты атау үшін --dataset.no_stamp=true қолданыңыз. Жалғастыру жалпы санды емес, қосымшаларды санайды. --resume=true қолданғанда, --dataset.num_episodes қосымша эпизодтарды санайды және --dataset.root міндетті болады. 30 эпизодтық деректер жинағына 50 сұрасаңыз, 80 аласыз.

Сеанс кезіндегі пернетақтамен басқару

  • Оң жақ бағыттау немесе n: эпизодты аяқтау немесе фазаны ерте қалпына келтіру. Сіз ең көп қолданатын перне, себебі таза ұстау сирек 25 секундты қажет етеді.
  • Сол жақ бағыттау немесе r: эпизодты жою және қайта жасау. Сәтсіз әрекет қазір ештеңеге тұрмайды, бірақ кейін көп шығын әкелуі мүмкін.
  • Escape немесе q: сеансты тоқтату, кодтауды аяқтау, жүктеу.
  • Бұлар X11, Wayland және headless SSH жүйелерінде жұмыс істейді: жаһандық пернелік бэкэнд болмаған кезде, lerobot-record басқару терминалынан бірдей пернелерді оқиды. Әріптер баяу SSH байланыстарында да жұмыс істейді, мұнда бағыттау тізбектері бөлініп қалуы мүмкін.
  • Пернетақтамен телеоперация басқаша және жаһандық бэкэндті қажет етеді: X11, Windows немесе Accessibility қосылған macOS.

Қанша эпизод және жақсы эпизод қандай болады

Жазу нұсқаулығы бірінші тапсырма үшін кем дегенде 50 эпизодты, әр нысан орналасқан жеріне шамамен 10 эпизодты ұсынады. саясат беттері әр модельге ең аз мөлшерді көрсетеді, одан төмен іске қосу GPU уақытына тұрмайды.

СаясатМин. эпизодтарДеректер жинағының форматыGPU деңгейіӘр іске қосу құны
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

Жақсырақ сұрақ – ненің қаншасы. Data Scaling Laws in Imitation Learning for Robotic Manipulation (Lin et al., 2024) 40 000-нан астам демонстрация жинап, 15 000-нан астам нақты әлемдік іске қосуды жүргізді. Жалпылау санымен шамамен дәрежелік заңдылық байланысын көрсетті орталар мен нысандар, және әр орта немесе нысан үшін белгілі бір шектен асқанда, қосымша демонстрациялардың әсері өте аз болды. Бір стендте: нысанды жылжытыңыз, жарықтандыруды өзгертіңіз, текшені ауыстырыңыз, бір рет қайталаудың орнына.

Лидер-ізбасар телеоперациясы деректер көзі ретінде
Артықшылықтар
  • Серво пернетақта немесе геймпадтан айырмашылығы, үздіксіз буын траекторияларын қайталай алады
  • Әрекет пен күй координаттық келісімді бөліседі, сондықтан саясат тікелей басқара алатын нысанды үйренеді
  • 25 секундтық эпизод пен 10 секундтық қалпына келтіру сағатына шамамен 100 эпизодты құрайды
  • Оператор ізбасардың тоқтап қалуын немесе кептелуін сезеді, сондықтан деректер бекітілгенге дейін ақаулар анықталады
Ымыралар
  • Екінші қол бөлшектер құнын шамамен екі есе арттырады
  • Демонстрациялар оператор әдеттерін мұра етеді; Mandlekar және т.б. саясат сапасы демонстрация сапасына қатты байланысты екенін анықтады
  • Лидер цикл жылдамдығымен іріктеледі, сондықтан кідірістер саясатты күтуге үйрететін дерлік бірдей қатарларға айналады
  • Сессиялар арасындағы үйлесімділікті ешнәрсе қамтамасыз етпейді: 5 см жылжытылған камера жасырын таралу ауысуы болып табылады

Жақсы эпизод қызықсыз: қайталанатын бастапқы қалып, бір іс орындалған, нысан қоқыс жәшігінде болғаннан кейін аяқталған, тапсырма жолы тізімдеме ұсынған 25-тен 50-ге дейінгі таңбада. Қызыл текшені алып, қорапқа салыңыз - тапсырма жолы; task1 - тізімдеме нақты атаған анти-үлгі. Түсініксіз аннотациялар оның мәселелер тізімін бастайды және олар ең маңыздысы көру-тіл-әрекет модельдері, мұнда жол файл атауы емес, модель кірісі болып табылады.

Деректер жинағын білдірмей бұзатын ақаулар

Ешқайсысы ерекше жағдай тудырмайды. Барлығы оқытуға дейін сақталып, жақсы көрінетін шығын қисығы және ештеңе істемейтін робот ретінде көрінеді. Көрініс орнатылған кезде тексеріңіз.

АқауҚалай көрінедіҚайдан пайда боладыҚалай анықтауға болады
Ауыстырылған камера көріністеріжоғарғы кілт астындағы білек кескініқайта қосылғаннан кейінгі индексті қайта тағайындауlerobot-find-cameras each session; by-id paths
Қатып қалған кадрларондаған жол үшін бірдей кескінкамера жеткізуді тоқтатады; цикл соңғы кадрды қайталайдыscrub it in lerobot-dataset-viz
Түсірілген кадрларжол саны кадр/сек уақыт секундтан төменкезек толып кетеді, блоктардың орнына түсіріледі'Encoder queue full' in the log; rows vs fps times duration
Буын шегіндебір буын ең аз немесе ең көп мәнде тегісжетекшінің диапазоны ізбасардың диапазонынан асады немесе ортаңғы қалып дұрыс емесper-joint min/max in ds.meta.stats; lerobot-find-joint-limits beforehand
Кескін мен әрекет сәйкес келмейдісаясат алдын алады немесе артта қаладыкамералар циклден басқа кадр/сек-теkeep every camera at --dataset.fps
Өлі уақытбірдей әрекет жолдарының ұзақ серияларыоператор жазу құрылғысы қосулы кезде кідірдіshare of consecutive identical action rows
Жарамсыз тапсырма жолыtask1, demo2, testжылдам теруmeta/tasks.parquet in v3.0 (it was meta/tasks.jsonl in v2.1); fix with lerobot-edit-dataset modify_tasks
Тасталған кадрлар өздерін жасырады

Кодер әр камераға шектеулі кезек ұстайды, әдепкі бойынша 30 кадр. Ол үлгермеген кезде, кадрлар бұғатталмай, тасталады: түсіру жалғасады және ештеңе істен шықпайды. Сіз Encoder queue full for {camera}, dropped N frame(s) хабарламасын және эпизод соңында камера бойынша жалпы санын аласыз. lerobot шегі: шамамен 5 пайыз жетіспеушілік жүйенің шамадан тыс жүктелгенін білдіреді, 2 пайыз іске қосу кезіндегі күтілетін жүктеме. Түзетулер ретімен: --display_data=false, --dataset.encoder_threads төмендету, vcodec=h264, ағынды өшіру.

Бір ескерту: ағындық-кодтау нұсқаулығының кестесі әдепкі мәнді True, ал негізгі деректер класы streaming_encoding: bool = False. Құжаттама мен код сәйкес келмейді, сондықтан оны нақты орнатыңыз; lerobot жалауша өшірулі күйде іске қосылған кезде оны ұсынатын кеңес береді.

GPU жалға алмас бұрын деректер жинағын тексеріңіз

Құжаттамадағы қабылдау сынағы: бейне ұзақтығын CLI хабарлаған эпизод ұзақтығымен салыстырыңыз және жолдар санының кадр жиілігі мен ұзақтығына тең екенін растаңыз. Жалпы емес, әр эпизод бойынша.

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"])
Кадр жиілігі мен ұзақтығынан айтарлықтай ауытқыған эпизод жаттығуға емес, жоюға үміткер.

Содан кейін оған қараңыз. lerobot-dataset-viz Rerun немесе Foxglove бағдарламаларында камера көріністерінің жанындағы буын іздерімен эпизодты кадр бойынша ойнатады. Аударылған камералар мен қатып қалған кадрлар он секунд ішінде пайда болады. Адамдар бұл қадамды өткізіп жібереді.

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 сонымен қатар бөлу, біріктіру, мүмкіндікті жою, тапсырмаларды өзгерту және статистиканы қайта есептеуді орындайды. Жоюдан тартынбаңыз: нашар эпизод бір эпизодқа тұрады; оны сақтау оған негізделген әрбір жаттығуға шығын әкеледі.
AY-Robots деректер жинағының каталогында эпизод саны мен пішімдері бар жалпыға қолжетімді LeRobot деректер жинақтары көрсетілген
Салыстырмалы деректер жинақтары қалай өлшемделіп, аннотацияланады.

v2.1 немесе v3.0: жазбас бұрын шешім қабылдаңыз

v2.1 әр эпизодқа бір parquet және бір MP4 жазды. v3.0 көптеген эпизодтарды ортақ бөліктерге біріктіреді және метадеректерден шекараларды қайта құрады, сондықтан info.json келесідей жол үлгілерін қамтиды: data/chunk-{chunk_index:03d}/file-{file_index:03d}.parquet эпизод нөмірінің орнына. Жоғарыдағы негіздеме – аз, үлкенірек файлдар: жылдамырақ инициализация және ауқымды жүйеде файлдық жүйеге аз қысым.

LeRobot v2.1LeRobot v3.0
Орналасуone parquet and one MP4 per episodemany episodes per shard
Эпизод метадеректеріJSONL fileschunked parquet under meta/episodes/, via the datasets stack
Хабтан ағынмен жіберуnoyes, via StreamingLeRobotDataset
lerobot 0.6.1 арқылы жазылғанnoyes, what you get today
GR00T N1.7 және N1.5 арқылы оқыладыyesno, must be converted down
Бүгін жазу, ертең GR00T оқыту

lerobot 0.6.1 v3.0 жазады, бірақ GR00T N1.7 және N1.5 v2.0 немесе v2.1 оқиды және оған қате жібереді. Қозғалыс бағытына назар аударыңыз: src/lerobot/scripts/ ішінде convert_dataset_v21_to_v30.py бар, бірақ кері бағытта ештеңе жоқ. Сессия алдында мұны шешіңіз. Түзету: 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
50 эпизод үшін жылдам. Масштабтау - басқа жұмыс: lerobot-тың DROID-ті v3.0-ге көшіру нұсқаулығы жергілікті өңдеуге 7+ күн және шамамен 400 ГБ бюджеттейді.

Бір деректер жинағына екі жол

Жоғарыда айтылғандардың барлығын өз машинаңызда: USB тізімін, ffmpeg құрастыруды, кодтағышты реттеуді және калибрлеу файлдарын өзіңіз басқарасыз. Бұл құбырды түсінуге, ерекше камера қондырғысын іске қосуға немесе деректерді жергілікті жерде сақтауға арналған дұрыс жол.

Бұл жолдың құны

Уақыт: әр қолды құрастыруға бір кеш, бірінші калибрлеу қиындықпен өтеді және камера дұрыс ұяшықта болмағандықтан бірінші сессияны лақтырып тастайсыз.

Құбырды өзіңіз қоспай LeRobot деректер жинақтарын жазыңыз

AY-Robots жұмыс үстелі клиенті телеоперация сессиясынан эпизодтарды, камера ағындарын және буын күйлерін LeRobot форматында жазады, содан кейін деректер жинағын оқытушыға береді.

Жұмыс үстелі клиентін алыңыз

Деректер жинағынан саясатқа дейін

Елу таза эпизод әрбір имитациялық оқытуды осында іске қосады. ACT сіздің тапсырмаңыз бойынша нөлден бастап оқытылады, шамамен 80 миллион параметр, әрекет қадамына шамамен 20 мс кетеді, бұл жылдам қозғалысқа ыңғайлы бес модельдің жалғызы. SmolVLA 24 ГБ картада шамамен 450 миллион параметрді құрайды. GR00T N1.7 шамамен 3 миллиард параметрлі негізгі модель, мұнда дәл баптау шамамен 40 миллион параметрге әсер етеді, A100 немесе H100 қажет етеді және v2.1 деректер жинағын қалайды.

Келесі, сіздің комбинацияңызға арналған нұсқаулық: SO-100-дегі ACT, SO-100-дегі SmolVLA немесе SO-100-дегі GR00T N1.7; алғашқы іске қосу үшін, алғашқы саясатыңызды оқытыңыз қысқарақ. Егер саясат стендте жұмыс істесе, бірақ үстелді жылжытқан сәтте құласа, бұл деректер мәселесі: саясат тек бір конфигурацияда жұмыс істейді және жоғары сапалы VLA оқыту деректерін жинау әртүрлілікке тереңірек үңіледі.

Алғашқы жұмыс істейтін саясат үшін қанша эпизод қажет?

SmolVLA үшін отыз, ACT, Pi0.5, GR00T N1.5 және N1.7 үшін елу, бұл AY-Robots оқытушылары талап ететін ең төменгі мөлшер. LeRobot нұсқаулығы алғашқы тапсырма үшін кемінде 50, нысан орналасқан жеріне шамамен 10 эпизодты дербес ұсынады. Деректерді масштабтау жұмыстары жалпылаудың демонстрация санына емес, орталар мен нысандарға байланысты екенін көрсетті, сондықтан бір көріністі жүз рет түсіру бес орналасу бойынша елу рет түсіруден нашар.

Маған жетекші қол қажет пе, әлде пернетақтамен телебасқаруға бола ма?

lerobot пернетақта және геймпад телеоператорларын жеткізеді, сондықтан жетекші қол қатаң түрде талап етілмейді, бірақ ол өте қолайлы: жетекші-ізбасар жазылған әрекеттің координаталық конвенциясында үздіксіз буын траекторияларын береді, ал пернетақта енгізу саясаттың серпіліс ретінде үйренетін сатылы қозғалысты тудырады. Пернетақтамен телебасқаруға сонымен қатар жаһандық пернелік бэкэнд қажет, сондықтан ол Wayland және headless режимдерінде жұмыс істемейді.

Raspberry Pi немесе шағын мини-компьютерде жазуға бола ма?

Иә, баптау арқылы. Ағынды кодтау нұсқаулығында заманауи 4 ядролы машиналар мен Raspberry Pi 5-ті қамтитын төмен ресурстық шектеу бар және екі камераны 640x480 және 30 fps жылдамдықпен «баптауды қажет етеді» бағанына орналастырады. Оның кеңесі: --dataset.rgb_encoder.vcodec=h264 және --dataset.streaming_encoding=false арқылы кодтаушының түсіру циклімен бәсекелесуін тоқтатыңыз. Ол екі камераны 640x480-де секундына шамамен 55 миллион пиксель, ал екі камераны 1920x1080-де шамамен 373 миллион пиксель деп бағалайды.

Жаңа ғана жазылған деректер жинағының шынымен сау екенін қалай білуге болады?

Үш қарапайым тексеру. Әр эпизодтың бейне ұзақтығын CLI хабарлаған ұзақтықпен салыстырыңыз және жол санының жалпы санына емес, әр эпизодқа сәйкес келетін кадр/сек * ұзақтыққа тең екенін растаңыз; бұл lerobot кодтау нұсқаулығы беретін қабылдау сынағы. ds.meta.stats файлын оқыңыз, мұнда ең төменгі мәні ең жоғарғы мәніне тең буын ешқашан қозғалмаған. Содан кейін lerobot-dataset-viz-де екі немесе үш эпизодты қайта ойнатыңыз, бұл ауыстырылған көріністер мен қатып қалған кадрлардың пайда болуының жалғыз жолы. Түсірілмеген кадрлар бойынша нұсқаулық шамамен 5 пайыз жоғалтуды шектейді; шамамен 2 пайыз қалыпты өтпелі жүктеме болып табылады, көбінесе тек іске қосу кезінде.

Менің оқыту жұмысым деректер жинағын v3.0 ретінде қабылдамады. Енді не істеу керек?

GR00T N1.7 және N1.5 LeRobot v2.0 немесе v2.1 оқиды және lerobot 0.6.1 жазатын v3.0-да істен шығады. Оқыту алдында форматты реттеңіз немесе v3.0-ді жергілікті түрде оқитын саясатты қолданыңыз: Pi0.5, SmolVLA немесе ACT. lerobot v2.1-ден v3.0-ге түрлендіргішті жеткізеді және керісінше ештеңе жоқ.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started