Recolección de Datos
La recolección de datos humanoides es fundamentalmente diferente de los flujos de trabajo solo con brazos. El K1 tiene más de 22 grados de libertad, debe mantener el equilibrio durante la teleoperación y requiere captura multimodal sincronizada. Esta página cubre los desafíos, métodos, formato del conjunto de datos y protocolo de seguridad.
Desafíos en la Recolección de Datos Humanoides
Recoger demostraciones de alta calidad en un humanoide de tamaño completo requiere abordar desafíos que no existen en brazos de escritorio.
Equilibrio Durante la Teleoperación
El K1 debe mantener el equilibrio de todo el cuerpo mientras el operador controla los brazos. Los movimientos de los brazos desplazan el centro de masa, lo que requiere que el controlador de locomoción compense continuamente. Los comandos rápidos de los brazos pueden desestabilizar el robot.
Estado de Alta Dimensionalidad
El estado de las articulaciones de todo el cuerpo incluye 22 DOF más IMU, posición de la cabeza y estado de la mano opcional — más de 30 dimensiones por intervalo de tiempo. Los archivos del conjunto de datos son significativamente más grandes que los conjuntos de datos solo de brazos. La planificación de almacenamiento es esencial.
Sincronización de Múltiples Cámaras
Las tareas humanoides generalmente requieren cámaras egocéntricas (montadas en la cabeza) y exocéntricas (externas). Sincronizar múltiples flujos de video con telemetría conjunta a 50 Hz o más requiere un diseño cuidadoso de la tubería.
Fatiga del Operador
La teleoperación de cuerpo completo basada en VR es físicamente exigente. Las sesiones de más de 30 minutos por operador degradan significativamente la calidad de la demostración. Planifique la rotación de operadores en campañas de recolección extendidas.
Métodos de Teleoperación para Humanoides
Se admiten dos métodos principales para la teleoperación de la parte superior del cuerpo. La locomoción siempre se controla a través de comandos de velocidad desde un gamepad o de forma autónoma.
Teleoperación de cuerpo completo en VR Recomendado
Utiliza Meta Quest 3 o un casco de VR similar para rastrear la posición de la cabeza y las manos del operador. Las articulaciones de la cabeza y los brazos del K1 reflejan los movimientos del operador en tiempo real. Proporciona las demostraciones más naturales y expresivas.
Configuración: Quest 3 + SteamVR, nodo k1_vr_teleop ROS2, el operador usa guantes para el seguimiento de manos.
Latencia: ~20ms cabeza, ~40ms brazo de extremo a extremo.
Mejor para: Tareas de manipulación, recoger y colocar, locomoción-manipulación de cuerpo completo.
Cuerpo superior líder-seguidor Avanzado
Un segundo exoesqueleto a escala humana o sistema de brazo líder refleja el cuerpo superior del K1 seguidor. Los ángulos de las articulaciones se mapean directamente del líder al seguidor. No requiere hardware de VR.
Configuración: Requiere un sistema de brazo líder compatible (por ejemplo, kit bimanual OpenArm o exoesqueleto personalizado). Contactar a SVRC para configuraciones de socios.
Mejor para: Manipulación bimanual precisa donde la precisión del seguimiento es crítica.
Locomoción durante la teleoperación
La teleoperación de cuerpo superior se combina típicamente con locomoción controlada por gamepad. El operador utiliza un gamepad inalámbrico para comandar la velocidad de caminata mientras el sistema de VR controla los brazos y la cabeza:
# Launch combined teleop: VR for upper body + gamepad for locomotion
ros2 launch k1_teleop k1_combined_teleop.launch.py \
vr_device:=quest3 \
gamepad:=xbox \
robot_ip:=192.168.10.102
Formato de conjunto de datos de cuerpo completo (30+ DoF)
Cada episodio registra el estado de las articulaciones sincronizado, los fotogramas de la cámara y los metadatos. El formato es compatible con los conjuntos de datos de LeRobot y HuggingFace.
Estructura del episodio
episode_000001/
joint_states.npy # [T, 44] — positions, velocities, torques for 22 joints
imu.npy # [T, 6] — accel (3) + gyro (3) from torso IMU
head_pose.npy # [T, 2] — yaw and pitch in radians
head_cam.mp4 # 1280x720 @ 30 fps, head-mounted egocentric
left_cam.mp4 # 1280x720 @ 30 fps, left wrist
right_cam.mp4 # 1280x720 @ 30 fps, right wrist
external_cam.mp4 # 1920x1080 @ 30 fps, fixed external view
timestamps.npy # [T] unix timestamps for joint_states
metadata.json # task name, operator, duration, success label
Esquema del estado de las articulaciones (22 articulaciones × 2 valores cada una)
# joint_states.npy shape: [timesteps, 44]
# Columns: [q0_pos, q0_vel, q1_pos, q1_vel, ..., q21_pos, q21_vel]
# Joint index mapping:
# 0-5: Left leg (hip_pitch, hip_roll, hip_yaw, knee, ankle_pitch, ankle_roll)
# 6-11: Right leg (same order)
# 12: Waist (yaw)
# 13: Head yaw
# 14: Head pitch
# 15-21: Left arm (shoulder_pitch, shoulder_roll, shoulder_yaw,
# elbow_pitch, wrist_pitch, wrist_roll, wrist_yaw)
# 22-28: Right arm (same order)
# Note: total 29 joints in extended K1 config; base K1 has 22
Grabando una sesión con k1_agent.py
# Start the platform agent (streams telemetry to RoboticsCenter)
python k1_agent.py \
--robot-ip 192.168.10.102 \
--platform-url https://fearless-backend-533466225971.us-central1.run.app \
--record \
--task "pick up red block" \
--cameras head_cam,left_wrist,right_wrist,external
# Episodes auto-numbered and saved to ./recordings/
Convertir al formato LeRobot
python convert_k1_to_lerobot.py \
--input-dir ./recordings/ \
--output-dir ./dataset/ \
--repo-id your-username/k1-pick-place
Protocolo de Seguridad Durante la Recolección de Datos
- ✓Se requiere un observador en todo momento — una persona dedicada monitorea el robot y mantiene el e-stop. El teleoperador no puede monitorear la seguridad simultáneamente.
- ✓Perímetro claro de 3 m × 3 m — sin espectadores, sin cables, sin equipos en el área operativa durante cualquier sesión en vivo.
- ✓Límite de duración del episodio: 60 segundos — mantener los episodios cortos. Los episodios más cortos son más fáciles de filtrar por calidad y reducen el riesgo de operación prolongada.
- ✓Rotación de operador de 30 minutos — rotar teleoperadores cada 30 minutos en sesiones de VR. La fatiga degrada la calidad de la demostración y aumenta las tasas de error.
- ✓Abortarlo inmediatamente e ingresar a DAMP ante cualquier inestabilidad — si el K1 muestra alguna oscilación o deriva inesperada, presiona el e-stop y reinicia desde DAMP. No intentes estabilizar manualmente.
- ✓Registrar todos los incidentes — documentar cualquier caída, casi caída o episodios abortados. Estos datos son útiles para filtrar la calidad del conjunto de datos y para mejorar los procedimientos de seguridad.
Lista de Verificación de Calidad del Episodio
Revisa cada episodio antes de añadirlo a tu conjunto de datos de entrenamiento. Las demostraciones de mala calidad degradarán tu política.
- ✓La tarea se completó con éxito de extremo a extremo (sin completaciones parciales en los datos de entrenamiento).
- ✓El robot mantuvo un equilibrio estable durante todo el tiempo: sin tropiezos, oscilaciones o movimientos compensatorios.
- ✓Todos los flujos de cámara tienen cuadros completos sin segmentos perdidos.
- ✓Las marcas de tiempo del estado conjunto son continuas (sin huecos > 25 ms a 40 Hz de grabación).
- ✓La demostración es suave y deliberada: no apresurada, no sobrecorregida.
- ✓El objeto y la escena de la tarea son visibles en al menos dos flujos de cámara durante todo el tiempo.