Pourquoi la collecte de données bimanuelle est plus difficile

Dans la collecte de données sur un seul bras, une mauvaise démonstration n'affecte que la trajectoire d'un seul bras. Vous enregistrez 50 démos, supprimez 5 mauvaises et entraînez-vous sur 45. Dans la collecte de données bimanuelle, une erreur au point de transfert invalide les deux trajectoires des armes pour cette démo simultanément. Les modes de défaillance sont couplés.

Ce couplage a deux implications pratiques. Premièrement, vous avez besoin de plus de démonstrations – 100 au lieu de 50 – car les tâches bimanuelles ont une variance plus élevée et la politique a besoin de plus d'exemples pour apprendre la structure de coordination. Deuxièmement, vous avez besoin d’une cohérence plus stricte par démonstration. Une démo à un seul bras cohérente à 80 % s’entraîne assez bien. Une démonstration bimanuelle où un bras est cohérent et l’autre varie n’enseigne rien d’utile à la politique sur le timing de coordination.

Le défi de la couverture de l'espace de travail est également plus grand : vous devez avoir les deux bras dans le cadre, et le point de transfert (le moment le plus complexe) doit être capturé de manière fiable par au moins une caméra. Vérifiez les angles de votre caméra avant de commencer et ajustez si le transfert se produit en dehors du champ de vision de la caméra de l'espace de travail.

Format de jeu de données bimanuel LeRobot

L'intégration du DK1 avec LeRobot étend le format standard à un seul bras avec des réseaux à deux états articulés. Chaque pas de temps de l'ensemble de données contient :

# Bimanual dataset observation keys per timestep: observation.joint_states.left # shape: (6,) — left follower joint angles in radians observation.joint_states.right # shape: (6,) — right follower joint angles in radians observation.gripper.gauche # shape: (1,) — left gripper position [0=open, 1=closed] observation.gripper.droite # shape: (1,) — right gripper position observation.images.espace de travail # shape: (H, W, 3) — workspace overhead/front camera observation.images.poignet # 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.gripper.gauche # shape: (1,) action.gripper.right # shape: (1,)

La principale différence avec un seul bras : l'espace d'action est à 14 dimensions (6+6 articulations + 2 pinces). ACT gère cela de manière native : vous spécifiez la dimension de l'action dans la configuration de la formation et aucune autre modification n'est requise.

Flux de travail d'enregistrement

source ~/dk1-env/bin/activer # 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-épisodes 100 \ --temps de préchauffage-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

Exécutez 10 à 15 démonstrations pratiques avant de commencer la session d'enregistrement pour réchauffer votre mémoire motrice pour la tâche. Les 5 à 10 premières démos enregistrées seront vos pires – c'est normal. Ne vous arrêtez pas pour les revoir pendant la séance ; révisez et éliminez les mauvaises démos une fois que les 100 complètes ont été enregistrées.

Liste de contrôle de qualité pour les données bimanuelles

Passez en revue chaque démo après l'enregistrement à l'aide de la visionneuse de relecture de LeRobot. Jetez toute démo qui ne répond pas à deux ou plusieurs de ces critères :

Synchronisation d'armement au transfert Les deux bras doivent être simultanément à moins de 3 cm du point de transfert prévu. Les transferts asynchrones où un bras attend l’autre apprennent à la politique à faire une pause – ce qui est mal transféré.
Position de départ cohérente Le cube doit démarrer à moins de 2 cm de la même position pour chaque démo. Utilisez les marques de bande de l'unité 1. La variation de la position de départ force la politique à généraliser avant d'avoir appris la tâche principale.
Prise nette – les deux bras Chaque bras doit parvenir à une prise stable avant de passer à la phase suivante. Une mauvaise prise en cours de transfert crée une trajectoire qu’il est impossible pour la politique de reproduire de manière fiable.
Retour de pose à la maison Les deux bras doivent revenir proprement à la pose d'origine à la fin de chaque démonstration. Les démos qui se terminent au milieu du mouvement créent un ensemble de données où les limites des épisodes sont ambiguës.
Couverture des caméras de l'espace de travail Le moment du transfert doit être visible dans le cadre de la caméra de l’espace de travail. Si les corps du robot obstruent la vue, ajustez l'angle de la caméra avant de continuer.
Calendrier cohérent La durée de l'épisode ne doit pas varier de plus de ± 5 secondes d'une démo à l'autre. Une grande variance temporelle indique une exécution incohérente et produit un ensemble de données avec une entropie élevée dans l'espace d'action.
Taille de l'ensemble de données cible : 100 démos est le minimum recommandé pour la formation ACT bimanuelle. Les résultats de la recherche suggèrent que les tâches bimanuelles nécessitent environ 2 fois plus de données que les tâches comparables à un seul bras, car la structure de coordination conjointe est plus complexe et l'espace d'action est plus grand. Si après la formation de l'Unité 5 votre taux de réussite est inférieur à 40 %, collecter 50 démos ciblées supplémentaires est la première chose à essayer.

Unité 4 terminée quand...

Vous disposez de 100 démonstrations enregistrées au format LeRobot sur ~/dk1-datasets/cube-handoff-v1/. Après examen et sélection, au moins 90 démos satisfont à la liste de contrôle de qualité. Les deux réseaux d’états communs sont présents à 50 Hz pour chaque épisode. Les deux flux de caméra sont présents et affichent la séquence complète des tâches, y compris le moment du transfert. Tu as couru python -m lerobot.scripts.visualize_dataset --repo-id cube-handoff-v1 et confirmé que la structure de l'ensemble de données est valide.