Enregistrement de démonstrations tactiles

Les données tactiles sont la modalité manquante dans la plupart des ensembles de données d’apprentissage robotique. Cette page explique pourquoi c'est important, comment enregistrer des flux tactiles + bras + caméra synchronisés, le format d'ensemble de données étendu et comment former des politiques qui utilisent des entrées tactiles.

Pourquoi les données tactiles améliorent l'apprentissage des robots

La vision dicte une politique la pince est. La proprioception le dit jusqu'à quel point les doigts sont fermés. Ni l'un ni l'autre ne le dit si la prise est stable. Une politique formée uniquement sur les données de vision et d’articulations doit apprendre à déduire indirectement la qualité de préhension – à partir du mouvement de l’objet, des limites de force des bras ou des essais et erreurs lors du déploiement. L'ajout d'une détection tactile permet une supervision directe de l'état par contact : la politique reçoit un signal de vérité sur le terrain distinguant une prise sécurisée d'une prise sujette au glissement à chaque étape de chaque démonstration. Ceci est particulièrement important pour les objets déformables, transparents ou de taille variable pour lesquels l'estimation visuelle de la qualité de préhension n'est pas fiable.

Configuration matérielle pour l'enregistrement synchronisé

Une plate-forme d'enregistrement multimodale complète nécessite trois couches matérielles, toutes synchronisées sur une horloge commune :

  1. Bras robotique — fournit les positions des articulations, les vitesses et la pose des effecteurs terminaux à 100–500 Hz via USB ou Ethernet. Utilisez l'API d'horodatage du SDK arm, et non l'heure système, pour obtenir l'état commun estampillé par le matériel.
  2. Capteur(s) Paxini Gen3 — branché sur un hub USB alimenté monté au poignet du robot. Chaque image est horodatée par le PC hôte au moment de l'interruption USB (résolution nanoseconde, gigue <0,5 ms).
  3. Caméra — une caméra au poignet (en option : une caméra aérienne). Utilisez une caméra USB ou GigE avec synchronisation de déclenchement matériel, ou une caméra déclenchée par logiciel avec une latence connue. Enregistrez à 30–60 ips.

Les trois sources écrivent des horodatages en utilisant la même horloge hôte monotone. Les SDK de la plateforme Enregistreur MultiSource aligne les images au moment du post-traitement à l'aide de l'interpolation d'horodatage.

# Complete synchronized recording session à partir de paxini.sync importer MultiSourceRecorder enregistreur = MultiSourceRecorder ( bras=arm_interface, capteur=paxini.Sensor(), caméra = caméra_interface, rép_sortie="./demo_recordings/", épisode_prefix="grasp_place" ) enregistreur.start_episode() # ... perform the manipulation demo ... enregistreur.end_episode() # saves episode_000.hdf5

Format de l'ensemble de données - Schéma LeRobot étendu

Le pipeline de collecte de données Paxini Gen3 étend le format d'ensemble de données standard LeRobot HDF5 avec des canaux tactiles supplémentaires. Les outils LeRobot existants (chargement de données, visualisation, formation aux politiques) restent entièrement compatibles : les nouvelles clés sont simplement ignorées par les pipelines qui ne les utilisent pas.

Clé HDF5 Forme Source
observation.état(V, 7)Positions des articulations des bras + largeur de la pince
observation.images.poignet(L, H, L, 3)Caméra de poignet (uint8 RVB)
action(V, 7)Positions articulaires cibles + commande de préhension
observation.tactile.pression_map(V, 8, 8)Tableau de pression Paxini Gen3 (kPa, float32)
observation.tactile.total_force_n(T,)Force normale totale par image (Newtons)
observation.tactile.in_contact(T,)Drapeau de contact booléen par image
observation.tactile.contact_centroid(T, 2)Centre de gravité du contact (ligne, colonne) par image
méta/timestamps_ns(T,)Horodatages en nanosecondes pour tous les canaux

De nouvelles touches tactiles sont mises en avant. Toutes les autres clés suivent le schéma standard de LeRobot.

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

Exécutez l’étalonnage de base avant chaque session Appel sensor.calibrate() avec la pince ouverte et déchargée. Cela élimine le contact avec les doigts et la tension du câble. Recalibrez si le bras est repositionné de manière significative.
Vérifier que les événements de contact correspondent à la vidéo Passez en revue 5 épisodes dans le visualiseur de données avant de collecter votre ensemble de données complet. Le in_contact Le front montant doit coïncider avec le moment visible du contact du bout du doigt avec l'objet dans le flux de la caméra. Un décalage > 20 ms indique un problème d’alignement de l’horodatage.
Couvrez toute la gamme des forces dans vos démonstrations Essayez d’enregistrer les prises à des niveaux de prise légers, moyens et fermes. Si toutes vos démos utilisent une force de préhension maximale, la stratégie n'apprendra pas à moduler la pression de contact. Variez le poids et la conformité de l'objet d'un épisode à l'autre.
Signaler et exclure les événements de glissement des données d'entraînement Les épisodes où l'objet glisse à mi-prise mais où la démonstration continue avec succès contiennent des signaux de supervision contradictoires. Utilisez les SDK paxini.annotate.flag_slip_events(episode) pour les marquer automatiquement pour examen.
Vérifier la saturation du capteur Et pressure_map.max() atteint 600 kPa dans n'importe quel épisode, le capteur sature. Réduisez la force de préhension ou utilisez la variante avec paume (pression maximale par taxel plus faible) pour des prises plus lourdes.

Formation politique avec des apports tactiles

Pour ajouter le tactile comme modalité d'observation dans ACT ou Diffusion Policy, étendez la configuration d'observation pour inclure la carte de pression ou le scalaire agrégé (total_force_n). La carte de pression fournit des informations spatiales complètes mais ajoute 64 flotteurs par image et par capteur ; le scalaire est plus facile à intégrer et suffisant pour les tâches de qualité de compréhension binaire.

# ACT config snippet — add tactile to observation space clés_observation : - observation.état # joint positions - observation.images.poignet # camera - observation.tactile.total_force_n # scalar - observation.tactile.pression_map # optional: full map # Normalize tactile observations tactile_normalisation : total_force_n : {moyenne : 2,5, norme : 1,8} pression_map : {moyenne : 12,0, norme : 45,0} # kPa statistics from your dataset

Pour la procédure complète de formation, y compris comment calculer les statistiques de normalisation à partir de votre ensemble de données enregistrées et les évaluer par rapport à une référence de vision uniquement, consultez le parcours d'apprentissage Unité 5.

Pour un contexte plus large sur les stratégies de collecte de données sur les mains adroites, voir le Guide des mains adroites.