Coleta de Dados Bimanual
O DK1 foi projetado do zero para a coleta de dados de teleoperação bimanual. Este guia cobre a fiação de ambos os braços e câmeras, a execução do procedimento de gravação líder/seguidor, a compreensão do esquema do conjunto de dados bimanual e a preparação dos seus dados para o treinamento ACT.
Conexões de Hardware para Gravação Bimanual
A gravação bimanual requer mais conexões do que uma configuração de braço único. Verifique cada conexão antes de iniciar o LeRobot — perder uma conexão durante a sessão corrompe o episódio.
Braço Líder (Dynamixel XL330)
USB-C do braço líder para o PC host. Este braço é movido pela mão do operador. Use um cabo curto (1 m) para evitar desconexões acidentais durante a teleoperação. Verifique: ls /dev/ttyACM0
Braço Seguidor (DM4340 + energia)
USB-C do braço seguidor para o PC host mais fonte de alimentação DC. O braço seguidor requer energia externa — nunca opere apenas com energia USB. Verifique: ls /dev/ttyACM1
Câmera de Pulso (braço seguidor)
Monte uma webcam USB no efetor final do braço seguidor. Esta é a câmera principal de manipulação. Conecte via USB 3.0. Verifique: ls /dev/video0
Câmera Superior / Espaço de Trabalho
Câmera fixa acima do espaço de trabalho bimanual a ~70 cm de altura, inclinada 30° para baixo. Captura ambos os braços simultaneamente. Segundo porta USB 3.0. Verifique: ls /dev/video2
Crítico: sincronização bimanual. Com dois braços e duas câmeras, a sincronização é o fator de qualidade de dados mais importante para o DK1. O LeRobot marca todos os fluxos com o relógio do PC host. Para minimizar a diferença de timestamp: (1) use controladores de barramento USB separados para câmeras e braços, (2) use hubs USB 3.0 com relógios estáveis, (3) defina o governador da CPU para o modo de desempenho. Alvo: <5 ms de diferença entre todos os quatro fluxos. Uma desincronização de 10 ms entre os estados do braço esquerdo e direito pode causar falhas no treinamento ACT em tarefas ricas em contato.
Procedimento de Gravação de Teleoperação Líder/Seguido
Siga estas etapas para cada sessão de gravação do DK1. O procedimento bimanual tem alguns passos extras em comparação com a coleta de braço único.
Verificação de segurança pré-sessão
Limpe o espaço de trabalho compartilhado entre os dois braços (1,5 m × 1 m). Verifique se ambos os braços alcançam o espaço de trabalho compartilhado sem colisão. Teste o E-stop antes de gravar. Veja página de segurança.
Conecte e verifique ambos os braços
# Verify serial ports are available
ls /dev/ttyACM*
# Expected: /dev/ttyACM0 (leader) and /dev/ttyACM1 (follower)
# Quick connection test
python -m lerobot.scripts.control_robot \
--robot.type=bi_dk1_follower \
--robot.config=~/.lerobot/robots/dk1_bimanual.yaml \
--control.type=none
Verifique os feeds das câmeras
Ambas as câmeras devem estar transmitindo antes de iniciar o LeRobot. Uma câmera ausente produzirá episódios silenciosos com quadros de imagem nulos.
python3 -c "
import cv2
for i in [0, 2]:
cap = cv2.VideoCapture(i)
if cap.isOpened():
ret, frame = cap.read()
print(f'Camera {i}: OK ({frame.shape[1]}x{frame.shape[0]})')
else:
print(f'Camera {i}: FAILED')
cap.release()
"
Mova os braços para a posição inicial
Mova manualmente o braço líder para a posição inicial de teleop. O braço seguidor irá espelhar isso. Mantenha o braço líder firme por 2–3 segundos para confirmar a sincronização antes que o período de aquecimento comece.
Configure a cena da tarefa
Coloque os objetos em posições iniciais consistentes para ambos os braços. Fotografe a configuração inicial. Para tarefas bimanual, marque as posições exatas com fita — a consistência da cena é ainda mais crítica porque as trajetórias de ambos os braços devem ser compatíveis.
Inicie a gravação bimanual do LeRobot
source ~/.venvs/dk1/bin/activate
python -m lerobot.scripts.control_robot \
--robot.type=bi_dk1_follower \
--robot.config=~/.lerobot/robots/dk1_bimanual.yaml \
--control.type=record \
--control.fps=30 \
--control.repo_id=your-username/dk1-bimanual-pick-place-v1 \
--control.num_episodes=50 \
--control.single_task="Pick up block with left arm, place in bin with right arm" \
--control.warmup_time_s=5 \
--control.reset_time_s=15
Use um mais longo reset_time_s para tarefas bimanual — redefinir dois braços e a cena leva mais tempo do que configurações de braço único.
Revise e reproduza episódios
Após cada lote de 10 episódios, reproduza e revise antes de continuar. Preste atenção à coordenação dos braços — o atraso entre os braços esquerdo e direito aparecerá como tremores nos movimentos do seguidor.
python -m lerobot.scripts.visualize_dataset \
--repo_id=your-username/dk1-bimanual-pick-place-v1 \
--episode_index=0
Envie para o HuggingFace Hub
huggingface-cli login
python -m lerobot.scripts.push_dataset_to_hub \
--repo_id=your-username/dk1-bimanual-pick-place-v1
Formato do Conjunto de Dados LeRobot para Bimanual (DK1)
O esquema do conjunto de dados bimanual DK1 dobra os campos de estado das articulações em comparação com uma gravação de braço único. Cada episódio contém observações sincronizadas de ambos os braços líder e seguidor, além de todas as câmeras.
Estrutura de diretórios
your-username/dk1-bimanual-pick-place-v1/
├── meta/
│ ├── info.json # Dataset metadata, fps, shapes, robot_type
│ ├── episodes.jsonl # Per-episode metadata (task, length, outcome)
│ └── stats.json # Min/max/mean/std for all fields
├── data/
│ └── chunk-000/
│ ├── episode_000000.parquet
│ └── ...
└── videos/
└── chunk-000/
├── observation.images.wrist_cam/
│ ├── episode_000000.mp4
│ └── ...
└── observation.images.overhead_cam/
└── ...
Esquema de dados do episódio (bimanual)
Lista de Verificação de Qualidade para Demos Bimanual
Conjuntos de dados bimanuais têm requisitos de qualidade mais rigorosos do que dados de braço único. A má coordenação entre os braços é a principal causa de falha no treinamento da política DK1.
-
1O delta de sincronização do braço está abaixo de 10 ms Verifique o
arm_sync_delta_mscampo em cada episódio. Picos acima de 10 ms indicam contenção do barramento USB ou um pacote serial perdido. Exclua episódios com deltas altos sustentados. -
2Sem oscilação do braço seguidor durante o contato Revise as trajetórias do braço seguidor nos pontos de contato (aperto, entrega, colocação). A oscilação aparece como ruído de alta frequência em
observation.state. Reduza os ganhos de PD se presentes. Veja solução de problemas de software. -
3Ambos os braços completam a tarefa no mesmo episódio Para tarefas bimanual, um episódio é válido apenas se ambos os braços completarem suas subtarefas atribuídas. Se o braço esquerdo teve sucesso, mas o braço direito deixou cair o objeto, marque o episódio como falhado e exclua ou anote-o.
-
4Sem quadros de câmera ausentes Ambas as transmissões de câmera devem ter o número esperado de quadros. Quadros ausentes de qualquer câmera corrompem a entrada da política visuomotora. Verifique com
lerobot.scripts.visualize_dataset. -
5A cena da tarefa foi reiniciada de forma idêntica entre os episódios O espaço de trabalho de ambos os braços deve ser reiniciado para cada episódio. A posição do objeto, a configuração inicial do braço e os ângulos da câmera devem corresponder. Use a configuração inicial fotografada como referência.
-
6O comprimento do episódio é consistente Todos os episódios bem-sucedidos devem estar dentro de ±25% do comprimento mediano. Tarefas bimanuals geralmente têm maior variância do que tarefas de braço único, mas outliers extremos (3× mediana) devem ser descartados.
-
7As estatísticas do conjunto de dados são simétricas para ambos os braços Em
meta/stats.json, verifique seaction_lefteaction_rightas estatísticas são plausíveis para a geometria da sua tarefa. Se um braço mostrar variância zero, esse braço não estava se movendo — verifique as atribuições de porta. -
8O estilo de demonstração de teleoperação é consistente Todas as demonstrações devem usar o mesmo caminho de abordagem, estratégia de apreensão e técnica de entrega. Estratégias mistas produzem distribuições de ação multimodais que confundem o treinamento do ACT. Use um único operador por versão da tarefa.
Treinando o ACT no Seu Conjunto de Dados Bimanual
Uma vez que seu conjunto de dados passe na lista de verificação de qualidade, treine o ACT ou a Política de Difusão diretamente com o LeRobot. O ACT é recomendado para tarefas bimanuals DK1 — sua previsão de ação em blocos lida melhor com a coordenação entre os braços do que políticas de passo único.
Treine o ACT (recomendado para bimanual)
python -m lerobot.scripts.train \
--policy.type=act \
--dataset.repo_id=your-username/dk1-bimanual-pick-place-v1 \
--policy.chunk_size=100 \
--policy.n_action_steps=100 \
--training.num_epochs=5000 \
--training.batch_size=8 \
--output_dir=outputs/dk1-act-bimanual
Treine a Política de Difusão (para tarefas ricas em contato)
python -m lerobot.scripts.train \
--policy.type=diffusion \
--dataset.repo_id=your-username/dk1-bimanual-pick-place-v1 \
--training.num_epochs=8000 \
--output_dir=outputs/dk1-diffusion-bimanual
Aprofunde-se: Leia o completo Visão Geral do Pipeline de Coleta de Dados na Biblioteca de Robótica para um tratamento completo da estrutura do episódio, versionamento do conjunto de dados, estratégias de sincronização e composição de conjuntos de dados bimanuals de múltiplas tarefas.