AY-Robots'un ilk LeRobot veri kümenizi bir SO-100 koluyla kaydetmeye yönelik eğitim sayfası
LeRobotSO-100Veri Kümesi KaydıTeleoperasyonTaklitçi Öğrenme

İlk LeRobot Veri Kümenizi Bir SO-100 ile Kaydedin

AY-Robots ResearchAugust 23, 202616 dk okuma

Bir SO-100 ile kullanılabilir bir LeRobot veri kümesi kaydedin: kalibrasyon, lider-takipçi teleoperasyon, gerçek lerobot-record bayrakları ve varsayılanları, kamera kurulumu, bölüm sayıları ve bir çalışmayı bozan kusurlar.

Bir SO-100 takipçi, aynı tasarıma sahip bir lider kol ve iki USB kamera, bir politikayı bir öğleden sonra ince ayar yapabilir. Aynı tezgah, bir dosya tarayıcısında sağlıklı görünen altmış bölümü kolayca üretebilir ve altı saatlik bir GPU çalışmasını boşa harcayabilir. Fark nadiren modeldir; fark, servolar ile parquet dosyası arasında olanlardır.

İşte manuel yol, ardından daha kısa olanı. Her komut, 3 Ağustos 2026'da yayınlanan ve PyPI'da güncel olan lerobot 0.6.1'dendir. Konsol giriş noktalarına taşındı, bu nedenle çalışan eğitimler python lerobot/scripts/control_robot.py artık mevcut olmayan bir dosyayı tanımlar.

Kısa versiyon

  • lerobot 0.6.1 v3.0 kaydeder; GR00T N1.7 ve N1.5 v2.1 ister. Kayda başlamadan önce formatı belirleyin.
  • Dört komut: lerobot-find-port, lerobot-setup-motors, lerobot-calibrate, lerobot-record. Kalibrasyondan aynı --robot.id ve --teleop.id değerlerini kayıt oturumuna taşıyın.
  • Gerçek varsayılanlar: 30 fps, bölüm başına 60 s, 60 s sıfırlama, 50 bölüm, yaklaşık 100 dakika gerçek zaman.
  • Buradaki minimum bölüm sayısı: SmolVLA için 30, diğerleri için 50.
  • Çeşitlilik hacmi yener. Veri kümeleri dört şeyden dolayı ölür: değiştirilmiş kamera indeksleri, düşen veya donmuş kareler, limitinde duran bir eklem, okunamayan bir görev dizisi.

Bir kayıt oturumu ne yakalar

Bir LeRobot veri kümesi bir video klasörü değil, videonun ekli olduğu zaman indeksli bir tablodur: her kontrol döngüsü vuruşu, komut verilen eylemi, takipçinin ulaştığı durumu, kamera başına bir kareyi, bir zaman damgasını ve indeksleri içeren bir satır yazar. Politika yalnızca bu sütunları görür. lerobot/svla_so100_pickplace şeması, meta/info.json dosyasından okunur.

ÖzellikdtypeŞekilNe olduğu
actionfloat32[6]lider koldan eklem hedefleri
observation.statefloat32[6]takipçinin ulaştığı eklem pozisyonları
observation.images.topvideo[480, 640, 3]sahne kamerası, MP4 (burada av1)
observation.images.wristvideo[480, 640, 3]bilek kamerası, aynı hızda
timestampfloat32[1]bölüm başlangıcından bu yana geçen saniyeler
frame_index, episode_index, index, task_indexint64[1]otomatik doldurulan kayıtlar

Eklemler main_shoulder_pan, main_shoulder_lift, main_elbow_flex, main_wrist_flex, main_wrist_roll ve main_gripper'dır: SO-100'ün altı serbestlik derecesi. Eylem ve durum aynı şekli paylaşır çünkü lider-takipçi teleoperasyonu bir hedefi ve bir adım sonra ulaşılan pozisyonu kaydeder. Bu boşluk bir bilgidir: kolun yerçekimiyle veya sıkışmış bir nesneyle nerede mücadele ettiği. Bu dizeler o veri kümesine aittir. Bugün 0.6.1 ile kaydedilen bir oturum, shoulder_pan.pos'tan gripper.pos'a kadar, veri yolunda 1'den 6'ya kadar kimliklerle yazar: aynı altı eklem, farklı anahtarlar; bu, bir yapılandırmanın bir özelliği adıyla ele aldığı anda önem kazanır.

