Direktori dataset publik AY-Robots yang menampilkan dataset LeRobot yang direkam pada lengan kelas SO-100
DatasetOpen X-EmbodimentDROIDSO-100LeRobot

Menggunakan DROID, BridgeData V2, dan Open X pada SO-100

AY-Robots ResearchAugust 23, 202618 menit baca

DROID, BridgeData V2, dan Open X-Embodiment dikonversi menjadi aksi end-effector 7-D pada lengan 6 dan 7-DoF. SO-100 mengambil 6 posisi sendi. Apa yang dapat ditransfer, apa yang tidak, dan apa yang harus dilakukan sebagai gantinya.

Versi singkat

  • Build LeRobot dari ketiganya berbagi satu konvensi: aksi end-effector 7-D [x, y, z, roll, pitch, yaw, gripper] dan status 8-D dengan slot pad. SO-100 mengambil enam posisi sambungan absolut.
  • Vektor 7-D itu adalah artefak konverter: bidang aksi RLDS DROID sendiri adalah 6 kecepatan sambungan ditambah posisi gripper, dengan tampilan Cartesian di action_dict.
  • Empat jam: DROID 15 fps, BridgeData V2 5 fps, irisan google_robot 3 fps, rekaman SO-100 pada 30 fps.
  • Anda tidak dapat menggabungkannya dengan data Anda sendiri. validate_all_metadata akan memunculkan kesalahan pada perbedaan pertama dari fps, robot_type, atau fitur, dan ketiganya berbeda.
  • Yang ditransfer adalah bobot pra-pelatihan, bukan episode. Data sumber terbuka adalah 9.1 persen dari campuran pra-pelatihan pi0.
  • Penggunaan nyata termurah mereka adalah perlengkapan uji: sampel DROID 2 GB, 100 episode yang terbukti baik yang membuktikan pipeline Anda sebelum Anda merekam selama akhir pekan.

Ada dataset publik sejuta-lintasan di bucket Google Cloud dan sebuah SO-100 di meja yang harganya 110 hingga 150 EUR dalam suku cadang. Mengapa yang pertama tidak bisa mengajari yang kedua? Sebagian bisa, tetapi hampir tidak ada transfer yang terjadi di tempat yang orang harapkan, dan bagian yang terlihat paling mudah sama sekali tidak berfungsi.

Berikutnya: apa yang ada di dalam DROID, BridgeData V2 dan Open X-Embodiment, di mana masing-masing bertabrakan dengan lengan 5-DoF berbiaya rendah, dan apa yang harus dilakukan sebagai gantinya. Setiap angka di bawah ini berasal dari makalah, kartu dataset, atau file sumber yang relevan.

Apa yang sebenarnya terkandung dalam tiga dataset

DROIDBridgeData V2Open X-Embodiment
RobotFranka Panda, 7 DoF, Robotiq 2F-85WidowX 250, 6 DoF, ~4,000 USD rig22 embodiments, 60 datasets, 34 labs
Skala76k trajectories, 350 hours60,096 trajectories1M+ trajectories, 527 skills
Keberagaman564 scenes, 84 tasks, 50 collectors24 environments, 13 skills160,266 tasks, 21 institutions
Komposisiall teleoperated50,365 teleoperated, 9,731 scriptedper source lab
Laju kontrol15 Hz5 Hzvaries, 3 fps upwards
Kamera2 x ZED 2 exterior, 1 x ZED Mini wristup to 4, most episodes only the fixed onewhatever the lab used
Unduhan mentah1.7 TB RLDS, 8.7 TB raw stereoJPEG archivesper-dataset TFDS buckets
Titik masuknya adalah konversi LeRobot, bukan bucket aslinya

Beberapa orang masih mengunduh 1,7 TB RLDS TFRecords. Organisasi komunitas IPEC-COMMUNITY telah menerbitkan ulang sebagian besar Open X-Embodiment dalam bentuk dataset LeRobot dengan video AV1, di mana DROID berukuran 392 GB. Itulah versi yang akan Anda gunakan, dan meta/info.json-nya adalah yang harus dibaca pertama kali.

DROID

