
Ang DROID, BridgeData V2 at Open X-Embodiment ay nagko-convert sa 7-D end-effector actions sa 6 at 7-DoF na braso. Ang isang SO-100 ay tumatanggap ng 6 na posisyon ng joint. Ano ang naililipat, ano ang hindi, at ano ang dapat gawin sa halip.
Ang maikling bersyon
- •Ang mga build ng LeRobot ng lahat ng tatlo ay may isang kumbensyon: isang 7-D end-effector action [x, y, z, roll, pitch, yaw, gripper] at isang 8-D state na may pad slot. Ang isang SO-100 ay kumukuha ng anim na absolute joint position.
- •Ang 7-D vector na iyon ay ang artefact ng converter: Ang sariling RLDS action field ng DROID ay 6 joint velocities plus isang gripper position, na may Cartesian view sa action_dict.
- •Apat na orasan: DROID 15 fps, BridgeData V2 5 fps, ang google_robot slice 3 fps, isang SO-100 recording sa 30 fps.
- •Hindi mo sila maaaring pagsamahin sa sarili mong data. Ang validate_all_metadata ay nagtataas ng error sa una sa fps, robot_type o features na nagkakaiba, at lahat ng tatlo ay nagkakaiba.
- •Ang naililipat ay pretrained weights, hindi episodes. Ang open-source data ay 9.1 porsyento ng pre-training mixture ng pi0.
- •Ang kanilang pinakamurang tunay na gamit ay isang test fixture: isang kilalang-magandang 2 GB, 100-episode DROID sample na nagpapatunay sa iyong pipeline bago ka mag-record sa loob ng isang weekend.
Mayroong isang million-trajectory public dataset sa isang Google Cloud bucket at isang SO-100 sa desk na nagkakahalaga ng 110 hanggang 150 EUR sa mga piyesa. Bakit hindi matuturuan ng una ang pangalawa? Bahagya itong kaya, ngunit halos walang paglilipat na nangyayari kung saan inaasahan ng mga tao, at ang bahagi na mukhang pinakamadali ay hindi gumagana.
Ang sumusunod: kung ano ang nasa loob ng DROID, BridgeData V2 at Open X-Embodiment, kung saan ang bawat isa ay bumabangga sa isang low-cost na 5-DoF arm, at kung ano ang gagawin sa halip. Ang bawat numero sa ibaba ay nagmula sa papel, dataset card o source file na kinabibilangan nito.
Ano ang aktwal na nilalaman ng tatlong dataset
| 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 |
| Sukat | 76k trajectories, 350 hours | 60,096 trajectories | 1M+ trajectories, 527 skills |
| Pagkakaiba-iba | 564 scenes, 84 tasks, 50 collectors | 24 environments, 13 skills | 160,266 tasks, 21 institutions |
| Komposisyon | lahat teleoperated | 50,365 teleoperated, 9,731 scripted | bawat source lab |
| Rate ng kontrol | 15 Hz | 5 Hz | nag-iiba, 3 fps pataas |
| Mga Kamera | 2 x ZED 2 panlabas, 1 x ZED Mini sa pulso | hanggang 4, karamihan sa mga episode ay ang nakapirming isa lang | kung ano ang ginamit ng lab |
| Raw na pag-download | 1.7 TB RLDS, 8.7 TB raw stereo | JPEG archives | per-dataset TFDS buckets |
Ilang tao na lang ang nagda-download ng 1.7 TB ng RLDS TFRecords. Ang organisasyon ng komunidad na IPEC-COMMUNITY ay muling naglathala ng karamihan sa Open X-Embodiment sa anyo ng LeRobot dataset na may AV1 video, kung saan ang DROID ay nasa 392 GB. Iyan ang bersyon na iyong gagamitin, at ang meta/info.json nito ang unang babasahin.
DROID
Ang pinaka-standardized sa tatlo. Isang rig sa lahat ng dako: isang Franka Panda na may Robotiq 2F-85 gripper, dalawang adjustable na ZED 2 stereo camera at isang ZED Mini sa pulso, teleoperated gamit ang Meta Quest 2 controllers, na naitala sa pamamagitan ng Polymetis sa 15 Hz sa parehong joint at end-effector space. Ang mga label ng wika ay dumating kalaunan sa pamamagitan ng tasq.ai, hanggang tatlo bawat episode.
- 76k trajectories, 350 oras, 564 eksena, 84 gawain, 50 kolektor sa tatlong kontinente.
- Ang pangunahing resulta ay co-training, hindi standalone training: ang mga batch na hinaluan ng 50/50 na in-domain na demonstrasyon ay tinalo ang sumunod na pinakamahusay na paraan ng 22 porsiyentong ganap na tagumpay sa distribusyon, 17 porsiyento sa labas nito.
- 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.
- Isang 2 GB, 100-episode na sample para sa debugging ay matatagpuan sa gs://gresearch/robotics/droid_100. Magsimula doon.
BridgeData V2
Ang pinakamalapit sa isang hobby setup: isang WidowX 250 6-DoF arm, 60,096 trajectories sa 24 na kapaligiran at 13 kasanayan sa 5 Hz. Pansinin ang komposisyon: 50,365 expert teleoperated na demonstrasyon kasama ang 9,731 mula sa isang randomized scripted pick-and-place policy, kaya humigit-kumulang 16 porsiyento ay hindi demonstrasyon ng tao, na mahalaga para sa pag-aaral sa pamamagitan ng panggagaya kalidad. Ang karaniwang download, IPEC-COMMUNITY/bridge_orig_lerobot, ay nag-uulat ng 53,192 episodes at 1,893,026 frames sa 5 fps, robot_type widowx: mas kaunti kaysa sa 60,096 ng papel, kaya basahin ang bilang mula sa meta/info.json sa halip na banggitin ang alinman.
Open X-Embodiment
Hindi isang dataset sa parehong kahulugan: 60 umiiral na dataset ng robot mula sa 34 na lab ang pinagsama sa isang koleksyon ng RLDS na sumasaklaw sa 22 embodiment at mahigit isang milyong trajectory. Ang BridgeData V2 ay nasa loob nito bilang bridge_orig; ang google_robot slice, fractal20220817_data, ay nagko-convert sa 87,212 episode sa 3 fps.
Ang pagsasama-sama ay may kaakibat na babala na diretsahang sinasaad ng papel. Para sa mga eksperimento ng RT-X, kino-convert ng mga may-akda ang bawat source sa isang 7-DoF end-effector action, ngunit hindi nila inaayon ang mga coordinate frame sa iba't ibang dataset, at pinapayagan ang mga action value na maging absolute o relative na posisyon o bilis, ayon sa orihinal na control scheme ng bawat robot. Ang kanilang konklusyon: ang parehong action vector ay maaaring magdulot ng napakaibang galaw para sa iba't ibang robot.

