Cómo recopilar datos de entrenamiento de robots
Guía completa para recopilar datos de formación de robots de alta calidad a través de la instalación de hardware de la teleoperación, la grabación de LeRobot, el formato RLDS, la calificación de la calidad y la preparación de conjuntos de datos.
Guía completa para recopilar datos de entrenamiento de robots de alta calidad a través de la configuración de hardware de la teleoperación, la grabación de LeRobot, el formato RLDS, la calificación de la calidad y la preparación de conjuntos de datos para el ajuste fino de VLA.
Intermedio
1. Hardware 2. Instalar 3. Configurar 4. Teleop Configuración 5. Grabar 6. Revisión 7. RLDS Convertir 8. Cargar 9. Control de calidad 10. Preparación para VLA
Pre-requisitos
- Un brazo robótico (OpenArm, SO-100, Aloha, Koch, UR5 o similares)
- Al menos una cámara RGB (preferida con muñeca) + una cámara externa
- Dispositivo de entrada de teleoperación (brazo de mando, SpaceMouse o teclado)
- ROS2 Humble instalado (ver nuestra guía de configuración ROS2
T12 )) - Python 3.10+ con pip
- Ubuntu 22.04 con NVIDIA GPU (para visualización y formación futura)
Lo que construirás
Al final de este tutorial, tendrá un conjunto completo de datos de recopilación: hardware de teleoperación configurado, grabación de episodios de LeRobot de su robot realizando tareas, demostraciones de calidad calificadas y un conjunto de datos en formato RLDS subido a HuggingFace Hub
Línea de recogida de datos
Entrada de teleópico Armero del líder / SpaceMouse
¿Qué es esto?
Armado robot Estados conjuntos + acciones
¿Qué es esto?
Las cámaras Muñeca + RGB externo ((D)
¿Qué es esto?
LeRobot Registro y sincronización
¿Qué es esto?
Datos de RLDS Abrazar el Hub
1 de la Comisión
Requisitos de hardware
Una configuración completa de recopilación de datos tiene cuatro componentes. Aquí está lo que necesita y nuestras opciones recomendadas:
| Component | Recommended | Budget |
|---|---|---|
| Robot arm | OpenArm ($2,400) or Aloha ($20K+) | SO-100 ($200 DIY kit) |
| Wrist camera | Intel RealSense D405 ($300) | USB webcam ($30) |
| External camera | Intel RealSense D435 ($350) | Logitech C920 ($70) |
| Teleop device | Leader arm (matched pair) | 3Dconnexion SpaceMouse ($130) |
Caminos de presupuesto: Un brazo SO-100 con dos cámaras web y un SpaceMouse te permite recopilar datos por menos de $500 en total. La calidad es inferior a la configuración de seguidores de líderes, pero es suficiente para aprender el flujo de trabajo y entrenar políticas simples.
2 de la Comisión
Instalar LeRobot
LeRobot es el kit de herramientas de código abierto de Hugging Face para el aprendizaje de robots. Instala en un entorno virtual para evitar conflictos de dependencia.
Copia# Crea y activa el entorno virtual python3 -m venv ~/lerobot_env fuente ~/lerobot_env/bin/activar # Instala LeRobot con todos los extras para la recopilación de datos pip instalar "lerobot[all]" # O instalar desde la fuente para las últimas características git clone
Copia# Instalar dependencias adicionales para la grabación de la cámara pip instalar opencv-python pyrealsense2 h5py # Para HuggingFace Hub subes pip instalar abrazarface_hub abrazarface-cli login
3 El
Configure su robot en LeRobot
LeRobot utiliza archivos de configuración YAML para definir las propiedades de su robot.
Copia# Crea directorio de configuración de robots mkdir -p ~/lerobot_configs # Ejemplo de configuración para OpenArm (salvar como openarm.yaml) gato > ~/lerobot_configs/openarm.yaml << 'EOF' robot: tipo: puerto de brazo abierto: /dev/ttyUSB0rate: 1000000 articulaciones: - nombre: hombro_pan id: 1 min: -3.14 max: 3.14 - nombre: hombro_lift id: 2 min: -1.57 max: 1.57 - nombre: codor de codor: 3 min: -2.35 max: 2.35 - nombre: muñeca_pitch id: 4 min: -1.57 max: 1.57 - nombre: muñeca_roller: 5 min: -3.14 - altura: 3.14 - altura: nombre: 6: 1.0 p: 1.0 p: 0.40 p: 0.40 p: 0.40 p: 0.40 p: 0.40 p: 0.40 p: 0.40 p: 0.40 p: 0.40 p: 0.40 p:
Importante: Los índices de cámara (
4 de la Comisión
Configurar la interfaz de teleoperación
Hay dos opciones principales para controlar el robot durante las demostraciones: un par de brazos líder-seguidor (mejor calidad) o un SpaceMouse (más accesible).
**Opción A: Armas de seguidores del líder (recomendado) **
Copia# Configure el brazo líder (el que moves físicamente) lerobot calibra \ --robot-type=openarm \ --robot-port=/dev/ttyUSB0 \ --leader-port=/dev/ttyUSB1 # Esto ejecuta una rutina de calibración
** Opción B: SpaceMouse**
Copia# Instalar el controlador de SpaceMouse pip instalar pyspacemouse # Prueba conexión de SpaceMouse python3 -c "import pyspacemouse; m = pyspacemouse.open(); imprimir('SpaceMouse conectado') " # Configurar SpaceMouse en LeRobot lerobot calibrar \ --robot-type=openarm \ --robot-port=/dev/ttyUSB0 \ --teleop=spacemouse
Cuál elegir? Los brazos de seguimiento de Leader producen demostraciones más naturales porque los movimientos de las manos se trazan directamente a las articulaciones del robot.
5 El
Registra los primeros episodios
Un "episodio" es una demostración completa de una tarea de principio a fin. Comience con una tarea simple como recoger un bloque y colocarlo en una zona objetivo.
Copia# Registra los episodios a un conjunto de datos local lerobot registro \ --robot-type=openarm \ --robot-port=/dev/ttyUSB0 \ --leader-port=/dev/ttyUSB1 \ --fps=30 \ --task="pick_red_block_place_target" \ --num-episodes=10 \ --output-dir=~/datasets/openarm_stop_pick_place # Controles durante la grabación: # Entra
Cada episodio se guarda con datos sincronizados:
│ │ │── observaciones/ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
Guías de conteo de episodios: Para una política de una sola tarea (ACT, Política de difusión), recoger 50
6
Episodios de revisión y calificación
Revise sus grabaciones, elimine las demostraciones fallidas y computa métricas de calidad.
Copia# Visualizar un episodio específico lerobot visualizar-dataset \ --dataset-path=/datasets/openarm_pick_place \ --episode=0 # Reproduzca el episodio en el robot (opcional /datasets/openarm_pick_place \ --episode=3
Marca episodios fallidos para la eliminación:
Copie# Computa métricas de calidad para todos los episodios python3 -c " import numpy como np import json, os, glob dataset_dir = os.path.expanduser('~/datasets/openarm_pick_place') episodios = ordenado(glob.glob(os.path.join(dataset_dir, 'episode_*'))) para ep_dir en episodios: acciones = np.loados.path.join((ep_dir, 'actions.npy')) # suavidad: menor jerk = mejor demostración jerk = np.diffactions, n=3, axis=0) suavidad = (1.0 + np.mean p.absjerk((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
Regla general de calidad: Objetivo de 90% + tasa de éxito de tareas en su conjunto de datos final. Elimine los episodios en los que el robot dejó caer el objeto, chocó con la mesa o tuvo movimientos tirantes. Un conjunto más pequeño de demostraciones de alta calidad supera a un conjunto de datos más ruidoso.
7
Convierta a formato RLDS
RLDS (Reinforcement Learning Datasets) es el formato estándar para el entrenamiento de modelos VLA.
Copia# Instalar herramientas de conversión RLDS pip instalar tensorflow tensorflow-datasets rlds # Convertir conjunto de datos LeRobot a RLDS python3 -m lerobot.scripts.convert_to_rlds \ --input-dir=/datasets/openarm_pick_place \ --output-dir=/datasets/openarm_pick_place_rlds --task-description="Pira el bloque rojo y coloca en la zona verde objetivo"
El conjunto de datos RLDS contiene archivos TFRecord con esta estructura por paso de tiempo:
{ "observación": { "imagen": (480, 640, 3) uint8, # cámara de muñeca "imagen_externa": (480, 640, 3) uint8, # cámara externa "estado": (6,) float32 # posiciones conjuntas }, "acción": (7,) float32, # articulaciones objetivo + agarre "recompensa": float32, # 1.0 para el éxito, 0.0 de lo contrario "es_terminal": bool, "lenguaje_instruction": cadena # descripción de tarea }
8 El
Cargar en HuggingFace Hub
Empuje su conjunto de datos a HuggingFace Hub para la versión, fácil compartimiento y carga directa durante el entrenamiento.
Copie# Asegúrese de estar conectado en el enlace de huggingface-cli # Empuje el conjunto de datos en formato LeRobot lerobot push-to-hub \ --dataset-path=~/dataset/openarm_pick_place \ --repo-id="your-username/openarm-pick-place-v1" \ --private # O empuje el conjunto de datos en formato RLDS python3 -c " desde huggingface_hub importar HfApi = HfApi()
Sugerencia de versión: Siempre incluye un sufijo de versión (
9
Realizar controles de calidad
Antes del entrenamiento, ejecuta un último conjunto de controles de calidad para detectar problemas que podrían desperdiciar horas de GPU.
Copypython3 -c " import numpy como np import json, os, glob dataset_dir en episodios: acciones = np.pathos.expanduser('~/datasets/openarm_pick_place') episodios = ordenado(glob.glob.os.path.join(dataset_dir, 'episode_*'))) longitudes = [\] suavidad_scores = [\] acción_rangees = [\] acción_rangees = [\] para ep_dir en episodios: acciones = np.pathos.expanduser.join\\_dr, 'actions.npy' episodes = 0.appendactions.actions) comprensiones.np.actions.nl, n, n, n, n, n, n=3=actions:
10
Prepárate para el ajuste de VLA
Estructura tu conjunto de datos para la formación mediante la creación de divisiones y descripciones de tareas adecuadas.
Copy# Crear tren/val dividido (90/10) python3 -c " importar os, shutil, aleatorios, glob dataset_dir = os.path.expanduser('~/datasets/openarm_pick_place') episodios = ordenado(glob.glob.os.path.join\set_dir, 'episode_*'))) random.seed(42) random.shuffle(episodes) split = int((lenepisodes) * 0.9) tren = episodios[:split] vallit = episodios[split:\] #Escribe archivos con open.pathos.join.join_direct, 'train_episodes.txt'), 'wlen') como f ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
¿Listo para ajustar un modelo VLA?
Su conjunto de datos está preparado. Continúe con la guía de ajuste fino de VLA (T13
Desglose de los costes de la recopilación de datos
| Cost Component | Per Hour | Notes |
|---|---|---|
| Operator labor | $50–80 | Skilled teleoperator, varies by market |
| Hardware depreciation | $15–30 | Amortized over 2,000 hrs of use |
| Quality review | $20–40 | Episodio filtering and scoring |
| Compute and storage | $8–15 | Recording, processing, storage |
| Facility overhead | $25–35 | Lab space, lighting, safety |
| Total | $118–200 |
¿Necesitas ayuda para recopilar datos?
RCSV Data Services ofrece una recopilación de datos de robots gestionados con teleoperadores profesionales, garantía de calidad y entrega lista para RLDS.
[Aprende sobre los servicios de datos]
Solución de problemas
El suministro de la cámara es negro o congelado
Compruebe el índice de cámara con
Armado robot que no responde durante la grabación
Verifique el puerto en serie con
Caídas de marco durante la grabación (fps inconsistentes)
Baja la resolución de la cámara a 480x360. Cierra las aplicaciones de fondo. Utiliza un bus USB dedicado para cada cámara (consulte con
La conversión RLDS falla con una falta de coincidencia de forma
Esto significa que los episodios tienen diferentes dimensiones de observación. Compruebe si todas las cámaras usaron la misma resolución en todos los episodios.
HuggingFace tiempo de carga fuera
Los grandes conjuntos de datos (50+ GB) pueden desactivarse en conexiones lentas. Utilice
Tutoriales relacionados
¿Qué es esto?
La mejoría de un modelo VLA
Entren OpenVLA o pi0 en su conjunto de datos de teleoperación para el despliegue de robots reales.
[
LeRobot Quickstart
Comience con LeRobot en menos de 2 horas
[
OpenArm primera demostración
Descabezar y ejecutar su primera demostración de teleoperación en el hardware de OpenArm.
[
Preguntas frecuentes
¿Cuántos episodios de demostración necesito para entrenar una política de robots?
Para la mayoría de las políticas de manipulación de tareas únicas (pick and place, pour, etc.), 50
¿Cuál es el costo de recopilar datos de entrenamiento de robots?
El costo total de la recopilación de datos de la teleoperación de robots oscila entre $118
¿Qué cámaras debo usar para la recopilación de datos de robots?
Por lo menos, use una cámara RGB montada en la muñeca (640x480, 30 fps) y una cámara de visión externa de tercera persona. Para obtener mejores resultados, agregue una cámara RGBD como la Intel RealSense D435 para datos de profundidad.
¿Qué es el formato RLDS y por qué es importante?
RLDS (Reinforcement Learning Datasets) es un formato estandarizado de Google DeepMind para almacenar datos de aprendizaje de robots. Almacena episodios como secuencias de observaciones, acciones y recompensas en archivos TFRecord. La mayoría de los modelos VLA (RT-2, OpenVLA, Octo) esperan el formato RLDS, lo que lo convierte en el estándar de facto para la interoperabilidad.
¿Cómo puedo asegurarme de que los datos que recopilo sean de alta calidad?
Seguir tres métricas de calidad: (1) tasa de éxito de la tarea
¿Fue útil este tutorial?
👍 Sí
Manténgase al frente en robótica
Obtenga las últimas noticias sobre las implementaciones de robots, la recopilación de datos y la IA física