Yang paling terstandardisasi dari ketiganya. Satu rig di mana-mana: Franka Panda dengan gripper Robotiq 2F-85, dua kamera stereo ZED 2 yang dapat disesuaikan dan ZED Mini pergelangan tangan, dioperasikan dari jarak jauh dengan kontroler Meta Quest 2, direkam melalui Polymetis pada 15 Hz baik dalam ruang sendi maupun end-effector ruang. Label bahasa ditambahkan kemudian melalui tasq.ai, hingga tiga per episode.

  • 76k lintasan, 350 jam, 564 adegan, 84 tugas, 50 kolektor di tiga benua.
  • Hasil utamanya adalah pelatihan bersama (co-training), bukan pelatihan mandiri: batch yang dicampur 50/50 dengan demonstrasi dalam domain mengalahkan metode terbaik berikutnya sebesar 22 persen keberhasilan absolut dalam distribusi, 17 persen di luar itu.
  • 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.
  • Sampel debugging 2 GB, 100 episode tersedia di gs://gresearch/robotics/droid_100. Mulailah dari sana.

BridgeData V2

Yang paling mendekati pengaturan hobi: lengan WidowX 250 6-DoF, 60.096 lintasan di 24 lingkungan dan 13 keterampilan pada 5 Hz. Perhatikan komposisinya: 50.365 demonstrasi teleoperasi ahli ditambah 9.731 dari kebijakan pick-and-place skrip acak, jadi sekitar 16 persen bukan demonstrasi manusia, yang penting untuk pembelajaran imitasi kualitas. Unduhan biasa, IPEC-COMMUNITY/bridge_orig_lerobot, melaporkan 53.192 episode dan 1.893.026 frame pada 5 fps, robot_type widowx: lebih sedikit dari 60.096 yang disebutkan dalam makalah, jadi bacalah jumlah dari meta/info.json daripada mengutip salah satunya.

Open X-Embodiment

Bukan dataset dalam pengertian yang sama: 60 dataset robot yang ada dari 34 lab digabungkan menjadi satu koleksi RLDS yang mencakup 22 perwujudan dan lebih dari satu juta lintasan. BridgeData V2 berada di dalamnya sebagai bridge_orig; irisan google_robot, fractal20220817_data, dikonversi menjadi 87.212 episode pada 3 fps.

Penggabungan ini memiliki peringatan yang dinyatakan langsung dalam makalah. Untuk eksperimen RT-X, para penulis mengonversi setiap sumber menjadi aksi end-effector 7-DoF, tetapi tidak menyelaraskan kerangka koordinat di seluruh dataset, dan memungkinkan nilai aksi berupa posisi atau kecepatan absolut atau relatif, sesuai dengan skema kontrol asli setiap robot. Kesimpulan mereka: vektor aksi yang sama dapat menghasilkan gerakan yang sangat berbeda untuk robot yang berbeda.

Daftar direktori dataset AY-Robots yang menampilkan dataset LeRobot publik dengan jumlah episode dan deskripsi tugas
Direktori dataset publik di /directory: dataset sudah dalam bentuk LeRobot, sudah sesuai dengan lengan yang didukung.

Ketidaksesuaian, dalam empat bagian

Ketidakcocokan perwujudan (embodiment mismatch) biasanya diperlakukan sebagai satu masalah yang samar. Ada empat, masing-masing gagal dengan cara berbeda, dan dua di antaranya tidak dapat diperbaiki dengan skrip.

1. Derajat kebebasan

SO-100 memiliki lima sendi lengan ditambah sebuah gripper. Dihitung sebagai motor, itu adalah lengan 6-DoF, dan makalah SmolVLA menyebutnya demikian; dihitung sebagai mekanisme penentuan posisi, itu adalah 5-DoF, dan LeRobot menyebutnya demikian dalam docstring kinematika inversnya, yang menjelaskan IK orientasi lunak pada SO-101 5-DOF di mana pergelangan tangan hanya melacak orientasi sebagian. Franka memiliki tujuh sendi penentu posisi. Kesenjangan itu menentukan pose mana yang ada: lengan 5-DoF umumnya tidak dapat mencapai posisi dan orientasi arbitrer sekaligus, sehingga pemecah mengembalikan yang terdekat yang bisa dicapai, gerakan yang berbeda dari yang didemonstrasikan. Latar belakang: derajat kebebasan.

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
Kiri: SO follower LeRobot, dari src/lerobot/robots/so_follower/so_follower.py. Kanan: input kebijakan DROID openpi. Enam lawan delapan.

Jadi, checkpoint DROID siap pakai bukanlah jalan pintas. Physical Intelligence mengirimkan pi05_droid di gs://openpi-assets/checkpoints/pi05_droid, dan README yang sama yang memuji cakupannya memperingatkan bahwa checkpoint ahli ini mungkin tidak dapat digeneralisasi ke pengaturan Anda. Keadaannya adalah delapan angka sambungan Franka dan kunci gambarnya adalah exterior_image_1_left dan wrist_image_left. Tidak ada flag yang mengubahnya menjadi perintah SO-100 enam motor.

