AY-Robots halka açık veri kümesi dizini, SO-100 sınıfı kollarda kaydedilmiş LeRobot veri kümelerini gösteriyor
Veri KümeleriOpen X-EmbodimentDROIDSO-100LeRobot

DROID, BridgeData V2 ve Open X'i bir SO-100 üzerinde kullanma

AY-Robots ResearchAugust 23, 202618 dk okuma

DROID, BridgeData V2 ve Open X-Embodiment, 6 ve 7 Serbestlik Dereceli kollarda 7 boyutlu uç efektör eylemlerine dönüşür. Bir SO-100, 6 eklem pozisyonu alır. Ne aktarılır, ne aktarılmaz, bunun yerine ne yapılmalı.

Kısa versiyon

  • Üçünün de LeRobot yapıları tek bir kuralı paylaşır: 7 boyutlu bir uç efektör eylemi [x, y, z, roll, pitch, yaw, gripper] ve bir doldurma yuvasına sahip 8 boyutlu bir durum. Bir SO-100 altı mutlak eklem pozisyonu alır.
  • Bu 7 boyutlu vektör, dönüştürücünün eseridir: DROID'in kendi RLDS eylem alanı, 6 eklem hızı artı bir tutucu pozisyonudur ve action_dict içinde Kartezyen görünüm bulunur.
  • Dört saat: DROID 15 fps, BridgeData V2 5 fps, google_robot dilimi 3 fps, bir SO-100 kaydı 30 fps.
  • Bunları kendi verilerinizle birleştiremezsiniz. validate_all_metadata, farklı olan fps, robot_type veya özelliklerden ilkinde hata verir ve üçü de farklıdır.
  • Aktarılan, önceden eğitilmiş ağırlıklardır, bölümler değil. Açık kaynak verileri, pi0'ın ön eğitim karışımının %9,1'ini oluşturur.
  • En ucuz gerçek kullanımları bir test düzeneğidir: bir hafta sonu kayıt yapmadan önce hattınızı kanıtlayan, bilinen iyi bir 2 GB, 100 bölümlük DROID örneği.

Bir Google Cloud depolama alanında milyon yörüngeli bir genel veri kümesi ve masanın üzerinde parçaları 110 ila 150 EUR'ya mal olan bir SO-100 var. Birincisi neden ikincisine öğretemiyor? Kısmen öğretebilir, ancak aktarımın neredeyse hiçbiri insanların beklediği yerde gerçekleşmez ve en kolay görünen kısım hiç çalışmaz.

Şunlar takip ediyor: DROID, BridgeData V2 ve Open X-Embodiment içinde ne var, her birinin düşük maliyetli 5 Serbestlik Dereceli bir kolla çakıştığı yerler ve bunun yerine ne yapılacağı. Aşağıdaki her sayı ait olduğu makaleden, veri kümesi kartından veya kaynak dosyasından alınmıştır.

Üç veri kümesinin aslında ne içerdiği

DROIDBridgeData V2Open X-Embodiment
RobotFranka Panda, 7 DoF, Robotiq 2F-85WidowX 250, 6 DoF, ~4,000 USD rig22 embodiments, 60 datasets, 34 labs
Ölçek76k trajectories, 350 hours60,096 trajectories1M+ trajectories, 527 skills
Çeşitlilik564 scenes, 84 tasks, 50 collectors24 environments, 13 skills160,266 tasks, 21 institutions
Bileşimtamamı teleoperasyonla50.365 teleoperasyonla, 9.731 betiklenmişkaynak laboratuvara göre
Kontrol hızı15 Hz5 Hzdeğişir, 3 fps ve üzeri
Kameralar2 x ZED 2 dış, 1 x ZED Mini bilek4'e kadar, çoğu bölümde sadece sabit olanlaboratuvarın kullandığı ne ise
Ham indirme1.7 TB RLDS, 8.7 TB raw stereoJPEG arşivleriveri kümesi başına TFDS kovaları
Giriş noktası LeRobot dönüşümüdür, orijinal kova değil

Çok az kişi hala 1.7 TB RLDS TFRecords indiriyor. Topluluk kuruluşu IPEC-COMMUNITY, Open X-Embodiment'in çoğunu AV1 video ile LeRobot veri kümesi biçiminde yeniden yayınladı ve DROID burada 392 GB yer kaplıyor. Çalışacağınız sürüm budur ve ilk okumanız gereken yer meta/info.json dosyasıdır.

