Recolección de Datos

El flujo de trabajo de grabación completo para el LinkerBot O6. Teleoperación líder-seguidor, formato de conjunto de datos de LeRobot, lista de verificación de calidad de episodios y enlaces a la pipeline de recolección de datos más amplia.

Flujo de trabajo de grabación para el O6

El proceso completo desde que el hardware está listo hasta el primer episodio del conjunto de datos. Siga los pasos en orden.

1

Verifique el hardware y la interfaz CAN

Confirme que el O6 esté montado, encendido y que la interfaz CAN esté activa. Ejecutar candump can0 y verificar que los paquetes de latido del motor aparezcan antes de continuar.

2

Configurar la tarea y el diseño de la cámara

Definir la descripción de la tarea, configurar la(s) cámara(s) en los ángulos correctos y colocar los objetos de la tarea en el espacio de trabajo. Una configuración de escena consistente a lo largo de los episodios es crítica para la generalización de políticas.

3

Iniciar la sesión de grabación

Lanzar el script de control de LeRobot con el record modo. Esto arma el sistema para la grabación del episodio. La sesión esperará tu señal de inicio antes de capturar.

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

Teleoperar y grabar episodios

Usa un brazo líder (o tu teclado para pruebas simples) para teleoperar el O6. Presiona la tecla de inicio/parada para delimitar cada episodio. Restablece la escena entre episodios para mantener la consistencia.

5

Revisar y filtrar episodios

Usa la herramienta de reproducción de LeRobot para revisar visualmente cada episodio. Desecha cualquier episodio que no pase la lista de verificación de calidad a continuación. Calidad sobre cantidad: 30 episodios excelentes superan a 100 mediocres.

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

Subir al HuggingFace Hub

Envía tu conjunto de datos filtrado al HuggingFace Hub para compartir y entrenar. El conjunto de datos está inmediatamente disponible para el entrenamiento de políticas en LeRobot.

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

Formato de conjunto de datos de LeRobot para O6

Cada episodio grabado se almacena en el formato estándar de conjunto de datos de LeRobot en HuggingFace. Este formato es directamente compatible con ACT, Diffusion Policy y todos los demás algoritmos de entrenamiento compatibles con LeRobot.

Estructura del episodio

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

Dimensiones de estado y acción

# 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

Entrenar una política a partir de tu conjunto de datos 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

Lista de Verificación de Calidad del Episodio

Aplica esta lista de verificación a cada episodio antes de incluirlo en tu conjunto de datos de entrenamiento. Los datos malos son peores que tener menos datos.

  • Tarea completada con éxito — el brazo alcanzó el estado objetivo sin intervención humana. No se permiten completaciones parciales.
  • El movimiento es suave y deliberado. — sin correcciones bruscas, sobrepasos o cambios de dirección repentinos. Las demostraciones suaves entrenan políticas más suaves.
  • Todos los fotogramas de la cámara están presentes. — sin fotogramas perdidos, sin oclusiones de la región de trabajo relevante para la tarea.
  • Los estados de las articulaciones son continuos. — sin intervalos de tiempo mayores a 40 ms en el registro de estado.
  • La duración del episodio es consistente. — episodios más cortos de 3 s o más largos de 30 s suelen ser atípicos. Revísalos antes de incluirlos.
  • La escena fue reiniciada de manera idéntica. — los objetos de la tarea fueron devueltos a la misma posición inicial antes de que comenzara el episodio.
  • Sin errores de CAN durante la grabación. - para comprobar. candump can0 registros de fotogramas de error durante la sesión.
Visión general del Pipeline de Recolección de Datos →

¿Listo para entrenar?

Sigue el camino de aprendizaje de LinkerBot O6 para el flujo de trabajo completo desde la configuración hasta el entrenamiento.