Gerçek bir veri kümesinden bir ölçüt

Bu veri kümesi 50 bölüm ve 30 fps'de 19.631 kare içerir: bölüm başına yaklaşık 393 kare veya 13 saniye. Eğer sizinkiler ortalama bir dakika sürüyorsa, daha zor bir şey yapıyorsunuz veya her iki uçta da boş zaman kaydediyorsunuz demektir.

AY-Robots sözlüğündeki LeRobot veri kümesi formatı girişi, dizin düzenini ve meta veri dosyalarını gösteriyor.
data/, videos/ ve meta/ içinde ne bulunur ve hangi politikalar hangi sürümü okur.

Çalışma tezgahında ihtiyacınız olanlar

ÖğeDetayNot
Takipçi kolSO-100, altı Feetech STS3215 servoparçalar halinde yaklaşık 110 ila 150 EUR
Lider kolikinci bir SO-100, dişlileri çıkarılmışaltı lider motorun tümünden dişliler çıkarıldı: sadece enkoder, daha az sürtünme
Güçmalzeme listesindeki 7.4 V STS3215 varyantına uygunaşağıdaki uyarıya bakın
Kameralariki USB kamera, 30 fps'de 640x480bir sahne görünümü, biri bilekte
Ana BilgisayarPython 3.12 veya daha yeni, ffmpegrequires-python >= 3.12
Hub hesabıHugging Face yazma belirtecioptional with --dataset.push_to_hub=false
7.4 V, 12 V değil

STS3215 iki versiyon halinde gelir: SO-ARM100 README, 7.4 V versiyonunu 6 V'ta ölçülen 16.5 kg.cm durma torkunda ve 12 V versiyonunu 30 kg.cm olarak derecelendirir ve 12 V motorları almanın aynı zamanda 5 V'luk yerine 12 V 5 A+ bir güç kaynağı satın almak anlamına geldiğini belirtir. Malzeme listesi 7.4 V servoları listeler. 7.4 V olarak derecelendirilmiş servolara 12 V beslemek onları bozar, bu yüzden herhangi bir kablolama yapmadan önce motor etiketini okuyun. Servo yanıt vermiyor.

Kol henüz monte edilmediyse, bu ayrı bir akşam işidir: SO-100'e başlarken ve eksiksiz SO-100 kurulum kılavuzu ile başlayın. Henüz bir şey satın almadıysanız, önce SO-100 ile SO-101 karşılaştırması okuyun: SO-101, geliştirilmiş kablolama ve dişli çıkarma adımı olmayan daha yeni bir revizyondur ve kayıt iş akışı aynıdır.

lerobot 0.6.1'i yükleyin

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 üzerinde bulabildiği ffmpeg sürümü de dahil olmak üzere bir sistem özetini yazdırır.

Ekstralar çoğu zaman insanları yanıltır. pip install lerobot yalnızca temel ML bağımlılıklarını yükler, bir robotla iletişim kuran hiçbir şeyi yüklemez. Koch kolları dynamixel yerine feetech kullanır. Kabuğunuz lerobot-record'u hiç duymadıysa, nedeni budur.

Portlar, motor Kimlikleri ve kalibrasyon

Parçalar ve çalışan bir teleop döngüsü arasında üç tek seferlik adım bulunmaktadır. kolunuzda eğitilmiş bir politikayı başkasının kolunda çalıştırmayı, ham enkoder sayımlarını ortak bir eklem konvansiyonuna eşlemeyi sağlar.

  1. 1
    Her kolun USB portunu bulun

    Her iki kol da takılıyken çalıştırın, istendiğinde tanımladığınızı çıkarın ve hangi portun kaybolduğunu not edin. Linux'ta sudo chmod 666 /dev/ttyACM0 komutuna ihtiyacınız olabilir.

    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
    Motor Kimliklerini ve baud hızlarını yazın

    Kimlikler her seferinde bir motora yazılır ve belgeler bu konuda katıdır: kontrol kartına henüz başka bir motora zincirlenmemiş tam olarak bir motor bağlayın. Komut dosyası zinciri geriye doğru yürür, önce tutucu için sorar ve ona 6 kimliğini verir, ardından wrist_roll için 5, shoulder_pan için 1'e kadar devam eder. Montajdan önce yapın.

    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
    Her iki kolu da kalibre edin

    Her eklemi hareket aralığının ortasına getirin, Enter tuşuna basın, ardından her birini tam aralığı boyunca hareket ettirin. id, profil dosya adı olur.

    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
    Herhangi bir şey kaydetmeden önce teleoperasyon yapın

    Yukarıdaki her şey için kabul testi. Eğer teleoperasyon sarsıntılı, aynalı veya bir eklem takip etmiyorsa, kayıt bunu 50 bölümde korur.

    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
