
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.
| Özellik | dtype | Şekil | Ne olduğu |
|---|---|---|---|
| action | float32 | [6] | lider koldan eklem hedefleri |
| observation.state | float32 | [6] | takipçinin ulaştığı eklem pozisyonları |
| observation.images.top | video | [480, 640, 3] | sahne kamerası, MP4 (burada av1) |
| observation.images.wrist | video | [480, 640, 3] | bilek kamerası, aynı hızda |
| timestamp | float32 | [1] | bölüm başlangıcından bu yana geçen saniyeler |
| frame_index, episode_index, index, task_index | int64 | [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.
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.

Çalışma tezgahında ihtiyacınız olanlar
| Öğe | Detay | Not |
|---|---|---|
| Takipçi kol | SO-100, altı Feetech STS3215 servo | parçalar halinde yaklaşık 110 ila 150 EUR |
| Lider kol | ikinci 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 uygun | aşağıdaki uyarıya bakın |
| Kameralar | iki USB kamera, 30 fps'de 640x480 | bir sahne görünümü, biri bilekte |
| Ana Bilgisayar | Python 3.12 veya daha yeni, ffmpeg | requires-python >= 3.12 |
| Hub hesabı | Hugging Face yazma belirteci | optional with --dataset.push_to_hub=false |
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
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-infoEkstralar ç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.
- 1Her 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/ttyACM0komutuna ihtiyacınız olabilir.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. - 2Motor 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.
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 3Her 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.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 - 4Herhangi 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.
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
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
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İ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.
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
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=2Aş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.
| Bayrak | Varsayılan | Ne işe yarar |
|---|---|---|
| --dataset.repo_id | empty | ad; varsayılan olarak zaman damgası eklenir |
| --dataset.single_task | empty | her bölümle birlikte depolanan görev dizesi |
| --dataset.root | $HF_LEROBOT_HOME/repo_id | yazma yolu, varsayılan ~/.cache/huggingface/lerobot/ |
| --dataset.fps | 30 | kontrol döngüsü hızı ve veri kümesi kare hızı |
| --dataset.episode_time_s | 60 | bir bölümün otomatik olarak ilerlemesinden önceki saniyeler |
| --dataset.reset_time_s | 60 | sahne sıfırlama; kol hareket eder, hiçbir şey depolanmaz |
| --dataset.num_episodes | 50 | bu oturumda kaydedilen bölüm sayısı |
| --dataset.push_to_hub | true | oturum sonunda yükle; false yerel kalır |
| --dataset.streaming_encoding | false in the dataclass, true in the docs table | yakalama sırasında kodla; açıkça ayarla |
| --dataset.encoder_queue_maxsize | 30 | kamera başına arabelleğe alınmış kareler, 30 fps'de ~1 s |
| --dataset.encoder_threads | null (codec decides) | kodlayıcı başına iş parçacığı; yakalama takılırsa düşür |
| --dataset.no_stamp | false | repo_id'yi tam olarak yazıldığı gibi tut |
| --resume | false | mevcut bir veri kümesine ekle; --dataset.root gerektirir |
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.
| Politika | Minimum bölüm sayısı | Veri kümesi formatı | GPU seviyesi | Çalıştırma başına maliyet |
|---|---|---|---|---|
| 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 |
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.
- 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
- İ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.
| Kusur | Nasıl görünür | Nereden gelir | Nası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ş kareler | düzinelerce satır için aynı görüntü | kamera teslimatı durdurur; döngü son kareyi tekrarlar | lerobot-dataset-viz içinde inceleyin |
| Düşen kareler | satır sayısı fps çarpı saniyenin altında | kuyruk taşar, engellemek yerine düşürür | Günlükte 'Encoder queue full'; satırlar vs fps çarpı süre |
| Limitinde eklem | bir eklem minimumda veya maksimumda düz | lider aralığı takipçinin aralığını aşıyor veya kötü bir orta poz | ds.meta.stats'ta eklem başına min/maks; önceden lerobot-find-joint-limits |
| Görüntü ve eylem senkronize değil | politika öngörüyor veya gecikiyor | kameralar döngüden farklı bir fps'de | her kamerayı --dataset.fps'de tutun |
| Ölü zaman | uzun 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 dizisi | task1, demo2, test | hızlı yazma | v3.0'da meta/tasks.parquet (v2.1'de meta/tasks.jsonl idi); lerobot-edit-dataset modify_tasks ile düzeltin |
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.
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"])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.
# 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 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.1 | LeRobot v3.0 | |
|---|---|---|
| Düzen | her bölüm için bir parquet ve bir MP4 | parça başına birçok bölüm |
| Bölüm meta verileri | JSONL dosyaları | meta/episodes/ altında parçalı parquet, veri kümeleri yığını aracılığıyla |
| Hub'dan akış | hayır | evet, StreamingLeRobotDataset aracılığıyla |
| lerobot 0.6.1 tarafından yazıldı | hayır | evet, bugün elde ettiğiniz |
| GR00T N1.7 ve N1.5 tarafından okunur | evet | hayır, aşağı dönüştürülmeli |
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.
# 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=falseAynı 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.
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.
Masaüstü istemcisi, bir teleoperasyon oturumundan doğrudan LeRobot formatında veri setleri, bölümler, kamera akışları ve eklem durumları kaydeder. Bu veri seti eğitim formunu besler: model, veri seti ve hiperparametreleri seçin, arka uç modelin VRAM'ine göre boyutlandırılmış bir GPU kiralar, eğiticiyi çalıştırır ve kontrol noktalarını nesne depolamaya yazar.
- 1İstemciyi Kurun
İndirme sayfasında; kurulum istemci belgelerinde.
- 2Teleoperasyon oturumundan kayıt yapın
Kolu sürün; istemci bölümleri LeRobot formatında yazar. Adım adım rehber: ilk veri setinizi kaydedin.
- 3Veya kendi verilerinizi getirin
Bir veri seti ayrıca bir Hugging Face repo kimliğinden veya kendi makinenizden gelebilir: veri seti belgeleri, genel dizin.
- 4Eğitin ve geri çalıştırın
Eğitim matrisinden kombinasyonu seçin, ardından politikayı tekrar kola uygulayın. Yaklaşık 24 GB katmanında 1 ila 3 USD, A100 veya H100 katmanında 4 ila 12 USD.
Kolunuzu monte etmez veya kalibre etmez, ayrıca kusurlu bir bölümü onarmaz, bu nedenle denetim adımı hala geçerlidir. Diğer uçta da katı bir sınır vardır: hızlı görevler için çıkarım, servoların yanında olmalıdır. Kontrol döngüsü eylem adımı başına 20 ila 485 ms çalışır ve bunun üzerine genel internet gidiş-dönüşleri, çalışan bir politikayı tereddütlü bir politikaya dönüştürür.
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 edininVeri 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.
Sources
- LeRobot: Gerçek Dünya Robotlarında Taklitçi Öğrenme
- LeRobot: SO-100 montajı, motor kurulumu ve kalibrasyonu
- LeRobot: Kameralar ve lerobot-find-cameras
- LeRobot: Kurulum ve ekstralar matrisi
- LeRobotDataset v3.0: düzen ve v2.1 geçişi
- LeRobot: Akışlı video kodlama ve düşen kareler
- LeRobot: Büyük veri kümelerini v3.0'a taşıma (DROID)
- lerobot v0.6.1 sürümü, 3 Ağustos 2026
- DatasetRecordConfig: gerçek kayıt varsayılanları
- lerobot_record.py: kayıt döngüsü ve devam ettirme yönetimi
- TheRobotStudio/SO-ARM100: derleme deposu ve malzeme listesi
- Hugging Face: LeRobot Topluluk Veri Kümeleri kontrol listesi
- lerobot/svla_so100_pickplace: 50 bölüm, 19.631 kare
- Lin ve diğerleri (2024), Taklitçi Öğrenmede Veri Ölçekleme Yasaları
- Mandlekar ve diğerleri (2021), Çevrimdışı İnsan Gösterilerinden Öğrenmede Önemli Olanlar
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