DROID

Üçü arasında en standartlaştırılmış olanı. Her yerde tek bir donanım: Robotiq 2F-85 tutucuya sahip bir Franka Panda, iki ayarlanabilir ZED 2 stereo kamera ve bir bilek ZED Mini, Meta Quest 2 kontrolörleri ile teleoperasyonla kontrol ediliyor, Polymetis aracılığıyla 15 Hz hızında hem eklem hem de uç efektör uzayında kaydedildi. Dil etiketleri daha sonra tasq.ai aracılığıyla, her bölüm.

  • 76 bin yörünge, 350 saat, 564 sahne, 84 görev, üç kıtada 50 toplayıcı.
  • Başlıca sonuç, bağımsız eğitim değil, ortak eğitimdir: Alan içi gösterimlerle 50/50 oranında karıştırılmış partiler, dağıtımdaki mutlak başarıda bir sonraki en iyi yöntemi %22, dağıtım dışındaki başarıda ise %17 oranında geride bırakmıştır.
  • IPEC-COMMUNITY/droid_lerobot: 92,233 episodes, 27,044,326 frames, franka, 15 fps, codebase_version v2.0, three AV1 streams at 180x320, 392 GB.
  • 2 GB'lık, 100 bölümlük bir hata ayıklama örneği gs://gresearch/robotics/droid_100 adresinde bulunmaktadır. Oradan başlayın.

BridgeData V2

Hobi kurulumuna en yakın olanı: bir WidowX 250 6-DoF kolu, 24 ortamda ve 13 beceride 5 Hz hızında 60,096 yörünge. Bileşime dikkat edin: 50,365 uzman teleoperasyonlu gösterim ve rastgele betiklenmiş bir al-yerleştir politikasından 9,731 gösterim, yani yaklaşık %16'sı insan gösterimi değildir, bu da taklit öğrenimi kalitesi için önemlidir. Olağan indirme, IPEC-COMMUNITY/bridge_orig_lerobot, 5 fps hızında 53,192 bölüm ve 1,893,026 kare, robot_type widowx olarak rapor etmektedir: makaledeki 60,096'dan daha az, bu nedenle sayıyı meta/info.json dosyasından okuyun, ikisinden birini alıntılamak yerine.

Open X-Embodiment

Aynı anlamda bir veri kümesi değil: 34 laboratuvardan 60 mevcut robot veri kümesi, 22 uygulama ve bir milyondan fazla yörüngeyi kapsayan tek bir RLDS koleksiyonunda bir araya getirildi. BridgeData V2, içinde bridge_orig olarak yer alıyor; google_robot dilimi, fractal20220817_data, 3 fps'de 87.212 bölüme dönüşüyor.

Bir araya getirme işlemi, makalenin açıkça belirttiği bir uyarıyı içeriyor. RT-X deneyleri için yazarlar her kaynağı 7-DoF uç efektör eylemine dönüştürüyor, ancak veri kümeleri arasında koordinat çerçevelerini hizalamıyor ve her robotun orijinal kontrol şemasına göre eylem değerlerinin mutlak veya göreceli konumlar veya hızlar olmasına izin veriyorlar. Vardıkları sonuç: aynı eylem vektörü, farklı robotlar için çok farklı hareketlere neden olabilir.

AY-Robots veri kümesi dizini, bölüm sayıları ve görev açıklamalarıyla genel LeRobot veri kümelerini listeliyor
Genel veri kümesi dizini /directory adresinde: zaten LeRobot biçiminde olan, desteklenen bir kolla eşleşen veri kümeleri.

Uyumsuzluk, dört bölümde

Donanım uyumsuzluğu genellikle belirsiz bir sorun olarak ele alınır. Aslında dört tanedir, farklı şekillerde başarısız olurlar ve ikisi betiklerle düzeltilemez.

1. Serbestlik Dereceleri