Ang hindi pagtutugma, sa apat na bahagi
Ang embodiment mismatch ay karaniwang tinuturing na isang malabong problema. Apat ito, magkakaiba ang kanilang pagkabigo, at dalawa ay hindi kayang ayusin sa pamamagitan ng scripting.
Mga Antas ng Kalayaan
Ang isang SO-100 ay may limang joint ng braso at isang gripper. Kung bibilangin bilang mga motor, ito ay isang 6-DoF na braso, at tinatawag itong ganoon sa SmolVLA paper; kung bibilangin bilang isang mekanismo ng pagpoposisyon, ito ay 5-DoF, at tinatawag itong ganoon ng LeRobot sa docstring ng inverse-kinematics nito, na naglalarawan ng soft-orientation IK sa 5-DOF SO-101 kung saan bahagya lamang sinusubaybayan ng pulso ang oryentasyon. Ang isang Franka ay may pitong positioning joint. Ang agwat na iyon ang nagpapasya kung anong mga pose ang umiiral: ang isang 5-DoF na braso ay hindi karaniwang makakaabot ng arbitraryong posisyon at oryentasyon nang sabay-sabay, kaya ibinabalik ng solver ang pinakamalapit na kaya nito, isang ibang galaw mula sa ipinakita. Background: mga antas ng kalayaan.
# 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-DKaya ang isang handa nang DROID checkpoint ay hindi shortcut. Ang Physical Intelligence ay nagpapadala ng pi05_droid sa gs://openpi-assets/checkpoints/pi05_droid, at ang parehong README na pumupuri sa lawak nito ay nagbabala na ang mga expert checkpoint na ito ay maaaring hindi mag-generalize sa iyong setup. Ang state nito ay walong Franka joint numbers at ang image keys nito ay exterior_image_1_left at wrist_image_left. Walang flag na nagpapalit niyan sa isang six-motor SO-100 command.
2. Ano ang aktwal na sinasabi ng action vector
Mas malalim kaysa sa dimensionality. Sa mga LeRobot conversion, lahat ng tatlo ay nagsasabi kung saan dapat pumunta ang gripper, sa Cartesian space. Ang isang SO-100 ay nagsasabi kung saan dapat pumunta ang anim na servo. Ang pag-convert ay nangangailangan ng kinematic model at isang solver, hindi isang reshape.
| Katangian | OXE, DROID at Bridge sa LeRobot form | SO-100 sa LeRobot |
|---|---|---|
| Action vector | 7-D: x, y, z, roll, pitch, yaw, gripper | 6-D: isang posisyon ng layunin bawat motor |
| State vector | 8-D, na may pad slot (ginagamit ng google_robot ang isang quaternion) | 6-D, isa bawat motor |
| Frame | Cartesian, hindi nakahanay sa iba't ibang dataset | joint space, per-arm calibration |
| Absolute o relative | alinman, depende sa source lab | absolute goal positions |
| Units | normalised bawat dataset, pagkatapos ay discretised | degrees bilang default (use_degrees=True), kung hindi ay -100 hanggang 100 |
| Silent failure | isang delta na binasa bilang absolute | isang hindi calibrated na braso |
Ang openx2lerobot README ay nagdodokumento ng pinag-isang 8-dim na estado at 7-dim na aksyon para sa bawat dataset na kino-convert nito, kung saan nagmula ang pad slot. Ang sariling RLDS schema ng DROID ay naiiba: ang top-level na action nito ay isang 7-vector ng 6 joint velocities plus 1 gripper position, na may cartesian_position, cartesian_velocity, joint_position at joint_velocity sa ilalim ng action_dict. Binabasa ng openpi ang joint-space view, habang ang LeRobot build ay nagbibigay sa iyo ng Cartesian view. Wala sa mga ito ang anim na absolute servo angles.
Ipinapadala ng LeRobot ang nawawalang bahagi: ang SO follower ay may kinematics processor na may InverseKinematicsEEToJoints at ForwardKinematicsJointsToEE na mga hakbang. Ang mga key nito ay ee.x, ee.y, ee.z kasama ang isang rotation vector na ee.wx, ee.wy, ee.wz at ee.gripper_pos, kaya maging ang orientation encoding ay naiiba sa roll-pitch-yaw sa mga file. Ang hakbang ng IK ay kumukuha ng orientation_weight, default 0.01, na ang docstring ay nagsasabing itakda sa 0.0 para sa position-only IK sa mga under-actuated arm. Maaari mong buuin ang tulay, ngunit ang kalahati ng orientation ng bawat hiniram na aksyon ay nananatiling tinatayang.
3. Rate ng kontrol
Ang DROID ay 15 Hz, BridgeData V2 5 Hz, ang google_robot slice 3 fps; inilalarawan ng mga may-akda ng pi0 ang open-source na bahagi ng kanilang pinaghalong bilang low-frequency control sa pagitan ng 2 at 10 Hz. Ang DatasetRecordConfig ng LeRobot ay nagde-default sa fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50. Isang na sinanay sa 5 Hz na data ay natutunan na ang isang aksyon ay sumasaklaw ng 200 ms. I-replay ito sa 30 Hz at ang braso ay gumagapang; i-resample nang walang ingat at masisira mo ang frame kung saan sumasara ang gripper. Masama rin itong nakikipag-ugnayan sa : ang isang 100-step na chunk ay 20 segundo sa 5 Hz, 3.3 sa 30 Hz.
4. Mga Kamera
Ang BridgeData V2 ay nag-randomize ng dalawang camera pose bawat 50 trajectory, at ang pahina ng proyekto nito ay nagsasaad na karamihan sa data ay nagdadala lamang ng nakapirming view. Gumamit ang DROID ng adjustable na ZED 2 mounts kasama ang isang wrist ZED Mini. Mayroon kang dalawang USB webcam na nakaposisyon sa pamamagitan ng mata. Ang camera pose ay hindi isang nuisance variable para sa isang ; ito ang karamihan sa kung ano ang pinagbasehan ng visual encoder, at walang anumang sa format ng file ang nagsasabi sa iyo na magkaiba ang mga pose.
Ang mga bahagi ay magkakasya nang sapat upang tumakbo. Naglo-load ang dataset, nagsisimula ang pagsasanay, bumababa ang loss, lumalabas ang mga checkpoint, walang error. Pagkatapos ay walang ginagawang makikilala ang policy sa braso at gumugugol ka ng isang araw sa paghahanap ng bug sa iyong training script. Walang bug: natutunan ng modelo ang isang Cartesian action distribution para sa isang robot na wala sa iyong silid. Magsimula sa bumababa ang loss, walang ginagawa ang policy, hindi sa iyong mga hyperparameters.
Ano ang mangyayari kapag sinubukan mong pagsamahin ang data
Ang malinaw na plano ay pagsamahin: ilang libong DROID episode kasama ang iyong 50. Tumanggi si LeRobot, at ang pagtanggi ay nagbanggit ng tatlong bagay na magkaiba.
- 1Kunin ang 100-episode na sample, hindi ang buong 1.7 TB
Sapat na ang 2 GB upang makita ang istraktura.
bashpip install gsutil tensorflow tensorflow-datasets gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 2I-convert ang RLDS sa LeRobot na porma
Ang openx2lerobot ay sumasaklaw sa mga standard na transformation ng OXE at naglalagay ng anotasyon sa uri ng robot at dalas ng kontrol. Inilalagay ito ng README sa convert.sh.
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 - 3Basahin ang meta/info.json bago ang anupaman
Ang file na ito ang magpapasya kung gagana ang natitirang bahagi ng iyong araw.
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'])" - 4Subukan ang pagsasama at basahin ang error
Ang merge ay naglo-load ng bawat dataset, pagkatapos ay sinusuri ng validate_all_metadata ang fps, robot_type at mga feature laban sa una sa listahan, at naglalabas ng error sa unang hindi pagtutugma.
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.
Ang mga reference value ay nagmumula sa dataset na una mong inilista, kaya ang mensahe ay nagrereklamo tungkol sa iyong 30 fps sa halip na 15 ng DROID. Ayusin ang fps at matutugunan mo ang robot_type check; ayusin iyon at matutugunan mo ang feature check, 7 laban sa 6 para sa action. Walang pag-oorder ang makakadaan, at ang parehong guard ay tumatakbo sa oras ng pag-record sa pamamagitan ng sanity_check_dataset_robot_compatibility.
Sa kasalukuyang LeRobot main, ang so100_follower at so101_follower ay parehong nakarehistro sa isang shared na SOFollowerRobotConfig, kaya ang string mula sa isang tunay na recording ay hindi kinakailangang ang inaasahan mo. Basahin ito mula sa iyong sariling meta/info.json, at ituring ang isang check na kinailangan mong i-disable bilang isang check na may sinasabi sa iyo.
Kaya, ano ba talaga ang naililipat?
Mga timbang (weights), hindi mga episode. Bawat modernong pangkalahatang patakaran ay sumipsip ng ilan dito sa pretraining, at kapag ikaw ay mula sa isang inilabas na ay namana mo na ito na naayos na ng mga taong may sapat na compute upang magawa ito nang tama. Ang papel ni pi0 ay tapat tungkol sa proporsyon: 9.1 porsiyento ng pre-training mixture nito, binilang sa timesteps, ay open-source data kabilang ang OXE, Bridge v2 at DROID. Ang bilang na iyon ay kay pi0; magkakaiba ang mixture ng bawat vendor.
- Mga visual at language prior: nakakita ang encoder ng libu-libong kusina at mug at alam kung ano ang tinutukoy ng "the red block".
- Isang prior sa istraktura ng manipulasyon: lapit, sara, buhat, transporta, bitaw, embodiment-independent kahit na hindi ang mga numero.
- Isang kilalang-magandang dataset para sa pagsubok. Kung ang iyong trabaho ay hindi kayang mag-overfit ng 100 DROID episode, ang problema ay ang iyong setup.
- Mga reference point: sa mga domain ng maliliit na dataset, naabot ng RT-1-X ang 50 porsiyentong mas mataas na mean success rate kaysa sa orihinal na pamamaraan o RT-1, at tinalo ng RT-2-X ang RT-2 ng humigit-kumulang 3x sa mga emergent skill.
- Walang magagamit na action supervision. Ang 7-D Cartesian target ay hindi isang 6-D joint command.
- Walang camera-pose transfer, at walang anumang sa data ang nagsasabi sa iyo na magkaiba ang mga pose.
- Walang timing transfer: 3, 5 at 15 fps na pinagmulan laban sa isang 30 fps na recorder.
- Walang gripper transfer. Ang isang Robotiq 2F-85 at isang naka-print na panga sa isang STS3215 ay magkaiba sa puwersa, stroke at dynamics.
- Ang sukat lamang ay hindi sapat kahit para sa mga may-akda nito: sa mga domain ng malalaking dataset, hindi tinalo ng RT-1-X ang isang RT-1 na sinanay lamang sa dataset na iyon.
- Walang pagbawas sa kung gaano karaming sarili mong episode ang kailangan mo.
| Layer ng modelo | Naililipat ba? | Bakit |
|---|---|---|
| Vision encoder | Oo, malakas | Ang mga bagay at eksena ay embodiment-independent |
| Language grounding | Oo | Ang mga instruksyon ay teksto, hindi geometry |
| Cross-modal fusion | Karamihan | Nakatuon sa bagay na pinangalanan sa prompt |
| Proprioception encoder | Hindi | Magkaiba ang input dimension at joint semantics |
| Action head | Hindi | Sinasanay sa isang 7-D Cartesian space na hindi mo ginagamit |
| Normalisation statistics | Hindi, at mapanganib | Ang mga dayuhang stats ay naglilipat ng bawat command |
Ito ang dahilan kung bakit SmolVLA ay kumikilos nang iba sa isang murang braso. Ang papel nito ay pumipili ng 481 dataset ng komunidad mula sa Hugging Face, na sinala batay sa uri ng embodiment, bilang ng episode, kalidad ng data at saklaw ng frame: 22.9K episode, 10.6M frame, na sinuri sa totoong SO-100 at SO-101 na braso. Ang maliit at tugma ay mas mahusay kaysa sa malaki at hindi tugma. Ihambing sa ACT against SmolVLA.
Tatlong landas na sulit tahakin
Landas A: fine-tune mula sa isang checkpoint na nakakain na ng data
Karamihan sa mga tao ay dapat tahakin ito. Hindi mo kailangang galawin ang DROID o Open X-Embodiment: pumili ng isang policy na ang pretraining ay nakasipsip na ng cross-embodiment data, i-record ang sarili mong mga episode, at i-fine-tune.
| Patakaran | Mga Parametro | Minimum na Episode | Format ng Dataset | Antas ng GPU | Inference | Base Checkpoint |
|---|---|---|---|---|---|---|
| GR00T N1.7 | ~3 B, ~40 M trained in fine-tuning | 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 backbone | 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 | none, from scratch |
Ang ACT ay ang tapat na edge case: walang base model, kaya walang pampublikong data ang nakakarating dito. Hindi ito awtomatikong kawalan, dahil sa 20 ms bawat hakbang ng aksyon, ito lamang ang isa sa lima na kayang magsara ng mabilis na loop, tulad ng pahina ng ACT, na nakasaad. Pumili ayon sa gawain gamit ang lahat ng limang pinaghambing, GR00T N1.7 laban sa Pi0.5, at ang 332 resulta ng benchmark sa 85 modelo sa ang arena.
Path B: gamitin ang DROID bilang test fixture
Ang 100-episode sample ay ang pinakamahusay na 2 GB na iyong ida-download ngayong buwan, at hindi para sa pagsasanay. Ito ay isang dataset na alam mong tama. Patakbuhin ang iyong converter, loader at isang maikling GPU job dito; anumang mag-fail ay isang infrastructure bug na natagpuan habang mura pa. Ginagawa rin ng NVIDIA ang pareho sa malaking sukat: ang GR00T N1.7 card ay naglilista ng apat na post-trained variant, para sa Bridge at Fractal sa SimplerEnv, DROID at LIBERO.
Path C: i-record ang sarili mo, nang sinasadya
Tatlumpu hanggang limampu ay tila maliit kumpara sa 76,000 hanggang sa maalala mong ang sa iyo lang ang may sarili mong braso, mga camera at mesa. Sa mga default ng LeRobot, ang 50 episodes ay 100 minuto ng wall clock. Tingnan ang , at .

