Die vollständige SDK-Installationsreferenz finden Sie unter hardware/dk1/software. In dieser Einheit werden die bimanualspezifischen Konfigurationsschritte behandelt, die über die einarmige SDK-Installation hinausgehen, die Sie möglicherweise für OpenArm durchgeführt haben.

Installieren Sie das DK1 SDK

Das DK1 SDK ist vom OpenArm SDK getrennt. Versuchen Sie nicht, DK1-Arme mit dem OpenArm-Paket auszuführen – das Firmware-Protokoll unterscheidet sich.

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

Konfigurieren Sie die Leader/Follower-Paarung

Das SDK liest eine YAML-Konfigurationsdatei, die ihm mitteilt, welches serielle Gerät der Leader und welche Geräte die beiden Follower-Arme sind. Sie müssen Gerätepfade in der richtigen Reihenfolge angeben – das SDK erkennt die Rollenzuweisung nicht automatisch.

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

Die Schlüsselfelder in dk1-config.yaml:

Leiter: Gerät: /dev/ttyUSB2 # the leader controller arm Baudrate: 1000000 follower_left: Gerät: /dev/ttyUSB0 # left follower arm Baudrate: 1000000 follower_right: Gerät: /dev/ttyUSB1 # right follower arm Baudrate: 1000000 synchronisieren: Frequenz_Hz: 50 # joint state sync rate latency_tolerance_ms: 5 # max allowed sync lag
Gerätepfadzuordnung: Die Zuordnung vom physischen Arm zum /dev/ttyUSBN hängt von der Reihenfolge der USB-Anschlüsse ab, die sich zwischen Neustarts ändern kann. Um stabile Aliase zu erstellen, verwenden Sie udev Regeln, die auf der Seriennummer des Geräts angegeben sind. Laufen udevadm info /dev/ttyUSB0 um die Seriennummer für jeden Arm zu finden und Regeln zu erstellen /etc/udev/rules.d/99-dk1.rules. Dies wird ausführlich unter beschrieben hardware/dk1/software.

Python-Verbindungstest – beide Arme

Führen Sie nach dem Bearbeiten der Konfiguration einen Verbindungstest durch, bei dem alle drei Geräte gleichzeitig getestet werden:

aus dk1 BimanualRobot importieren robot = BimanualRobot(config_path="~/dk1-config.yaml") robot.connect() # Print joint states for both arms — should update at 50Hz für i im Bereich(10): state = robot.get_joint_states() print(f"Left: {[f'{j:.2f}' für j in state.left]}") print(f"Right: {[f'{j:.2f}' for j in state.right]}") print("---") robot.disconnect()

Bei einem erfolgreichen Lauf werden 10 Paare gemeinsamer Zustands-Arrays mit konsistenten, stabilen Werten gedruckt. Wenn Sie NaN-Werte, einen Timeout-Fehler oder weniger als 6 Gelenkwerte pro Arm sehen, überprüfen Sie die Gerätepfadzuweisungen in Ihrer Konfigurationsdatei.

Synchronisierungsüberprüfung

Die wichtigste Prüfung in dieser Einheit ist die Überprüfung, ob die Bewegung des Vorläufers eine synchronisierte Reaktion des Nachläufers ohne wahrnehmbare Verzögerung hervorruft:

aus dk1 importieren BimanualRobot, LeaderFollowerSession robot = BimanualRobot(config_path="~/dk1-config.yaml") session = LeaderFollowerSession(Roboter) # Start the leader/follower sync loop # Move the leader arm slowly — both followers should mirror immediately session.start() input("Drücken Sie die Eingabetaste, um zu stoppen ...") session.stop()

Bewegen Sie den Führungsarm langsam in einem 30°-Bogen an einem einzelnen Gelenk. Beide Mitnehmerarme sollten sich ohne sichtbare Verzögerung gleichzeitig bewegen. Wenn ein Follower mehr als eine halbe Sekunde hinter dem anderen zurückbleibt, überprüfen Sie das latency_tolerance_ms Einstellung und überprüfen Sie die USB-Verbindung des langsamen Arms.

Häufige Fehler und Korrekturen

Fehler Ursache Fix
SerialException: device not found Falscher Gerätepfad in der Konfiguration oder USB nicht angeschlossen Laufen ls /dev/ttyUSB* und Konfigurationspfade aktualisieren. Überprüfen Sie die physischen USB-Verbindungen.
SyncTimeoutError: follower_right Der rechte Follower-Arm reagiert nicht innerhalb der Latenztoleranz Zunahme latency_tolerance_ms auf 10 oder versuchen Sie es mit einem anderen USB-Anschluss. Kabel auf Beschädigung prüfen.
Joint gibt nach dem Verbinden alle Nullen an Servos nicht aktiviert – Arm befindet sich im Standby-Modus Anruf robot.enable_servos() bevor Sie gemeinsame Zustände lesen, oder aktivieren Sie sie zuerst über die Web-Benutzeroberfläche.
Ein Anhänger spiegelt sich, der andere ist stationär Leader ist in der Konfiguration nur einem Follower zugeordnet Überprüfen Sie beides follower_left Und follower_right werden in der YAML-Konfiguration festgelegt.

Einheit 2 abgeschlossen, wenn...

Das DK1 SDK ist installiert und dk1.__version__ gibt 0.4.0 oder höher zurück. Der Verbindungstest druckt stabile Gelenkzustandswerte für beide Arme bei 50 Hz. Wenn Sie eine Leader/Follower-Sitzung starten und den Leader-Arm bewegen, spiegeln beide Follower-Arme die Bewegung ohne wahrnehmbare Verzögerung wider. Sie haben dies mit mindestens 3 verschiedenen Gelenkbewegungen am Führungsarm überprüft.