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 SVRC 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
Visão Geral do Pipeline de Coleta de Dados →

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.