Bir SO-100'ün beş kol eklemi ve bir tutucusu vardır. Motor olarak sayıldığında bu 6-DoF bir koldur ve SmolVLA makalesi bunu böyle adlandırır; konumlandırma mekanizması olarak sayıldığında ise 5-DoF'tur ve LeRobot, bileğin yönelimi yalnızca kısmen takip ettiği 5-DOF SO-101 üzerindeki yumuşak yönelimli IK'yı tanımlayan ters-kinematik docstring'inde bunu böyle adlandırır. Bir Franka'nın yedi konumlandırma eklemi vardır. Bu fark, hangi pozların mevcut olduğunu belirler: 5-DoF bir kol genellikle aynı anda rastgele bir konuma ve yönelime ulaşamaz, bu nedenle çözücü, gösterilen hareketten farklı olarak ulaşabileceği en yakın konumu döndürür. Arka plan: serbestlik dereceleri.

python
# src/lerobot/robots/so_follower/so_follower.py
motors = {
    "shoulder_pan":  Motor(1, "sts3215", norm_mode_body),
    "shoulder_lift": Motor(2, "sts3215", norm_mode_body),
    "elbow_flex":    Motor(3, "sts3215", norm_mode_body),
    "wrist_flex":    Motor(4, "sts3215", norm_mode_body),
    "wrist_roll":    Motor(5, "sts3215", norm_mode_body),
    "gripper":       Motor(6, "sts3215", MotorNormMode.RANGE_0_100),
}
# action keys are "<motor>.pos"; send_action sync_writes them to
# "Goal_Position"  ->  a 6-D ABSOLUTE JOINT POSITION command


# openpi/src/openpi/policies/droid_policy.py
def make_droid_example() -> dict:
    return {
        "observation/exterior_image_1_left": np.random.randint(256, size=(224, 224, 3), dtype=np.uint8),
        "observation/wrist_image_left":      np.random.randint(256, size=(224, 224, 3), dtype=np.uint8),
        "observation/joint_position":        np.random.rand(7),   # seven Franka joints
        "observation/gripper_position":      np.random.rand(1),
        "prompt": "do something",
    }
# state = concat(joint_position, gripper_pos)  ->  8-D
Sol: src/lerobot/robots/so_follower/so_follower.py adresinden LeRobot'un SO takipçisi. Sağ: openpi'nin DROID politika girdisi. Altıya karşı sekiz.

Yani hazır bir DROID kontrol noktası bir kısayol değildir. Physical Intelligence, pi05_droid'i gs://openpi-assets/checkpoints/pi05_droid adresinde gönderir ve kapsamını öven aynı README, bu uzman kontrol noktalarının sizin kurulumunuza genelleşmeyebileceği konusunda uyarır. Durumu sekiz Franka eklem numarasıdır ve görüntü anahtarları exterior_image_1_left ve wrist_image_left'tir. Hiçbir bayrak bunu altı motorlu bir SO-100 komutuna dönüştürmez.

2. Eylem vektörü aslında ne söylüyor

Boyutsallıktan daha derin. LeRobot dönüşümlerinde üçü de tutucunun Kartezyen uzayda nereye gitmesi gerektiğini söyler. Bir SO-100, altı servonun nereye gitmesi gerektiğini söyler. Dönüştürmek, bir yeniden şekillendirme değil, bir kinematik model ve bir çözücü gerektirir.

ÖzellikLeRobot biçiminde OXE, DROID ve BridgeLeRobot'ta SO-100
Eylem vektörü7-B: x, y, z, roll, pitch, yaw, tutucu6-B: motor başına bir hedef konum
Durum vektörü8-B, bir dolgu yuvası ile (google_robot bir kuaterniyon kullanır)6-B, motor başına bir
ÇerçeveKartezyen, veri kümeleri arasında hizasızeklem uzayı, kol başına kalibrasyon
Mutlak veya göreceliher ikisi de, kaynak laboratuvar tarafından belirlenirmutlak hedef konumlar
Birimlerveri kümesi başına normalleştirilmiş, sonra ayrıklaştırılmışvarsayılan olarak derece (use_degrees=True), aksi takdirde -100 ila 100
Sessiz hatamutlak olarak okunan bir deltakalibre edilmemiş bir kol
7 boyutlu Kartezyen vektör, DROID'in değil, dönüştürücünün kuralıdır

