
DROID, BridgeData V2 und Open X-Embodiment werden in 7-D Endeffektor-Aktionen für 6- und 7-DoF-Arme umgewandelt. Ein SO-100 benötigt 6 Gelenkpositionen. Was übertragbar ist, was nicht, und was stattdessen zu tun ist.
Die Kurzversion
- •Die LeRobot-Builds aller drei teilen eine Konvention: eine 7-D Endeffektor-Aktion [x, y, z, roll, pitch, yaw, gripper] und einen 8-D Zustand mit einem Pad-Slot. Ein SO-100 nimmt sechs absolute Gelenkpositionen.
- •Dieser 7-D Vektor ist das Artefakt des Konverters: DROID's eigenes RLDS-Aktionsfeld sind 6 Gelenkgeschwindigkeiten plus eine Greiferposition, mit der kartesischen Ansicht in action_dict.
- •Vier Taktraten: DROID 15 fps, BridgeData V2 5 fps, der google_robot Slice 3 fps, eine SO-100 Aufnahme mit 30 fps.
- •Sie können sie nicht mit Ihren eigenen Daten zusammenführen. validate_all_metadata schlägt beim ersten Unterschied von fps, robot_type oder features fehl, und alle drei unterscheiden sich.
- •Was übertragen wird, sind vortrainierte Gewichte, nicht Episoden. Open-Source-Daten machen 9,1 Prozent der Vortrainingsmischung von pi0 aus.
- •Ihr günstigster praktischer Einsatz ist eine Testvorrichtung: ein bekanntermaßen gutes 2 GB, 100-Episoden DROID-Sample, das Ihre Pipeline beweist, bevor Sie ein Wochenende lang aufnehmen.
Es gibt einen öffentlichen Datensatz mit einer Million Trajektorien auf einem Google Cloud Bucket und einen SO-100 auf dem Schreibtisch, der 110 bis 150 EUR an Teilen gekostet hat. Warum kann der erste den zweiten nicht lehren? Teilweise schon, aber fast keine der Übertragungen geschieht dort, wo man es erwartet, und der Teil, der am einfachsten aussieht, funktioniert überhaupt nicht.
Was folgt: was sich in DROID, BridgeData V2 und Open X-Embodiment, wo jedes mit einem kostengünstigen 5-DoF-Arm kollidiert, und was stattdessen zu tun ist. Jede Zahl unten stammt aus dem Papier, der Datensatzkarte oder der Quelldatei, zu der sie gehört.
Was die drei Datensätze tatsächlich enthalten
| DROID | BridgeData V2 | Open X-Embodiment | |
|---|---|---|---|
| Roboter | Franka Panda, 7 DoF, Robotiq 2F-85 | WidowX 250, 6 DoF, ~4,000 USD rig | 22 Embodiments, 60 Datensätze, 34 Labore |
| Umfang | 76k Trajektorien, 350 Stunden | 60,096 Trajektorien | 1M+ Trajektorien, 527 Skills |
| Vielfalt | 564 Szenen, 84 Aufgaben, 50 Sammler | 24 Umgebungen, 13 Skills | 160.266 Aufgaben, 21 Institutionen |
| Zusammensetzung | vollständig teleoperiert | 50.365 teleoperiert, 9.731 skriptgesteuert | pro Quelllabor |
| Regelrate | 15 Hz | 5 Hz | variiert, ab 3 fps |
| Kameras | 2 x ZED 2 extern, 1 x ZED Mini Handgelenk | bis zu 4, die meisten Episoden nur die feste | was immer das Labor verwendet hat |
| Rohdaten-Download | 1.7 TB RLDS, 8.7 TB raw stereo | JPEG archives | per-dataset TFDS buckets |
Nur wenige Leute laden noch 1,7 TB RLDS TFRecords herunter. Die Community-Organisation IPEC-COMMUNITY hat den Großteil von Open X-Embodiment im LeRobot-Datensatz-Format mit AV1-Video neu veröffentlicht, wobei DROID bei 392 GB liegt. Das ist die Version, mit der Sie arbeiten werden, und ihre meta/info.json ist das, was Sie zuerst lesen sollten.
DROID
Der standardisierteste der drei. Ein Aufbau überall: ein Franka Panda mit einem Robotiq 2F-85 Greifer, zwei einstellbaren ZED 2 Stereokameras und einer Handgelenk-ZED Mini, teleoperiert mit Meta Quest 2 Controllern, aufgezeichnet über Polymetis mit 15 Hz sowohl im Gelenk- als auch im Endeffektor Raum. Sprachlabels kamen später über tasq.ai, bis zu drei pro Episode.
- 76k Trajektorien, 350 Stunden, 564 Szenen, 84 Aufgaben, 50 Sammler auf drei Kontinenten.
- Das Hauptergebnis ist Co-Training, nicht eigenständiges Training: Batches, die 50/50 mit In-Domain-Demonstrationen gemischt wurden, übertreffen die nächstbeste Methode um 22 Prozent absoluten Erfolg in der Verteilung und 17 Prozent außerhalb davon.
- 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.
- Ein 2 GB, 100-Episoden-Debugging-Sample befindet sich unter gs://gresearch/robotics/droid_100. Beginnen Sie dort.
BridgeData V2
Am nächsten an einem Hobby-Setup: ein WidowX 250 6-DoF Arm, 60,096 trajectories across 24 environments and 13 skills at 5 Hz. Beachten Sie die Zusammensetzung: 50,365 expert teleoperated demonstrations plus 9,731 from a randomised scripted pick-and-place policy, sodass etwa 16 Prozent keine menschliche Demonstration sind, was für die Imitationslernen Qualität. Der übliche Download, IPEC-COMMUNITY/bridge_orig_lerobot, meldet 53,192 episodes and 1,893,026 frames at 5 fps, robot_type widowx: weniger als die 60,096 des Papers, lesen Sie also die Anzahl aus meta/info.json, anstatt eine der beiden zu zitieren.
Open X-Embodiment
Kein Datensatz im herkömmlichen Sinne: 60 bestehende Roboter-Datensätze von 34 Laboren wurden zu einer RLDS-Sammlung zusammengeführt, die 22 Ausführungsformen und über eine Million Trajektorien umfasst. BridgeData V2 ist darin als bridge_orig enthalten; der google_robot-Ausschnitt, fractal20220817_data, wird in 87.212 Episoden mit 3 fps umgewandelt.
Die Zusammenführung birgt einen Vorbehalt, den das Papier ausdrücklich nennt. Für die RT-X-Experimente wandeln die Autoren jede Quelle in eine 7-DoF-Endeffektoraktion um, richten jedoch die Koordinatensysteme nicht über die Datensätze hinweg aus und erlauben, dass Aktionswerte absolute oder relative Positionen oder Geschwindigkeiten sein können, je nach dem ursprünglichen Steuerungsschema jedes Roboters. Ihre Schlussfolgerung: Derselbe Aktionsvektor kann bei verschiedenen Robotern sehr unterschiedliche Bewegungen hervorrufen.

