Recolección de Datos Bimanual
El DK1 está diseñado desde cero para la recolección de datos de teleoperación bimanual. Esta guía cubre el cableado de ambos brazos y cámaras, la ejecución del procedimiento de grabación líder/seguidor, la comprensión del esquema del conjunto de datos bimanual y la preparación de sus datos para el entrenamiento de ACT.
Conexiones de Hardware para Grabación Bimanual
La grabación bimanual requiere más conexiones que una configuración de brazo único. Verifique cada conexión antes de iniciar LeRobot; faltar una conexión a mitad de sesión corrompe el episodio.
Brazo Líder (Dynamixel XL330)
USB-C del brazo líder a la PC host. Este brazo es movido por la mano del operador. Use un cable corto (1 m) para evitar desconexiones accidentales durante la teleoperación. Verifique: ls /dev/ttyACM0
Brazo Seguidor (DM4340 + alimentación)
USB-C del brazo seguidor a la PC host más fuente de alimentación de CC. El brazo seguidor requiere alimentación externa; nunca funcione solo con alimentación USB. Verifique: ls /dev/ttyACM1
Cámara de Muñeca (brazo seguidor)
Monte una cámara web USB en el efector final del brazo seguidor. Esta es la cámara principal de manipulación. Conéctese a través de USB 3.0. Verifique: ls /dev/video0
Cámara Superior / de Espacio de Trabajo
Cámara fija sobre el espacio de trabajo bimanual a ~70 cm de altura, inclinada 30° hacia abajo. Captura ambos brazos simultáneamente. Segundo puerto USB 3.0. Verifique: ls /dev/video2
Crítico: sincronización bimanual. Con dos brazos y dos cámaras, la sincronización es el factor de calidad de datos más importante para el DK1. LeRobot marca todas las transmisiones con la hora del reloj de la PC host. Para minimizar la desviación de la marca de tiempo: (1) use controladores de bus USB separados para cámaras y brazos, (2) use concentradores USB 3.0 con relojes estables, (3) configure el gobernador de la CPU en modo de rendimiento. Objetivo: <5 ms de desviación entre las cuatro transmisiones. Una desincronización de 10 ms entre los estados del brazo izquierdo y derecho puede causar fallos en el entrenamiento de ACT en tareas ricas en contacto.
Procedimiento de Grabación de Teleoperación Líder/Secundario
Siga estos pasos para cada sesión de grabación del DK1. El procedimiento bimanual tiene algunos pasos adicionales en comparación con la recolección de brazo único.
Verificación de seguridad previa a la sesión
Limpie el espacio de trabajo compartido entre ambos brazos (1.5 m × 1 m). Verifique que ambos brazos alcancen el espacio de trabajo compartido sin colisiones. Pruebe el E-stop antes de grabar. Ver página de Seguridad.
Conecte y verifique ambos brazos
# Verify serial ports are available
ls /dev/ttyACM*
# Expected: /dev/ttyACM0 (leader) and /dev/ttyACM1 (follower)
# Quick connection test
python -m lerobot.scripts.control_robot \
--robot.type=bi_dk1_follower \
--robot.config=~/.lerobot/robots/dk1_bimanual.yaml \
--control.type=none
Verifique las transmisiones de las cámaras
Ambas cámaras deben estar transmitiendo antes de iniciar LeRobot. Una cámara faltante producirá episodios silenciosos con cuadros de imagen nulos.
python3 -c "
import cv2
for i in [0, 2]:
cap = cv2.VideoCapture(i)
if cap.isOpened():
ret, frame = cap.read()
print(f'Camera {i}: OK ({frame.shape[1]}x{frame.shape[0]})')
else:
print(f'Camera {i}: FAILED')
cap.release()
"
Mueva los brazos a la posición de inicio
Mueva manualmente el brazo líder a la posición de teleoperación inicial. El brazo seguidor lo reflejará. Mantenga el brazo líder estable durante 2–3 segundos para confirmar la sincronización antes de que comience el período de calentamiento.
Configure la escena de la tarea
Coloque los objetos en posiciones de inicio consistentes para ambos brazos. Fotografía la configuración inicial. Para tareas bimanuales, marque posiciones exactas con cinta: la consistencia de la escena es aún más crítica porque las trayectorias de ambos brazos deben ser compatibles.
Inicie la grabación bimanual de LeRobot
source ~/.venvs/dk1/bin/activate
python -m lerobot.scripts.control_robot \
--robot.type=bi_dk1_follower \
--robot.config=~/.lerobot/robots/dk1_bimanual.yaml \
--control.type=record \
--control.fps=30 \
--control.repo_id=your-username/dk1-bimanual-pick-place-v1 \
--control.num_episodes=50 \
--control.single_task="Pick up block with left arm, place in bin with right arm" \
--control.warmup_time_s=5 \
--control.reset_time_s=15
Use un tiempo más largo reset_time_s para tareas bimanuales: reiniciar dos brazos y la escena toma más tiempo que las configuraciones de un solo brazo.
Revise y reproduzca episodios
Después de cada lote de 10 episodios, reproduzca y revise antes de continuar. Preste atención a la coordinación de los brazos: el retraso entre los brazos izquierdo y derecho aparecerá como temblor en los movimientos del seguidor.
python -m lerobot.scripts.visualize_dataset \
--repo_id=your-username/dk1-bimanual-pick-place-v1 \
--episode_index=0
Empuje al HuggingFace Hub
huggingface-cli login
python -m lerobot.scripts.push_dataset_to_hub \
--repo_id=your-username/dk1-bimanual-pick-place-v1
Formato del conjunto de datos de LeRobot para Bimanual (DK1)
El esquema del conjunto de datos bimanual DK1 duplica los campos de estado de las articulaciones en comparación con una grabación de un solo brazo. Cada episodio contiene observaciones sincronizadas de ambos brazos líder y seguidor, además de todas las cámaras.
Estructura de directorios
your-username/dk1-bimanual-pick-place-v1/
├── meta/
│ ├── info.json # Dataset metadata, fps, shapes, robot_type
│ ├── episodes.jsonl # Per-episode metadata (task, length, outcome)
│ └── stats.json # Min/max/mean/std for all fields
├── data/
│ └── chunk-000/
│ ├── episode_000000.parquet
│ └── ...
└── videos/
└── chunk-000/
├── observation.images.wrist_cam/
│ ├── episode_000000.mp4
│ └── ...
└── observation.images.overhead_cam/
└── ...
Esquema de datos del episodio (bimanual)
Lista de Verificación de Calidad para Demos Bimanuales
Los conjuntos de datos bimanuales tienen requisitos de calidad más estrictos que los datos de un solo brazo. La mala coordinación entre los brazos es la principal causa de fallo en el entrenamiento de políticas de DK1.
-
1El delta de sincronización del brazo está por debajo de 10 ms Verifica el
arm_sync_delta_mscampo en cada episodio. Picos por encima de 10 ms indican contención del bus USB o un paquete serial perdido. Eliminar episodios con deltas altos sostenidos. -
2Sin oscilación del brazo seguidor durante el contacto Revisar las trayectorias del brazo seguidor en los puntos de contacto (agarre, entrega, colocación). La oscilación aparece como ruido de alta frecuencia en
observation.state. Reducir las ganancias de PD si están presentes. Ver solución de problemas de software. -
3Ambos brazos completan la tarea en el mismo episodio Para tareas bimanuales, un episodio solo es válido si ambos brazos completan sus subtareas asignadas. Si el brazo izquierdo tuvo éxito pero el brazo derecho dejó caer el objeto, marcar el episodio como fallido y eliminarlo o anotarlo.
-
4No hay fotogramas de cámara faltantes Ambos flujos de cámara deben tener el número esperado de fotogramas. Los fotogramas faltantes de cualquiera de las cámaras corrompen la entrada de la política visuomotora. Verifique con
lerobot.scripts.visualize_dataset. -
5La escena de la tarea se reinició de manera idéntica entre episodios El espacio de trabajo de ambos brazos debe reiniciarse para cada episodio. La posición del objeto, la configuración inicial del brazo y los ángulos de la cámara deben coincidir. Utilice la configuración inicial fotografiada como referencia.
-
6La duración del episodio es consistente Todos los episodios exitosos deben estar dentro del ±25% de la duración mediana. Las tareas bimanuales a menudo tienen mayor variabilidad que las tareas de un solo brazo, pero los valores atípicos extremos (3× la mediana) deben ser descartados.
-
7Las estadísticas del conjunto de datos son simétricas para ambos brazos En
meta/stats.json, comprueba queaction_leftyaction_rightlas estadísticas sean plausibles para la geometría de su tarea. Si un brazo muestra cero variabilidad, ese brazo no se estaba moviendo — verifique las asignaciones de puertos. -
8El estilo de demostración de teleoperación es consistente Todas las demostraciones deben utilizar el mismo camino de aproximación, estrategia de agarre y técnica de entrega. Las estrategias mixtas producen distribuciones de acción multimodal que confunden el entrenamiento de ACT. Utilice un solo operador por versión de tarea.
Entrenando ACT en su conjunto de datos bimanual
Una vez que su conjunto de datos pase la lista de verificación de calidad, entrene ACT o la Política de Difusión directamente con LeRobot. Se recomienda ACT para tareas bimanuales DK1: su predicción de acción en bloques maneja mejor la coordinación entre brazos que las políticas de un solo paso.
Entrenar ACT (recomendado para bimanual)
python -m lerobot.scripts.train \
--policy.type=act \
--dataset.repo_id=your-username/dk1-bimanual-pick-place-v1 \
--policy.chunk_size=100 \
--policy.n_action_steps=100 \
--training.num_epochs=5000 \
--training.batch_size=8 \
--output_dir=outputs/dk1-act-bimanual
Entrenar Política de Difusión (para tareas ricas en contacto)
python -m lerobot.scripts.train \
--policy.type=diffusion \
--dataset.repo_id=your-username/dk1-bimanual-pick-place-v1 \
--training.num_epochs=8000 \
--output_dir=outputs/dk1-diffusion-bimanual
Profundice más: Lea el completo Visión general del Pipeline de Recolección de Datos en la Biblioteca de Robótica para un tratamiento exhaustivo de la estructura del episodio, la versionado del conjunto de datos, las estrategias de sincronización y la composición del conjunto de datos bimanual de múltiples tareas.