openx2lerobot README, dönüştürdüğü her veri kümesi için birleşik bir 8 boyutlu durum ve 7 boyutlu eylem belgeliyor; pad alanı buradan geliyor. DROID'in kendi RLDS şeması farklıdır: en üst düzey action, action_dict altında cartesian_position, cartesian_velocity, joint_position ve joint_velocity ile birlikte 6 eklem hızı artı 1 tutucu konumu içeren 7 boyutlu bir vektördür. openpi eklem uzayı görünümünü okurken, LeRobot yapısı size Kartezyen olanı sunar. İkisi de altı mutlak servo açısı değildir.

LeRobot eksik parçayı sağlıyor: SO takipçisi, InverseKinematicsEEToJoints ve ForwardKinematicsJointsToEE adımlarına sahip bir kinematik işlemciye sahiptir. Anahtarları ee.x, ee.y, ee.z artı bir dönüş vektörü ee.wx, ee.wy, ee.wz ve ee.gripper_pos'tur, bu nedenle yön kodlaması bile dosyalardaki roll-pitch-yaw'dan farklıdır. IK adımı, varsayılan olarak 0.01 olan bir orientation_weight alır; docstring'i, eksik tahrikli kollarda yalnızca konum tabanlı IK için 0.0 olarak ayarlanmasını söyler. Köprüyü kurabilirsiniz, ancak ödünç alınan her eylemin yön yarısı yaklaşık olarak kalır.

3. Kontrol hızı

DROID 15 Hz, BridgeData V2 5 Hz, google_robot dilimi 3 fps'dir; pi0'ın yazarları, karışımlarının açık kaynak kısmını 2 ila 10 Hz arasında düşük frekanslı kontrol olarak tanımlar. LeRobot'un DatasetRecordConfig'i varsayılan olarak fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50'dir. 5 Hz verilerle eğitilmiş bir bir eylemin 200 ms'yi kapsadığını öğrendi. 30 Hz'de tekrar oynatıldığında kol sürünür; basitçe yeniden örnekleme yaparsanız, tutucunun kapandığı kareyi bulanıklaştırırsınız. Ayrıca ile kötü etkileşir: 100 adımlık bir öbek 5 Hz'de 20 saniye, 30 Hz'de 3.3 saniyedir.

4. Kameralar

BridgeData V2, her 50 yörüngede iki kamera pozunu rastgele belirledi ve proje sayfasında verilerin çoğunun zaten yalnızca sabit görünümü taşıdığı belirtiliyor. DROID, ayarlanabilir ZED 2 montajları ve bir bilek ZED Mini kullandı. İki adet USB web kameranız göz kararı konumlandırılmış durumda. Kamera pozu, bir ; görsel kodlayıcının odaklandığı şeyin büyük bir kısmı budur ve dosya formatında pozların farklı olduğunu gösteren hiçbir şey yoktur.

Bir günü yiyip bitiren tuzak

Parçalar çalışacak kadar iyi bir araya geliyor. Veri seti yükleniyor, eğitim başlıyor, kayıp düşüyor, kontrol noktaları beliriyor, hiçbir hata oluşmuyor. Ardından politika kolda tanınabilir hiçbir şey yapmıyor ve siz eğitim betiğinizdeki bir hatayı aramakla bir gün geçiriyorsunuz. Hata yok: model, odanızda bulunmayan bir robot için Kartezyen bir eylem dağılımı öğrendi. Hiperparametrelerinizden değil, kayıp düşüyor, politika hiçbir şey yapmıyor kısmından başlayın.

Verileri yine de birleştirmeye çalıştığınızda ne olur

