Guide de configuration de la main Orca
Suivez le cheminement étape par étape depuis le déballage jusqu'à la première prise en main. Prévoyez 3 à 4 heures au total sur votre première construction.
Assemblage et inspection
Disposez tous les composants avant de commencer : modules de doigts (5 ×), support paume/poignet, matériel de routage des tendons, attaches et tout module de capteur du bout des doigts en option.
- Modules de doigts : Enclenchez chaque module de doigt dans le cadre de la paume dans l'ordre : pouce, index, majeur, anneau, petit. Vérifiez que chaque articulation bouge librement avant d'acheminer les tendons.
- Support de poignet : Fixez l'ensemble paume à la plaque de poignet à l'aide des attaches fournies. Confirmez que le modèle de bride correspond à votre bras de robot.
- Acheminement des tendons : Acheminez chaque tendon (un par doigt) depuis la poulie de l'actionneur à travers les guides de conduit. Laissez 2 à 3 mm de jeu avant de tendre. Une tension excessive à ce stade provoque un grippage.
- Capteurs tactiles (en option) : Si vous installez des capteurs tactiles du bout des doigts, insérez-les dans les boîtiers du bout des doigts avant de fermer les coques des doigts. Acheminez les câbles des capteurs à travers le corps du doigt jusqu'au connecteur de la paume.
Installation du logiciel
Le orca_core Le package Python est la seule dépendance logicielle – il n’y a aucune exigence ROS. Il communique avec les 17 moteurs Feetech STS3215 via une seule connexion série USB à 3 Mbps en utilisant le protocole Dynamixel. Python 3.9+ est requis.
Option A — Installer via Poetry (recommandé) :
git clone https://github.com/orcahand/orca_core.git cd orca_core poetry install
Option B — Installateur via pip :
pip install orca_core
Accordez l'accès au port série USB sous 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. Ouvrir orca_core/models/orcahand_v1/config.yaml et mettre à jour le port avant de vous connecter, ou transmettez explicitement la chaîne de port lors de la construction OrcaHand().
Connectez-vous et vérifiez :
from orca_core import OrcaHand hand = OrcaHand() status = hand.connect() print(status) # (True, 'Connection successful')
Étalonnage
L'étalonnage entraîne chacun des 17 joints jusqu'à sa butée mécanique à une limite de courant réduite (450 unités brutes) pour établir des décalages de zéro par moteur. Calibrez toujours avant d'émettre des commandes de position : sauter cette étape peut entraîner des erreurs de position importantes ou un mouvement inattendu.
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() La méthode fait avancer chaque joint de manière itérative vers sa butée dure par incréments de 0,3° (configurable via calib_step_size), déclare un joint hébergé après 10 lectures stables consécutives à moins de 0,01° (configurable via calib_num_stable et calib_threshold), puis enregistre les décalages dans calibration.yaml. Réexécutez uniquement après des modifications matérielles.
Après l'étalonnage, déplacez toutes les articulations en position ouverte/zéro :
# Command all 17 joints to 0° (open position)
hand.set_joint_pos({joint: 0 for joint in hand.joint_ids})
Premier test de compréhension
Vérifier le contrôle conjoint à l'aide du orca_core API Python. Commandez les articulations individuelles par leur nom : le SDK traduit automatiquement les noms des articulations en ID de moteur via le joint_to_motor_map dans 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 une articulation n'atteint pas l'angle commandé, vérifiez l'acheminement des câbles et la tension des tendons de ce moteur. Chaque doigt utilise un servo Feetech STS3215 dédié ; la liaison est généralement un problème de routage ou de tension, et non un problème logiciel.
Intégration avec Robot Arm
Montez l'Orca Hand sur le bras de votre robot à l'aide de l'adaptateur de bride de poignet standard. La main est compatible avec OpenArm 101 et la plupart des bras avec un modèle de bride standard ISO 9283.
- Fixez la plaque de poignet à la bride effectrice terminale du bras à l'aide des boulons M4 selon le modèle fourni.
- Acheminez les câbles de signal et d'alimentation le long de la structure du bras, fixés avec des serre-câbles pour éviter tout accrochage pendant le mouvement.
- Dans l'espace de travail ROS2 de votre bras, ajoutez Orca Hand comme nœud effecteur final et lancez les contrôleurs du bras et de la main ensemble.
Pour une présentation complète des flux de travail de recherche sur les manipulations adroites avec la main Orca, consultez le Guide de recherche du SVRC.