Kalibrasyon nereye kaydedilir ve kimliğin önemi

Profiller $HF_LEROBOT_CALIBRATION konumuna, varsayılan olarak ~/.cache/huggingface/lerobot/calibration'a gider ve kimlik, arama anahtarıdır. lerobot-record komutuna kalibre edilmiş bir kimlik verirseniz, profili yeniden kullanmak için Enter tuşuna basmayı veya yeniden yapmak için c tuşuna basmayı teklif eder. Bilinmeyen bir kimlik verirseniz dosya bulunmaz ve oturum ortasında kalibrasyona geçer.

Kameralar politikanın ne gördüğüne karar verir

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
Bunu her oturumda çalıştırın: belgeler, bu tanımlayıcıların işletim sistemine bağlı olarak yeniden başlatma veya yeniden takma sonrasında değişebileceği konusunda uyarıyor.

İki görünüm ve konumları önemlidir: çalışma alanını kapsayan sabit bir sahne kamerası ve uç-efektör yakınında, tutucunun neye dokunmak üzere olduğunu gösteren bir bilek kamerası. LeRobot topluluk veri kümeleri kontrol listesi, tercihen 480x640 / 720p veya daha iyi iki görünüm, statik bir arka plan, nötr sabit aydınlatma ve lider kol ile insan uzuvlarının kadraj dışında olmasını ister. Kayıt kılavuzu şu genel kuralı ekler: görevi yalnızca kamera görüntülerine bakarak kendiniz yapabilmelisiniz.

Kamera dizini kararlı bir kimlik değildir

OpenCV dizinleri numaralandırma sırasından gelir, bu nedenle yeniden başlatma veya yeniden takma, dizin 0 ve 2'nin yer değiştirmesine ve bilek görünümünü tüm oturum boyunca en üst sıraya koymasına neden olabilir. lerobot'un kendisi de bunu söylüyor: kamera sınıfı bir cihaz yolu ve bir tam sayı alır ve özellikle Linux'ta dizinlerin yeniden başlatmalar veya bağlantı noktası değişiklikleri arasında kararsız olduğu konusunda uyarır. index_or_path'ı, numaralandırma sırası yerine cihazı takip eden /dev/v4l/by-id/ altındaki udev sembolik bağlantısına yönlendirin. Bu, bir veri kümesinin dahili olarak tutarsız hale gelmesinin en yaygın yoludur ve eğitim bunu onaramaz. Kamera algılanmadı.

Kayıt komutu ve her bir bayrak

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
Kamera sözlüğü tek bir kabuk tırnaklı dizedir; iç içe parantezler kabuk sözdizimi değildir.

Aşağıdaki varsayılanlar şuradan gelmektedir: src/lerobot/configs/dataset.py ana dalından, bir eğitimden değil. Birkaçı insanların varsaydığı gibi değildir.

