Bimanuelle Datenerfassung
Der DK1 ist von Grund auf für die bimanuelle Teleoperationsdatenerfassung konzipiert. In diesem Leitfaden geht es um die Verkabelung beider Arme und Kameras, die Durchführung des Aufzeichnungsverfahrens „Anführer/Nachfolger“, das Verständnis des bimanuellen Datensatzschemas und die Vorbereitung Ihrer Daten für das ACT-Training.
Hardware-Anschlüsse für bimanuelle Aufnahme
Für die bimanuelle Aufnahme sind mehr Verbindungen erforderlich als für die einarmige Aufnahme. Überprüfen Sie jede Verbindung, bevor Sie LeRobot starten. Wenn während der Sitzung eine Verbindung fehlt, wird die Episode beschädigt.
Führungsarm (Dynamixel XL330)
USB-C vom Führungsarm zum Host-PC. Dieser Arm wird von der Hand des Bedieners bewegt. Verwenden Sie ein kurzes Kabel (1 m), um versehentliche Trennungen während des Teleop zu vermeiden. Verifizieren: ls /dev/ttyACM0
Mitnehmerarm (DM4340 + Strom)
USB-C vom Mitnehmerarm zum Host-PC plus Gleichstromversorgung. Der Folgearm benötigt eine externe Stromversorgung – niemals allein mit USB-Stromversorgung betreiben. Verifizieren: ls /dev/ttyACM1
Handkamera (Folgearm)
Montieren Sie eine USB-Webcam am Endeffektor des Folgearms. Dies ist die primäre Manipulationskamera. Verbindung über USB 3.0. Verifizieren: ls /dev/video0
Overhead-/Arbeitsplatzkamera
Feste Kamera über dem bimanuellen Arbeitsbereich in ca. 70 cm Höhe, 30° nach unten geneigt. Erfasst beide Arme gleichzeitig. Zweiter USB 3.0-Anschluss. Verifizieren: ls /dev/video2
Entscheidend: bimanuelle Synchronisation. Bei zwei Armen und zwei Kameras ist die Synchronisation der wichtigste Datenqualitätsfaktor für den DK1. LeRobot versieht alle Streams mit einem Zeitstempel von der Uhr des Host-PCs. So minimieren Sie Zeitstempelabweichungen: (1) Verwenden Sie separate USB-Bus-Controller für Kameras und Arme, (2) Verwenden Sie USB 3.0-Hubs mit stabilen Uhren, (3) Stellen Sie den CPU-Governor auf den Leistungsmodus ein. Ziel: <5 ms Zeitversatz zwischen allen vier Streams. Eine 10-ms-Dynamik zwischen dem Zustand des linken und rechten Arms kann zu ACT-Trainingsfehlern bei kontaktreichen Aufgaben führen.
Aufzeichnungsverfahren für Teleoperationen von Anführern/Followern
Befolgen Sie diese Schritte für jede DK1-Aufnahmesitzung. Das bimanuelle Verfahren erfordert im Vergleich zur einarmigen Entnahme einige zusätzliche Schritte.
Sicherheitscheck vor der Sitzung
Räumen Sie den gemeinsamen Arbeitsbereich zwischen beiden Armen frei (1,5 m × 1 m). Stellen Sie sicher, dass beide Arme den gemeinsamen Arbeitsbereich ohne Kollision erreichen. Testen Sie den Not-Aus-Schalter vor der Aufnahme. Sehen Sicherheitsseite.
Verbinden und überprüfen Sie beide Arme
# Verify serial ports are available
ls /dev/ttyACM*
# Expected: /dev/ttyACM0 (leader) and /dev/ttyACM1 (follower)
# Quick connection test
python -m lerobot.scripts.control_robot \
--robot.type=bi_dk1_follower \
--robot.config=~/.lerobot/robots/dk1_bimanual.yaml \
--control.type=none
Überprüfen Sie Kamera-Feeds
Beide Kameras müssen streamen, bevor LeRobot gestartet wird. Eine fehlende Kamera führt stillschweigend zu Episoden mit Nullbildern.
python3 -c "
import cv2
for i in [0, 2]:
cap = cv2.VideoCapture(i)
if cap.isOpened():
ret, frame = cap.read()
print(f'Camera {i}: OK ({frame.shape[1]}x{frame.shape[0]})')
else:
print(f'Camera {i}: FAILED')
cap.release()
"
Bewegen Sie die Arme in die Ausgangsposition
Bewegen Sie den Führungsarm manuell in die Teleop-Ausgangsposition. Der Mitnehmerarm wird dies widerspiegeln. Halten Sie den Führungsarm zwei bis drei Sekunden lang ruhig, um die Synchronisierung zu bestätigen, bevor die Aufwärmphase beginnt.
Richten Sie die Aufgabenszene ein
Platzieren Sie Gegenstände in einheitlichen Ausgangspositionen für beide Arme. Fotografieren Sie die Ausgangskonfiguration. Markieren Sie bei bimanuellen Aufgaben die genauen Positionen mit Klebeband – die Szenenkonsistenz ist noch wichtiger, da beide Armbewegungen kompatibel sein müssen.
Starten Sie die bimanuelle LeRobot-Aufzeichnung
source ~/.venvs/dk1/bin/activate
python -m lerobot.scripts.control_robot \
--robot.type=bi_dk1_follower \
--robot.config=~/.lerobot/robots/dk1_bimanual.yaml \
--control.type=record \
--control.fps=30 \
--control.repo_id=your-username/dk1-bimanual-pick-place-v1 \
--control.num_episodes=50 \
--control.single_task="Pick up block with left arm, place in bin with right arm" \
--control.warmup_time_s=5 \
--control.reset_time_s=15
Verwenden Sie eine längere reset_time_s für bimanuelle Aufgaben – das Zurücksetzen von zwei Armen und der Szene dauert länger als bei einarmigen Einstellungen.
Überprüfen und wiederholen Sie Episoden
Nach jeder Folge von 10 Episoden können Sie sie noch einmal abspielen und überprüfen, bevor Sie fortfahren. Achten Sie auf die Armkoordination – Verzögerungen zwischen dem linken und dem rechten Arm machen sich als Zittern in den Bewegungen des Followers bemerkbar.
python -m lerobot.scripts.visualize_dataset \
--repo_id=your-username/dk1-bimanual-pick-place-v1 \
--episode_index=0
Drücken Sie auf HuggingFace Hub
huggingface-cli login
python -m lerobot.scripts.push_dataset_to_hub \
--repo_id=your-username/dk1-bimanual-pick-place-v1
LeRobot-Datensatzformat für bimanuell (DK1)
Das bimanuelle DK1-Datensatzschema verdoppelt die gemeinsamen Zustandsfelder im Vergleich zu einer einarmigen Aufzeichnung. Jede Episode enthält synchronisierte Beobachtungen von den Führungs- und Folgearmen sowie allen Kameras.
Verzeichnisstruktur
your-username/dk1-bimanual-pick-place-v1/
├── meta/
│ ├── info.json # Dataset metadata, fps, shapes, robot_type
│ ├── episodes.jsonl # Per-episode metadata (task, length, outcome)
│ └── stats.json # Min/max/mean/std for all fields
├── data/
│ └── chunk-000/
│ ├── episode_000000.parquet
│ └── ...
└── videos/
└── chunk-000/
├── observation.images.wrist_cam/
│ ├── episode_000000.mp4
│ └── ...
└── observation.images.overhead_cam/
└── ...
Episodendatenschema (bimanuell)
Qualitätscheckliste für bimanuelle Demos
Für bimanuelle Datensätze gelten strengere Qualitätsanforderungen als für einarmige Daten. Schlechte Koordination zwischen den Waffen ist die Hauptursache für das Scheitern der DK1-Politikausbildung.
-
1Das Delta der Armsynchronisierung liegt unter 10 ms Überprüfen Sie die
arm_sync_delta_msFeld in jeder Episode. Spitzen über 10 ms deuten auf einen USB-Buskonflikt oder ein verworfenes serielles Paket hin. Löschen Sie Episoden mit anhaltend hohen Deltas. -
2Keine Schwingung des Mitnehmerarms während des Kontakts Überprüfen Sie die Bewegungsbahnen des Folgearms an Kontaktpunkten (Greifen, Übergabe, Platzierung). Schwingungen treten als hochfrequentes Rauschen auf
observation.state. Reduzieren Sie die PD-Gewinne, falls vorhanden. Sehen Software-Fehlerbehebung. -
3Beide Arme erledigen die Aufgabe in derselben Episode Bei bimanuellen Aufgaben ist eine Episode nur dann gültig, wenn beide Arme ihre zugewiesenen Teilaufgaben erledigen. Wenn der linke Arm erfolgreich war, der rechte Arm das Objekt jedoch fallen ließ, markieren Sie die Episode als fehlgeschlagen und löschen oder kommentieren Sie sie.
-
4Keine fehlenden Kamerabilder Beide Kamerastreams müssen die erwartete Anzahl von Bildern haben. Fehlende Bilder von einer der Kameras beeinträchtigen die Eingabe der visuomotorischen Richtlinie. Erkundigen Sie sich bei
lerobot.scripts.visualize_dataset. -
5Die Aufgabenszene wurde zwischen den Episoden identisch zurückgesetzt Der Arbeitsbereich beider Arme muss für jede Episode zurückgesetzt werden. Objektposition, Startkonfiguration des Arms und Kamerawinkel müssen alle übereinstimmen. Verwenden Sie die fotografierte Startkonfiguration als Referenz.
-
6Die Episodenlänge ist konsistent Alle erfolgreichen Episoden sollten innerhalb von ±25 % der mittleren Länge liegen. Bimanuelle Aufgaben weisen oft eine höhere Varianz auf als einarmige Aufgaben, extreme Ausreißer (3× Median) sollten jedoch verworfen werden.
-
7Die Datensatzstatistiken sind für beide Arme symmetrisch In
meta/stats.json, überprüfe dasaction_leftUndaction_rightStatistiken sind für Ihre Aufgabengeometrie plausibel. Wenn ein Arm eine Abweichung von Null aufweist, hat sich dieser Arm nicht bewegt – überprüfen Sie die Anschlusszuweisungen. -
8Der Teleop-Demonstrationsstil ist konsistent Bei allen Demonstrationen sollten der gleiche Annäherungspfad, die gleiche Greifstrategie und die gleiche Übergabetechnik verwendet werden. Gemischte Strategien erzeugen multimodale Aktionsverteilungen, die das ACT-Training verwirren. Verwenden Sie einen einzelnen Operator pro Aufgabenversion.
Trainieren Sie ACT an Ihrem bimanuellen Datensatz
Sobald Ihr Datensatz die Qualitätscheckliste besteht, trainieren Sie ACT oder Diffusion Policy direkt mit LeRobot. ACT wird für bimanuelle DK1-Aufgaben empfohlen – seine geblockte Aktionsvorhersage bewältigt die Koordination zwischen den Armen besser als einstufige Richtlinien.
Trainieren Sie ACT (empfohlen für bimanuell)
python -m lerobot.scripts.train \
--policy.type=act \
--dataset.repo_id=your-username/dk1-bimanual-pick-place-v1 \
--policy.chunk_size=100 \
--policy.n_action_steps=100 \
--training.num_epochs=5000 \
--training.batch_size=8 \
--output_dir=outputs/dk1-act-bimanual
Train Diffusion Policy (für kontaktreiche Aufgaben)
python -m lerobot.scripts.train \
--policy.type=diffusion \
--dataset.repo_id=your-username/dk1-bimanual-pick-place-v1 \
--training.num_epochs=8000 \
--output_dir=outputs/dk1-diffusion-bimanual
Gehen Sie tiefer: Lesen Sie den vollständigen Text Übersicht über die Datenerfassungspipeline in der Robotics Library für eine ausführliche Behandlung der Episodenstruktur, der Datensatzversionierung, der Synchronisierungsstrategien und der bimanuellen Multitasking-Datensatzzusammensetzung.