Dalawang paraan upang makakuha mula sa pampublikong data patungo sa isang gumaganang patakaran
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.

Gastos ng bawat landas
| Landas | Imbakan | Oras ng tao | Gastos ng GPU | Posibilidad na igalaw nito ang iyong braso |
|---|---|---|---|---|
| Converted DROID lang | 392 GB | araw ng conversion | 4 to 12 USD | napakababa, maling action space |
| DROID na pinagsama sa iyong mga episode | pareho | blocked by validate_all_metadata | n/a | wala, hindi ito tumatakbo |
| SmolVLA, 30 hanggang 50 sariling episode | ilang GB | 100 min na pagre-record | 1 to 3 USD | mataas |
| GR00T N1.7, 50 sariling episode | ilang GB | 100 min na pagre-record | 4 to 12 USD | mataas |
| ACT mula sa simula, 50 sariling episode | ilang GB | 100 min na pagre-record | 1 to 3 USD | mataas, 20 ms inference |
| Sample ng DROID bilang test fixture | 2 GB | isang hapon | isang maikling pagtakbo | mataas, bilang pagpapatunay |
Ang asimetriya ang punto: ang landas na humihiram ng pinakamaraming data ay ang pinakamahal at pinakamababang posibilidad na igalaw ang iyong braso. Sa ilalim ng dalawang oras ng iyong sariling teleoperasyon ay mas mahusay kaysa sa isang terabyte ng Franka ng iba. Wala pang braso? /live nag-stream ng pisikal na SO-100 nang walang pagpaparehistro. Pagkatapos sanayin ang iyong unang patakaran, at SmolVLA on SO-100 para sa partikular na gabay.
I-download ang 2 GB DROID sample at gamitin ito upang patunayan ang iyong pipeline. Balewalain ang iba pang 1.7 TB. Mag-record ng 50 episode ng isang gawain gamit ang mga nakapirming camera. I-fine-tune ang SmolVLA muna, dahil sa 30 minimum na episode sa isang 24 GB card ito ang pinakamura upang ulitin, pagkatapos ay subukan ang GR00T N1.7 sa parehong data. Ikumpara sa iyong gawain, hindi sa isang benchmark.
Mag-record ng mga dataset na tugma na sa iyong braso
Direktang isinusulat ng desktop client ang mga dataset na LeRobot-format mula sa isang teleop session: tamang braso, tamang frame rate, tamang action space. Walang RLDS conversion, walang remapping.
Kunin ang desktop clientMaaari ko bang sanayin ang isang policy sa DROID at patakbuhin ito sa aking SO-100?▾
Hindi direkta. Sa LeRobot build, ang mga aksyon ng DROID ay 7-D end-effector commands sa isang Franka Panda sa 15 fps; sa raw RLDS, ang mga ito ay 6 joint velocities plus isang gripper position. Ang isang SO-100 ay tumatanggap ng 6 absolute joint positions. Kakailanganin mo ng inverse-kinematics layer, at kahit na, ang isang 5-DoF wrist ay hindi kayang gayahin ang arbitrary 6-DoF poses.
Maaari ko bang ihalo ang mga DROID o Bridge episodes sa sarili kong SO-100 episodes?▾
Hindi. Ang validate_all_metadata ay nangangailangan ng magkaparehong fps, robot_type at feature schema at nagpapataas ng ValueError sa unang mismatch. Magkakaiba ang tatlo: 15 o 5 fps laban sa 30, franka o widowx laban sa iyong braso, action shapes na 7 laban sa 6. Ang muling pagsusulat ng metadata upang makapasa sa check ay hindi nag-aayos ng semantics.
Wala bang silbi ang Open X-Embodiment para sa isang low-cost arm kung gayon?▾
Hindi, ngunit ang halaga nito ay nakakarating sa iyo sa pamamagitan ng pretrained weights, hindi episodes. Ang mga open-source dataset kabilang ang OXE, Bridge v2 at DROID ay 9.1 porsyento ng pre-training mixture ng pi0, at ang NVIDIA ay nagpapadala ng mga GR00T N1.7 variant na post-trained sa Bridge, Fractal, DROID at LIBERO. Ang hindi mo magagawa ay idugtong ang mga episodes na iyon sa sarili mong recording.
Aling policy ang pinakamaraming nakikinabang mula sa pampublikong cross-embodiment data?▾
Ang Pi0.5 at ang mga modelong GR00T ang may pinakamaraming cross-embodiment pretraining, ngunit ang SmolVLA ay madalas na gumagana nang pinakamahusay sa isang low-cost arm: ang pretraining set nito ay 481 community datasets, 22.9K episodes at 10.6M frames, na sinuri sa totoong SO-100 at SO-101 arms. Ang ACT ay ang kabaligtaran: walang base model, 20 ms bawat action step.
Ilang sarili kong episodes ang talagang kailangan ko?▾
30 para sa SmolVLA, 50 para sa GR00T N1.7, GR00T N1.5, Pi0.5 at ACT. Sa mga default ng LeRobot na 60 s bawat episode at 60 s reset, ang 50 episodes ay 100 minuto ng wall clock. Ang hiniram na cross-embodiment data ay hindi nagpapababa ng mga numerong iyon.
Sources
- DROID: Isang Malakihang Dataset ng Manipulasyon ng Robot sa Tunay na Kapaligiran
- DROID docs: mga laki ng download at ang RLDS episode schema
- BridgeData V2: Isang Dataset para sa Pag-aaral ng Robot sa Malawakang Saklaw
- BridgeData V2 project page: komposisyon at saklaw ng camera
- Open X-Embodiment: Mga Dataset ng Pag-aaral ng Robotika at RT-X Models
- Open X-Embodiment project page
- google-deepmind/open_x_embodiment: listahan ng dataset at RT-1-X checkpoints
- any4lerobot: ang openx2lerobot converter at ang pinag-isang 8-D state, 7-D action nito
- IPEC-COMMUNITY/droid_lerobot: meta/info.json at laki ng repo
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: ang google_robot slice sa 3 fps
- huggingface/lerobot: SO follower, kinematics processor, aggregate at record configs
- openpi: DROID policy inputs at ang pi05_droid checkpoint
- pi0: Isang Vision-Language-Action Flow Model para sa Pangkalahatang Kontrol ng Robot
- SmolVLA: Isang Vision-Language-Action Model para sa Abot-kaya at Mahusay na Robotika
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