Warum ein Standardformat wichtig ist
Das Roboterlernen hat in der Vergangenheit dadurch gelitten, dass jedes Labor ein anderes Datenformat verwendet hat. Dadurch war es unmöglich, Datensätze zu teilen, Daten von verschiedenen Robotern zu kombinieren oder vorab trainierte Richtlinien systemübergreifend zu verwenden. Das LeRobot-Datensatzformat löst dieses Problem, indem es ein einziges Schema definiert, das auf der gesamten unterstützten Hardware funktioniert. Ein auf einem SO-100 aufgezeichneter Datensatz kann zum Trainieren einer Richtlinie für einen OpenArm ohne Konvertierung verwendet werden – solange die Aktionsraumabmessungen übereinstimmen.
Wenn Sie das Format vor der Aufzeichnung verstehen, werden Sie während des Trainings kein strukturelles Problem in Ihren Daten entdecken. Es erleichtert auch das Debuggen erheblich: Wenn das Training fehlschlägt, ist der erste Ort, an dem nachgeschaut werden muss, der Datensatz.
Datensatzstruktur: Parkett + MP4
Jeder LeRobot-Datensatz befindet sich in einem Verzeichnis mit dieser Struktur:
Die Aufteilung zwischen Parquet (für numerische Zeitreihen) und MP4 (für Video) ist bewusst. Parquet komprimiert Gelenkzustände und Aktionen effizient und unterstützt den schnellen Direktzugriff per Episodenindex. MP4 verwendet Video-Codecs, die für Bildsequenzen entwickelt wurden, wodurch 10–30-mal kleinere Dateien entstehen als beim Speichern von Rohbildern als Tensoren.
Schlüsselfelder in jeder Episode
| Feld | Das Bild | Beschreibung |
|---|---|---|
| Beobachtungszustand | [T, D] | Gelenkpositionen (und optional Geschwindigkeiten) zu jedem Zeitschritt. D ist die Anzahl der Gelenke (z. B. 7 für SO-100: 6 Gelenke + 1 Greifer). |
| Aktion | [T, D] | Zu jedem Zeitschritt befohlene Zielgelenkpositionen. Gleiche Dimensionalität wie „observation.state“. |
| Zeitstempel | [T] | Zeit in Sekunden seit Beginn der Episode, standardmäßig bei 50 Hz (0,02 s pro Schritt). |
| Episodenindex | Skalar | Ganzzahliger Index dieser Episode innerhalb des Datensatzes. Wird vom Datenlader verwendet, um Zeitschritte in Episoden zu gruppieren. |
| Frame_Index | [T] | Bildnummer innerhalb der Episode (0 bis T-1). Entspricht der Bildnummer im entsprechenden MP4. |
| weiter.fertig | [T] | Boolesche Flagge – Wahr im letzten Zeitschritt einer Episode. Wird verwendet, um Episodengrenzen während des Trainings zu signalisieren. |
| task_index | Skalar | Index in task.jsonl. Ermöglicht Multitasking-Datensätze, bei denen unterschiedliche Episoden unterschiedlichen Anweisungen entsprechen. |
observation.images.cam_high als Pfadreferenz (Bildindex + Episodenindex) anstelle von Rohpixeldaten. Der LeRobot-Datenlader übernimmt die Dekodierung und Synchronisierung transparent.
Laden und visualisieren Sie einen vorhandenen Datensatz
Laden Sie die lerobot-raw/aloha_sim_insertion_scripted Datensatz von HuggingFace Hub und visualisieren Sie 3 Episoden. Dieser Datensatz enthält geskriptete Demonstrationen eines bimanuellen Roboters, der einen Stift einführt – ein klares Beispiel dafür, wie ein gut strukturierter Datensatz aussieht.
Der Visualizer generiert eine HTML-Seite mit Videowiedergabe jeder Episode sowie synchronisierten gemeinsamen Zustandsdiagrammen. Suchen:
- Glatte Gelenkbahnen — Scharfe Spitzen deuten auf Aufnahmeartefakte oder Armstöße hin
- Konsistente Episodenlänge – Episoden, deren Länge stark variiert (z. B. 50 vs. 400 Bilder), deuten oft darauf hin, dass bei einigen Demonstrationen teilweise oder abgebrochene Bewegungen erfasst wurden
- Der Zustand des Greifers ändert sich — Die letzte Gelenkdimension sollte klare binäre Übergänge (offen → schließen → öffnen) für Manipulationsaufgaben aufweisen
Entdecken Sie die SVRC-Datensatzsammlung
Die SVRC-Datensatzbibliothek enthält kuratierte Roboterlerndatensätze im LeRobot-Format. Durchsuchen Sie sie, um zu verstehen, wie verschiedene Aufgaben und Hardware aussehen, bevor Sie Ihre eigenen aufzeichnen. Datensätze durchsuchen →
Einheit 2 abgeschlossen, wenn...
Sie haben 3 Episoden von erfolgreich visualisiert lerobot-raw/aloha_sim_insertion_scripted und die HTML-Ausgabe wird in Ihrem Browser geöffnet. Sie können die Felder „observation.state“, „action“ und „timestamp“ in einer mit Python geladenen Parquet-Datei identifizieren. Sie verstehen den Unterschied zwischen dem, was in Parquet und MP4 gespeichert ist. Sie sind bereit, Ihren eigenen Datensatz in Einheit 3 aufzuzeichnen.