Collecte de données bimanuelle
Le DK1 est conçu dès le départ pour la collecte de données de téléopération bimanuelle. Ce guide couvre le câblage des bras et des caméras, l'exécution de la procédure d'enregistrement leader/suiveur, la compréhension du schéma de l'ensemble de données bimanuel et la préparation de vos données pour la formation ACT.
Connexions matérielles pour l'enregistrement bimanuel
L'enregistrement bimanuel nécessite plus de connexions qu'une configuration à un seul bras. Vérifiez chaque connexion avant de démarrer LeRobot : manquer une connexion en cours de session corrompt l'épisode.
Bas de soutien-gorge (Dynamixel XL330)
USB-C du bras leader au PC hôte. Ce bras est déplacé par la main de l'opérateur. Utilisez un câble court (1 m) pour éviter les déconnexions accidentelles pendant la téléopération. Vérifier: ls /dev/ttyACM0
Bras suiveur (DM4340 + alimentation)
USB-C du bras suiveur au PC hôte plus alimentation CC. Le bras suiveur nécessite une alimentation externe – ne fonctionne jamais uniquement avec l’alimentation USB. Vérifier: ls /dev/ttyACM1
Caméra de poignet (bras suiveur)
Montez une webcam USB sur l’effecteur final du bras suiveur. Il s’agit de la principale caméra de manipulation. Connectez-vous via USB 3.0. Vérifier: ls /dev/video0
Caméra aérienne/espace de travail
Caméra fixe au dessus de l'espace de travail bimanuel à ~70 cm de hauteur, inclinée à 30° vers le bas. Capture les deux bras simultanément. Deuxième port USB 3.0. Vérifier: ls /dev/video2
Critique : synchronisation bimanuelle. Avec deux bras et deux caméras, la synchronisation est le facteur de qualité des données le plus important pour le DK1. LeRobot horodatage tous les flux provenant de l'horloge du PC hôte. Pour minimiser le décalage d'horodatage : (1) utilisez des contrôleurs de bus USB séparés pour les caméras et les bras, (2) utilisez des hubs USB 3.0 avec des horloges stables, (3) réglez le gouverneur du processeur en mode performance. Cible : décalage < 5 ms entre les quatre flux. Une désynchronisation de 10 ms entre les états des bras gauche et droit peut entraîner des échecs de formation ACT sur des tâches riches en contacts.
Procédure d'enregistrement de la téléopération leader/suiveur
Suivez ces étapes pour chaque session d'enregistrement DK1. La procédure bimanuelle comporte quelques étapes supplémentaires par rapport au prélèvement à un seul bras.
Contrôle de sécurité avant la séance
Dégagez l'espace de travail partagé entre les deux bras (1,5 m × 1 m). Vérifiez que les deux bras atteignent l'espace de travail partagé sans collision. Testez l’arrêt d’urgence avant d’enregistrer. Voir Page de sécurité.
Connectez et vérifiez les deux bras
# 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
Vérifier les flux de la caméra
Les deux caméras doivent diffuser avant de démarrer LeRobot. Une caméra manquante produira silencieusement des épisodes avec des images nulles.
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()
"
Déplacez les bras vers la position de départ
Déplacez manuellement le bras leader vers la position téléop de départ. Le bras suiveur le reflétera. Maintenez le bras leader stable pendant 2 à 3 secondes pour confirmer la synchronisation avant le début de la période d'échauffement.
Configurer la scène de tâches
Placez les objets dans des positions de départ cohérentes pour les deux bras. Photographiez la configuration de départ. Pour les tâches bimanuelles, marquez les positions exactes avec du ruban adhésif : la cohérence de la scène est encore plus critique car les deux trajectoires des bras doivent être compatibles.
Démarrer l'enregistrement bimanuel LeRobot
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
Utilisez un plus long reset_time_s pour les tâches bimanuelles : la réinitialisation de deux bras et la scène prennent plus de temps que les configurations à un seul bras.
Revoir et rejouer les épisodes
Après chaque lot de 10 épisodes, rejouez et révisez avant de continuer. Faites attention à la coordination des bras : le décalage entre les bras gauche et droit apparaîtra comme une instabilité dans les mouvements du suiveur.
python -m lerobot.scripts.visualize_dataset \
--repo_id=your-username/dk1-bimanual-pick-place-v1 \
--episode_index=0
Pousser vers HuggingFace Hub
huggingface-cli login
python -m lerobot.scripts.push_dataset_to_hub \
--repo_id=your-username/dk1-bimanual-pick-place-v1
Format de jeu de données LeRobot pour bimanuel (DK1)
Le schéma de l'ensemble de données bimanuel DK1 double les champs d'état conjoints par rapport à un enregistrement à un seul bras. Chaque épisode contient des observations synchronisées des bras leader et suiveur ainsi que de toutes les caméras.
Structure du répertoire
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/
└── ...
Schéma de données d'épisode (bimanuel)
Liste de contrôle qualité pour les démos bimanuelles
Les ensembles de données bimanuels ont des exigences de qualité plus strictes que les données à un seul bras. La mauvaise coordination entre les armes est la principale cause de l’échec de la formation politique DK1.
-
1Le delta de synchronisation du bras est inférieur à 10 ms Vérifiez le
arm_sync_delta_mschamp dans chaque épisode. Les pics supérieurs à 10 ms indiquent une contention du bus USB ou un paquet série abandonné. Supprimez les épisodes présentant des deltas élevés et soutenus. -
2Aucune oscillation du bras suiveur lors du contact Examinez les trajectoires des bras suiveurs aux points de contact (saisie, transfert, placement). L'oscillation apparaît comme un bruit haute fréquence dans
observation.state. Réduisez les gains de PD s’ils sont présents. Voir dépannage logiciel. -
3Les deux bras accomplissent la tâche dans le même épisode Pour les tâches bimanuelles, un épisode n'est valable que si les deux bras terminent les sous-tâches qui leur sont assignées. Si le bras gauche a réussi mais que le bras droit a laissé tomber l'objet, marquez l'épisode comme ayant échoué et supprimez-le ou annotez-le.
-
4Aucun cadre de caméra manquant Les deux flux de caméra doivent avoir le nombre d’images attendu. Les images manquantes de l'une ou l'autre des caméras corrompent l'entrée de la politique visuomotrice. Vérifiez auprès de
lerobot.scripts.visualize_dataset. -
5La scène de tâche a été réinitialisée de manière identique entre les épisodes L'espace de travail des deux bras doit être réinitialisé pour chaque épisode. La position de l'objet, la configuration de départ du bras et les angles de la caméra doivent tous correspondre. Utilisez la configuration de départ photographiée comme référence.
-
6La durée de l'épisode est cohérente Tous les épisodes réussis doivent avoir une durée inférieure à ± 25 % de la durée médiane. Les tâches bimanuelles présentent souvent une variance plus élevée que les tâches à un seul bras, mais les valeurs aberrantes extrêmes (3 × médiane) doivent être écartées.
-
7Les statistiques de l'ensemble de données sont symétriques pour les deux bras Dans
meta/stats.json, vérifie çaaction_leftetaction_rightles statistiques sont plausibles pour la géométrie de votre tâche. Si un bras présente une variance nulle, ce bras ne bougeait pas – vérifiez les affectations de ports. -
8Le style de démonstration Teleop est cohérent Toutes les démonstrations doivent utiliser la même trajectoire d'approche, la même stratégie de préhension et la même technique de transfert. Les stratégies mixtes produisent des distributions d'actions multimodales qui confondent la formation ACT. Utilisez un seul opérateur par version de tâche.
Formation ACT sur votre ensemble de données bimanuel
Une fois que votre ensemble de données passe la liste de contrôle qualité, entraînez ACT ou Diffusion Policy directement avec LeRobot. ACT est recommandé pour les tâches bimanuelles DK1 : sa prédiction d'action fragmentée gère mieux la coordination entre les bras que les politiques en une seule étape.
Entraîner ACT (recommandé pour les bimanuels)
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
Politique de diffusion des trains (pour les tâches riches en contacts)
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
Allez plus loin : Lire l'intégralité Présentation du pipeline de collecte de données dans la bibliothèque robotique pour un traitement approfondi de la structure des épisodes, de la gestion des versions des ensembles de données, des stratégies de synchronisation et de la composition des ensembles de données bimanuels multitâches.