Direktori set data awam AY-Robots menunjukkan set data LeRobot yang direkodkan pada lengan kelas SO-100
Set DataOpen X-EmbodimentDROIDSO-100LeRobot

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

AY-Robots ResearchAugust 23, 202618 minit bacaan

DROID, BridgeData V2 dan Open X-Embodiment menukar kepada tindakan hujung-efektor 7-D pada lengan 6 dan 7-DoF. SO-100 mengambil 6 posisi sendi. Apa yang boleh dipindahkan, apa yang tidak, apa yang perlu dilakukan sebagai ganti.

Versi ringkas

  • Binaan LeRobot bagi ketiga-tiganya berkongsi satu konvensyen: tindakan hujung-efektor 7-D [x, y, z, roll, pitch, yaw, gripper] dan keadaan 8-D dengan slot pad. SO-100 mengambil enam kedudukan sendi mutlak.
  • Vektor 7-D itu adalah artifak penukar: medan tindakan RLDS DROID sendiri ialah 6 halaju sendi ditambah kedudukan pencengkam, dengan paparan Cartesian dalam action_dict.
  • Empat jam: DROID 15 fps, BridgeData V2 5 fps, hirisan google_robot 3 fps, rakaman SO-100 pada 30 fps.
  • Anda tidak boleh menggabungkannya dengan data anda sendiri. validate_all_metadata akan menimbulkan ralat pada yang pertama daripada fps, robot_type atau ciri-ciri yang berbeza, dan ketiga-tiganya berbeza.
  • Apa yang dipindahkan adalah pemberat pra-latihan, bukan episod. Data sumber terbuka adalah 9.1 peratus daripada campuran pra-latihan pi0.
  • Penggunaan sebenar mereka yang paling murah adalah lekapan ujian: sampel DROID 2 GB, 100 episod yang diketahui baik yang membuktikan saluran paip anda sebelum anda merakam untuk hujung minggu.

Terdapat set data awam berjuta-juta trajektori pada baldi Google Cloud dan di atas meja yang berharga 110 hingga 150 EUR dalam bahagian. Mengapa yang pertama tidak boleh mengajar yang kedua? Ia sebahagiannya boleh, tetapi hampir tiada pemindahan berlaku di mana orang menjangkakan, dan bahagian yang kelihatan paling mudah tidak berfungsi sama sekali.

Apa yang berikut: apa yang ada di dalam , dan , di mana setiap satu bertembung dengan lengan 5-DoF kos rendah, dan apa yang perlu dilakukan sebaliknya. Setiap nombor di bawah datang dari kertas kerja, kad set data atau fail sumber yang berkaitan dengannya.

Apa yang sebenarnya terkandung dalam tiga set data

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
Kepelbagaian564 scenes, 84 tasks, 50 collectors24 environments, 13 skills160,266 tasks, 21 institutions
Komposisisemua dikendalikan dari jauh50,365 dikendalikan dari jauh, 9,731 berskripsetiap makmal sumber
Kadar kawalan15 Hz5 Hzberbeza-beza, 3 fps ke atas
Kamera2 x ZED 2 luaran, 1 x ZED Mini pergelangan tangansehingga 4, kebanyakan episod hanya yang tetapapa sahaja yang digunakan oleh makmal
Muat turun mentah1.7 TB RLDS, 8.7 TB stereo mentaharkib JPEGbaldi TFDS setiap set data
Titik permulaan adalah penukaran LeRobot, bukan baldi asal

Tidak ramai yang masih memuat turun 1.7 TB RLDS TFRecords. Organisasi komuniti IPEC-COMMUNITY telah menerbitkan semula kebanyakan Open X-Embodiment dalam bentuk set data LeRobot dengan video AV1, di mana DROID bersaiz 392 GB. Itulah versi yang akan anda gunakan, dan meta/info.jsonnya adalah apa yang perlu dibaca dahulu.

DROID

Yang paling piawai antara ketiga-tiganya. Satu persediaan di mana-mana: Franka Panda dengan pengepit Robotiq 2F-85, dua kamera stereo ZED 2 boleh laras dan ZED Mini pergelangan tangan, dikendalikan dari jauh dengan pengawal Meta Quest 2, dirakam melalui Polymetis pada 15 Hz dalam kedua-dua ruang sendi dan penggerak akhir ruang. Label bahasa datang kemudian melalui tasq.ai, sehingga tiga setiap episod.

  • 76k trajektori, 350 jam, 564 babak, 84 tugas, 50 pengumpul di tiga benua.
  • Hasil utama adalah latihan bersama (co-training), bukan latihan kendiri (standalone training): kelompok yang dicampur 50/50 dengan demonstrasi dalam domain mengalahkan kaedah terbaik seterusnya sebanyak 22 peratus kejayaan mutlak dalam pengedaran, 17 peratus 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 penyahpepijatan 2 GB, 100 episod terletak di gs://gresearch/robotics/droid_100. Mulakan dari sana.