BayrakVarsayılanNe işe yarar
--dataset.repo_idemptyad; varsayılan olarak zaman damgası eklenir
--dataset.single_taskemptyher bölümle birlikte depolanan görev dizesi
--dataset.root$HF_LEROBOT_HOME/repo_idyazma yolu, varsayılan ~/.cache/huggingface/lerobot/
--dataset.fps30kontrol döngüsü hızı ve veri kümesi kare hızı
--dataset.episode_time_s60bir bölümün otomatik olarak ilerlemesinden önceki saniyeler
--dataset.reset_time_s60sahne sıfırlama; kol hareket eder, hiçbir şey depolanmaz
--dataset.num_episodes50bu oturumda kaydedilen bölüm sayısı
--dataset.push_to_hubtrueoturum sonunda yükle; false yerel kalır
--dataset.streaming_encodingfalse in the dataclass, true in the docs tableyakalama sırasında kodla; açıkça ayarla
--dataset.encoder_queue_maxsize30kamera başına arabelleğe alınmış kareler, 30 fps'de ~1 s
--dataset.encoder_threadsnull (codec decides)kodlayıcı başına iş parçacığı; yakalama takılırsa düşür
--dataset.no_stampfalserepo_id'yi tam olarak yazıldığı gibi tut
--resumefalsemevcut bir veri kümesine ekle; --dataset.root gerektirir
Sürpriz bir şekilde bir saate mal olan iki bayrak

Veri kümenizin adı yazdığınız gibi değil. lerobot bir tarih-saat etiketi ekler, bu nedenle so100_pick_cube, so100_pick_cube_20260823_141530 olur. Sabit bir ad için --dataset.no_stamp=true kullanın. Devam etme, toplamları değil eklemeleri sayar. --resume=true ile --dataset.num_episodes ek bölümleri sayar ve --dataset.root zorunlu hale gelir. 30 bölümlük bir veri kümesinde 50 isterseniz, 80 elde edersiniz.

Bir oturum sırasında klavye kontrolü

  • Sağ ok veya n: bölümü veya sıfırlama aşamasını erken bitirir. En çok kullandığınız tuş, çünkü temiz bir kavrama nadiren 25 saniye gerektirir.
  • Sol ok veya r: bölümü atar ve yeniden yapar. Kötü bir çekim şimdi hiçbir şeye mal olmaz, ancak daha sonra çok şeye mal olur.
  • Escape veya q: oturumu durdurur, kodlamayı bitirir, yükler.
  • Bunlar X11, Wayland ve başsız SSH üzerinde çalışır: küresel bir anahtar arka ucu olmadan, lerobot-record aynı tuşları kontrol terminalinden okur. Ok dizilerinin bölündüğü gecikmeli SSH bağlantılarında harfler hayatta kalır.
  • Klavye teleoperasyonu farklıdır ve küresel bir arka uç gerektirir: X11, Windows veya Erişilebilirlik özellikli macOS.

Kaç bölüm ve iyi bir bölüm nasıl görünür

Kayıt kılavuzu, ilk görev için en az 50 bölüm, nesne konumu başına yaklaşık 10 bölüm önermektedir. politika sayfaları her model için bir minimum listeler, bunun altında bir çalıştırma GPU zamanına değmez.

PolitikaMinimum bölüm sayısıVeri kümesi formatıGPU seviyesiÇalıştırma başına maliyet
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

Daha iyi soru, neyden ne kadar olduğudur. Data Scaling Laws in Imitation Learning for Robotic Manipulation (Lin ve diğerleri, 2024) 40.000'den fazla gösteri topladı ve 15.000'den fazla gerçek dünya denemesi gerçekleştirdi. Genelleme, environments and objects sayısı ile kabaca bir güç yasası ilişkisi izledi ve ortam veya nesne başına bir eşiğin ötesinde, ek gösterilerin etkisi minimaldi. Bir tezgahta: bir çekimi tekrarlamak yerine nesneyi hareket ettirin, aydınlatmayı değiştirin, küpü değiştirin.

Lider-takipçi teleoperasyonu bir veri kaynağı olarak
Avantajlar
  • Klavye veya oyun kumandasının aksine, bir servonun yeniden üretebileceği sürekli eklem yörüngeleri
  • Eylem ve durum bir koordinat kuralını paylaşır, böylece politika doğrudan komuta edebileceği bir hedef öğrenir
  • 25 saniyelik bir bölüm artı 10 saniyelik bir sıfırlama, saatte yaklaşık 100 bölümdür
  • Operatör takipçinin durduğunu veya sıkıştığını hisseder, böylece veriler kaydedilmeden önce hatalar ortaya çıkar