Açık plan, birkaç bin DROID bölümü ile kendi 50 bölümünüzü birleştirmektir. LeRobot bunu reddeder ve reddetme, farklı olan üç şeyi belirtir.

  1. 1
    Tam 1.7 TB yerine 100 bölümlük örneği çekin

    Yapıyı görmek için 2 GB yeterlidir.

    bash
    pip install gsutil tensorflow tensorflow-datasets
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/
  2. 2
    RLDS'yi LeRobot biçimine dönüştürün

    openx2lerobot, OXE standart dönüşümlerini kapsar ve robot tipini ve kontrol frekansını belirtir. README bu bilgiyi convert.sh dosyasına koyar.

    bash
    git clone https://github.com/Tavish9/any4lerobot.git
    cd any4lerobot/openx2lerobot
    
    python openx_rlds.py \
        --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \
        --local-dir ~/lerobot_droid100 \
        --repo-id you/droid100_lerobot \
        --use-videos
  3. 3
    Her şeyden önce meta/info.json dosyasını okuyun

    Gününüzün geri kalanının çalışıp çalışmayacağına bu dosya karar verir.

    bash
    python -c "import json;d=json.load(open('meta/info.json'));\
    print(d['codebase_version'], d['robot_type'], d['fps']);\
    print(d['features']['action']['shape'], d['features']['observation.state']['shape'])"
  4. 4
    Birleştirmeyi deneyin ve hatayı okuyun

    merge her veri kümesini yükler, ardından validate_all_metadata, fps, robot_type ve özellikleri listedeki ilkine göre kontrol eder ve ilk uyuşmazlıkta hata verir.

    bash
    lerobot-edit-dataset \
        --new_repo_id you/mixed \
        --operation.type merge \
        --operation.repo_ids "['you/droid100_lerobot', 'you/my_so100_task']"
    
    # ValueError: Same fps is expected, but got fps=30 instead of 15.

Referans değerleri, ilk listelediğiniz veri kümesinden gelir, bu yüzden mesaj DROID'in 15 fps'si yerine sizin 30 fps'nizden şikayet eder. fps'yi düzeltirseniz robot_type kontrolüne takılırsınız; onu düzeltirseniz, eylem için 6'ya karşı 7 olan özellik kontrolüne takılırsınız. Hiçbir sıralama geçmez ve aynı koruma, kayıt sırasında sanity_check_dataset_robot_compatibility aracılığıyla çalışır.

Kontrolü atlatmak için robot_type'ı sabit kodlamayın

Mevcut LeRobot ana sürümünde so100_follower ve so101_follower her ikisi de tek bir paylaşılan SOFollowerRobotConfig üzerine kaydedilmiştir, bu nedenle gerçek bir kayıttan gelen dize beklediğiniz olmayabilir. Kendi meta/info.json dosyanızdan okuyun ve devre dışı bırakmak zorunda kaldığınız bir kontrolü size bir şeyler söyleyen bir kontrol olarak kabul edin.

Peki, aslında ne aktarılıyor?

Ağırlıklar, bölümler değil. Her modern genelci politika, ön eğitimde bunun bir kısmını özümsedi ve siz yayınlanmış bir bunu düzgün bir şekilde yapacak hesaplama gücüne sahip kişiler tarafından zaten uzlaştırılmış olarak devralırsınız. pi0'ın makalesi orantı konusunda açık sözlüdür: zaman adımlarıyla sayıldığında, ön eğitim karışımının %9,1'i OXE, Bridge v2 ve DROID dahil olmak üzere açık kaynak verileridir. Bu rakam pi0'a aittir; her satıcının karışımı farklıdır.

Bir SO-100 projesinde herkese açık çapraz-beden verileri
Avantajlar
  • Görsel ve dilsel ön bilgiler: kodlayıcı binlerce mutfak ve kupa görmüş ve "kırmızı blok"un neye atıfta bulunduğunu biliyor.
  • Manipülasyon yapısı üzerinde bir ön bilgi: yaklaşma, kapatma, kaldırma, taşıma, bırakma, sayılar olmasa bile bedenden bağımsız.
  • Test için bilinen iyi bir veri kümesi. İşiniz 100 DROID bölümünü aşırı uyduramazsa, sorun kurulumunuzdadır.
  • Referans noktaları: küçük ölçekli veri kümesi alanlarında RT-1-X, orijinal yöntem veya RT-1'den %50 daha yüksek ortalama başarı oranına ulaştı ve RT-2-X, ortaya çıkan becerilerde RT-2'yi yaklaşık 3 kat yendi.
