
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
| DROID | BridgeData V2 | Open X-Embodiment | |
|---|---|---|---|
| Robot | Franka Panda, 7 DoF, Robotiq 2F-85 | WidowX 250, 6 DoF, ~4,000 USD rig | 22 embodiments, 60 datasets, 34 labs |
| Ölçek | 76k trajectories, 350 hours | 60,096 trajectories | 1M+ trajectories, 527 skills |
| Çeşitlilik | 564 scenes, 84 tasks, 50 collectors | 24 environments, 13 skills | 160,266 tasks, 21 institutions |
| Bileşim | tamamı teleoperasyonla | 50.365 teleoperasyonla, 9.731 betiklenmiş | kaynak laboratuvara göre |
| Kontrol hızı | 15 Hz | 5 Hz | değişir, 3 fps ve üzeri |
| Kameralar | 2 x ZED 2 dış, 1 x ZED Mini bilek | 4'e kadar, çoğu bölümde sadece sabit olan | laboratuvarın kullandığı ne ise |
| Ham indirme | 1.7 TB RLDS, 8.7 TB raw stereo | JPEG arşivleri | veri kümesi başına TFDS kovaları |
Ç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.

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.
# 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-DYani 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.
| Özellik | LeRobot biçiminde OXE, DROID ve Bridge | LeRobot'ta SO-100 |
|---|---|---|
| Eylem vektörü | 7-B: x, y, z, roll, pitch, yaw, tutucu | 6-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çeve | Kartezyen, veri kümeleri arasında hizasız | eklem uzayı, kol başına kalibrasyon |
| Mutlak veya göreceli | her ikisi de, kaynak laboratuvar tarafından belirlenir | mutlak hedef konumlar |
| Birimler | veri 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 hata | mutlak olarak okunan bir delta | kalibre edilmemiş bir kol |
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.
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.
- 1Tam 1.7 TB yerine 100 bölümlük örneği çekin
Yapıyı görmek için 2 GB yeterlidir.
bashpip install gsutil tensorflow tensorflow-datasets gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 2RLDS'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.
bashgit 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 - 3Her ş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.
bashpython -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'])" - 4Birleş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.
bashlerobot-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.
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.
- 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.
- 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 şekilde | Nesneler ve sahneler bedenden bağımsızdır |
| Dil temellendirme | Evet | Talimatlar metindir, geometri değil |
| Çapraz-modal füzyon | Çoğunlukla | İstemde adı geçen nesneye odaklanır |
| Propriyosepsiyon kodlayıcı | Hayır | Giriş boyutu ve eklem semantiği farklıdır |
| Eylem başlığı | Hayır | Bulunmadığınız 7 boyutlu bir Kartezyen uzayda eğitilmiştir |
| Normalizasyon istatistikleri | Hayır ve tehlikeli | Yabancı 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.
| Politika | Parametreler | Minimum bölüm sayısı | Veri kümesi formatı | GPU seviyesi | Çıkarım | Temel kontrol noktası |
|---|---|---|---|---|---|---|
| GR00T N1.7 | ~3 B, ince ayarda eğitilmiş ~40 M | 50 | LeRobot v2.0 or v2.1 | A100 or H100 80 GB | 152 ms per step | nvidia/GR00T-N1.7-3B |
| GR00T N1.5 | ~3 B | 50 | LeRobot v2.0 or v2.1 | A100 or H100 80 GB | 165 ms | nvidia/GR00T-N1.5-3B |
| Pi0.5 | ~3 B, PaliGemma omurgası | 50 | LeRobot v3.0 | A100 or H100 80 GB | 485 ms | lerobot/pi05_base |
| SmolVLA | ~450 M | 30 | LeRobot v3.0 | RTX 4090 or any 24 GB | 245 ms | lerobot/smolvla_base |
| ACT | ~80 M | 50 | LeRobot v3.0 | RTX 4090 or any 24 GB | 20 ms | yok, 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 .

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.
- 1Install LeRobot with the extras the scripts need
The record and train entry points each declare their own extra.
bashpip install 'lerobot[core_scripts]' # lerobot-record pip install 'lerobot[training]' # lerobot-train pip install gsutil tensorflow tensorflow-datasets - 2Get a small, known-good slice
100 DROID episodes, 2 GB.
bashgsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 3Convert to LeRobot form
Writes the unified 8-D state and 7-D action, annotating robot type and control frequency.
bashpython openx_rlds.py \ --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \ --local-dir ~/lerobot_droid100 \ --repo-id you/droid100_lerobot \ --use-videos - 4Check 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.
bashpython src/lerobot/scripts/convert_dataset_v21_to_v30.py \ --repo-id=you/droid100_lerobot - 5Record your own episodes
Defaults: 30 fps, 60 s per episode, 60 s reset, 50 episodes. The teleoperator type is so100_leader.
bashlerobot-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" - 6Fine-tune on your data only
Weights from public data, actions from your own. Do not mix the datasets.
bashlerobot-train \ --policy.path=lerobot/smolvla_base \ --dataset.repo_id=you/so100_pick_block \ --policy.device=cuda \ --batch_size=4 \ --steps=20000
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 platform removes the GPU and pipeline plumbing. It does not remove the embodiment mismatch: point the trainer at a converted DROID dataset and you get a policy trained on Franka actions, exactly as you would locally.
- 1Pick a policy, not a dataset
The five trainable policies, with parameter counts, GPU tiers and latencies, are at /policies.
- 2Record with the desktop client
It writes LeRobot-format datasets, episodes, camera streams and joint states, straight out of a teleop session. No conversion step to get wrong.
- 3Or bring a dataset you already have
The training form accepts one from /directory, a Hugging Face repo id, or your own machine. A repo id means a converted OXE dataset will load, and the mismatch loads with it.
- 4Train on a rented GPU
The backend rents a card on a spot market by required VRAM. SmolVLA or ACT on 24 GB: 2 to 5 hours, about 1 to 3 USD. GR00T or Pi0.5 on A100 or H100: 3 to 6 hours, about 4 to 12 USD. See /pricing.
- 5Serve it back to the arm
/api/inference/pod auto-provisions a GPU pod serving the policy; the local client talks to that endpoint. Pods carry an idle watchdog and destroy themselves, so nothing keeps billing silently.
Inference has to sit next to the servos for fast tasks. The control loop is 20 to 485 ms per action step depending on the model, and public-internet round trips turn a working policy into a hesitant one. Remote inference is fine for slow pick-and-place, not fast reactive motion.
The platform helps with the boring parts: the right format for the right arm at the right frame rate, and no babysitting a spot instance. It helps with nothing else in this article.

