Collecte de données

Le VLAI L1 est conçu pour la collecte de données de téléopération à grande échelle. Son pipeline d'enregistrement en un clic, sa synchronisation à deux bras et sa téléopération VR intégrée en font le chemin le plus rapide depuis la livraison du robot jusqu'à l'ensemble de données prêt à l'entraînement.

Flux de travail d'enregistrement

Enregistrement bimanuel de téléopération VR

1

Connectez et vérifiez tous les systèmes

rc connect --device l1 --host 192.168.1.45
rc status   # check: arms, base, cameras, battery all green
2

Déplacez L1 en position d'enregistrement

Conduisez le L1 vers l’espace de travail des tâches à l’aide de WASD dans le panneau du navigateur. Réglez la hauteur de levage pour la tâche (par exemple, 130 cm pour une manipulation sur table). Garez-le et verrouillez les roues.

rc teleop --device l1   # open browser panel
# Drive to position, then lock:
python -c "from roboticscenter import L1; r=L1('192.168.1.45'); r.connect(); r.base.lock_wheels(); r.disconnect()"
3

Configurer la scène de tâches et les caméras

Placez les objets de tâche dans des positions de départ cohérentes. Vérifiez les vues des caméras dans le panneau du navigateur : les deux caméras de poignet (Developer Max) et toutes les caméras externes doivent couvrir l'espace de travail des tâches.

4

Démarrer la session d'enregistrement via CLI

rc record \
  --device l1 \
  --task "Pick up the bottle and pour into the glass" \
  --num_episodes 50 \
  --output ~/datasets/l1-pour-v1 \
  --teleop_mode vr   # or: browser, leader_arms
# Press ENTER in VR to start each episode, ENTER again to end
5

Revoir les épisodes

rc replay \
  --dataset ~/datasets/l1-pour-v1 \
  --episode 0

La visionneuse affiche tous les flux de caméras + les séries chronologiques d'état conjointes synchronisées. Supprimez les mauvais épisodes avant de pousser.

6

Pousser vers HuggingFace Hub

huggingface-cli login
rc push_dataset \
  --dataset ~/datasets/l1-pour-v1 \
  --repo_id your-username/l1-pour-v1
Format du jeu de données

Schéma de l'ensemble de données L1

Le pipeline d'enregistrement L1 produit un ensemble de données multimodal avec les deux bras, la base mobile, toutes les caméras et des annotations linguistiques facultatives.

Champs dans chaque épisode Fichier Parquet
observation.left_arm_state flotteur32[8] Positions de l'articulation du bras gauche en radians (8 DOF)
observation.right_arm_state flotteur32[8] Positions de l'articulation du bras droit en radians (8 DOF)
observation.base_state flotteur32[3] Base mobile x, y, cap en mètres et radians
observation.lift_height flotteur32 Hauteur de levage du torse en mètres
observations.images.* chemin vidéo Caméras de poignet (gauche, droite), caméra frontale, caméra d'espace de travail externe
action.left_arm flotteur32[8] Ciblez les positions de l'articulation du bras gauche à partir de VR Teleop
action.right_arm flotteur32[8] Ciblez les positions de l'articulation du bras droit depuis VR Teleop
langue_instruction chaîne Description des tâches en langage naturel pour le conditionnement VLA
horodatage flotteur 64 Horodatage Unix en secondes
suivant.fait bouffonne Vrai sur la dernière image de chaque épisode
Assurance qualité

Liste de contrôle de qualité

La téléopération VR du L1 peut introduire des problèmes uniques de qualité des données concernant la latence et la coordination bimanuelle. Parcourez ceci avant de passer au Hub.

  • 1
    La latence VR était inférieure à 50 ms pendant l'enregistrement Vérifiez le moniteur de latence dans le panneau du navigateur pendant l'enregistrement. Au-dessus de 50 ms, les mouvements de la main de l'opérateur sont en retard par rapport aux actions du robot, créant ainsi une inadéquation causale dans l'ensemble de données. Réenregistrez sur un canal WiFi à faible latence si nécessaire.
  • 2
    Les deux bras ont bougé comme prévu (pas d'épisodes avec un seul bras) Pour les tâches bimanuelles, vérifiez que les deux bras montrent un mouvement significatif observation.left_arm_state et observation.right_arm_state. Les épisodes dominants sur un seul bras peuvent indiquer que l'opérateur a privilégié une main.
  • 3
    La base mobile était stationnaire lors de la manipulation du bras Sauf si vous enregistrez des tâches de manipulation mobile, observation.base_state devrait être presque constant au sein de chaque épisode. Le mouvement de la base lors de la manipulation entraîne un déplacement de l'espace de travail par rapport aux caméras.
  • 4
    Tous les flux de caméras présents pour l'épisode complet La bande passante WiFi du L1 peut perdre des images sous charge. Courir rc validate_dataset --dataset ~/datasets/l1-pour-v1 pour vérifier les images manquantes dans tous les flux de caméra.
  • 5
    L'enseignement de la langue correspond à ce qui a été démontré L'instruction de langue est définie avant le début de l'enregistrement. Si l’opérateur a improvisé une approche différente (par exemple, utilisé un bras au lieu de deux), mettez à jour les instructions ou supprimez l’épisode.
Étape suivante

Entraîner un VLA à partir de votre ensemble de données

Une fois votre ensemble de données sur HuggingFace Hub, affinez un VLA avec l'espace d'action L1.

Affiner OpenVLA sur les données L1

pip install roboticscenter[vla]

python -m roboticscenter.scripts.finetune_vla \
  --model openvla/openvla-7b \
  --dataset your-username/l1-pour-v1 \
  --action_space l1_bimanual \   # registers the 16-DOF bimanual action head
  --epochs 50 \
  --output_dir outputs/openvla-l1-pour

Déployer un VLA optimisé sur l'appareil (Developer Pro/Max)

rc déployer vla \ --model sorties/openvla-l1-pour \ --quantifier int4 \ --périphérique l1 \ --hôte 192.168.1.45 # Exécutez la politique : politique d'exécution rc \ --tâche "Prendre la bouteille et verser dans le verre" \ --max_steps 100

Ensemble de données prêt ? Commencez la formation.

Accédez à HuggingFace Hub et affinez un modèle VLA sur vos données de manipulation bimanuelle.