BridgeData V2

Yang paling hampir dengan persediaan hobi: lengan WidowX 250 6-DoF, 60,096 trajektori merentasi 24 persekitaran dan 13 kemahiran pada 5 Hz. Perhatikan komposisinya: 50,365 demonstrasi teleoperasi pakar ditambah 9,731 daripada polisi pilih-dan-letak berskrip rawak, jadi kira-kira 16 peratus bukanlah demonstrasi manusia, yang penting untuk pembelajaran tiruan kualiti. Muat turun biasa, IPEC-COMMUNITY/bridge_orig_lerobot, melaporkan 53,192 episod dan 1,893,026 bingkai pada 5 fps, robot_type widowx: kurang daripada 60,096 dalam kertas kerja, jadi baca kiraan dari meta/info.json daripada memetik mana-mana satu.

Open X-Embodiment

Bukan set data dalam erti kata yang sama: 60 set data robot sedia ada dari 34 makmal digabungkan menjadi satu koleksi RLDS yang meliputi 22 jelmaan dan lebih sejuta trajektori. BridgeData V2 berada di dalamnya sebagai bridge_orig; hirisan google_robot, fractal20220817_data, menukar kepada 87,212 episod pada 3 fps.

Penggabungan ini mempunyai peringatan yang dinyatakan secara terang-terangan dalam kertas kerja. Untuk eksperimen RT-X, penulis menukar setiap sumber kepada tindakan hujung-efektor 7-DoF, tetapi tidak menyelaraskan bingkai koordinat merentasi set data, dan membenarkan nilai tindakan menjadi kedudukan atau halaju mutlak atau relatif, mengikut skema kawalan asal setiap robot. Kesimpulan mereka: vektor tindakan yang sama mungkin menghasilkan gerakan yang sangat berbeza untuk robot yang berbeza.

Penyenaraian direktori set data AY-Robots bagi set data LeRobot awam dengan kiraan episod dan penerangan tugas
Direktori set data awam di /directory: set data sudah dalam bentuk LeRobot, sudah sepadan dengan lengan yang disokong.

Ketidakpadanan, dalam empat bahagian

Ketidakpadanan perwujudan biasanya dianggap sebagai satu masalah yang samar-samar. Sebenarnya ada empat, ia gagal secara berbeza, dan dua daripadanya tidak boleh diperbaiki dengan skrip.

1. Darjah kebebasan

SO-100 mempunyai lima sendi lengan ditambah satu pengepit. Dikira sebagai motor, ia adalah lengan 6-DoF, dan kertas SmolVLA memanggilnya begitu; dikira sebagai mekanisme penentu kedudukan, ia adalah 5-DoF, dan LeRobot memanggilnya begitu dalam docstring kinematik songsangnya, yang menerangkan IK orientasi lembut pada SO-101 5-DOF di mana pergelangan tangan menjejaki orientasi hanya sebahagian. Franka mempunyai tujuh sendi penentu kedudukan. Jurang itu menentukan pose mana yang wujud: lengan 5-DoF secara amnya tidak dapat mencapai kedudukan dan orientasi sewenang-wenangnya sekaligus, jadi penyelesai mengembalikan yang paling hampir yang boleh, gerakan yang berbeza daripada yang ditunjukkan. Latar belakang: darjah 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: Pengikut SO LeRobot, dari src/lerobot/robots/so_follower/so_follower.py. Kanan: Input polisi DROID openpi. Enam lawan lapan.

Jadi, titik semak DROID yang siap pakai bukanlah jalan pintas. Physical Intelligence menghantar pi05_droid di gs://openpi-assets/checkpoints/pi05_droid, dan README yang sama yang memuji keluasan liputannya memberi amaran bahawa titik semak pakar ini mungkin tidak dapat digeneralisasikan kepada persediaan anda. Keadaannya adalah lapan nombor sendi Franka dan kunci imejnya adalah exterior_image_1_left dan wrist_image_left. Tiada bendera yang mengubahnya menjadi arahan SO-100 enam motor.