Her bir yolun maliyeti
| Yol | Depolama | İnsan süresi | GPU maliyeti | Kolunuzu hareket ettirme şansı |
|---|---|---|---|---|
| Yalnızca dönüştürülmüş DROID | 392 GB | dönüştürme günleri | 4 to 12 USD | çok düşük, yanlış eylem alanı |
| Bölümlerinizle birleştirilmiş DROID | her ikisi | validate_all_metadata tarafından engellendi | n/a | hiçbiri, çalışmıyor |
| SmolVLA, 30 ila 50 kendi bölümü | birkaç GB | 100 dk kayıt | 1 to 3 USD | yüksek |
| GR00T N1.7, 50 kendi bölümü | birkaç GB | 100 dk kayıt | 4 to 12 USD | yüksek |
| Sıfırdan ACT, 50 kendi bölümü | birkaç GB | 100 dk kayıt | 1 to 3 USD | yüksek, 20 ms çıkarım |
| Test düzeneği olarak DROID örneği | 2 GB | bir öğleden sonra | bir kısa çalıştırma | yü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.
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 edininDROID ü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.
Sources
- DROID: Geniş Ölçekli Gerçek Ortam Robot Manipülasyon Veri Kümesi
- DROID belgeleri: indirme boyutları ve RLDS bölüm şeması
- BridgeData V2: Ölçekli Robot Öğrenimi için Bir Veri Kümesi
- BridgeData V2 proje sayfası: bileşim ve kamera kapsama alanı
- Open X-Embodiment: Robotik Öğrenme Veri Kümeleri ve RT-X Modelleri
- Open X-Embodiment proje sayfası
- google-deepmind/open_x_embodiment: veri kümesi listesi ve RT-1-X kontrol noktaları
- any4lerobot: openx2lerobot dönüştürücü ve birleşik 8 boyutlu durumu, 7 boyutlu eylemi
- IPEC-COMMUNITY/droid_lerobot: meta/info.json ve depo boyutu
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: 3 fps'de google_robot dilimi
- huggingface/lerobot: SO takipçisi, kinematik işlemci, toplama ve kayıt yapılandırmaları
- openpi: DROID politika girdileri ve pi05_droid kontrol noktası
- pi0: Genel Robot Kontrolü için Bir Görsel-Dil-Eylem Akış Modeli
- SmolVLA: Uygun Fiyatlı ve Verimli Robotik için Bir Görsel-Dil-Eylem Modeli
Sources
- DROID: A Large-Scale In-The-Wild Robot Manipulation Dataset
- DROID docs: download sizes and the RLDS episode schema
- BridgeData V2: A Dataset for Robot Learning at Scale
- BridgeData V2 project page: composition and camera coverage
- Open X-Embodiment: Robotic Learning Datasets and RT-X Models
- Open X-Embodiment project page
- google-deepmind/open_x_embodiment: dataset list and RT-1-X checkpoints
- any4lerobot: the openx2lerobot converter and its unified 8-D state, 7-D action
- IPEC-COMMUNITY/droid_lerobot: meta/info.json and repo size
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: the google_robot slice at 3 fps
- huggingface/lerobot: SO follower, kinematics processor, aggregate and record configs
- openpi: DROID policy inputs and the pi05_droid checkpoint
- pi0: A Vision-Language-Action Flow Model for General Robot Control
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started