A referência completa de instalação do SDK está em hardware/dk1/software. Esta unidade cobre os passos de configuração específicos para bimanual que vão além da instalação do SDK de braço único que você pode ter feito para o OpenArm.

Instale o SDK DK1

O SDK DK1 é separado do SDK OpenArm. Não tente executar braços DK1 com o pacote OpenArm — o protocolo de firmware é diferente.

# Create an isolated virtual environment for DK1 work python3 -m venv ~/dk1-env # Install the DK1 SDK and bimanual extensions pip install dk1-sdk[bimanual] # Verify the install python -c "import dk1; print(dk1.__version__)" # Expected: 0.4.0 or higher

Configure o Emparelhamento Líder/Seguido

O SDK lê um arquivo de configuração YAML que informa qual dispositivo serial é o líder e quais dispositivos são os dois braços seguidos. Você deve especificar os caminhos dos dispositivos na ordem correta — o SDK não detecta automaticamente a atribuição de funções.

# Generate the default bimanual config file dk1-config generate --mode bimanual --output ~/dk1-config.yaml # Open and edit the config — set your actual device paths nano ~/dk1-config.yaml

Os campos principais em dk1-config.yaml:

líder: # the leader controller arm taxa de transmissão: 1000000 # left follower arm taxa de transmissão: 1000000 # right follower arm taxa de transmissão: 1000000 # joint state sync rate latência_tolerância_ms: 5 # max allowed sync lag
Atribuição de caminho do dispositivo: O mapeamento do braço físico para /dev/ttyUSBN depende da ordem das portas USB, que pode mudar entre reinicializações. Para criar aliases estáveis, use udev regras baseadas no número de série do dispositivo. Execute udevadm info /dev/ttyUSB0 para encontrar o número de série de cada braço e criar regras em /etc/udev/rules.d/99-dk1.rules. Isso é abordado em detalhes em hardware/dk1/software.

Teste de Conexão Python — Ambos os Braços

Após editar a configuração, execute um teste de conexão que exercite todos os três dispositivos simultaneamente:

de dk1 importação BimanualRobot # Print joint states for both arms — should update at 50Hz para i em range(10):

Uma execução bem-sucedida imprime 10 pares de arrays de estado das juntas com valores consistentes e estáveis. Se você ver valores NaN, um erro de timeout, ou menos de 6 valores de junta por braço, verifique as atribuições de caminho do dispositivo em seu arquivo de configuração.

Verificação de Sincronização

A verificação mais importante nesta unidade é verificar se o movimento do líder produz uma resposta sincronizada do seguidor sem atraso perceptível:

de dk1 importar BimanualRobot, LeaderFollowerSession # Start the leader/follower sync loop # Move the leader arm slowly — both followers should mirror immediately sessão.start()

Mova o braço líder lentamente através de um arco de 30° em uma única junta. Ambos os braços seguidores devem se mover em uníssono sem atraso visível. Se um seguidor ficar atrás do outro por mais de meio segundo, verifique a latency_tolerance_ms configuração e verifique a conexão USB do braço lento.

Erros Comuns e Soluções

Erro Causa Correção
SerialException: device not found Caminho do dispositivo errado na configuração, ou USB não conectado Executar ls /dev/ttyUSB* e atualize os caminhos de configuração. Verifique as conexões físicas do USB.
SyncTimeoutError: follower_right O braço seguidor direito não está respondendo dentro da tolerância de latência Aumentar latency_tolerance_ms para 10, ou tente uma porta USB diferente. Verifique o cabo quanto a danos.
Estados das juntas todos zeros após a conexão Servos não habilitados — o braço está em modo de espera Chamar robot.enable_servos() antes de ler os estados das juntas, ou habilite via a interface web primeiro.
Um seguidor espelha, o outro está estacionário O líder está pareado apenas com um seguidor na configuração Verifique ambos follower_left e follower_right estão configurados no arquivo YAML.

Unidade 2 Completa Quando...

O SDK DK1 está instalado e dk1.__version__ retorna 0.4.0 ou superior. O teste de conexão imprime valores de estado de juntas estáveis para ambos os braços a 50Hz. Quando você inicia uma sessão de líder/seguidor e move o braço do líder, ambos os braços seguidores espelham o movimento sem atraso perceptível. Você verificou isso com pelo menos 3 movimentos de juntas diferentes no braço do líder.