La référence complète de l'installation du SDK se trouve à l'adresse matériel/dk1/logiciel. Cette unité couvre les étapes de configuration spécifiques au bimanuel qui vont au-delà de l'installation du SDK à un seul bras que vous avez peut-être effectuée pour OpenArm.

Installez le SDK DK1

Le SDK DK1 est distinct du SDK OpenArm. N'essayez pas d'exécuter les bras DK1 avec le package OpenArm - le protocole du micrologiciel diffère.

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

Configurer le couplage leader/suiveur

Le SDK lit un fichier de configuration YAML qui lui indique quel périphérique série est le leader et quels périphériques sont les deux bras suiveurs. Vous devez spécifier les chemins de périphérique dans le bon ordre : le SDK ne détecte pas automatiquement l'attribution de rôle.

# Generate the default bimanual config file dk1-config génère --mode bimanuel --output ~/dk1-config.yaml # Open and edit the config — set your actual device paths nano ~/dk1-config.yaml

Les champs clés dans dk1-config.yaml:

chef : périphérique : /dev/ttyUSB2 # the leader controller arm débit en bauds : 1 000 000 suiveur_gauche : périphérique : /dev/ttyUSB0 # left follower arm débit en bauds : 1 000 000 follower_right : périphérique : /dev/ttyUSB1 # right follower arm débit en bauds : 1 000 000 synchronisation : fréquence_hz : 50 # joint state sync rate latence_tolerance_ms : 5 # max allowed sync lag
Affectation du chemin de l'appareil : La cartographie du bras physique au /dev/ttyUSBN dépend de l'ordre des ports USB, qui peut changer entre les redémarrages. Pour créer des alias stables, utilisez udev règles saisies sur le numéro de série de l'appareil. Courir udevadm info /dev/ttyUSB0 pour trouver la série pour chaque bras et créer des règles dans /etc/udev/rules.d/99-dk1.rules. Ceci est couvert en détail à matériel/dk1/logiciel.

Test de connexion Python – Les deux bras

Après avoir modifié la configuration, exécutez un test de connexion qui teste les trois appareils simultanément :

à partir de l'importateur dk1 BimanualRobot robot = BimanualRobot(config_path="~/dk1-config.yaml") robot.connect() # Print joint states for both arms — should update at 50Hz pour moi dans la plage (10): état = robot.get_joint_states() print(f"Gauche : {[f'{j:.2f}' pour j dans state.left]}") print(f"Droite : {[f'{j:.2f}' pour j dans state.right]}") imprimer("---") robot.disconnect()

Une exécution réussie imprime 10 paires de tableaux d’états conjoints avec des valeurs cohérentes et stables. Si vous voyez des valeurs NaN, une erreur de délai d'attente ou moins de 6 valeurs d'articulation par bras, vérifiez les attributions de chemin de périphérique dans votre fichier de configuration.

Vérification de synchronisation

Le contrôle le plus important dans cette unité consiste à vérifier que le mouvement du leader produit une réponse synchronisée du suiveur sans décalage perceptible :

à partir de l'importateur dk1 BimanualRobot, LeaderFollowerSession robot = BimanualRobot(config_path="~/dk1-config.yaml") session = LeaderFollowerSession (robot) # Start the leader/follower sync loop # Move the leader arm slowly — both followers should mirror immediately session.start() input("Appuyez sur Entrée pour arrêter...") session.stop()

Déplacez lentement le bras de guidage sur un arc de 30° sur une seule articulation. Les deux bras suiveurs doivent bouger à l’unisson sans délai visible. Si un suiveur est en retard de plus d'une demi-seconde sur l'autre, vérifiez le latency_tolerance_ms réglage et vérifiez la connexion USB du bras lent.

Erreurs et correctifs courants

Erreur Cause Réparer
SerialException: device not found Mauvais chemin de périphérique dans la configuration ou USB non connecté Courir ls /dev/ttyUSB* et mettre à jour les chemins de configuration. Vérifiez les connexions USB physiques.
SyncTimeoutError: follower_right Le bras suiveur droit ne répond pas dans les limites de la tolérance de latence Augmenter latency_tolerance_ms à 10, ou essayez un autre port USB. Vérifiez le câble pour déceler tout dommage.
Les états conjoints sont tous à zéro après la connexion Servos non activés — le bras est en mode veille Appel robot.enable_servos() avant de lire les états communs, ou activez-les d'abord via l'interface utilisateur Web.
Un suiveur reflète, l'autre est stationnaire Le leader est associé à un seul suiveur dans la configuration Vérifiez les deux follower_left et follower_right sont définis dans la configuration YAML.

Unité 2 terminée quand...

Le SDK DK1 est installé et dk1.__version__ renvoie 0.4.0 ou supérieur. Le test de connexion imprime des valeurs d'état d'articulation stables pour les deux bras à 50 Hz. Lorsque vous démarrez une session leader/suiveur et déplacez le bras leader, les deux bras suiveurs reflètent le mouvement sans décalage perceptible. Vous l'avez vérifié avec au moins 3 mouvements articulaires différents sur le bras leader.