Die Diskrepanz, in vier Teilen
Die Diskrepanz in der Verkörperung wird normalerweise als ein vages Problem behandelt. Es sind vier, sie versagen unterschiedlich, und zwei sind nicht durch Skripting behebbar.
1. Freiheitsgrade
Ein SO-100 hat fünf Armgelenke plus einen Greifer. Als Motoren gezählt ist es ein 6-DoF-Arm, und das SmolVLA-Paper nennt ihn so; als Positionierungsmechanismus gezählt ist es 5-DoF, und LeRobot nennt es so in seinem Inverse-Kinematik-Docstring, der eine weiche Orientierungs-IK am 5-DOF SO-101 beschreibt, bei der das Handgelenk die Orientierung nur teilweise verfolgt. Ein Franka hat sieben Positionierungsgelenke. Diese Lücke entscheidet, welche Posen existieren: Ein 5-DoF-Arm kann im Allgemeinen nicht gleichzeitig eine beliebige Position und Orientierung erreichen, daher gibt der Solver das Nächstmögliche zurück, eine andere Bewegung als die demonstrierte. Hintergrund: .
# 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-DEin vorgefertigter DROID-Checkpoint ist also keine Abkürzung. Physical Intelligence liefert pi05_droid unter gs://openpi-assets/checkpoints/pi05_droid aus, und dieselbe README-Datei, die seine Breite lobt, warnt davor, dass diese Experten-Checkpoints möglicherweise nicht auf Ihr Setup verallgemeinerbar sind. Sein Zustand sind acht Franka-Gelenknummern und seine Bildschlüssel sind exterior_image_1_left und wrist_image_left. Kein Flag wandelt dies in einen Sechs-Motor-SO-100-Befehl um.
2. Was der Aktionsvektor tatsächlich aussagt
Tiefer als Dimensionalität. Bei den LeRobot-Konvertierungen geben alle drei an, wohin der Greifer im kartesischen Raum gehen soll. Ein SO-100 gibt an, wohin sechs Servos gehen sollen. Die Konvertierung erfordert ein kinematisches Modell und einen Solver, keine Umformung.
| Eigenschaft | OXE, DROID und Bridge in LeRobot-Form | SO-100 in LeRobot |
|---|---|---|
| Aktionsvektor | 7-D: x, y, z, Roll, Nick, Gier, Greifer | 6-D: eine Zielposition pro Motor |
| Zustandsvektor | 8-D, mit einem Füllplatz (google_robot verwendet ein Quaternion) | 6-D, einer pro Motor |
| Referenzrahmen | Kartesisch, nicht über Datensätze hinweg ausgerichtet | Gelenkraum, pro-Arm-Kalibrierung |
| Absolut oder relativ | beides, vom Quelllabor entschieden | absolute Zielpositionen |
| Einheiten | pro Datensatz normalisiert, dann diskretisiert | Grad standardmäßig (use_degrees=True), sonst -100 bis 100 |
| Stiller Fehler | ein Delta, das als Absolutwert gelesen wird | ein unkalibrierter Arm |
Das openx2lerobot README dokumentiert einen vereinheitlichten 8-dim Zustand und 7-dim Aktion für jeden Datensatz, den es konvertiert, woraus der pad-Slot stammt. DROID's eigenes RLDS-Schema unterscheidet sich: seine Top-Level action ist ein 7-Vektor aus 6 Gelenkgeschwindigkeiten plus 1 Greiferposition, mit cartesian_position, cartesian_velocity, joint_position und joint_velocity unter action_dict. openpi liest die Gelenkraumansicht, der LeRobot-Build liefert Ihnen die kartesische. Keines davon sind sechs absolute Servowinkel.
LeRobot liefert das fehlende Teil: Der SO-Follower verfügt über einen Kinematikprozessor mit den Schritten InverseKinematicsEEToJoints und ForwardKinematicsJointsToEE. Seine Schlüssel sind ee.x, ee.y, ee.z plus ein Rotationsvektor ee.wx, ee.wy, ee.wz und ee.gripper_pos, sodass sich sogar die Orientierungskodierung von der Roll-Pitch-Yaw in den Dateien unterscheidet. Der IK-Schritt nimmt einen orientation_weight an, Standard 0.01, dessen Docstring besagt, dass 0.0 für positionsbasierte IK bei unteraktuierte Armen eingestellt werden soll. Sie können die Brücke bauen, aber die Orientierungshälfte jeder entliehenen Aktion bleibt approximiert.
3. Regelrate
DROID ist 15 Hz, BridgeData V2 5 Hz, der google_robot-Slice 3 fps; die Autoren von pi0 beschreiben den Open-Source-Teil ihrer Mischung als niederfrequente Steuerung zwischen 2 und 10 Hz. LeRobot's DatasetRecordConfig hat standardmäßig fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50. Eine die auf 5-Hz-Daten trainiert wurde, lernte, dass eine Aktion 200 ms abdeckt. Spielt man sie mit 30 Hz ab, kriecht der Arm; resampelt man naiv, verschmiert man den Frame, in dem der Greifer schließt. Es interagiert auch schlecht mit : ein 100-Schritt-Chunk ist 20 Sekunden bei 5 Hz, 3.3 bei 30 Hz.
4. Kameras
BridgeData V2 randomisierte alle 50 Trajektorien zwei Kameraposen, und auf der Projektseite wird vermerkt, dass die meisten Daten ohnehin nur die feste Ansicht enthalten. DROID verwendete verstellbare ZED 2 Halterungen sowie eine Handgelenk-ZED Mini. Sie haben zwei USB-Webcams, die nach Augenmaß positioniert sind. Die Kamerapose ist keine Störvariable für ein ; sie ist ein Großteil dessen, worauf der visuelle Encoder basierte, und nichts im Dateiformat sagt Ihnen, dass sich die Posen unterscheiden.
Die Teile passen gut genug zusammen, um zu laufen. Der Datensatz lädt, das Training beginnt, der Verlust sinkt, Checkpoints erscheinen, nichts schlägt fehl. Dann tut die Policy nichts Erkennbares am Arm, und Sie verbringen einen Tag damit, einen Fehler in Ihrem Trainingsskript zu suchen. Es gibt keinen Fehler: Das Modell hat eine kartesische Aktionsverteilung für einen Roboter gelernt, der in Ihrem Raum nicht existiert. Beginnen Sie bei Verlust sinkt, Policy tut nichts, nicht bei Ihren Hyperparametern.
Was passiert, wenn Sie versuchen, die Daten trotzdem zusammenzuführen
Der offensichtliche Plan ist zu verketten: ein paar tausend DROID-Episoden plus Ihre 50. LeRobot lehnt ab, und die Ablehnung nennt die drei Dinge, die sich unterscheiden.
- 1Ziehen Sie die 100-Episoden-Stichprobe, nicht die vollen 1,7 TB
2 GB reichen aus, um die Struktur zu sehen.
bashpip install gsutil tensorflow tensorflow-datasets gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 2RLDS in LeRobot-Form konvertieren
openx2lerobot kapselt die OXE-Standardtransformationen und annotiert Robotertyp und Steuerfrequenz. Die README legt dies in convert.sh ab.
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 - 3Lesen Sie meta/info.json vor allem anderen
Diese Datei entscheidet, ob der Rest Ihres Tages funktioniert.
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'])" - 4Versuchen Sie den Merge und lesen Sie den Fehler
merge lädt jeden Datensatz, dann prüft validate_all_metadata fps, robot_type und Features gegen den ersten in der Liste und löst beim ersten Konflikt einen Fehler aus.
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.
Die Referenzwerte stammen von dem Datensatz, den Sie zuerst aufgelistet haben, weshalb die Meldung Ihre 30 fps bemängelt und nicht die 15 von DROID. Beheben Sie die fps, und Sie stoßen auf die robot_type-Prüfung; beheben Sie diese, und Sie stoßen auf die Feature-Prüfung, 7 gegen 6 für die Aktion. Keine Reihenfolge kommt durch, und dieselbe Schutzfunktion läuft zur Aufnahmezeit über sanity_check_dataset_robot_compatibility.
Im aktuellen LeRobot-Main sind so100_follower und so101_follower beide auf einer gemeinsamen SOFollowerRobotConfig registriert, sodass der String einer echten Aufnahme nicht unbedingt der ist, den Sie erwarten. Lesen Sie ihn aus Ihrer eigenen meta/info.json und betrachten Sie eine Prüfung, die Sie deaktivieren mussten, als eine Prüfung, die Ihnen etwas mitgeteilt hat.
Was wird also tatsächlich übertragen?
Gewichte, nicht Episoden. Jede moderne Generalisten-Policy hat einen Teil davon im Vortraining absorbiert, und wenn Sie von einem veröffentlichten erben Sie es bereits von Personen mit der Rechenleistung, um es richtig zu machen, abgestimmt. Das Papier von pi0 ist offen bezüglich des Anteils: 9,1 Prozent seiner Vortrainingsmischung, in Zeitschritte gezählt, sind Open-Source-Daten, einschließlich OXE, Bridge v2 und DROID. Diese Zahl stammt von pi0; die Mischung jedes Anbieters unterscheidet sich.
- Visuelle und sprachliche Prioren: Der Encoder hat Tausende von Küchen und Tassen gesehen und weiß, worauf sich "der rote Block" bezieht.
- Ein Prior über die Manipulationsstruktur: Annähern, Schließen, Heben, Transportieren, Loslassen, verkörperungsunabhängig, auch wenn die Zahlen es nicht sind.
- Ein bekanntermaßen guter Datensatz zum Testen. Wenn Ihr Job 100 DROID-Episoden nicht überanpassen kann, liegt das Problem an Ihrem Setup.
- Referenzpunkte: In kleinen Datensatzdomänen erreichte RT-1-X eine um 50 Prozent höhere mittlere Erfolgsrate als die ursprüngliche Methode oder RT-1, und RT-2-X übertraf RT-2 um etwa das Dreifache bei emergenten Fähigkeiten.
- Keine nutzbare Aktionsüberwachung. Ein 7-D kartesisches Ziel ist kein 6-D Gelenkbefehl.
- Keine Kamera-Posen-Übertragung, und nichts in den Daten sagt Ihnen, dass die Posen unterschiedlich sind.
- Keine Zeitübertragung: 3, 5 und 15 fps Quellen gegenüber einem 30 fps Rekorder.
- Keine Greiferübertragung. Ein Robotiq 2F-85 und eine gedruckte Backe an einem STS3215 unterscheiden sich in Kraft, Hub und Dynamik.
- Skalierung allein war selbst für die Autoren nicht ausreichend: In den Domänen großer Datensätze übertraf RT-1-X ein RT-1, das nur auf diesem Datensatz trainiert wurde, nicht.
- Keine Reduzierung der Anzahl Ihrer benötigten eigenen Episoden.
| Schicht des Modells | Überträgt? | Warum |
|---|---|---|
| Vision-Encoder | Ja, stark | Objekte und Szenen sind verkörperungsunabhängig |
| Sprachliche Verankerung | Ja | Anweisungen sind Text, nicht Geometrie |
| Kreuzmodale Fusion | Meistens | Bezieht sich auf das im Prompt genannte Objekt |
| Propriozeptions-Encoder | Nein | Eingabedimension und Gelenksemantik unterscheiden sich |
| Aktionskopf | Nein | Trainiert in einem 7-D kartesischen Raum, in dem Sie sich nicht befinden |
| Normalisierungsstatistiken | Nein, und gefährlich | Fremde Statistiken verschieben jeden Befehl |
Deshalb SmolVLA verhält sich auf einem kostengünstigen Arm anders. Sein Paper wählt 481 Community-Datensätze von Hugging Face aus, gefiltert nach Verkörperungstyp, Episodenanzahl, Datenqualität und Frame-Abdeckung: 22.9K Episoden, 10.6M Frames, evaluiert an echten SO-100 und SO-101 Armen. Klein und passend schlägt groß und unpassend. Vergleichen Sie auf ACT gegen SmolVLA.
Drei lohnende Wege
Weg A: Feinabstimmung von einem Checkpoint, der die Daten bereits verarbeitet hat
Die meisten Leute sollten diesen Weg wählen. Sie berühren niemals DROID oder Open X-Embodiment: wählen Sie eine Policy, deren Vortraining bereits Cross-Embodiment-Daten absorbiert hat, zeichnen Sie Ihre eigenen Episoden auf, führen Sie eine Feinabstimmung durch.
| Richtlinie | Parameter | Min. Episoden | Datensatzformat | GPU-Klasse | Inferenz | Basis-Checkpoint |
|---|---|---|---|---|---|---|
| GR00T N1.7 | ~3 B, ~40 M im Fine-Tuning trainiert | 50 | LeRobot v2.0 or v2.1 | A100 or H100 80 GB | 152 ms pro Schritt | 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 | keine, von Grund auf |
ACT ist der ehrliche Grenzfall: kein Basismodell, daher erreichen keine der öffentlichen Daten es jemals. Dies ist nicht automatisch ein Nachteil, da es mit 20 ms pro Aktionsschritt das einzige der fünf ist, das einen schnellen Regelkreis schließen kann, wie die ACT-Seite darlegt. Wählen Sie nach Aufgabe unter Verwendung von alle fünf im Vergleich, GR00T N1.7 gegen Pi0.5, und den 332 Benchmark-Ergebnissen über 85 Modelle in der Arena.
Pfad B: DROID als Testvorrichtung verwenden
Die 100-Episoden-Stichprobe ist die besten 2 GB, die Sie diesen Monat herunterladen werden, und nicht zum Training. Es ist ein Datensatz, von dem Sie wissen, dass er korrekt ist. Führen Sie Ihren Konverter, Loader und einen kurzen GPU-Job darauf aus; alles, was fehlschlägt, ist ein Infrastrukturfehler, der gefunden wurde, als es noch günstig war. NVIDIA macht dasselbe im großen Maßstab: Die GR00T N1.7-Karte listet vier nachtrainierte Varianten auf, für Bridge und Fractal in SimplerEnv, DROID und LIBERO.
Pfad C: Eigene Daten gezielt aufzeichnen
Dreißig bis fünfzig klingt wenig im Vergleich zu 76.000, bis man bedenkt, dass Ihre die einzigen sind, die mit Ihrem Arm, Ihren Kameras und Ihrem Tisch aufgenommen wurden. Bei den Standardeinstellungen von LeRobot entsprechen 50 Episoden 100 Minuten Echtzeit. Siehe , und .

