Guia de Configuração DK1
Da abertura da caixa à coleta de dados bimanual. Tempo estimado: ~2 horas.
Desembalagem e Montagem
~30 minDesembale cuidadosamente ambos os braços e verifique se todos os componentes estão presentes antes de ligar qualquer coisa.
O que há na caixa
Lista de verificação de montagem
- Monte ambos os braços com segurança na mesa usando o hardware fornecido
- Inspecione todas as conexões do servo na corrente do líder (Dynamixel XL330)
- Inspecione todas as conexões do servo na base do seguidor (DM4340, DM4310 pulso/garra)
- Roteie os cabos USB de forma limpa, longe dos caminhos de movimento das articulações
- Verifique se os mecanismos do gripper abrem e fecham livremente à mão (com a energia desligada)
- Leia o página de segurança antes de aplicar energia
Configuração de Software / Instalação do LeRobot
~30 minO DK1 se integra ao LeRobot como um plugin de hardware de primeira classe. Instale-o ao lado do seu ambiente LeRobot existente.
Pré-requisitos
- Python 3.10+ com
uvgerenciador de pacotes - LeRobot instalado no seu ambiente Python
- Linux (Ubuntu 22.04 recomendado) ou macOS
Instale o plugin DK1
# Clone the repo
git clone https://github.com/robot-learning-co/trlc-dk1.git
cd trlc-dk1
# Create a virtual environment
uv venv
# Install as LeRobot plugin (GIT_LFS_SKIP_SMUDGE=1 avoids downloading
# large LeRobot dependency assets during install)
GIT_LFS_SKIP_SMUDGE=1 uv pip install -e .
# Verify device types registered
python -c "from lerobot.common.robot_devices.robots.factory import make_robot; print('DK1 ready')"
uv pip install -e ., os tipos de dispositivos dk1_follower, dk1_leader, bi_dk1_follower, e bi_dk1_leader estão automaticamente disponíveis para qualquer CLI do LeRobot no mesmo ambiente Python. Nenhum registro manual necessário. O GIT_LFS_SKIP_SMUDGE=1 sinalizador é necessário porque o LeRobot é puxado como uma dependência e armazena grandes ativos via Git LFS — pular o smudge evita o download deles durante a instalação.
permissões da porta serial do Linux
No Linux, as portas seriais sob /dev/ttyACM* exigem que o usuário esteja no dialout grupo. Execute isso uma vez e depois saia e entre novamente:
sudo usermod -aG dialout $USER
# Then log out and back in, or run:
newgrp dialout
Detecção e Calibração de Portas
~20 minUse o localizador de portas embutido para identificar a qual porta serial USB cada braço está conectado, e então execute a calibração para cada braço.
Encontrar portas automaticamente
# Plug in one USB cable at a time to identify each arm's port
uv run lerobot-find-port
Atribuições típicas de portas para uma configuração bimanual:
# Leader right arm: /dev/ttyACM0
# Leader left arm: /dev/ttyACM1
# Follower right: /dev/ttyACM2
# Follower left: /dev/ttyACM3
# On macOS these appear as /dev/tty.usbmodem* instead
Calibrar cada braço
Executar a calibração para cada braço individualmente. Mova o braço por toda a sua amplitude quando solicitado:
# Calibrate follower right arm
uv run lerobot-calibrate \
--robot.type=dk1_follower \
--robot.port=/dev/ttyACM0
# Calibrate follower left arm
uv run lerobot-calibrate \
--robot.type=dk1_follower \
--robot.port=/dev/ttyACM1
# Calibrate leader right arm
uv run lerobot-calibrate \
--robot.type=dk1_leader \
--robot.port=/dev/ttyACM2
# Calibrate leader left arm
uv run lerobot-calibrate \
--robot.type=dk1_leader \
--robot.port=/dev/ttyACM3
Primeira Sessão de Teleoperação
~30 minComece com uma sessão de teleoperação de braço único para verificar o rastreamento líder-seguidor antes de passar para o modo bimanual.
Teleoperação de braço único
uv run lerobot-teleoperate \
--robot.type=dk1_follower \
--robot.port=/dev/ttyACM0 \
--teleop.type=dk1_leader \
--teleop.port=/dev/ttyACM2
O que verificar
- O braço seguidor acompanha os movimentos do braço líder suavemente
- Sem erros de servo ou paradas em qualquer junta
- O gripper abre e fecha em resposta ao gripper líder
- Sem enrosco de cabos durante toda a amplitude de movimento
Uma vez que a teleoperação de braço único esteja funcionando corretamente, repita o teste com o segundo par de braços antes de prosseguir para o modo bimanual.
Gravação de Dados Bimanual
Em andamentoUsar lerobot-record com o bi_dk1_follower e bi_dk1_leader tipos de dispositivos para coletar demonstrações bimanual sincronizadas.
Comando de gravação bimanual completo
O comando abaixo conecta dois braços líderes a dois braços seguidores e grava episódios sincronizados com fluxos de câmera de cabeça e pulso:
lerobot-record \
--robot.type=bi_dk1_follower \
--robot.right_arm_port=/dev/ttyACM0 \
--robot.left_arm_port=/dev/ttyACM1 \
--robot.joint_velocity_scaling=1.0 \
--teleop.type=bi_dk1_leader \
--teleop.right_arm_port=/dev/ttyACM2 \
--teleop.left_arm_port=/dev/ttyACM3 \
--robot.cameras="{
head: {type: opencv, index_or_path: /dev/video0, width: 960, height: 540, fps: 60, fourcc: MJPG},
right_wrist: {type: opencv, index_or_path: /dev/video2, width: 960, height: 540, fps: 60, rotation: 180, fourcc: MJPG},
left_wrist: {type: opencv, index_or_path: /dev/video4, width: 960, height: 540, fps: 60, rotation: 180, fourcc: MJPG}
}" \
--dataset.repo_id=$USER/my_bimanual_dataset \
--dataset.push_to_hub=false \
--dataset.num_episodes=10 \
--dataset.episode_time_s=30 \
--dataset.reset_time_s=20 \
--dataset.single_task="Bimanual pick and place task."
Para descobrir os índices da câmera antes de gravar:
uv run lerobot-find-cameras
Melhores práticas de gravação
- Grave pelo menos 50 demonstrações por tarefa antes do treinamento
- Varie as posições e orientações dos objetos entre os episódios
- Mantenha a exposição da câmera consistente entre as sessões
- Verifique se o conjunto de dados é enviado para o Hugging Face Hub após cada sessão
- Use descritivos
--dataset.tasknomes para filtragem posterior
Próximos passos
Uma vez que você tenha os dados coletados, treine um modelo de Política ACT ou Difusão usando os scripts de treinamento do LeRobot. Veja o Wiki do DK1 para opções de integração de plataforma.