Руководство по настройке Orca Hand
Полный пошаговый путь от распаковки до первого знакомства. Запланируйте в общей сложности 3–4 часа на первую сборку.
Сборка и проверка
Перед началом работы разложите все компоненты: модули для пальцев (5 шт.), крепление для ладони/запястья, приспособления для прокладки сухожилий, крепления и любые дополнительные модули датчиков на кончиках пальцев.
- Пальцевые модули: Вставьте каждый модуль пальца в рамку ладони по порядку — большой, указательный, средний, безымянный, мизинец. Прежде чем прокладывать сухожилия, убедитесь, что каждое соединение свободно перемещается.
- Крепление на запястье: Прикрепите блок ладони к пластине для запястья с помощью прилагаемых крепежных элементов. Убедитесь, что рисунок фланца соответствует вашей руке робота.
- Маршрутизация сухожилий: Проложите каждое сухожилие (по одному на каждый палец) от шкива привода через направляющие кабелепровода. Перед натяжением оставьте провисание на 2–3 мм — чрезмерное натяжение на этом этапе приведет к заеданию.
- Тактильные датчики (опция): При установке тактильных датчиков на кончиках пальцев вставьте их в корпуса для кончиков пальцев, прежде чем закрывать корпуса пальцев. Проложите кабели датчиков обратно через корпус пальца к разъему для ладони.
Установка программного обеспечения
The orca_core Пакет Python является единственной зависимостью программного обеспечения — требований к ROS нет. Он обменивается данными со всеми 17 двигателями Feetech STS3215 через одно последовательное соединение USB со скоростью 3 Мбит/с с использованием протокола Dynamixel. Требуется Python 3.9+.
Вариант А — Установить через Poetry (рекомендуется):
git clone https://github.com/orcahand/orca_core.git cd orca_core poetry install
Вариант Б — Установка через pip:
pip install orca_core
Предоставьте доступ к последовательному порту USB в Linux:
# Add your user to the dialout group (requires logout/login to take effect) sudo usermod -aG dialout $USER # Or grant temporary access without logging out sudo chmod 666 /dev/ttyUSB0
/dev/tty.usbserial-FT4TFV01. Открыть orca_core/models/orcahand_v1/config.yaml и обновить port поле перед подключением или явно передайте строку порта при построении OrcaHand().
Подключитесь и проверьте:
from orca_core import OrcaHand hand = OrcaHand() status = hand.connect() print(status) # (True, 'Connection successful')
Калибровка
Калибровка приводит каждое из 17 соединений к механическому жесткому останову при пониженном пределе тока (450 необработанных единиц), чтобы установить смещение нуля для каждого двигателя. Всегда проводите калибровку перед подачей команд положения — пропуск этого шага может привести к серьезным ошибкам положения или неожиданному движению.
from orca_core import OrcaHand hand = OrcaHand() hand.connect() # Drives all joints to hard stops at calib_current=450 to establish zero offsets hand.calibrate() # Calibration results are saved automatically to: # models/orcahand_v1/calibration.yaml
calibrate() Метод итеративно приближает каждое соединение к жесткому упору с шагом 0,3° (настраивается через calib_step_size), объявляет соединение после 10 последовательных стабильных показаний с точностью до 0,01° (настраивается через calib_num_stable и calib_threshold), затем сохраняет смещения в calibration.yaml. Повторный запуск только после изменения оборудования.
После калибровки переместите все соединения в открытое/нулевое положение:
# Command all 17 joints to 0° (open position)
hand.set_joint_pos({joint: 0 for joint in hand.joint_ids})
Первый тест на захват
Проверьте совместное управление с помощью orca_core API Python. Управляйте отдельными соединениями по имени — SDK автоматически преобразует имена соединений в идентификаторы двигателей через joint_to_motor_map в config.yaml.
from orca_core import OrcaHand
hand = OrcaHand()
hand.connect()
hand.calibrate()
# --- Read current joint positions (degrees) ---
positions = hand.get_joint_pos()
print(positions)
# e.g. {'thumb_mcp': 0.0, 'thumb_abd': 0.0, 'index_mcp': 0.0, ...}
# --- Make a fist: flex all MCP and PIP joints ---
hand.set_joint_pos({
"index_mcp": 90, "index_pip": 110,
"middle_mcp": 90, "middle_pip": 110,
"ring_mcp": 90, "ring_pip": 110,
"pinky_mcp": 90, "pinky_pip": 110,
"thumb_mcp": 30, "thumb_pip": 100,
})
# --- Open hand back to zero ---
hand.set_joint_pos({joint: 0 for joint in hand.joint_ids})
# --- Torque control ---
hand.enable_torque() # Enable torque on all motors
hand.disable_torque(motor_ids=[1, 2]) # Disable specific motors (by ID)
# --- Disconnect (disables torque, closes serial port) ---
hand.disconnect()
Если какое-либо соединение не достигает заданного угла, проверьте прокладку кабеля и натяжение сухожилий для этого двигателя. Для каждого пальца используется отдельный сервопривод Feetech STS3215; привязка обычно связана с маршрутизацией или натяжением, а не с программным обеспечением.
Интеграция с роботом-манипулятором
Установите Orca Hand на руку робота с помощью стандартного фланцевого адаптера для запястья. Рука совместима с OpenArm 101, а большинство рук имеют фланцы стандарта ISO 9283.
- Прикрепите пластину запястья к фланцу концевого рабочего органа руки с помощью болтов M4 согласно предоставленной схеме.
- Проложите сигнальные и силовые кабели вдоль конструкции рычага, закрепив их кабельными стяжками, чтобы предотвратить зацепление во время движения.
- В рабочей области ROS2 вашей руки добавьте Orca Hand в качестве узла конечного эффектора и запустите контроллеры руки и кисти вместе.
Полное описание рабочих процессов исследования ловких манипуляций с помощью Orca Hand см. Руководство по исследованию SVRC.