2. Apa yang sebenarnya dikatakan vektor aksi

Lebih dalam dari dimensionalitas. Dalam konversi LeRobot, ketiganya menyatakan ke mana gripper harus pergi, dalam ruang Kartesius. SO-100 menyatakan ke mana enam servo harus pergi. Mengonversi membutuhkan model kinematik dan pemecah, bukan pembentukan ulang.

PropertiOXE, DROID, dan Bridge dalam bentuk LeRobotSO-100 dalam LeRobot
Vektor aksi7-D: x, y, z, roll, pitch, yaw, gripper6-D: satu posisi tujuan per motor
Vektor keadaan8-D, dengan slot pad (google_robot menggunakan kuaternion)6-D, satu per motor
BingkaiKartesius, tidak selaras di seluruh datasetruang sambungan, kalibrasi per lengan
Absolut atau relatifkeduanya, diputuskan oleh lab sumberposisi tujuan absolut
Satuandinormalisasi per dataset, lalu didiskretisasiderajat secara default (use_degrees=True), jika tidak -100 hingga 100
Kegagalan senyapdelta yang dibaca sebagai absolutlengan yang tidak terkalibrasi
Vektor Kartesius 7-D adalah konvensi konverter, bukan DROID

README openx2lerobot mendokumentasikan status 8-dim terpadu dan aksi 7-dim untuk setiap dataset yang dikonversinya, dari situlah slot pad berasal. Skema RLDS DROID sendiri berbeda: action tingkat atasnya adalah 7-vektor dari 6 kecepatan sendi ditambah 1 posisi gripper, dengan cartesian_position, cartesian_velocity, joint_position, dan joint_velocity di bawah action_dict. openpi membaca tampilan ruang sendi, sedangkan build LeRobot memberikan Anda tampilan Kartesius. Keduanya bukan enam sudut servo absolut.

LeRobot memang menyediakan bagian yang hilang: pengikut SO memiliki prosesor kinematika dengan langkah InverseKinematicsEEToJoints dan ForwardKinematicsJointsToEE. Kuncinya adalah ee.x, ee.y, ee.z ditambah vektor rotasi ee.wx, ee.wy, ee.wz dan ee.gripper_pos, jadi bahkan pengkodean orientasi berbeda dari roll-pitch-yaw dalam file. Langkah IK mengambil orientation_weight, default 0.01, yang docstring-nya menyatakan untuk mengatur 0.0 untuk IK hanya posisi pada lengan yang kurang aktuasi. Anda dapat membangun jembatan, tetapi separuh orientasi dari setiap aksi yang dipinjam tetap diaproksimasi.

3. Laju kontrol

DROID adalah 15 Hz, BridgeData V2 5 Hz, irisan google_robot 3 fps; penulis pi0 menggambarkan bagian open-source dari campuran mereka sebagai kontrol frekuensi rendah antara 2 dan 10 Hz. DatasetRecordConfig LeRobot secara default menggunakan fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50. Sebuah yang dilatih pada data 5 Hz belajar bahwa satu aksi mencakup 200 ms. Putar ulang pada 30 Hz dan lengan akan merayap; resampling secara naif akan mengaburkan bingkai saat gripper menutup. Ini juga berinteraksi buruk dengan : sebuah chunk 100 langkah adalah 20 detik pada 5 Hz, 3.3 pada 30 Hz.

4. Kamera

BridgeData V2 mengacak dua pose kamera setiap 50 lintasan, dan halaman proyeknya mencatat bahwa sebagian besar data hanya membawa tampilan tetap. DROID menggunakan dudukan ZED 2 yang dapat disesuaikan ditambah ZED Mini di pergelangan tangan. Anda memiliki dua webcam USB yang diposisikan secara manual. Pose kamera bukanlah variabel pengganggu untuk ; itu adalah sebagian besar dari apa yang menjadi fokus encoder visual, dan tidak ada dalam format file yang memberi tahu Anda bahwa pose-pose tersebut berbeda.

Jebakan yang menghabiskan waktu sehari

Bagian-bagiannya cukup cocok untuk dijalankan. Dataset dimuat, pelatihan dimulai, loss menurun, checkpoint muncul, tidak ada kesalahan. Kemudian kebijakan tidak melakukan hal yang dapat dikenali pada lengan dan Anda menghabiskan sehari mencari bug di skrip pelatihan Anda. Tidak ada bug: model mempelajari distribusi aksi Kartesian untuk robot yang tidak ada di ruangan Anda. Mulailah dari loss menurun, kebijakan tidak melakukan apa-apa, bukan dari hiperparameter Anda.