Dezavantajlar
  • Kullanılabilir eylem denetimi yok. 7 boyutlu bir Kartezyen hedef, 6 boyutlu bir eklem komutu değildir.
  • Kamera pozisyonu aktarımı yok ve verilerdeki hiçbir şey pozisyonların farklı olduğunu söylemez.
  • Zamanlama aktarımı yok: 30 fps'lik bir kaydediciye karşı 3, 5 ve 15 fps'lik kaynaklar.
  • Tutucu aktarımı yok. Bir Robotiq 2F-85 ve bir STS3215 üzerindeki basılı bir çene, kuvvet, strok ve dinamiklerde farklılık gösterir.
  • Yalnızca ölçek, yazarları için bile yeterli değildi: büyük veri kümesi alanlarında RT-1-X, yalnızca o veri kümesi üzerinde eğitilmiş bir RT-1'i geçemedi.
  • İhtiyaç duyduğunuz kendi bölüm sayısında azalma yok.
Model KatmanıAktarılır mı?Neden
Görsel kodlayıcıEvet, güçlü bir şekildeNesneler ve sahneler bedenden bağımsızdır
Dil temellendirmeEvetTalimatlar metindir, geometri değil
Çapraz-modal füzyonÇoğunluklaİstemde adı geçen nesneye odaklanır
Propriyosepsiyon kodlayıcıHayırGiriş boyutu ve eklem semantiği farklıdır
Eylem başlığıHayırBulunmadığınız 7 boyutlu bir Kartezyen uzayda eğitilmiştir
Normalizasyon istatistikleriHayır ve tehlikeliYabancı istatistikler her komutu kaydırır

Bu yüzden SmolVLA düşük maliyetli bir kolda farklı davranır. Makalesi, Hugging Face'ten 481 topluluk veri setini, gövde tipine, bölüm sayısına, veri kalitesine ve kare kapsamına göre filtreleyerek seçer: 22.9K bölüm, 10.6M kare, gerçek SO-100 ve SO-101 kolları üzerinde değerlendirilmiştir. Küçük ve eşleşen, büyük ve eşleşmeyenleri yener. Karşılaştırın: ACT against SmolVLA.

İzlemeye Değer Üç Yol

Yol A: Veriyi zaten işlemiş bir kontrol noktasından ince ayar yapın

Çoğu kişi bu yolu tercih etmeli. DROID veya Open X-Embodiment'a asla dokunmayın: ön eğitimi zaten çapraz gövde verilerini emmiş bir politika seçin, kendi bölümlerinizi kaydedin, ince ayar yapın.

PolitikaParametrelerMinimum bölüm sayısıVeri kümesi formatıGPU seviyesiÇıkarımTemel kontrol noktası
GR00T N1.7~3 B, ince ayarda eğitilmiş ~40 M50LeRobot v2.0 or v2.1A100 or H100 80 GB152 ms per stepnvidia/GR00T-N1.7-3B
GR00T N1.5~3 B50LeRobot v2.0 or v2.1A100 or H100 80 GB165 msnvidia/GR00T-N1.5-3B
Pi0.5~3 B, PaliGemma omurgası50LeRobot v3.0A100 or H100 80 GB485 mslerobot/pi05_base
SmolVLA~450 M30LeRobot v3.0RTX 4090 or any 24 GB245 mslerobot/smolvla_base
ACT~80 M50LeRobot v3.0RTX 4090 or any 24 GB20 msyok, sıfırdan

ACT dürüst bir uç durumdur: temel bir modeli yoktur, bu nedenle hiçbir genel veri ona ulaşmaz. Bu otomatik olarak bir dezavantaj değildir, çünkü eylem adımı başına 20 ms ile hızlı bir döngüyü kapatabilen beş modelden tekidir, tıpkı ACT sayfası belirttiği gibi. Göreve göre seçim yapın: beşinin karşılaştırması, GR00T N1.7 ile Pi0.5 karşılaştırması, ve 85 modeldeki 332 kıyaslama sonucu arena.

Yol B: DROID'i bir test düzeneği olarak kullanın

100 bölümlük örnek, bu ay indireceğiniz en iyi 2 GB'tır ve eğitim için değildir. Doğru olduğunu bildiğiniz bir veri kümesidir. Dönüştürücünüzü, yükleyicinizi ve kısa bir GPU işini üzerinde çalıştırın; başarısız olan her şey, ucuzken bulunan bir altyapı hatasıdır. NVIDIA bunu ölçekli olarak da yapar: GR00T N1.7 kartı, SimplerEnv'deki Bridge ve Fractal, DROID ve LIBERO için dört adet eğitim sonrası varyantı listeler.

