Collecte de données

Le flux de travail d'enregistrement complet pour le LinkerBot O6. Téléopération leader-suiveur, format d'ensemble de données LeRobot, liste de contrôle de la qualité des épisodes et liens vers le pipeline plus large de collecte de données.

Flux de travail d'enregistrement pour l'O6

Le processus complet, depuis le matériel prêt jusqu'au premier épisode de jeu de données. Suivez les étapes dans l'ordre.

1

Vérifier le matériel et l'interface CAN

Vérifiez que l'O6 est monté, sous tension et que l'interface CAN est active. Courir candump can0 et vérifiez que les paquets de battements de cœur du moteur apparaissent avant de continuer.

2

Configurer la disposition des tâches et des caméras

Définissez la description de la tâche, configurez la ou les caméras aux angles corrects et placez les objets de la tâche dans l'espace de travail. Une configuration de scène cohérente entre les épisodes est essentielle à la généralisation des politiques.

3

Démarrer la session d'enregistrement

Lancez le script de contrôle LeRobot avec le record mode. Cela arme le système pour l’enregistrement des épisodes. La session attendra votre déclencheur de démarrage avant de capturer.

python -m lerobot.scripts.control_robot \
  --robot.type=linkerbot_o6 \
  --control.type=record \
  --control.fps=30 \
  --control.repo_id=your-username/o6-task-name \
  --control.num_episodes=50 \
  --control.single_task="Pick up the blue block"
4

Téléopérer et enregistrer des épisodes

Utilisez un bras leader (ou votre clavier pour des tests simples) pour téléopérer l'O6. Appuyez sur la touche start/stop pour mettre chaque épisode entre parenthèses. Réinitialisez la scène entre les épisodes pour plus de cohérence.

5

Examiner et filtrer les épisodes

Utilisez l'outil de relecture LeRobot pour revoir chaque épisode visuellement. Jetez ceux qui ne satisfont pas à la liste de contrôle de qualité ci-dessous. La qualité plutôt que la quantité : 30 excellents épisodes battent 100 médiocres.

python -m lerobot.scripts.control_robot \
  --robot.type=linkerbot_o6 \
  --control.type=replay \
  --control.repo_id=your-username/o6-task-name \
  --control.episode=0
6

Télécharger sur le hub HuggingFace

Transférez votre ensemble de données filtré vers le HuggingFace Hub pour le partage et la formation. L’ensemble de données est immédiatement disponible pour la formation aux politiques dans LeRobot.

huggingface-cli login
python -m lerobot.scripts.push_dataset_to_hub \
  --repo_id=your-username/o6-task-name

Format de l'ensemble de données LeRobot pour O6

Chaque épisode enregistré est stocké au format de jeu de données standard LeRobot HuggingFace. Ce format est directement compatible avec ACT, Diffusion Policy et tous les autres algorithmes de formation pris en charge par LeRobot.

Structure des épisodes

dataset/
  data/
    episode_000000/
      observation.state.npy     # [T, 12] — 6 joint positions + 6 velocities
      action.npy                # [T, 6]  — 6 target joint positions
      observation.images.wrist_cam/
        frame_000000.png        # 640x480 @ 30 fps
        ...
      observation.images.overhead_cam/
        frame_000000.png
        ...
      episode.json              # {task, success, duration_s, num_frames}
  meta_data/
    info.json                   # dataset schema version, robot type, fps
    stats.json                  # per-channel mean, std, min, max

Dimensions de l’état et de l’action

# observation.state: [T, 12]
# Columns: [j0_pos, j1_pos, j2_pos, j3_pos, j4_pos, j5_pos,
#            j0_vel, j1_vel, j2_vel, j3_vel, j4_vel, j5_vel]
# Units: radians and radians/second

# action: [T, 6]
# Columns: [j0_target, j1_target, j2_target, j3_target, j4_target, j5_target]
# Units: radians

Entraîner une politique à partir de votre ensemble de données O6

python -m lerobot.scripts.train \
  --dataset_repo_id=your-username/o6-task-name \
  --policy.type=act \
  --output_dir=./checkpoints/o6-act-v1 \
  --training.num_epochs=100

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

Appliquez cette liste de contrôle à chaque épisode avant de l'inclure dans votre ensemble de données d'entraînement. De mauvaises données sont pires que moins de données.

  • Tâche terminée avec succès — le bras a atteint l'état cible sans intervention humaine. Pas de réalisations partielles.
  • Le mouvement est fluide et délibéré — pas de corrections saccadées, de dépassements ou de changements brusques de direction. Des manifestations fluides entraînent des politiques plus fluides.
  • Tous les cadres de caméra présents — pas de perte d'images, pas d'occlusions de la région de l'espace de travail pertinente pour la tâche.
  • Les États conjoints sont continus — aucun intervalle de temps supérieur à 40 ms dans le journal d'état.
  • La durée de l'épisode est cohérente — les épisodes de moins de 3 s ou de plus de 30 s sont généralement des valeurs aberrantes. Passez-les en revue avant de les inclure.
  • La scène a été réinitialisée à l'identique — les objets de tâche ont été remis à la même position de départ avant le début de l'épisode.
  • Aucune erreur CAN pendant l'enregistrement - vérifier candump can0 enregistre les trames d’erreur au cours de la session.
Présentation du pipeline de collecte de données →

Prêt à vous entraîner ?

Suivez le parcours d'apprentissage LinkerBot O6 pour le flux de travail complet de la configuration à la formation.