Apa yang terjadi jika Anda tetap mencoba menggabungkan data

Rencana yang jelas adalah menggabungkan: beberapa ribu episode DROID ditambah 50 episode Anda. LeRobot menolak, dan penolakan tersebut menyebutkan tiga hal yang berbeda.

  1. 1
    Ambil sampel 100 episode, bukan yang penuh 1.7 TB

    2 GB cukup untuk melihat strukturnya.

    bash
    pip install gsutil tensorflow tensorflow-datasets
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/
  2. 2
    Konversi RLDS ke format LeRobot

    openx2lerobot membungkus transformasi standar OXE dan menganotasi jenis robot serta frekuensi kontrol. README menempatkan ini di convert.sh.

    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
    Baca meta/info.json sebelum yang lainnya

    Berkas ini menentukan apakah sisa hari Anda akan berjalan lancar.

    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
    Coba penggabungan dan baca kesalahannya

    merge memuat setiap dataset, lalu validate_all_metadata memeriksa fps, robot_type, dan fitur terhadap yang pertama dalam daftar, memunculkan kesalahan pada ketidakcocokan pertama.

    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.

Nilai referensi berasal dari dataset mana pun yang Anda cantumkan pertama, itulah sebabnya pesan tersebut mengeluh tentang 30 fps Anda daripada 15 fps DROID. Perbaiki fps dan Anda akan menemui pemeriksaan robot_type; perbaiki itu dan Anda akan menemui pemeriksaan fitur, 7 berbanding 6 untuk aksi. Tidak ada urutan yang berhasil, dan penjaga yang sama berjalan pada waktu perekaman melalui sanity_check_dataset_robot_compatibility.

Jangan mengkodekan robot_type secara permanen untuk mengakali pemeriksaan

Pada LeRobot main saat ini, so100_follower dan so101_follower keduanya terdaftar pada satu SOFollowerRobotConfig bersama, jadi string dari rekaman nyata belum tentu yang Anda harapkan. Bacalah dari meta/info.json Anda sendiri, dan anggap pemeriksaan yang harus Anda nonaktifkan sebagai pemeriksaan yang memberi tahu Anda sesuatu.

Jadi, apa yang sebenarnya ditransfer?

Bobot, bukan episode. Setiap kebijakan umum modern menyerap sebagian darinya dalam pra-pelatihan, dan ketika Anda dari yang dirilis, Anda mewarisinya sudah direkonsiliasi oleh orang-orang dengan komputasi yang memadai untuk melakukannya dengan benar. Makalah pi0 jujur tentang proporsinya: 9,1 persen dari campuran pra-pelatihannya, dihitung dalam langkah waktu, adalah data sumber terbuka termasuk OXE, Bridge v2, dan DROID. Angka itu milik pi0; campuran setiap vendor berbeda.

Data lintas-embodimen publik pada proyek SO-100
Keuntungan
  • Prior visual dan bahasa: encoder telah melihat ribuan dapur dan cangkir serta tahu apa yang dimaksud dengan "balok merah".
  • Prior atas struktur manipulasi: mendekat, menutup, mengangkat, mengangkut, melepaskan, independen-embodimen bahkan ketika angka-angkanya tidak.
  • Dataset yang terbukti baik untuk pengujian. Jika pekerjaan Anda tidak dapat melakukan overfitting pada 100 episode DROID, masalahnya adalah pengaturan Anda.
  • Titik referensi: pada domain dataset skala kecil, RT-1-X mencapai tingkat keberhasilan rata-rata 50 persen lebih tinggi daripada metode asli atau RT-1, dan RT-2-X mengalahkan RT-2 sekitar 3x pada keterampilan yang muncul.
Kekurangan
  • Tidak ada supervisi aksi yang dapat digunakan. Target Kartesian 7-D bukanlah perintah sendi 6-D.
  • Tidak ada transfer pose kamera, dan tidak ada dalam data yang memberi tahu Anda bahwa pose-pose tersebut berbeda.
  • Tidak ada transfer waktu: sumber 3, 5, dan 15 fps dibandingkan perekam 30 fps.
  • Tidak ada transfer gripper. Robotiq 2F-85 dan rahang cetak pada STS3215 berbeda dalam gaya, langkah, dan dinamika.
  • Skala saja tidak cukup bahkan bagi para penulisnya: dalam domain dataset besar, RT-1-X tidak mengalahkan RT-1 yang dilatih hanya dengan dataset tersebut.
  • Tidak ada pengurangan jumlah episode Anda sendiri yang Anda butuhkan.
