La referencia completa de instalación del SDK está en hardware/dk1/software. Esta unidad cubre los pasos de configuración específicos para bimanual que van más allá de la instalación del SDK de un solo brazo que puedes haber realizado para OpenArm.

Instala el SDK de DK1

El SDK de DK1 es independiente del SDK de OpenArm. No intentes ejecutar brazos DK1 con el paquete de OpenArm; el protocolo de firmware es 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

Configura el Emparejamiento Líder/Secundario

El SDK lee un archivo de configuración YAML que le indica qué dispositivo serial es el líder y cuáles son los dos brazos secundarios. Debes especificar las rutas de los dispositivos en el orden correcto; el SDK no detecta automáticamente la asignación de roles.

# 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

Los campos clave en dk1-config.yaml:

líder: # the leader controller arm velocidad de baudios: 1000000 # left follower arm velocidad de baudios: 1000000 # right follower arm velocidad de baudios: 1000000 # joint state sync rate latencia_tolerancia_ms: 5 # max allowed sync lag
Asignación de ruta del dispositivo: La asignación del brazo físico a /dev/ttyUSBN depende del orden de los puertos USB, que puede cambiar entre reinicios. Para crear alias estables, utiliza udev reglas basadas en el número de serie del dispositivo. Ejecuta udevadm info /dev/ttyUSB0 para encontrar el número de serie de cada brazo y crear reglas en /etc/udev/rules.d/99-dk1.rules. Esto se cubre en detalle en hardware/dk1/software.

Prueba de conexión de Python — Ambos brazos

Después de editar la configuración, ejecuta una prueba de conexión que ejercite los tres dispositivos simultáneamente:

de dk1 importar BimanualRobot # Print joint states for both arms — should update at 50Hz para i en rango(10):

Una ejecución exitosa imprime 10 pares de arreglos de estado de articulaciones con valores consistentes y estables. Si ves valores NaN, un error de tiempo de espera, o menos de 6 valores de articulación por brazo, verifica las asignaciones de ruta del dispositivo en tu archivo de configuración.

Verificación de sincronización

La verificación más importante en esta unidad es comprobar que el movimiento del líder produce una respuesta sincronizada del seguidor sin retraso perceptible:

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

Mueve el brazo líder lentamente a través de un arco de 30° en una sola articulación. Ambos brazos seguidores deben moverse al unísono sin retraso visible. Si un seguidor se retrasa más de medio segundo respecto al otro, verifica la latency_tolerance_ms configuración y verifica la conexión USB del brazo lento.

Errores comunes y soluciones

Error Causa Solución
SerialException: device not found Ruta de dispositivo incorrecta en la configuración, o USB no conectado Ejecutar ls /dev/ttyUSB* y actualizar las rutas de configuración. Verifique las conexiones físicas de USB.
SyncTimeoutError: follower_right El brazo seguidor derecho no responde dentro de la tolerancia de latencia Aumentar latency_tolerance_ms a 10, o probar un puerto USB diferente. Verifique el cable en busca de daños.
Estados de las juntas todos ceros después de conectar Servos no habilitados — el brazo está en modo de espera Llamar robot.enable_servos() antes de leer los estados de las juntas, o habilitar a través de la interfaz web primero.
Un seguidor refleja, el otro está estacionario El líder está emparejado solo con un seguidor en la configuración Verifique ambos follower_left y follower_right están configurados en el archivo YAML.

Unidad 2 Completa Cuando...

El SDK DK1 está instalado y dk1.__version__ devuelve 0.4.0 o superior. La prueba de conexión imprime valores de estado de junta estables para ambos brazos a 50Hz. Cuando inicie una sesión de líder/seguidor y mueva el brazo líder, ambos brazos seguidores reflejan el movimiento sin retraso perceptible. Ha verificado esto con al menos 3 movimientos de junta diferentes en el brazo líder.