Coleta de Dados

A coleta de dados humanoides é fundamentalmente diferente dos fluxos de trabalho apenas com braços. O K1 tem mais de 22 graus de liberdade, deve manter o equilíbrio durante a teleoperação e requer captura multimodal sincronizada. Esta página aborda os desafios, métodos, formato do conjunto de dados e protocolo de segurança.

Desafios na Coleta de Dados Humanoides

Coletar demonstrações de alta qualidade em um humanoide de tamanho real requer enfrentar desafios que não existem em braços de mesa.

⚖

Equilíbrio Durante a Teleoperação

O K1 deve manter o equilíbrio do corpo inteiro enquanto o operador controla os braços. Os movimentos dos braços deslocam o centro de massa, exigindo que o controlador de locomoção compense continuamente. Comandos rápidos dos braços podem desestabilizar o robô.

📊

Estado de Alta Dimensão

O estado das articulações do corpo inteiro inclui 22 DOF mais IMU, pose da cabeça e estado da mão opcional — mais de 30 dimensões por intervalo de tempo. Os arquivos do conjunto de dados são significativamente maiores do que os conjuntos de dados apenas com braços. O planejamento de armazenamento é essencial.

📷

Sincronização de Múltiplas Câmeras

Tarefas humanoides geralmente requerem câmeras egocêntricas (montadas na cabeça) e exocêntricas (externas). Sincronizar múltiplos fluxos de vídeo com telemetria conjunta a 50 Hz ou mais requer um design cuidadoso do pipeline.

👥

Fadiga do Operador

A teleoperação de corpo inteiro baseada em VR é fisicamente exigente. Sessões mais longas que 30 minutos por operador degradam significativamente a qualidade da demonstração. Planeje a rotação do operador em campanhas de coleta prolongadas.

Métodos de Teleoperação para Humanoides

Dois métodos principais são suportados para teleoperação da parte superior do corpo. A locomoção é sempre controlada por meio de comandos de velocidade de um gamepad ou de forma autônoma.

Teleoperação de Corpo Inteiro em VR Recomendado

Usa o Meta Quest 3 ou um headset VR similar para rastrear a pose da cabeça e das mãos do operador. As articulações da cabeça e dos braços do K1 refletem os movimentos do operador em tempo real. Proporciona as demonstrações mais naturais e expressivas.

Configuração: Quest 3 + SteamVR, nó ROS2 k1_vr_teleop, operador usa luvas para rastreamento das mãos.

Latência: ~20ms de latência na cabeça, ~40ms no braço de ponta a ponta.

Melhor para: Tarefas de manipulação, pegar e colocar, locomoção-manipulação de corpo inteiro.

Corpo Superior Líder-Seguidor Avançado

Um segundo exoesqueleto em escala humana ou sistema de braço líder reflete o corpo superior do K1 seguidor. Os ângulos das articulações são mapeados diretamente do líder para o seguidor. Não requer hardware VR.

Configuração: Requer um sistema de braço líder compatível (por exemplo, kit bimanual OpenArm ou exoesqueleto personalizado). Contate o Robotics Center para configurações de parceiros.

Melhor para: Manipulação bimanual precisa onde a precisão do rastreamento é crítica.

Locomoção durante a teleoperação

A teleoperação do corpo superior é tipicamente combinada com locomoção controlada por gamepad. O operador usa um gamepad sem fio para comandar a velocidade de caminhada enquanto o sistema VR controla os braços e a cabeça:

# 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 Dados de Corpo Inteiro (30+ DoF)

Cada episódio registra o estado das articulações sincronizado, quadros de câmera e metadados. O formato é compatível com os conjuntos de dados LeRobot e HuggingFace.

Estrutura do episódio

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 de estado das articulações (22 articulações × 2 valores cada)

# 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

Gravando uma sessão com 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/

Converter para o formato LeRobot

python convert_k1_to_lerobot.py \
  --input-dir ./recordings/ \
  --output-dir ./dataset/ \
  --repo-id your-username/k1-pick-place

Protocolo de Segurança Durante a Coleta de Dados

  • ✓Observador necessário em todos os momentos — uma pessoa dedicada monitora o robô e mantém o botão de emergência. O teleoperador não pode monitorar a segurança simultaneamente.
  • ✓Perímetro livre de 3 m × 3 m — sem espectadores, sem cabos, sem equipamentos na área operacional durante qualquer sessão ao vivo.
  • ✓Limite de duração do episódio: 60 segundos — mantenha os episódios curtos. Episódios mais curtos são mais fáceis de filtrar por qualidade e reduzem o risco de operação prolongada.
  • ✓Rotação de operador de 30 minutos — rotacione os teleoperadores a cada 30 minutos em sessões de VR. A fadiga degrada a qualidade da demonstração e aumenta as taxas de erro.
  • ✓Abortá imediatamente e entre no DAMP em qualquer instabilidade — se o K1 mostrar qualquer oscilação ou deriva inesperada, pressione o botão de emergência e reinicie a partir do DAMP. Não tente estabilizar manualmente.
  • ✓Registre todos os incidentes — documente qualquer queda, quase queda ou episódios abortados. Esses dados são úteis para filtrar a qualidade do conjunto de dados e para melhorar os procedimentos de segurança.

Lista de Verificação de Qualidade do Episódio

Revise cada episódio antes de adicioná-lo ao seu conjunto de dados de treinamento. Demonstrações de baixa qualidade degradarão sua política.

  • ✓A tarefa foi concluída com sucesso de ponta a ponta (sem conclusões parciais nos dados de treinamento)
  • ✓O robô manteve um equilíbrio estável durante todo o tempo — sem tropeços, oscilações ou movimentos compensatórios
  • ✓Todos os fluxos de câmera têm quadros completos sem segmentos perdidos
  • ✓Os timestamps do estado conjunto são contínuos (sem lacunas > 25 ms em gravação de 40 Hz)
  • ✓A demonstração é suave e deliberada — não apressada, não supercorreta
  • ✓O objeto e a cena da tarefa são visíveis em pelo menos dois fluxos de câmera durante todo o tempo

Pronto para Treinar Sua Primeira Política Humanoide?

Uma vez que você tenha coletado demonstrações de qualidade, dirija-se ao caminho de aprendizado Booster K1 para o fluxo completo de treinamento e implantação.