Lapisan modelDitransfer?Mengapa
Vision encoderYa, sangatObjek dan adegan bersifat independen-embodimen
Language groundingYaInstruksi adalah teks, bukan geometri
Cross-modal fusionSebagian besarMemperhatikan objek yang disebutkan dalam prompt
Proprioception encoderTidakDimensi input dan semantik sendi berbeda
Action headTidakDilatih pada ruang Kartesian 7-D yang tidak Anda gunakan
Normalisation statisticsTidak, dan berbahayaStatistik asing menggeser setiap perintah

Inilah mengapa SmolVLA berperilaku berbeda pada lengan berbiaya rendah. Makalahnya memilih 481 dataset komunitas dari Hugging Face, disaring berdasarkan jenis perwujudan (embodiment type), jumlah episode, kualitas data, dan cakupan frame: 22.9K episode, 10.6M frame, dievaluasi pada lengan SO-100 dan SO-101 asli. Kecil dan cocok mengalahkan besar dan tidak cocok. Bandingkan pada ACT against SmolVLA.

Tiga jalur yang patut dicoba

Jalur A: fine-tune dari checkpoint yang sudah menyerap data

Kebanyakan orang harus mengambil jalur ini. Anda tidak pernah menyentuh DROID atau Open X-Embodiment: pilih kebijakan yang pretraining-nya sudah menyerap data lintas-embodiment, rekam episode Anda sendiri, lalu fine-tune.

KebijakanParameterEpisode MinFormat DatasetTingkat GPUInferensiCheckpoint Dasar
GR00T N1.7~3 B, ~40 Juta dilatih dalam fine-tuning50LeRobot 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 backbone50LeRobot 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 msnone, from scratch

ACT adalah kasus ekstrem yang jujur: tidak ada model dasar, sehingga tidak ada data publik yang pernah mencapainya. Ini bukan kerugian secara otomatis, karena pada 20 ms per langkah aksi, ini adalah satu-satunya dari lima yang dapat menutup loop cepat, seperti halaman ACT menjelaskan. Pilih berdasarkan tugas menggunakan kelima model dibandingkan, GR00T N1.7 melawan Pi0.5, dan 332 hasil benchmark di 85 model di arena.

Jalur B: gunakan DROID sebagai perlengkapan uji

Sampel 100 episode adalah 2 GB terbaik yang akan Anda unduh bulan ini, dan bukan untuk pelatihan. Ini adalah dataset yang Anda tahu benar. Jalankan konverter, loader, dan pekerjaan GPU singkat Anda di atasnya; apa pun yang gagal adalah bug infrastruktur yang ditemukan saat biayanya murah. NVIDIA melakukan hal yang sama dalam skala besar: kartu GR00T N1.7 mencantumkan empat varian pasca-pelatihan, untuk Bridge dan Fractal di SimplerEnv, DROID, dan LIBERO.

Jalur C: rekam sendiri, dengan sengaja

Tiga puluh hingga lima puluh terdengar kecil dibandingkan 76.000 sampai Anda ingat bahwa milik Anda adalah satu-satunya yang menggunakan lengan, kamera, dan meja Anda. Dengan pengaturan default LeRobot, 50 episode adalah 100 menit waktu nyata. Lihat , dan .

Halaman tutorial perekaman AY-Robots yang menunjukkan langkah-langkah untuk mengambil dataset LeRobot dari sesi teleoperasi
Panduan perekaman di /learn/record-your-first-dataset: langkah yang tidak dapat digantikan oleh data publik.

Dua cara untuk beralih dari data publik ke kebijakan yang berfungsi

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.

Halaman unduhan klien desktop AY-Robots, klien yang merekam dataset format LeRobot dari sesi teleoperasi
Klien desktop di /download menulis dataset LeRobot langsung dari sesi teleoperasi, melewati konversi RLDS.

Berapa biaya setiap jalur