2. Apa yang sebenarnya dinyatakan oleh vektor tindakan

Lebih mendalam daripada dimensionaliti. Dalam penukaran LeRobot, ketiga-tiganya menyatakan ke mana pengepit harus pergi, dalam ruang Cartesian. SO-100 menyatakan ke mana enam servo harus pergi. Penukaran memerlukan model kinematik dan penyelesai, bukan pembentukan semula.

SifatOXE, DROID dan Bridge dalam bentuk LeRobotSO-100 dalam LeRobot
Vektor tindakan7-D: x, y, z, roll, pitch, yaw, pengepit6-D: satu kedudukan sasaran setiap motor
Vektor keadaan8-D, dengan slot pad (google_robot menggunakan kuaternion)6-D, satu setiap motor
BingkaiCartesian, tidak sejajar merentasi set dataruang sendi, penentukuran setiap lengan
Mutlak atau relatifsama ada, diputuskan oleh makmal sumberkedudukan sasaran mutlak
Unitdinormalisasi setiap set data, kemudian didiskretkandarjah secara lalai (use_degrees=True), jika tidak -100 hingga 100
Kegagalan senyapdelta dibaca sebagai mutlaklengan yang tidak ditentukur
Vektor Cartesian 7-D adalah konvensyen penukar, bukan DROID

README openx2lerobot mendokumenkan keadaan 8-dim dan tindakan 7-dim yang disatukan untuk setiap set data yang ditukarnya, dari situlah slot pad berasal. Skema RLDS DROID sendiri berbeza: action peringkat atasnya adalah 7-vektor 6 halaju sendi ditambah 1 kedudukan pencengkam, dengan cartesian_position, cartesian_velocity, joint_position dan joint_velocity di bawah action_dict. openpi membaca paparan ruang sendi, binaan LeRobot memberikan anda yang Cartesian. Kedua-duanya bukan enam sudut servo mutlak.

LeRobot memang menyediakan bahagian yang hilang: pengikut SO mempunyai pemproses kinematik dengan langkah InverseKinematicsEEToJoints dan ForwardKinematicsJointsToEE. Kuncinya ialah ee.x, ee.y, ee.z ditambah vektor putaran ee.wx, ee.wy, ee.wz dan ee.gripper_pos, jadi pengekodan orientasi pun berbeza daripada roll-pitch-yaw dalam fail. Langkah IK mengambil orientation_weight, lalai 0.01, yang docstringnya menyatakan untuk menetapkan 0.0 untuk IK kedudukan-sahaja pada lengan yang kurang digerakkan. Anda boleh membina jambatan itu, tetapi separuh orientasi setiap tindakan yang dipinjam kekal dianggarkan.

3. Kadar kawalan

DROID ialah 15 Hz, BridgeData V2 5 Hz, hirisan google_robot 3 fps; pengarang pi0 menerangkan bahagian sumber terbuka campuran mereka sebagai kawalan frekuensi rendah antara 2 dan 10 Hz. DatasetRecordConfig LeRobot lalai kepada fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50. Satu yang dilatih pada data 5 Hz mendapati bahawa satu tindakan meliputi 200 ms. Main semula pada 30 Hz dan lengan akan merangkak; sampel semula secara naif dan anda akan mengaburkan bingkai di mana pencengkam tertutup. Ia juga berinteraksi dengan teruk dengan : satu segmen 100 langkah ialah 20 saat pada 5 Hz, 3.3 pada 30 Hz.

4. Kamera

BridgeData V2 merandomkan dua pose kamera setiap 50 trajektori, dan halaman projeknya menyatakan kebanyakan data hanya membawa pandangan tetap. DROID menggunakan pelekap ZED 2 boleh laras serta ZED Mini pergelangan tangan. Anda mempunyai dua webcam USB yang diletakkan secara manual. Pose kamera bukanlah pemboleh ubah yang mengganggu bagi ; ia adalah sebahagian besar daripada apa yang dikunci oleh pengekod visual, dan tiada apa-apa dalam format fail yang memberitahu anda bahawa pose-pose tersebut berbeza.

Perangkap yang Memakan Sehari

Komponen-komponen tersebut cukup sesuai untuk dijalankan. Set data dimuatkan, latihan bermula, kerugian menurun, titik semak muncul, tiada ralat. Kemudian polisi tidak melakukan apa-apa yang boleh dikenali pada lengan dan anda menghabiskan sehari mencari pepijat dalam skrip latihan anda. Tiada pepijat: model tersebut mempelajari taburan tindakan Cartesian untuk robot yang tidak wujud di dalam bilik anda. Mulakan pada kerugian menurun, polisi tidak melakukan apa-apa, bukan pada hiperparameter anda.