Yol C: Kendi verilerinizi bilinçli olarak kaydedin

Otuz ila elli 76.000'in yanında küçük gelebilir, ta ki sizinkilerin kolunuz, kameralarınız ve masanızla tek olduğunu hatırlayana kadar. LeRobot'un varsayılan ayarlarında, 50 epizot 100 dakikalık gerçek zaman demektir. Bkz. , ve .

AY-Robots kayıt eğitim sayfasında, bir teleoperasyon oturumundan LeRobot veri kümesi yakalama adımları gösteriliyor
Kaydetme kılavuzu /learn/record-your-first-dataset: genel verilerin yerini tutamayacağı adım.

Genel verilerden çalışan bir politikaya ulaşmanın iki yolu

All of this runs on your own machine plus a rented GPU. Knowing the manual path matters because when something breaks you will know which layer broke.

  1. 1
    Install LeRobot with the extras the scripts need

    The record and train entry points each declare their own extra.

    bash
    pip install 'lerobot[core_scripts]'   # lerobot-record
    pip install 'lerobot[training]'      # lerobot-train
    pip install gsutil tensorflow tensorflow-datasets
  2. 2
    Get a small, known-good slice

    100 DROID episodes, 2 GB.

    bash
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/
  3. 3
    Convert to LeRobot form

    Writes the unified 8-D state and 7-D action, annotating robot type and control frequency.

    bash
    python openx_rlds.py \
        --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \
        --local-dir ~/lerobot_droid100 \
        --repo-id you/droid100_lerobot \
        --use-videos
  4. 4
    Check the version against your trainer

    The converter README documents v3.0 output; the published IPEC-COMMUNITY datasets report v2.0. GR00T wants v2.0 or v2.1 and crashes on v3.0; Pi0.5, SmolVLA and ACT want v3.0. Mind the gap: the only conversion script on LeRobot main goes 2.1 to 3.0.

    bash
    python src/lerobot/scripts/convert_dataset_v21_to_v30.py \
        --repo-id=you/droid100_lerobot
  5. 5
    Record your own episodes

    Defaults: 30 fps, 60 s per episode, 60 s reset, 50 episodes. The teleoperator type is so100_leader.

    bash
    lerobot-record \
      --robot.type=so100_follower \
      --robot.port=/dev/ttyACM0 \
      --robot.cameras="{front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
      --teleop.type=so100_leader \
      --teleop.port=/dev/ttyACM1 \
      --dataset.repo_id=you/so100_pick_block \
      --dataset.num_episodes=50 \
      --dataset.single_task="Pick up the red block and put it in the bowl"
  6. 6
    Fine-tune on your data only

    Weights from public data, actions from your own. Do not mix the datasets.

    bash
    lerobot-train \
      --policy.path=lerobot/smolvla_base \
      --dataset.repo_id=you/so100_pick_block \
      --policy.device=cuda \
      --batch_size=4 \
      --steps=20000
Where the time actually goes

Not in training; the GPU job is hours. The conversion, the version mismatch and the moment you find your dataset is v2.0 and your trainer wants v3.0 are days. Read dataset rejected as v3 first.

The AY-Robots desktop client download page, the client that records LeRobot-format datasets from a teleoperation session
The desktop client at /download writes LeRobot datasets directly from a teleop session, sidestepping RLDS conversion.

Her bir yolun maliyeti

YolDepolamaİnsan süresiGPU maliyetiKolunuzu hareket ettirme şansı
Yalnızca dönüştürülmüş DROID392 GBdönüştürme günleri4 to 12 USDçok düşük, yanlış eylem alanı
Bölümlerinizle birleştirilmiş DROIDher ikisivalidate_all_metadata tarafından engellendin/ahiçbiri, çalışmıyor
SmolVLA, 30 ila 50 kendi bölümübirkaç GB100 dk kayıt1 to 3 USDyüksek
GR00T N1.7, 50 kendi bölümübirkaç GB100 dk kayıt4 to 12 USDyüksek
Sıfırdan ACT, 50 kendi bölümübirkaç GB100 dk kayıt1 to 3 USDyüksek, 20 ms çıkarım
Test düzeneği olarak DROID örneği2 GBbir öğleden sonrabir kısa çalıştırmayüksek, doğrulama olarak