Dezavantajlar
  • İkinci bir kol, parça maliyetini yaklaşık olarak iki katına çıkarır
  • Gösteriler operatör alışkanlıklarını miras alır; Mandlekar ve diğerleri, politika kalitesinin gösteri kalitesine büyük ölçüde bağlı olduğunu bulmuştur
  • Lider döngü hızında örneklenir, bu nedenle duraklamalar politikaya beklemeyi öğreten neredeyse aynı satırlar haline gelir
  • Oturumlar arasında tutarlılığı sağlayan hiçbir şey yoktur: 5 cm hareket ettirilen bir kamera gizli bir dağılım kaymasıdır

İyi bir bölüm sıkıcıdır: tekrarlanabilir başlangıç pozu, tek bir şeyin yapılması, nesne kutuya konulduğunda sona ermesi, kontrol listesinin önerdiği 25 ila 50 karakterlik görev dizisi. Kırmızı küpü al ve kutuya bırak bir görev dizisidir; task1 kontrol listesinin açıkça belirttiği bir anti-desendir. Belirsiz açıklamalar sorunlar listesinin başında yer alır ve bunlar en çok , burada dizi bir model girdisidir, dosya adı değil.

Bir veri kümesini sessizce mahveden kusurlar

Hiçbiri istisna fırlatmaz. Hepsi eğitime kadar hayatta kalır, iyi görünen bir kayıp eğrisi ve hiçbir şey yapmayan bir robot olarak ortaya çıkar. Sahne kurulurken kontrol edin.

KusurNasıl görünürNereden gelirNasıl yakalanır
Değiştirilmiş kamera görünümleriüst anahtarın altındaki bilek görüntüsüyeniden takıldıktan sonra dizin yeniden atamasıher oturumda lerobot-find-cameras; kimliğe göre yollar
Donmuş karelerdüzinelerce satır için aynı görüntükamera teslimatı durdurur; döngü son kareyi tekrarlarlerobot-dataset-viz içinde inceleyin
Düşen karelersatır sayısı fps çarpı saniyenin altındakuyruk taşar, engellemek yerine düşürürGünlükte 'Encoder queue full'; satırlar vs fps çarpı süre
Limitinde eklembir eklem minimumda veya maksimumda düzlider aralığı takipçinin aralığını aşıyor veya kötü bir orta pozds.meta.stats'ta eklem başına min/maks; önceden lerobot-find-joint-limits
Görüntü ve eylem senkronize değilpolitika öngörüyor veya gecikiyorkameralar döngüden farklı bir fps'deher kamerayı --dataset.fps'de tutun
Ölü zamanuzun süreli aynı eylem satırlarıoperatör kayıt cihazı çalışırken durakladıardışık aynı eylem satırlarının oranı
Kullanılamaz görev dizisitask1, demo2, testhızlı yazmav3.0'da meta/tasks.parquet (v2.1'de meta/tasks.jsonl idi); lerobot-edit-dataset modify_tasks ile düzeltin
Atlanan kareler kendilerini gizler

Kodlayıcı, kamera başına varsayılan olarak 30 karelik sınırlı bir kuyruk tutar. Yetişemediğinde, kareler engellenmek yerine atılır: yakalama devam eder ve hiçbir şey çökmez. Encoder queue full for {camera}, dropped N frame(s) mesajını ve bölüm sonunda kamera başına toplam sayıyı alırsınız. lerobot eşiği: yaklaşık yüzde 5 eksik, aşırı yüklenmiş bir sistem anlamına gelir, yüzde 2 beklenen başlangıç yüküdür. Sırasıyla düzeltmeler: --display_data=false, --dataset.encoder_threads değerini düşürme, vcodec=h264, akışı kapatma.

Bir uyarı: akış-kodlama kılavuzunun tablosu varsayılanı True olarak listelerken, ana daldaki veri sınıfı ise streaming_encoding: bool = False olarak okur. Belgeler ve kod çelişiyor, bu yüzden açıkça ayarlayın; lerobot, bayrak kapalıyken başladığında bunu öneren bir ipucu kaydeder.

GPU kiralamadan önce veri setini kontrol edin

Belgelerdeki kabul testi: video süresini CLI'nin bildirdiği bölüm süresiyle karşılaştırın ve satır sayısının fps çarpı süreye eşit olduğunu doğrulayın. Toplamda değil, bölüm başına.

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"])
Kare hızı (fps) çarpı süreden çok farklı olan bir bölüm, eğitim için değil, silinmek için bir adaydır.