Apa yang berlaku jika anda cuba menggabungkan data itu juga

Rancangan yang jelas adalah untuk menggabungkan: beberapa ribu episod DROID ditambah 50 episod anda. LeRobot menolak, dan penolakan itu menamakan tiga perkara yang berbeza.

  1. 1
    Tarik sampel 100 episod, bukan 1.7 TB penuh

    2 GB sudah cukup untuk melihat strukturnya.

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

    openx2lerobot merangkumi transformasi standard OXE dan menganotasi jenis robot serta frekuensi kawalan. README meletakkan ini dalam 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 perkara lain

    Fail ini menentukan sama ada kerja anda yang lain akan berfungsi.

    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
    Cuba gabungan dan baca ralatnya

    gabungan memuatkan setiap set data, kemudian validate_all_metadata menyemak fps, robot_type dan ciri-ciri berbanding yang pertama dalam senarai, membangkitkan ralat pada ketidakpadanan 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 rujukan datang daripada set data mana yang anda senaraikan dahulu, itulah sebabnya mesej itu mengadu tentang 30 fps anda dan bukannya 15 fps DROID. Betulkan fps dan anda akan menghadapi semakan robot_type; betulkan itu dan anda akan menghadapi semakan ciri, 7 berbanding 6 untuk tindakan. Tiada susunan yang akan berjaya, dan pengawal yang sama berjalan pada masa rakaman melalui sanity_check_dataset_robot_compatibility.

Jangan kodkan secara tetap robot_type untuk mengatasi semakan

Pada LeRobot utama semasa, so100_follower dan so101_follower kedua-duanya didaftarkan pada satu SOFollowerRobotConfig yang dikongsi, jadi rentetan daripada rakaman sebenar tidak semestinya yang anda jangkakan. Bacalah dari meta/info.json anda sendiri, dan anggap semakan yang anda terpaksa lumpuhkan sebagai semakan yang memberitahu anda sesuatu.

Jadi apa yang sebenarnya dipindahkan?

Bobot, bukan episod. Setiap polisi generalis moden menyerap sebahagian daripadanya dalam pra-latihan, dan apabila anda daripada yang dikeluarkan, anda mewarisinya sudah diselaraskan oleh orang yang mempunyai kuasa pengkomputeran untuk melakukannya dengan betul. Kertas pi0 jujur tentang perkadaran: 9.1 peratus daripada campuran pra-latihannya, dikira dalam langkah masa, adalah data sumber terbuka termasuk OXE, Bridge v2 dan DROID. Angka itu adalah milik pi0; campuran setiap vendor berbeza.

Data rentas-embodimen awam dalam projek SO-100
Kelebihan
  • Prior visual dan bahasa: pengekod telah melihat ribuan dapur dan cawan dan tahu apa yang dimaksudkan dengan "blok merah".
  • Prior atas struktur manipulasi: mendekati, menutup, mengangkat, mengangkut, melepaskan, bebas-embodimen walaupun nombornya tidak.
  • Set data yang diketahui baik untuk pengujian. Jika tugas anda tidak dapat overfit 100 episod DROID, masalahnya adalah persediaan anda.
  • Titik rujukan: dalam domain set data berskala kecil RT-1-X mencapai kadar kejayaan purata 50 peratus lebih tinggi daripada kaedah asal atau RT-1, dan RT-2-X mengalahkan RT-2 kira-kira 3x pada kemahiran yang muncul.
Pertukaran
  • Tiada penyeliaan tindakan yang boleh digunakan. Sasaran Cartesian 7-D bukan arahan sendi 6-D.
  • Tiada pemindahan pose kamera, dan tiada apa-apa dalam data yang memberitahu anda pose berbeza.
  • Tiada pemindahan masa: sumber 3, 5 dan 15 fps berbanding perakam 30 fps.
  • Tiada pemindahan pengepit. Robotiq 2F-85 dan rahang bercetak pada STS3215 berbeza dalam daya, lejang dan dinamik.
  • Skala sahaja tidak mencukupi walaupun bagi pengarangnya: dalam domain set data besar RT-1-X tidak mengalahkan RT-1 yang dilatih pada set data itu sahaja.
  • Tiada pengurangan dalam bilangan episod anda sendiri yang anda perlukan.
