Полный справочник по установке SDK находится по адресу аппаратное обеспечение/dk1/программное обеспечение. В этом модуле рассматриваются шаги настройки, специфичные для бимануального управления, выходящие за рамки установки SDK с одним плечом, которую вы, возможно, выполнили для OpenArm.

Установка SDK DK1.

DK1 SDK отделен от OpenArm SDK. Не пытайтесь запустить оружие DK1 с пакетом OpenArm — протокол прошивки отличается.

# Create an isolated virtual environment for DK1 work python3 -m венв ~/dk1-env источник ~/dk1-env/bin/activate # Install the DK1 SDK and bimanual extensions pip install dk1-sdk [двуручный] # Verify the install python -c "импортировать dk1; распечатать(dk1.__version__)" # Expected: 0.4.0 or higher

Настройте пару «лидер/последователь»

SDK считывает файл конфигурации YAML, в котором сообщается, какое последовательное устройство является ведущим, а какие устройства являются двумя ведомыми. Необходимо указать пути к устройствам в правильном порядке — SDK не определяет назначение ролей автоматически.

# Generate the default bimanual config file dk1-config генерировать --mode bimanual --output ~/dk1-config.yaml # Open and edit the config — set your actual device paths нано ~/dk1-config.yaml

Ключевые поля в dk1-config.yaml:

лидер: устройство: /dev/ttyUSB2 # the leader controller arm скорость передачи данных: 1000000 Follower_left: устройство: /dev/ttyUSB0 # left follower arm скорость передачи данных: 1000000 Follower_right: устройство: /dev/ttyUSB1 # right follower arm скорость передачи данных: 1000000 синхронизировать: частота_Гц: 50 # joint state sync rate latency_tolerance_ms: 5 # max allowed sync lag
Назначение пути устройства: Сопоставление физической руки с /dev/ttyUSBN зависит от порядка портов USB, который может меняться между перезагрузками. Чтобы создать стабильные псевдонимы, используйте udev правила, введенные в серийный номер устройства. Бегать udevadm info /dev/ttyUSB0 найти серийник для каждой руки и создать правила в /etc/udev/rules.d/99-dk1.rules. Подробно это описано на аппаратное обеспечение/dk1/программное обеспечение.

Тест соединения Python — обе руки

После редактирования конфигурации запустите тест соединения, который проверит все три устройства одновременно:

из dk1 импортировать BimanualRobot робот = BimanualRobot(config_path="~/dk1-config.yaml") робот.connect() # Print joint states for both arms — should update at 50Hz для меня в диапазоне (10): состояние = robot.get_joint_states() print(f"Left: {[f'{j:.2f}' для j в state.left]}") print(f"Right: {[f'{j:.2f}' for j в state.right]}") печать("---") робот.отключить()

Успешный запуск печатает 10 пар массивов объединенных состояний с согласованными, стабильными значениями. Если вы видите значения NaN, ошибку тайм-аута или менее 6 значений соединения на плечо, проверьте назначения путей к устройству в файле конфигурации.

Проверка синхронизации

Наиболее важной проверкой в ​​этом модуле является проверка того, что движение ведущего устройства вызывает синхронизированную реакцию ведомого без заметной задержки:

из dk1 импорт BimanualRobot, LeaderFollowerSession робот = BimanualRobot(config_path="~/dk1-config.yaml") сеанс = LeaderFollowerSession (робот) # Start the leader/follower sync loop # Move the leader arm slowly — both followers should mirror immediately сеанс.start() input("Нажмите Enter, чтобы остановить...") сеанс.стоп()

Медленно перемещайте ведущий рычаг по дуге 30° в одном суставе. Оба ведомых рычага должны двигаться синхронно, без видимой задержки. Если один ведомый отстает от другого более чем на полсекунды, проверьте latency_tolerance_ms настройки и проверьте USB-соединение медленного рычага.

Распространенные ошибки и исправления

Ошибка Причина Исправить
SerialException: device not found Неверный путь к устройству в конфигурации или USB не подключен. Бегать ls /dev/ttyUSB* и обновить пути конфигурации. Проверьте физические USB-соединения.
SyncTimeoutError: follower_right Правый ведомый рычаг не реагирует в пределах допуска по задержке Увеличивать latency_tolerance_ms до 10 или попробуйте другой порт USB. Проверьте кабель на наличие повреждений.
В соединении указаны все нули после соединения. Сервоприводы не включены — рука находится в режиме ожидания Вызов robot.enable_servos() перед чтением состояний суставов или сначала включите их через веб-интерфейс.
Один ведомый зеркальный, другой неподвижен Лидер связан только с одним последователем в конфигурации Проверьте оба follower_left и follower_right устанавливаются в конфигурации YAML.

Часть 2 завершена, когда...

DK1 SDK установлен и dk1.__version__ возвращает 0.4.0 или выше. Тест соединения выводит стабильные значения состояния соединения для обоих плеч при частоте 50 Гц. Когда вы начинаете сеанс «лидер/ведомый» и перемещаете ведущую руку, обе ведомые руки отражают движение без заметной задержки. Вы проверили это, выполнив как минимум 3 различных движения суставов на ведущей руке.