Collecte de données

La collecte de données humanoïdes est fondamentalement différente des flux de travail réservés aux bras. Le K1 a plus de 22 degrés de liberté, doit maintenir l’équilibre pendant la téléopération et nécessite une capture multimodale synchronisée. Cette page couvre les défis, les méthodes, le format de l'ensemble de données et le protocole de sécurité.

Défis de la collecte de données humanoïdes

Réunir des démonstrations de haute qualité sur un humanoïde grandeur nature nécessite de relever des défis qui n'existent pas sur les bras de bureau.

Équilibre pendant la téléopération

Le K1 doit maintenir l’équilibre de tout le corps pendant que l’opérateur contrôle les bras. Les mouvements des bras déplacent le centre de masse, obligeant le contrôleur de locomotion à compenser en permanence. Les commandes d'armement rapides peuvent déstabiliser le robot.

📊

État de haute dimension

L’état articulaire du corps entier comprend 22 DOF plus IMU, la pose de la tête et l’état de la main en option – plus de 30 dimensions par pas de temps. Les fichiers d'ensembles de données sont nettement plus volumineux que les ensembles de données bras uniquement. La planification du stockage est essentielle.

📷

Synchronisation multi-caméras

Les tâches humanoïdes nécessitent généralement des caméras égocentriques (montées sur la tête) et exocentriques (externes). La synchronisation de plusieurs flux vidéo avec une télémétrie commune à 50 Hz+ nécessite une conception minutieuse du pipeline.

👥

Fatigue de l'opérateur

La téléopération du corps entier basée sur la réalité virtuelle est physiquement exigeante. Les sessions de plus de 30 minutes par opérateur dégradent considérablement la qualité de la démonstration. Planifier la rotation des opérateurs dans les campagnes de collecte prolongées.

Méthodes de téléopération pour les humanoïdes

Deux méthodes principales sont prises en charge pour la téléopération du haut du corps. La locomotion est toujours contrôlée via des commandes de vitesse depuis une manette de jeu ou de manière autonome.

Téléopération VR du corps entier Recommandée

Utilise Meta Quest 3 ou un casque VR similaire pour suivre la pose de la tête et des mains de l'opérateur. Les articulations de la tête et des bras du K1 reflètent les mouvements de l'opérateur en temps réel. Fournit les démonstrations les plus naturelles et les plus expressives.

Installation: Quest 3 + SteamVR, nœud k1_vr_teleop ROS2, l'opérateur porte des gants pour le suivi des mains.

Latence: ~20 ms de tête, ~40 ms de bras de bout en bout.

Idéal pour : Tâches de manipulation, pick and place, loco-manipulation du corps entier.

Haut du corps du leader-suiveur Avancée

Un deuxième exosquelette à échelle humaine ou système de bras de leader reflète le haut du corps du suiveur K1. Les angles des articulations sont cartographiés directement du leader au suiveur. Ne nécessite pas de matériel VR.

Installation: Nécessite un système de bras leader compatible (par exemple, kit bimanuel OpenArm ou exosquelette personnalisé). Contactez SVRC pour les configurations partenaires.

Idéal pour : Manipulation bimanuelle précise où la précision du suivi est essentielle.

Locomotion en téléopération

La téléopération du haut du corps est généralement combinée à une locomotion contrôlée par une manette de jeu. L'opérateur utilise une manette de jeu sans fil pour contrôler la vitesse de marche tandis que le système VR contrôle les bras et la tête :

# Launch combined teleop: VR for upper body + gamepad for locomotion
ros2 launch k1_teleop k1_combined_teleop.launch.py \
  vr_device:=quest3 \
  gamepad:=xbox \
  robot_ip:=192.168.10.102

Format d'ensemble de données sur le corps entier (30+ DoF)

Chaque épisode enregistre l'état commun synchronisé, les images de caméra et les métadonnées. Le format est compatible avec les ensembles de données LeRobot et HuggingFace.

Structure des épisodes