Sonra ona bakın. lerobot-dataset-viz bir bölümü kamera görünümlerinin yanında eklem izleriyle kare kare Rerun veya Foxglove'da oynatır. Değiştirilmiş kameralar ve donmuş kareler on saniye içinde ortaya çıkar. İnsanlar bu adımı atlar.

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 ayrıca bölme, birleştirme, özellik kaldırma, görevleri değiştirme ve istatistikleri yeniden hesaplama işlemlerini de yapar. Cömertçe silin: kötü bir bölüm bir bölüme mal olur; onu tutmak ise üzerinde eğitilen her çalıştırmaya mal olur.
AY-Robots veri kümesi dizini, herkese açık LeRobot veri kümelerini bölüm sayıları ve formatlarıyla listeler.
Karşılaştırılabilir veri kümeleri nasıl boyutlandırılır ve açıklanır.

v2.1 veya v3.0: kaydetmeden önce karar verin

v2.1 her bölüm için bir parquet ve bir MP4 dosyası yazıyordu. v3.0 ise birçok bölümü paylaşılan parçalara birleştirir ve sınırları meta verilerden yeniden oluşturur, bu nedenle info.json, bölüm numarası yerine data/chunk-{chunk_index:03d}/file-{file_index:03d}.parquet gibi yol şablonları taşır. Üst akım gerekçesi, daha az ve daha büyük dosyalar olmasıdır: daha hızlı başlatma ve ölçekte daha az dosya sistemi baskısı.

LeRobot v2.1LeRobot v3.0
Düzenher bölüm için bir parquet ve bir MP4parça başına birçok bölüm
Bölüm meta verileriJSONL dosyalarımeta/episodes/ altında parçalı parquet, veri kümeleri yığını aracılığıyla
Hub'dan akışhayırevet, StreamingLeRobotDataset aracılığıyla
lerobot 0.6.1 tarafından yazıldıhayırevet, bugün elde ettiğiniz
GR00T N1.7 ve N1.5 tarafından okunurevethayır, aşağı dönüştürülmeli
Bugün Kayıt, Yarın GR00T Eğitimi

lerobot 0.6.1, v3.0 yazar, ancak GR00T N1.7 ve N1.5, v2.0 veya v2.1 okur ve üzerinde çöker. Gidiş yönüne dikkat edin: src/lerobot/scripts/ içinde convert_dataset_v21_to_v30.py bulunur ve tersi yönde bir şey yoktur. Oturumdan önce bunu halledin. Düzeltme: v3 olarak reddedilen veri kümesi.

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 bölüm için hızlı. Ölçek farklı bir iştir: lerobot'un ham DROID'i v3.0'a aktarma kılavuzu, 7+ gün yerel işlem ve yaklaşık 400 GB bütçe ayırır.

Aynı veri setine iki yol

Yukarıdaki her şey, kendi makinenizde: USB numaralandırması, ffmpeg derlemesi, kodlayıcı ayarı ve kalibrasyon dosyaları size ait. Hattı anlamak, alışılmadık bir kamera düzeneği çalıştırmak veya verileri yerel tutmak için doğru yol.

Bu yolun maliyeti

Zaman: her kol için bir akşam montaj, zorlu bir ilk kalibrasyon ve bir kameranın yanlış yuvada olması nedeniyle atacağınız ilk oturum.

Hattı kendiniz bağlamadan LeRobot veri setleri kaydedin

AY-Robots masaüstü istemcisi, bir teleoperasyon oturumundan LeRobot formatında bölümleri, kamera akışlarını ve eklem durumlarını kaydeder, ardından veri setini eğiticisine teslim eder.

Masaüstü istemcisini edinin

Veri setinden politikaya

Buradaki her çalışması elli temiz bölümle beslenir. , yalnızca sizin göreviniz üzerinde sıfırdan eğitilir, yaklaşık 80 M parametreye sahiptir ve eylem adımı başına yaklaşık 20 ms sürer; hızlı hareketlere uyum sağlayabilen beş modelden tekidir. , 24 GB'lık bir kartta yaklaşık 450 M parametreye sahiptir. , yaklaşık 3 B parametreli bir temel modeldir; burada yaklaşık 40 M parametreye dokunur, bir A100 veya H100 gerektirir ve v2.1 veri setini ister.

