Verständnis für das Format des LeRobot Datensatzes
Einheit 2 des LeRobot-Lernpfads. Lernen Sie das Format des LeRobot-Datensatzes: Parquet + MP4-Speicher, Episodestruktur, Beobachtungs-/Aktionsschema. Laden und visualisieren Sie einen vorhandenen Datensatz aus HuggingFace Hub. ~ 1,5 Stunden.
Einheit 2 von 6 · Datensatzformat · ~ 1,5 Stunden
Bevor Sie Ihre eigenen Daten aufzeichnen, verstehen Sie genau, was ein LeRobot-Datensatz enthält
Warum ein Standardformat wichtig ist
Das Roboter-Lernen hat historisch von jedem Labor mit einem anderen Datenformat gelitten, was es unmöglich macht, Datensätze zu teilen, Daten von verschiedenen Robotern zu kombinieren oder vorgebildete Richtlinien über Systeme hinweg zu verwenden. Das LeRobot-Datensatzformat löst dies durch die Definition eines einzigen Schemas, das über alle unterstützten Hardware funktioniert. Ein auf einem SO-100 aufgezeichneter Datensatz kann verwendet werden, um eine Politik für einen OpenArm ohne Konvertierung zu trainieren
Das Verständnis des Formates, bevor Sie aufnehmen, bedeutet, dass Sie während des Trainings kein strukturelles Problem in Ihren Daten entdecken werden.
Datensatzstruktur: Parquet + MP4
Jeder LeRobot-Datenbestand lebt in einem Verzeichnis mit dieser Struktur:
my_dataset/
Die Spaltung zwischen Parquet (für numerische Zeitserien) und MP4 (für Video) ist absichtlich. Parquet komprimiert gemeinsame Zustände und Aktionen effizient und unterstützt schnellen zufälligen Zugriff per Episodenindex. MP4 verwendet Video-Codecs, die für Bildsequenzen entwickelt wurden, und liefert 10
Schlüsselpunkte in jeder Episode
| Field | Shape | Description |
|---|---|---|
| observation.state | [T, D] | Joint positions (and optionally velocities) at each timestep. D is the number of joints (e.g., 7 for SO-100: 6 joints + 1 gripper). |
| action | [T, D] | Target joint positions commanded at each timestep. Same dimensionality as observation.state. |
| timestamp | [T] | Time in seconds since the start of the episode, at 50Hz by default (0.02s per step). |
| episode_index | scalar | Integer index of this episode within the dataset. Used by the dataloader to group timesteps into episodes. |
| frame_index | [T] | Frame number within the episode (0 to T-1). Matches the frame number in the corresponding MP4. |
| next.done | [T] | Boolean flag — True at the last timestep of an episode. Used to signal episode boundaries during training. |
| task_index | scalar | Index into tasks.jsonl. Enables multi-task datasets where different episodes correspond to different instructions. |
Kamerafelder: Kamerabilder werden als MP4-Dateien gespeichert, nicht im Parquet. Das Parquet enthält
Lade und visualisiere einen vorhandenen Datensatz
Laden Sie den
Quelle ~/lerobot-env/bin/activate # Visualisieren Sie 3 Episoden aus einem öffentlichen Datensatz python -m lerobot.scripts.visualize_datensatz \ --repo-id lerobot-raw/aloha_sim_insertion_scripted \ --episode-indices 0 1 2 \ --output-dir ~/datensatz-viz/ # Öffnen Sie den erzeugten HTML in Ihrem Browser # Dateiweg, der zum Terminal gedruckt wurde, z.B. ~/datensatz-viz/index.html
Der Visualisierer erzeugt eine HTML-Seite mit Videowiedergabe jeder Episode zusammen mit synchronisierten gemeinsamen Zustandsplots.
- Glatte Gelenkbahnen
Scharfe Spitzen zeigen Aufzeichnungsartefakte oder Armcrashes - Konsistente Episodelänge
Episoden, die sich wild in der Länge unterscheiden (z.B. 50 vs. 400 Bilder) zeigen oft einige Demonstrationen, die teilweise oder abgebrochenen Bewegungen erfasst haben - Greifer-Zustandänderungen
Die letzte gemeinsame Dimension sollte für Manipulationsarbeiten klare binäre Übergangsvorgänge (offene → geschlossene → offene) zeigen
# Programmatisch vom Datensatz inspizieren lerobot.common.datasets.lerobot_datensatz Import LeRobotDataset Datensatz = LeRobotDataset("lerobot-raw/aloha_sim_insertion_scripted") print(f"Episoden: {datensatz.number_episodes}") print(f"Gesamt-Frame: {len(datensatz)}") print(f"FPS: {datensatz.fps}") print(f"Funktionen: {(listedatensatz.features.keys))}") # Inspizieren Sie eine einzelne Datensatz-Framme\0[] Printform: {[Observation.state'shapes].}") "((((Action: {\shapes}" printform" {\shapes}"
Optional
Erforschen Sie die RCSV Datensatz-Sammlung
Die RCSV-Datensatzbibliothek enthält kuratierte Roboter-Lerndaten-Sets im LeRobot-Format.
Einheit 2 ist fertig, wenn...
Sie haben 3 Episoden von
[← Zurück zum Wegüberblick]