JalurPenyimpananWaktu manusiaBiaya GPUPeluang menggerakkan lengan Anda
DROID yang dikonversi saja392 GBhari konversi4 to 12 USDsangat rendah, ruang aksi salah
DROID digabungkan dengan episode Andakeduanyablocked by validate_all_metadatan/atidak ada, tidak berjalan
SmolVLA, 30 hingga 50 episode sendiribeberapa GB100 min recording1 to 3 USDtinggi
GR00T N1.7, 50 episode sendiribeberapa GB100 min recording4 to 12 USDtinggi
ACT dari awal, 50 episode sendiribeberapa GB100 min recording1 to 3 USDtinggi, inferensi 20 ms
Sampel DROID sebagai perlengkapan uji2 GBsatu soreone short runtinggi, sebagai validasi

Asimetri adalah intinya: jalur yang meminjam data paling banyak adalah yang paling mahal dan paling kecil kemungkinannya untuk menggerakkan lengan Anda. Kurang dari dua jam teleoperasi Anda mengalahkan terabyte Franka milik orang lain. Belum punya lengan robot? /live menyiarkan SO-100 fisik tanpa perlu mendaftar. Kemudian latih kebijakan pertama Anda, dan SmolVLA di SO-100 untuk panduan spesifik.

Rencana default yang masuk akal

Unduh sampel DROID 2 GB dan gunakan untuk membuktikan pipeline Anda. Abaikan 1.7 TB lainnya. Rekam 50 episode dari satu tugas dengan kamera tetap. Lakukan fine-tune SmolVLA terlebih dahulu, karena dengan minimal 30 episode pada kartu 24 GB, ini adalah yang termurah untuk diulang, lalu coba GR00T N1.7 pada data yang sama. Bandingkan pada tugas Anda, bukan pada benchmark.

Rekam dataset yang sudah sesuai dengan lengan robot Anda

Klien desktop menulis dataset format LeRobot langsung dari sesi teleop: lengan yang tepat, frame rate yang tepat, action space yang tepat. Tidak ada konversi RLDS, tidak ada pemetaan ulang.

Dapatkan klien desktop
Bisakah saya melatih kebijakan pada DROID dan menjalankannya di SO-100 saya?

Tidak secara langsung. Dalam build LeRobot, aksi DROID adalah perintah end-effector 7-D pada Franka Panda dengan 15 fps; dalam RLDS mentah, mereka adalah 6 kecepatan sendi ditambah posisi gripper. SO-100 mengambil 6 posisi sendi absolut. Anda akan membutuhkan lapisan kinematika invers, dan bahkan kemudian pergelangan tangan 5-DoF tidak dapat mereproduksi pose 6-DoF arbitrer.

Bisakah saya mencampur episode DROID atau Bridge dengan episode SO-100 saya sendiri?

Tidak. validate_all_metadata memerlukan fps, robot_type, dan skema fitur yang identik dan akan memunculkan ValueError pada ketidakcocokan pertama. Ketiganya berbeda: 15 atau 5 fps dibandingkan 30, franka atau widowx dibandingkan lengan Anda, bentuk aksi 7 dibandingkan 6. Menulis ulang metadata untuk melewati pemeriksaan tidak memperbaiki semantik.

Apakah Open X-Embodiment tidak berguna untuk lengan robot berbiaya rendah?

Tidak, tetapi nilainya sampai kepada Anda melalui bobot yang telah dilatih sebelumnya, bukan episode. Dataset open-source termasuk OXE, Bridge v2, dan DROID merupakan 9.1 persen dari campuran pra-pelatihan pi0, dan NVIDIA mengirimkan varian GR00T N1.7 yang dilatih pasca-pelatihan pada Bridge, Fractal, DROID, dan LIBERO. Yang tidak dapat Anda lakukan adalah menambahkan episode-episode tersebut ke rekaman Anda sendiri.

Kebijakan mana yang paling diuntungkan dari data cross-embodiment publik?

Pi0.5 dan model GR00T membawa pra-pelatihan cross-embodiment paling banyak, tetapi SmolVLA seringkali berperilaku terbaik pada lengan robot berbiaya rendah: set pra-pelatihannya adalah 481 dataset komunitas, 22.9K episode, dan 10.6M frame, dievaluasi pada lengan robot SO-100 dan SO-101 yang sebenarnya. ACT adalah kebalikannya: tidak ada model dasar, 20 ms per langkah aksi.

Berapa banyak episode saya sendiri yang sebenarnya saya butuhkan?

30 untuk SmolVLA, 50 untuk GR00T N1.7, GR00T N1.5, Pi0.5, dan ACT. Dengan pengaturan default LeRobot yaitu 60 detik per episode dan 60 detik reset, 50 episode adalah 100 menit waktu nyata. Data cross-embodiment yang dipinjam tidak menurunkan angka-angka tersebut.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started