episode_000001/
  joint_states.npy      # [T, 44] — positions, velocities, torques for 22 joints
  imu.npy               # [T, 6]  — accel (3) + gyro (3) from torso IMU
  head_pose.npy         # [T, 2]  — yaw and pitch in radians
  head_cam.mp4          # 1280x720 @ 30 fps, head-mounted egocentric
  left_cam.mp4          # 1280x720 @ 30 fps, left wrist
  right_cam.mp4         # 1280x720 @ 30 fps, right wrist
  external_cam.mp4      # 1920x1080 @ 30 fps, fixed external view
  timestamps.npy        # [T] unix timestamps for joint_states
  metadata.json         # task name, operator, duration, success label

Schéma d'état conjoint (22 articulations × 2 valeurs chacune)

# joint_states.npy shape: [timesteps, 44]
# Columns: [q0_pos, q0_vel, q1_pos, q1_vel, ..., q21_pos, q21_vel]

# Joint index mapping:
# 0-5:   Left leg (hip_pitch, hip_roll, hip_yaw, knee, ankle_pitch, ankle_roll)
# 6-11:  Right leg (same order)
# 12:    Waist (yaw)
# 13:    Head yaw
# 14:    Head pitch
# 15-21: Left arm (shoulder_pitch, shoulder_roll, shoulder_yaw,
#                   elbow_pitch, wrist_pitch, wrist_roll, wrist_yaw)
# 22-28: Right arm (same order)
# Note: total 29 joints in extended K1 config; base K1 has 22

Enregistrement d'une session avec k1_agent.py

# Start the platform agent (streams telemetry to RoboticsCenter)
python k1_agent.py \
  --robot-ip 192.168.10.102 \
  --platform-url https://fearless-backend-533466225971.us-central1.run.app \
  --record \
  --task "pick up red block" \
  --cameras head_cam,left_wrist,right_wrist,external

# Episodes auto-numbered and saved to ./recordings/

Convertir au format LeRobot

python convert_k1_to_lerobot.py \
  --input-dir ./recordings/ \
  --output-dir ./dataset/ \
  --repo-id your-username/k1-pick-place

Protocole de sécurité lors de la collecte de données

  • Spotter requis à tout moment — une personne dédiée surveille le robot et tient l'e-stop. Le téléopérateur ne peut pas simultanément surveiller la sécurité.
  • Périmètre dégagé de 3 m × 3 m — aucun spectateur, aucun câble, aucun équipement dans la zone opérationnelle pendant une session en direct.
  • Limite de durée de l'épisode : 60 secondes – gardez les épisodes courts. Les épisodes plus courts sont plus faciles à filtrer et réduisent les risques liés à un fonctionnement prolongé.
  • Rotation des opérateurs de 30 minutes — faites tourner les téléopérateurs toutes les 30 minutes dans les sessions VR. La fatigue dégrade la qualité des démonstrations et augmente les taux d’erreur.
  • Abandonnez immédiatement et entrez DAMP en cas d'instabilité — si le K1 présente une oscillation ou une dérive inattendue, appuyez sur l'arrêt d'urgence et redémarrez depuis DAMP. N'essayez pas de stabiliser manuellement.
  • Enregistrez tous les incidents — documenter toute chute, quasi-chute ou épisode interrompu. Ces données sont utiles pour filtrer la qualité des ensembles de données et pour améliorer les procédures de sécurité.

Liste de contrôle de la qualité des épisodes

Passez en revue chaque épisode avant de l’ajouter à votre ensemble de données d’entraînement. Des démonstrations de mauvaise qualité dégraderont votre politique.

  • La tâche a été exécutée avec succès de bout en bout (aucune achèvement partiel dans les données d'entraînement)
  • Le robot a maintenu un équilibre stable tout au long - pas de trébuchements, d'oscillations ou de secousses compensatoires
  • Tous les flux de caméra ont des images complètes sans segments supprimés
  • Les horodatages d'état conjoints sont continus (pas d'intervalle > 25 ms à 40 Hz d'enregistrement)
  • La démonstration est fluide et délibérée – ni précipitée, ni trop corrigée
  • L'objet et la scène de tâche sont visibles dans au moins deux flux de caméras tout au long du processus.
Présentation du pipeline de collecte de données →

Prêt à former votre première politique humanoïde ?

Une fois que vous avez rassemblé des démonstrations de qualité, dirigez-vous vers le parcours d'apprentissage Booster K1 pour le flux de travail complet de formation et de déploiement.