Lapisan modelDipindahkan?Mengapa
Pengekod penglihatanYa, sangatObjek dan pemandangan adalah bebas-embodimen
Asas bahasaYaArahan adalah teks, bukan geometri
Gabungan rentas-modalKebanyakannyaMemberi perhatian kepada objek yang dinamakan dalam gesaan
Pengekod proprioceptionTidakDimensi input dan semantik sendi berbeza
Kepala tindakanTidakDilatih pada ruang Cartesian 7-D yang anda tidak berada di dalamnya
Statistik normalisasiTidak, dan berbahayaStatistik asing mengalihkan setiap arahan

Inilah sebabnya SmolVLA berkelakuan berbeza pada lengan kos rendah. Kertas kerjanya memilih 481 set data komuniti daripada Hugging Face, ditapis mengikut jenis perwujudan, kiraan episod, kualiti data dan liputan bingkai: 22.9K episod, 10.6M bingkai, dinilai pada lengan SO-100 dan SO-101 sebenar. Kecil dan sepadan mengalahkan besar dan tidak sepadan. Bandingkan pada ACT berbanding SmolVLA.

Tiga laluan yang patut diambil

Laluan A: penalaan halus daripada titik semak yang sudah menyerap data

Kebanyakan orang patut mengambil laluan ini. Anda tidak pernah menyentuh DROID atau Open X-Embodiment: pilih polisi yang pra-latihannya sudah menyerap data rentas-perwujudan, rekod episod anda sendiri, lakukan penalaan halus.

DasarParameterEpisod minFormat set dataTahap GPUInferensTitik semak asas
GR00T N1.7~3 B, ~40 J dilatih dalam penalaan halus50LeRobot v2.0 or v2.1A100 or H100 80 GB152 ms setiap langkahnvidia/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, tulang belakang PaliGemma50LeRobot v3.0A100 or H100 80 GB485 mslerobot/pi05_base
SmolVLA~450 J30LeRobot v3.0RTX 4090 or any 24 GB245 mslerobot/smolvla_base
ACT~80 J50LeRobot v3.0RTX 4090 or any 24 GB20 mstiada, dari awal

ACT adalah kes pinggir yang jujur: tiada model asas, jadi tiada data awam yang pernah mencapainya. Ini bukan secara automatik satu kelemahan, kerana pada 20 ms setiap langkah tindakan ia adalah satu-satunya daripada lima yang boleh menutup gelung pantas, seperti halaman ACT, yang dinyatakan. Pilih mengikut tugas menggunakan kesemua lima dibandingkan, GR00T N1.7 berbanding Pi0.5, dan 332 hasil penanda aras merentasi 85 model dalam arena.

Laluan B: gunakan DROID sebagai lekapan ujian

Sampel 100 episod adalah 2 GB terbaik yang akan anda muat turun bulan ini, dan bukan untuk latihan. Ia adalah set data yang anda tahu betul. Jalankan penukar, pemuat dan kerja GPU pendek anda padanya; apa-apa yang gagal adalah pepijat infrastruktur yang ditemui semasa ia masih murah. NVIDIA melakukan perkara yang sama pada skala besar: kad GR00T N1.7 menyenaraikan empat varian pasca-latihan, untuk Bridge dan Fractal dalam SimplerEnv, DROID dan LIBERO.

Laluan C: rakam sendiri, dengan sengaja

Tiga puluh hingga lima puluh kedengaran kecil berbanding 76,000 sehingga anda ingat bahawa milik anda adalah satu-satunya yang menggunakan lengan, kamera dan meja anda. Pada tetapan lalai LeRobot, 50 episod adalah 100 minit waktu sebenar. Lihat , dan .

Halaman tutorial rakaman AY-Robots yang menunjukkan langkah-langkah untuk menangkap set data LeRobot daripada sesi teleoperasi
Panduan rakaman di /learn/record-your-first-dataset: langkah yang tidak boleh digantikan oleh data awam.

Dua cara untuk mendapatkan polisi yang berfungsi daripada data awam

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 muat turun klien desktop AY-Robots, klien yang merekodkan set data format LeRobot daripada sesi teleoperasi
Klien desktop di /download menulis set data LeRobot terus daripada sesi teleop, memintas penukaran RLDS.

Kos setiap laluan

