Por que a Coleta de Dados Bimanual é Mais Difícil

Na coleta de dados de braço único, uma demonstração ruim afeta apenas a trajetória de um braço. Você registra 50 demonstrações, descarta 5 ruins e treina com 45. Na coleta de dados bimanual, um erro no ponto de passagem invalida ambos as trajetórias dos braços para essa demonstração simultaneamente. Os modos de falha estão acoplados.

Esse acoplamento tem duas implicações práticas. Primeiro, você precisa de mais demonstrações — 100 em vez de 50 — porque as tarefas bimanuals têm maior variância e a política precisa de mais exemplos para aprender a estrutura de coordenação. Segundo, você precisa de consistência mais rigorosa por demonstração. Uma demonstração de braço único que é 80% consistente treina razoavelmente bem. Uma demonstração bimanual onde um braço é consistente e o outro varia não ensina nada útil à política sobre o tempo de coordenação.

O desafio de cobertura do espaço de trabalho também é maior: você precisa de ambos os braços na imagem, e o ponto de passagem — o momento de maior complexidade — deve ser capturado de forma confiável por pelo menos uma câmera. Verifique os ângulos da sua câmera antes de começar e ajuste se a passagem ocorrer fora do campo de visão da câmera do espaço de trabalho.

Formato do Conjunto de Dados LeRobot Bimanual

A integração do DK1 com o LeRobot estende o formato padrão de braço único com matrizes de estado de junta dupla. Cada passo de tempo no conjunto de dados contém:

# Bimanual dataset observation keys per timestep: observation.joint_states.left # shape: (6,) — left follower joint angles in radians observation.joint_states.right # shape: (6,) — right follower joint angles in radians observation.gripper.left # shape: (1,) — left gripper position [0=open, 1=closed] observation.gripper.right # shape: (1,) — right gripper position observation.images.workspace # shape: (H, W, 3) — workspace overhead/front camera observação.imagens.pulso # shape: (H, W, 3) — primary wrist camera action.joint_states.left # shape: (6,) — target left joint angles action.joint_states.right # shape: (6,) — target right joint angles action.gripper.left # shape: (1,) action.gripper.right # shape: (1,)

A principal diferença em relação ao braço único: o espaço de ação é 14-dimensional (6+6 juntas + 2 garras). O ACT lida com isso nativamente — você especifica a dimensão da ação na configuração de treinamento e nenhuma outra alteração é necessária.

Fluxo de Trabalho de Gravação

source ~/dk1-env/bin/activate # Start a recording session — 100 episodes for the cube handoff task python -m lerobot.scripts.record\ # --warmup-time-s: time after pressing record before capture starts (use this to position the cube) # --episode-time-s: max demo length — cube handoff should complete in under 20s; 30s gives buffer # --reset-time-s: time between episodes to return arms to home and reposition the cube

Execute 10–15 demonstrações de prática antes de iniciar a sessão de gravação para aquecer sua memória motora para a tarefa. As primeiras 5–10 demonstrações gravadas serão as piores — isso é esperado. Não pare para revisá-las durante a sessão; revise e elimine as demonstrações ruins após as 100 serem gravadas.

Lista de Verificação de Qualidade para Dados Bimanual

Revise cada demonstração após a gravação usando o visualizador de replay do LeRobot. Descarte qualquer demonstração que falhe em dois ou mais desses critérios:

Sincronização do braço na entrega Ambos os braços devem estar dentro de 3cm do ponto de entrega pretendido simultaneamente. Entregas assíncronas onde um braço espera pelo outro ensinam a política a pausar — o que transfere mal.
Posição de início consistente O cubo deve começar a no máximo 2 cm da mesma posição para cada demonstração. Use as marcas de fita da Unidade 1. A variação na posição de início força a política a generalizar antes de ter aprendido a tarefa principal.
Pegada limpa — ambos os braços Cada braço deve alcançar uma pegada estável antes de passar para a próxima fase. Uma pegada escorregadia durante a transferência cria uma trajetória que é impossível para a política replicar de forma confiável.
Retorno à pose inicial Ambos os braços devem retornar de forma limpa à pose inicial no final de cada demonstração. Demonstrações que terminam no meio do movimento criam um conjunto de dados onde os limites dos episódios são ambíguos.
Cobertura da câmera de trabalho O momento da entrega deve ser visível no quadro da câmera de trabalho. Se os corpos do robô obstruírem a visão, ajuste o ângulo da câmera antes de continuar.
Tempo consistente A duração do episódio não deve variar mais do que ±5 segundos entre as demonstrações. Uma grande variação de tempo indica execução inconsistente e produz um conjunto de dados com alta entropia no espaço de ação.
Tamanho do conjunto de dados alvo: 100 demonstrações é o mínimo recomendado para o treinamento bimanual de ACT. Resultados de pesquisa sugerem que tarefas bimanual requerem aproximadamente 2× os dados de tarefas comparáveis de braço único, pois a estrutura de coordenação conjunta é mais complexa e o espaço de ação é maior. Se após o treinamento na Unidade 5 sua taxa de sucesso estiver abaixo de 40%, coletar mais 50 demonstrações direcionadas é a primeira coisa a tentar.

Unidade 4 Completa Quando...

Você tiver 100 demonstrações gravadas no formato LeRobot em ~/dk1-datasets/cube-handoff-v1/. Após revisar e eliminar, pelo menos 90 demonstrações passam na lista de verificação de qualidade. Ambas as matrizes de estado das juntas estão presentes a 50Hz para cada episódio. Ambos os feeds de câmera estão presentes e mostram toda a sequência da tarefa, incluindo o momento da entrega. Você executou python -m lerobot.scripts.visualize_dataset --repo-id cube-handoff-v1 e confirmou que a estrutura do conjunto de dados é válida.