Zwei Wege, um von öffentlichen Daten zu einer funktionierenden Policy zu gelangen
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.

Was jeder Pfad kostet
| Pfad | Speicherplatz | Menschliche Zeit | GPU-Kosten | Chance, dass es Ihren Arm bewegt |
|---|---|---|---|---|
| Konvertiertes DROID allein | 392 GB | Tage der Konvertierung | 4 to 12 USD | sehr gering, falscher Aktionsraum |
| DROID mit Ihren Episoden zusammengeführt | beides | blocked by validate_all_metadata | n/a | keine, es läuft nicht |
| SmolVLA, 30 to 50 own episodes | einige GB | 100 Min. Aufnahme | 1 to 3 USD | hoch |
| GR00T N1.7, 50 own episodes | einige GB | 100 Min. Aufnahme | 4 to 12 USD | hoch |
| ACT from scratch, 50 own episodes | einige GB | 100 Min. Aufnahme | 1 to 3 USD | hoch, 20 ms Inferenz |
| DROID-Beispiel als Test-Fixture | 2 GB | ein Nachmittag | ein kurzer Lauf | hoch, als Validierung |
Die Asymmetrie ist der Punkt: Der Pfad, der die meisten Daten ausleiht, ist der teuerste und am wenigsten wahrscheinlich, Ihren Arm zu bewegen. Weniger als zwei Stunden Ihrer eigenen Teleoperation schlagen ein Terabyte einer fremden Franka. Noch keinen Arm? /live streamt einen physischen SO-100 ohne Anmeldung. Dann trainieren Sie Ihre erste Policy, und SmolVLA auf SO-100 für die spezifische Anleitung.
Laden Sie das 2 GB DROID-Beispiel herunter und verwenden Sie es, um Ihre Pipeline zu testen. Ignorieren Sie die anderen 1.7 TB. Nehmen Sie 50 Episoden einer Aufgabe mit festen Kameras auf. Optimieren Sie zuerst SmolVLA, da es mit mindestens 30 Episoden auf einer 24 GB Karte am günstigsten zu iterieren ist, und versuchen Sie dann GR00T N1.7 mit denselben Daten. Vergleichen Sie auf Ihrer Aufgabe, nicht auf einem Benchmark.
Datensätze aufzeichnen, die bereits zu Ihrem Arm passen
Der Desktop-Client schreibt Datensätze im LeRobot-Format direkt aus einer Teleoperationssitzung: passender Arm, passende Bildrate, passender Aktionsraum. Keine RLDS-Konvertierung, kein Neuzuordnung.
Desktop-Client herunterladenKann ich eine Policy auf DROID trainieren und auf meinem SO-100 ausführen?▾
Nicht direkt. Im LeRobot-Build sind DROID-Aktionen 7-D Endeffektor-Befehle auf einem Franka Panda mit 15 fps; im rohen RLDS sind es 6 Gelenkgeschwindigkeiten plus eine Greiferposition. Ein SO-100 benötigt 6 absolute Gelenkpositionen. Sie bräuchten eine invers-kinematische Schicht, und selbst dann kann ein 5-DoF Handgelenk keine beliebigen 6-DoF Posen reproduzieren.
Kann ich DROID- oder Bridge-Episoden mit meinen eigenen SO-100-Episoden mischen?▾
Nein. validate_all_metadata erfordert identische fps, robot_type und Feature-Schema und löst einen ValueError beim ersten Konflikt aus. Alle drei unterscheiden sich: 15 oder 5 fps gegenüber 30, franka oder widowx gegenüber Ihrem Arm, Aktionsformen von 7 gegenüber 6. Das Umschreiben von Metadaten, um die Prüfung zu bestehen, behebt die Semantik nicht.
Ist Open X-Embodiment dann nutzlos für einen kostengünstigen Arm?▾
Nein, aber sein Wert erreicht Sie durch vortrainierte Gewichte, nicht durch Episoden. Open-Source-Datensätze wie OXE, Bridge v2 und DROID machen 9.1 Prozent der Vortrainingsmischung von pi0 aus, und NVIDIA liefert GR00T N1.7-Varianten, die auf Bridge, Fractal, DROID und LIBERO nachtrainiert wurden. Was Sie nicht tun können, ist, diese Episoden an Ihre eigene Aufnahme anzuhängen.
Welche Policy profitiert am meisten von öffentlichen Cross-Embodiment-Daten?▾
Pi0.5 und die GR00T-Modelle verfügen über das meiste Cross-Embodiment-Vortraining, aber SmolVLA verhält sich oft am besten an einem kostengünstigen Arm: Sein Vortrainingssatz besteht aus 481 Community-Datensätzen, 22.9K Episoden und 10.6M Frames, evaluiert an echten SO-100- und SO-101-Armen. ACT ist das Gegenteil: kein Basismodell, 20 ms pro Aktionsschritt.
Wie viele meiner eigenen Episoden benötige ich tatsächlich?▾
30 für SmolVLA, 50 für GR00T N1.7, GR00T N1.5, Pi0.5 und ACT. Bei LeRobots Standardeinstellungen von 60 s pro Episode und 60 s Reset sind 50 Episoden 100 Minuten Echtzeit. Ausgeliehene Cross-Embodiment-Daten senken diese Zahlen nicht.
Sources
- DROID: Ein großskaliger Roboter-Manipulationsdatensatz aus der Praxis
- DROID-Dokumentation: Download-Größen und das RLDS-Episodenschema
- BridgeData V2: Ein Datensatz für Robotik-Lernen im großen Maßstab
- BridgeData V2 Projektseite: Zusammensetzung und Kameraabdeckung
- Open X-Embodiment: Robotik-Lern-Datensätze und RT-X-Modelle
- Open X-Embodiment Projektseite
- google-deepmind/open_x_embodiment: Datensatzliste und RT-1-X Checkpoints
- any4lerobot: der openx2lerobot Konverter und sein vereinheitlichter 8-D Zustand, 7-D Aktion
- IPEC-COMMUNITY/droid_lerobot: meta/info.json und Repository-Größe
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: der google_robot Ausschnitt bei 3 fps
- huggingface/lerobot: SO Follower, Kinematik-Prozessor, Aggregations- und Aufzeichnungskonfigurationen
- openpi: DROID Policy-Eingaben und der pi05_droid Checkpoint
- pi0: Ein Vision-Sprache-Aktion-Flussmodell für die allgemeine Robotersteuerung
- SmolVLA: Ein Vision-Sprache-Aktion-Modell für erschwingliche und effiziente Robotik
Quellen
- 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
Bereit für hochwertige Robotik-Daten?
AY-Robots verbindet Ihre Roboter mit qualifizierten Operatoren weltweit.
Jetzt starten