Asimetri kilit noktadır: en çok veri ödünç alan yol en pahalı ve kolunuzu hareket ettirme olasılığı en düşük yoldur. Kendi teleoperasyonunuzla iki saatten az bir süre, başkasının Franka'sının bir terabaytından daha iyidir. Henüz bir kolunuz yok mu? /live kayıt olmadan fiziksel bir SO-100 yayınlar. Ardından ilk politikanızı eğitin, ve belirli kılavuz için SO-100 üzerinde SmolVLA'yı kullanın.

Makul bir varsayılan plan

2 GB DROID örneğini indirin ve boru hattınızı kanıtlamak için kullanın. Diğer 1.7 TB'ı göz ardı edin. Sabit kameralarla tek bir görevin 50 bölümünü kaydedin. Önce SmolVLA'yı ince ayar yapın, çünkü 24 GB'lık bir kartta minimum 30 bölümle üzerinde yineleme yapmak en ucuzudur, ardından aynı veriler üzerinde GR00T N1.7'yi deneyin. Kendi görevinizde karşılaştırın, bir kıyaslamada değil.

Kolunuza zaten uyan veri kümeleri kaydedin

Masaüstü istemcisi, bir teleop oturumundan doğrudan LeRobot formatında veri kümeleri yazar: doğru kol, doğru kare hızı, doğru eylem alanı. RLDS dönüşümü yok, yeniden eşleme yok.

Masaüstü istemcisini edinin
DROID üzerinde bir politika eğitebilir ve SO-100'ümde çalıştırabilir miyim?

Doğrudan değil. LeRobot yapısında DROID eylemleri, 15 fps'de bir Franka Panda üzerinde 7 boyutlu uç efektör komutlarıdır; ham RLDS'de ise 6 eklem hızı artı bir tutucu konumudur. Bir SO-100, 6 mutlak eklem konumu alır. Bir ters kinematik katmanına ihtiyacınız olurdu ve o zaman bile 5 Serbestlik Dereceli bir bilek, rastgele 6 Serbestlik Dereceli pozları yeniden üretemez.

DROID veya Bridge bölümlerini kendi SO-100 bölümlerimle karıştırabilir miyim?

Hayır. validate_all_metadata, aynı fps, robot_type ve özellik şeması gerektirir ve ilk uyuşmazlıkta ValueError hatası verir. Üçü de farklıdır: 30'a karşı 15 veya 5 fps, kolunuza karşı franka veya widowx, 6'ya karşı 7 eylem şekli. Meta verileri kontrolü geçecek şekilde yeniden yazmak semantiği düzeltmez.

O zaman Open X-Embodiment düşük maliyetli bir kol için işe yaramaz mı?

Hayır, ancak değeri size bölümler aracılığıyla değil, önceden eğitilmiş ağırlıklar aracılığıyla ulaşır. OXE, Bridge v2 ve DROID dahil açık kaynak veri kümeleri, pi0'ın ön eğitim karışımının yüzde 9.1'ini oluşturur ve NVIDIA, Bridge, Fractal, DROID ve LIBERO üzerinde sonradan eğitilmiş GR00T N1.7 varyantlarını gönderir. Yapamayacağınız şey, bu bölümleri kendi kaydınıza eklemektir.

Hangi politika, genel çapraz-gövde verilerinden en çok fayda sağlar?

Pi0.5 ve GR00T modelleri en çok çapraz-gövde ön eğitimini taşır, ancak SmolVLA genellikle düşük maliyetli bir kolda en iyi performansı gösterir: ön eğitim seti 481 topluluk veri kümesi, 22.9K bölüm ve 10.6M kareden oluşur ve gerçek SO-100 ve SO-101 kolları üzerinde değerlendirilmiştir. ACT ise tam tersidir: temel model yok, eylem adımı başına 20 ms.

Gerçekten kaç kendi bölümüme ihtiyacım var?

SmolVLA için 30, GR00T N1.7, GR00T N1.5, Pi0.5 ve ACT için 50. LeRobot'un bölüm başına 60 s ve sıfırlama başına 60 s varsayılanlarında, 50 bölüm 100 dakika gerçek zaman demektir. Ödünç alınan çapraz-gövde verileri bu sayıları düşürmez.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started