Warum die bimanuelle Datenerfassung schwieriger ist

Bei der einarmigen Datenerfassung wirkt sich eine schlechte Demonstration nur auf die Flugbahn eines Arms aus. Sie zeichnen 50 Demos auf, verwerfen 5 schlechte und trainieren mit 45. Bei der bimanuellen Datenerfassung wird ein Fehler am Übergabepunkt ungültig beide Flugbahnen der Waffen für diese Demo gleichzeitig. Die Fehlermodi sind gekoppelt.

Diese Kopplung hat zwei praktische Auswirkungen. Erstens benötigen Sie mehr Demonstrationen – 100 statt 50 –, da bimanuelle Aufgaben eine höhere Varianz aufweisen und die Richtlinie mehr Beispiele zum Erlernen der Koordinationsstruktur benötigt. Zweitens benötigen Sie eine strengere Konsistenz pro Demonstration. Eine einarmige Demo, die zu 80 % konsistent ist, trainiert einigermaßen gut. Eine bimanuelle Demo, bei der ein Arm konsistent ist und der andere variiert, bringt der Richtlinie nichts Nützliches über das Koordinations-Timing bei.

Auch die Herausforderung der Arbeitsplatzabdeckung ist größer: Sie müssen beide Arme im Bild haben und der Übergabepunkt – der Moment mit der höchsten Komplexität – muss zuverlässig von mindestens einer Kamera erfasst werden. Überprüfen Sie vor dem Start Ihre Kamerawinkel und passen Sie sie an, wenn die Übergabe außerhalb des Sichtfelds der Arbeitsplatzkamera erfolgt.

Bimanuelles Datensatzformat von LeRobot

Die DK1-Integration mit LeRobot erweitert das Standard-Einarmformat um Dual-Joint-State-Arrays. Jeder Zeitschritt im Datensatz enthält:

# Bimanual dataset observation keys per timestep: Beobachtung.joint_states.left # shape: (6,) — left follower joint angles in radians Beobachtung.joint_states.right # shape: (6,) — right follower joint angles in radians Beobachtungsgreifer links # shape: (1,) — left gripper position [0=open, 1=closed] Beobachtung.Greifer.rechts # shape: (1,) — right gripper position Beobachtung.Bilder.Arbeitsbereich # shape: (H, W, 3) — workspace overhead/front camera Beobachtung.Bilder.Handgelenk # shape: (H, W, 3) — primary wrist camera action.joint_states.left # shape: (6,) — target left joint angles action.joint_states.right # shape: (6,) — target right joint angles action.greifer.links # shape: (1,) action.greifer.rechts # shape: (1,)

Der entscheidende Unterschied zum Einarmigen: Der Aktionsraum ist 14-dimensional (6+6 Gelenke + 2 Greifer). ACT erledigt dies nativ – Sie geben die Aktionsdimension in der Trainingskonfiguration an und es sind keine weiteren Änderungen erforderlich.

Aufnahme-Workflow

Welche ~/dk1-env/bin/activate # Start a recording session — 100 episodes for the cube handoff task python -m lerobot.scripts.record \ --robot-path ~/dk1-config.yaml \ --robot-type dk1_bimanual \ --fps 50 \ --root ~/dk1-datasets \ --repo-id Cube-handoff-v1 \ --num-episodes 100 \ --warmup-time-s 3 \ --episode-time-s 30 \ --reset-time-s 5 # --warmup-time-s: time after pressing record before capture starts (use this to position the cube) # --episode-time-s: max demo length — cube handoff should complete in under 20s; 30s gives buffer # --reset-time-s: time between episodes to return arms to home and reposition the cube

Führen Sie vor Beginn der Aufnahmesitzung 10–15 Übungsdemos durch, um Ihr motorisches Gedächtnis für die Aufgabe aufzuwärmen. Die ersten 5–10 aufgenommenen Demos werden Ihre schlechtesten sein – das ist zu erwarten. Hören Sie nicht auf, sie während der Sitzung durchzugehen; Überprüfen und eliminieren Sie schlechte Demos, nachdem alle 100 aufgezeichnet wurden.

Qualitätscheckliste für bimanuelle Daten

Überprüfen Sie jede Demo nach der Aufnahme mit dem Replay-Viewer von LeRobot. Verwerfen Sie alle Demos, die zwei oder mehr dieser Kriterien nicht erfüllen:

Armsynchronisierung bei der Übergabe Beide Arme müssen sich gleichzeitig innerhalb von 3 cm vom vorgesehenen Übergabepunkt befinden. Asynchrone Übergaben, bei denen ein Arm auf den anderen wartet, lehren die Richtlinie, eine Pause einzulegen – was zu einer schlechten Übertragung führt.
Konsistente Startposition Der Würfel muss bei jeder Demo innerhalb von 2 cm von derselben Position beginnen. Verwenden Sie die Bandmarkierungen aus Einheit 1. Abweichungen in der Startposition zwingen die Richtlinie zur Verallgemeinerung, bevor sie die Kernaufgabe gelernt hat.
Sauberer Griff – beide Arme Jeder Arm muss einen stabilen Griff erreichen, bevor mit der nächsten Phase fortgefahren wird. Wenn der Griff mitten im Transfer entgleitet, entsteht eine Flugbahn, die von der Richtlinie nicht zuverlässig reproduziert werden kann.
Rückkehr zur Ausgangsposition Am Ende jeder Demo müssen beide Arme sauber in die Ausgangshaltung zurückkehren. Demos, die mitten in der Bewegung enden, erzeugen einen Datensatz, in dem die Episodengrenzen nicht eindeutig sind.
Kameraabdeckung am Arbeitsplatz Der Übergabemoment muss im Kamerabild des Arbeitsbereichs sichtbar sein. Wenn die Roboterkörper die Sicht verdecken, passen Sie den Kamerawinkel an, bevor Sie fortfahren.
Timing-Konsistenz Die Episodendauer sollte zwischen den Demos um nicht mehr als ±5 Sekunden variieren. Eine große zeitliche Abweichung weist auf eine inkonsistente Ausführung hin und erzeugt einen Datensatz mit hoher Aktionsraum-Entropie.
Größe des Zieldatensatzes: 100 Demos sind das empfohlene Minimum für das bimanuelle ACT-Training. Forschungsergebnisse deuten darauf hin, dass bimanuelle Aufgaben etwa doppelt so viele Daten erfordern wie vergleichbare einarmige Aufgaben, da die Gelenkkoordinationsstruktur komplexer und der Aktionsraum größer ist. Wenn Ihre Erfolgsquote nach dem Training in Einheit 5 unter 40 % liegt, ist das Sammeln weiterer 50 gezielter Demos der erste Versuch.

Einheit 4 abgeschlossen, wenn...

Sie haben 100 aufgezeichnete Demonstrationen im LeRobot-Format unter ~/dk1-datasets/cube-handoff-v1/. Nach der Prüfung und Auswahl bestehen mindestens 90 Demos die Qualitätscheckliste. Beide Joint-State-Arrays sind für jede Episode mit 50 Hz vorhanden. Beide Kamerabilder sind vorhanden und zeigen die vollständige Aufgabensequenz einschließlich des Übergabemoments. Du bist gelaufen python -m lerobot.scripts.visualize_dataset --repo-id cube-handoff-v1 und bestätigt, dass die Datensatzstruktur gültig ist.