Guía de configuración de Orca Hand
Ruta completa paso a paso desde el desempaquetado hasta el primer agarre. Planifica de 3 a 4 horas en total para tu primera construcción.
Montaje e Inspección
Coloca todos los componentes antes de comenzar: módulos de dedo (5×), soporte de palma/muñeca, hardware de enrutamiento de tendones, sujetadores y cualquier módulo de sensor de punta de dedo opcional.
- Módulos de dedo: Coloca cada módulo de dedo en el marco de la palma en orden: pulgar, índice, medio, anular, meñique. Verifica que cada articulación se mueva libremente antes de enrutear los tendones.
- Soporte de muñeca: Adjunta el ensamblaje de la palma a la placa de la muñeca utilizando los sujetadores proporcionados. Confirma que el patrón de brida coincida con tu brazo robótico.
- Enrutamiento de tendones: Enruta cada tendón (uno por dedo) desde la polea del actuador a través de las guías de conducto. Deja 2-3 mm de holgura antes de tensar; tensar en exceso en esta etapa causa atascos.
- Sensores táctiles (opcional): Si instalas sensores táctiles en la punta de los dedos, colócalos en las carcasas de la punta de los dedos antes de cerrar las conchas de los dedos. Enruta los cables del sensor de regreso a través del cuerpo del dedo hasta el conector de la palma.
Instalación de software
La orca_core El paquete de Python es la única dependencia de software; no hay requisito de ROS. Se comunica con todos los 17 motores Feetech STS3215 a través de una única conexión USB serial a 3 Mbps utilizando el protocolo Dynamixel. Se requiere Python 3.9 o superior.
Opción A — Instalar a través de Poetry (recomendado):
git clone https://github.com/orcahand/orca_core.git cd orca_core poetry install
Opción B — Instalar a través de pip:
pip install orca_core
Conceder acceso al puerto serie USB en 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. Abierto orca_core/models/orcahand_v1/config.yaml y actualizar el port campo antes de conectar, o pasar la cadena del puerto explícitamente al construir OrcaHand().
Conectar y verificar:
from orca_core import OrcaHand hand = OrcaHand() status = hand.connect() print(status) # (True, 'Connection successful')
Calibración
La calibración lleva cada una de las 17 articulaciones a su tope mecánico con un límite de corriente reducido (450 unidades en bruto) para establecer los offsets cero por motor. Siempre calibra antes de emitir comandos de posición; omitir este paso puede causar grandes errores de posición o movimiento inesperado.
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() El método avanza iterativamente cada articulación hacia su tope mecánico en incrementos de 0.3° (configurable a través de calib_step_size), declara una articulación en casa después de 10 lecturas estables consecutivas dentro de 0.01° (configurable a través de calib_num_stable y calib_threshold), y luego guarda los offsets en calibration.yaml. Volver a ejecutar solo después de cambios de hardware.
Después de la calibración, mueve todas las articulaciones a la posición abierta/cero:
# Command all 17 joints to 0° (open position)
hand.set_joint_pos({joint: 0 for joint in hand.joint_ids})
Primera prueba de agarre
Verifica el control de la articulación usando el orca_core API de Python. Comanda articulaciones individuales por nombre; el SDK traduce los nombres de las articulaciones a IDs de motor automáticamente a través de joint_to_motor_map en 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()
Si alguna articulación no alcanza el ángulo comandado, verifica el enrutamiento del cable y la tensión del tendón para ese motor. Cada dedo utiliza un servo Feetech STS3215 dedicado; el bloqueo suele ser un problema de enrutamiento o tensión, no uno de software.
Integración con el Brazo Robótico
Monte la Mano Orca en su brazo robótico utilizando el adaptador de brida de muñeca estándar. La mano es compatible con OpenArm 101 y la mayoría de los brazos con un patrón de brida ISO 9283 estándar.
- Fije la placa de muñeca a la brida del efector final del brazo utilizando tornillos M4 en el patrón proporcionado.
- Rutee los cables de señal y de alimentación a lo largo de la estructura del brazo, asegurados con bridas para evitar enganchones durante el movimiento.
- En el espacio de trabajo ROS2 de su brazo, agregue la Mano Orca como un nodo de efector final y lance juntos los controladores del brazo y de la mano.
Para una guía completa de flujos de trabajo de investigación en manipulación hábil con la Mano Orca, consulte el guía de investigación SVRC.