Coleta de Dados

O VLAI L1 é projetado para coleta de dados de teleoperação em larga escala. Seu pipeline de gravação com um clique, sincronização de braços duplos e teleoperação VR embutida fazem dele o caminho mais rápido da entrega do robô para um conjunto de dados pronto para treinamento.

Fluxo de Trabalho de Gravação

Gravação de Teleoperação VR Bimanual

1

Conectar e verificar todos os sistemas

rc connect --device l1 --host 192.168.1.45
rc status   # check: arms, base, cameras, battery all green
2

Mover L1 para a posição de gravação

Dirija o L1 para o espaço de trabalho da tarefa usando WASD no painel do navegador. Defina a altura de elevação para a tarefa (por exemplo, 130 cm para manipulação em mesa). Estacione e trave as rodas.

rc teleop --device l1   # open browser panel
# Drive to position, then lock:
python -c "from roboticscenter import L1; r=L1('192.168.1.45'); r.connect(); r.base.lock_wheels(); r.disconnect()"
3

Configure a cena da tarefa e as câmeras

Coloque os objetos da tarefa em posições iniciais consistentes. Verifique as visualizações das câmeras no painel do navegador — ambas as câmeras de pulso (Desenvolvedor Max) e quaisquer câmeras externas devem cobrir o espaço de trabalho da tarefa.

4

Inicie a gravação da sessão via CLI

rc record \
  --device l1 \
  --task "Pick up the bottle and pour into the glass" \
  --num_episodes 50 \
  --output ~/datasets/l1-pour-v1 \
  --teleop_mode vr   # or: browser, leader_arms
# Press ENTER in VR to start each episode, ENTER again to end
5

Revise os episódios

rc replay \
  --dataset ~/datasets/l1-pour-v1 \
  --episode 0

O visualizador mostra todos os fluxos de câmera + séries temporais do estado das articulações sincronizadas. Exclua episódios ruins antes de enviar.

6

Envie para o HuggingFace Hub

huggingface-cli login
rc push_dataset \
  --dataset ~/datasets/l1-pour-v1 \
  --repo_id your-username/l1-pour-v1
Formato do Conjunto de Dados

Esquema do Conjunto de Dados L1

O pipeline de gravação L1 produz um conjunto de dados multimodal com ambos os braços, a base móvel, todas as câmeras e anotações de linguagem opcionais.

Campos em cada arquivo Parquet de episódio
observation.left_arm_state float32[8] Posições das articulações do braço esquerdo em radianos (8 DOF)
observation.right_arm_state float32[8] Posições das articulações do braço direito em radianos (8 DOF)
observation.base_state float32[3] Base móvel x, y, direção em metros e radianos
observation.lift_height float32 Altura de elevação do tronco em metros
observation.images.* caminho do vídeo Câmeras de pulso (esquerda, direita), câmera da cabeça, câmera externa do espaço de trabalho
action.left_arm float32[8] Posições das articulações do braço esquerdo alvo do teleop VR
action.right_arm float32[8] Posicionamentos das articulações do braço direito do alvo a partir do teleop VR
instrução_de_linguagem string Descrição da tarefa em linguagem natural para condicionamento VLA
carimbo de data/hora float64 Timestamp Unix em segundos
next.done bool Verdadeiro no último quadro de cada episódio
Garantia de Qualidade

Lista de Verificação de Qualidade

O teleop VR do L1 pode introduzir problemas únicos de qualidade de dados relacionados à latência e coordenação bimanual. Revise isso antes de enviar para o Hub.

  • 1
    A latência do VR estava abaixo de 50ms durante a gravação Verifique o monitor de latência no painel do navegador durante a gravação. Acima de 50ms, os movimentos das mãos do operador atrasam as ações do robô, criando um desajuste causal no conjunto de dados. Regrave em um canal WiFi de menor latência, se necessário.
  • 2
    Ambos os braços se moveram como pretendido (sem episódios de braço único) Para tarefas bimanuals, verifique se ambos os braços mostram movimento significativo em observation.left_arm_state e observation.right_arm_stateEpisódios dominantes de braço único podem indicar que o operador favoreceu uma mão.
  • 3
    A base móvel estava estacionária durante a manipulação do braço A menos que você esteja gravando tarefas de manipulação móvel, observation.base_state deve ser quase constante dentro de cada episódio. O movimento da base durante a manipulação faz com que o espaço de trabalho se desloque em relação às câmeras.
  • 4
    Todos os fluxos de câmera presentes durante todo o episódio A largura de banda WiFi do L1 pode perder quadros sob carga. Execute rc validate_dataset --dataset ~/datasets/l1-pour-v1 para verificar se há quadros ausentes em todos os fluxos de câmera.
  • 5
    A instrução de linguagem corresponde ao que foi demonstrado A instrução de linguagem é definida antes do início da gravação. Se o operador improvisou uma abordagem diferente (por exemplo, usou um braço em vez de dois), atualize a instrução ou exclua o episódio.
Próximo Passo

Treinando um VLA a partir de seu Conjunto de Dados

Uma vez que seu conjunto de dados esteja no HuggingFace Hub, ajuste finamente um VLA com o espaço de ação do L1.

Ajuste fino do OpenVLA com dados do L1

pip install roboticscenter[vla]

python -m roboticscenter.scripts.finetune_vla \
  --model openvla/openvla-7b \
  --dataset your-username/l1-pour-v1 \
  --action_space l1_bimanual \   # registers the 16-DOF bimanual action head
  --epochs 50 \
  --output_dir outputs/openvla-l1-pour

Implantar VLA ajustado no dispositivo (Desenvolvedor Pro/Max)

rc implantar vla \

Conjunto de Dados Pronto? Comece o Treinamento.

Enviar para o HuggingFace Hub e ajustar um modelo VLA com seus dados de manipulação bimanual.