LaluanStoranMasa manusiaKos GPUPeluang ia menggerakkan lengan anda
DROID yang ditukar sahaja392 GBhari penukaran4 to 12 USDsangat rendah, ruang tindakan salah
DROID digabungkan dengan episod andakedua-duanyablocked by validate_all_metadatan/atiada, ia tidak berjalan
SmolVLA, 30 hingga 50 episod sendiribeberapa GBrakaman 100 min1 to 3 USDtinggi
GR00T N1.7, 50 episod sendiribeberapa GBrakaman 100 min4 to 12 USDtinggi
ACT dari awal, 50 episod sendiribeberapa GBrakaman 100 min1 to 3 USDtinggi, inferens 20 ms
Sampel DROID sebagai lekapan ujian2 GBsatu petangsatu larian pendektinggi, sebagai pengesahan

Asimetri adalah intinya: laluan yang meminjam data paling banyak adalah yang paling mahal dan paling tidak mungkin untuk menggerakkan lengan anda. Kurang dari dua jam teleoperasi anda mengalahkan satu terabait Franka orang lain. Belum ada lengan? /live menstrimkan SO-100 fizikal tanpa pendaftaran. Kemudian latih polisi pertama anda, dan SmolVLA pada SO-100 untuk panduan khusus.

Pelan lalai yang munasabah

Muat turun sampel DROID 2 GB dan gunakannya untuk membuktikan saluran paip anda. Abaikan 1.7 TB yang lain. Rakam 50 episod satu tugas dengan kamera tetap. Laras halus SmolVLA dahulu, kerana dengan minimum 30 episod pada kad 24 GB ia adalah yang paling murah untuk diulang, kemudian cuba GR00T N1.7 pada data yang sama. Bandingkan pada tugas anda, bukan pada penanda aras.

Rakam set data yang sudah sepadan dengan lengan anda

Klien desktop menulis set data format LeRobot terus dari sesi teleop: lengan yang betul, kadar bingkai yang betul, ruang tindakan yang betul. Tiada penukaran RLDS, tiada pemetaan semula.

Dapatkan klien desktop
Bolehkah saya melatih polisi pada DROID dan menjalankannya pada SO-100 saya?

Tidak secara langsung. Dalam binaan LeRobot, tindakan DROID adalah arahan end-effector 7-D pada Franka Panda pada 15 fps; dalam RLDS mentah ia adalah 6 halaju sendi ditambah kedudukan gripper. SO-100 mengambil 6 kedudukan sendi mutlak. Anda memerlukan lapisan kinematik songsang, dan walaupun begitu pergelangan tangan 5-DoF tidak dapat menghasilkan pose 6-DoF sewenang-wenangnya.

Bolehkah saya mencampur episod DROID atau Bridge dengan episod SO-100 saya sendiri?

Tidak. validate_all_metadata memerlukan fps, robot_type dan skema ciri yang sama dan menimbulkan ValueError pada ketidakpadanan pertama. Ketiga-tiganya berbeza: 15 atau 5 fps berbanding 30, franka atau widowx berbanding lengan anda, bentuk tindakan 7 berbanding 6. Menulis semula metadata untuk lulus pemeriksaan tidak membetulkan semantik.

Adakah Open X-Embodiment tidak berguna untuk lengan kos rendah?

Tidak, tetapi nilainya sampai kepada anda melalui berat pra-latihan, bukan episod. Set data sumber terbuka termasuk OXE, Bridge v2 dan DROID adalah 9.1 peratus daripada campuran pra-latihan pi0, dan NVIDIA menghantar varian GR00T N1.7 yang dilatih selepas itu pada Bridge, Fractal, DROID dan LIBERO. Apa yang anda tidak boleh lakukan ialah menambah episod tersebut pada rakaman anda sendiri.

Polisi manakah yang paling banyak mendapat manfaat daripada data silang-embodimen awam?

Pi0.5 dan model GR00T membawa pra-latihan silang-embodimen paling banyak, tetapi SmolVLA sering berfungsi paling baik pada lengan kos rendah: set pra-latihannya adalah 481 set data komuniti, 22.9K episod dan 10.6M bingkai, dinilai pada lengan SO-100 dan SO-101 sebenar. ACT adalah sebaliknya: tiada model asas, 20 ms setiap langkah tindakan.

Berapa banyak episod saya sendiri yang sebenarnya saya perlukan?

30 untuk SmolVLA, 50 untuk GR00T N1.7, GR00T N1.5, Pi0.5 dan ACT. Pada tetapan lalai LeRobot iaitu 60 s setiap episod dan 60 s set semula, 50 episod adalah 100 minit waktu sebenar. Data silang-embodimen yang dipinjam tidak mengurangkan angka tersebut.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started