Sıradaki, kombinasyonunuz için rehber: , veya ; ilk çalıştırma için, daha kısadır. Politika tezgahta çalışırken masayı hareket ettirdiğiniz anda çökerse, bu bir veri sorunudur: ve çeşitlilik konusunda daha derinlemesine bilgi verir.

İlk çalışan bir politika için gerçekten kaç bölüme ihtiyacım var?

SmolVLA için otuz, ACT, Pi0.5, GR00T N1.5 ve N1.7 için elli; bunlar AY-Robots eğitmenlerinin uyguladığı minimumlardır. LeRobot rehberi, ilk görev için bağımsız olarak en az 50, nesne konumu başına yaklaşık 10 bölüm önermektedir. Veri ölçeklendirme çalışmaları, genellemenin gösterim sayısından ziyade ortamlar ve nesnelerle ölçeklendiğini bulmuştur, bu nedenle tek bir sahnenin yüz çekimi, beş farklı yerleşimdeki elli çekimden daha kötüdür.

Bir lider kola ihtiyacım var mı, yoksa klavye ile teleoperasyon yapabilir miyim?

lerobot, klavye ve gamepad teleoperatörleri sunar, bu nedenle bir lider kol kesinlikle gerekli değildir, ancak şiddetle tercih edilir: lider-takipçi, kaydedilen eylemin koordinat konvansiyonunda sürekli eklem yörüngeleri sağlarken, klavye girişi bir politikanın sarsıntı olarak öğrendiği kademeli hareket üretir. Klavye teleoperasyonu ayrıca küresel bir tuş arka ucuna ihtiyaç duyar, bu nedenle Wayland ve headless sistemlerde başarısız olur.

Raspberry Pi veya küçük bir mini PC'de kayıt yapabilir miyim?

Evet, ayarlamalarla. Akış-kodlama rehberi, modern 4 çekirdekli makineleri ve Raspberry Pi 5'i kapsayan düşük kaynaklı bir kategoriye sahiptir ve iki kamerayı 640x480 çözünürlükte ve 30 fps'de 'biraz ayarlama gerektirir' sütununa yerleştirir. Tavsiyesi: --dataset.rgb_encoder.vcodec=h264 ve --dataset.streaming_encoding=false aracılığıyla kodlayıcının yakalama döngüsüyle rekabet etmesini durdurun. İki kamerayı 640x480'de yaklaşık saniyede 55 milyon piksel, iki kamerayı 1920x1080'de ise yaklaşık 373 milyon piksel olarak değerlendirir.

Az önce kaydettiğim veri setinin gerçekten sağlıklı olduğunu nasıl anlarım?

Üç basit kontrol. Her bölümün video süresini CLI'nin bildirdiği süreyle karşılaştırın ve satır sayısının, toplam yerine bölüm başına, fps çarpı bu süreye eşit olduğunu doğrulayın; bu, lerobot'un kodlama rehberinin verdiği kabul testidir. ds.meta.stats'ı okuyun; burada minimumu maksimumuna eşit olan bir eklem asla hareket etmemiştir. Ardından, değiştirilmiş görünümlerin ve donmuş karelerin ortaya çıkmasının tek yolu olan lerobot-dataset-viz'de iki veya üç bölümü tekrar oynatın. Düşen karelerde rehber, yaklaşık yüzde 5 eksikliği sınır olarak belirler; yaklaşık yüzde 2 normal geçici yüktür, genellikle sadece başlangıçta olur.

Eğitim işim veri setini v3.0 olarak reddetti. Şimdi ne yapmalıyım?

GR00T N1.7 ve N1.5, LeRobot v2.0 veya v2.1'i okur ve lerobot 0.6.1'in kaydettiği v3.0'da çöker. Ya eğitimden önce formatı belirleyin ya da v3.0'ı doğal olarak okuyan bir politika kullanın: Pi0.5, SmolVLA veya ACT. lerobot, v2.1'den v3.0'a bir dönüştürücü sunar ve tersi için hiçbir şey sunmaz.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started