Skip to content

Grasp Taxonomy

Named grasps are foundational for establishing common vocabularies in manipulation research. Standardizing these poses across the Dexterous Hand SDK ensures high reproducibility when evaluating grasping algorithms, sharing benchmark datasets, and comparing research outcomes.

The Grasp Library

The GraspLibrary includes 12 predefined grasp poses, inspired by established robotic taxonomies.

Grasp Name Description Typical Object Joint Angle Range (rad)
relaxed_open Slightly open rest posture for transport and inspection. None (Idle) ~0.08
precision_pinch Thumb and index fingertip contact. Pegs, beads 0.08 - 0.70
tripod Three-point precision grasp. Pens, markers 0.18 - 0.70
lateral_pinch Thumb pad against the side of the index finger. Cards, keys 0.18 - 0.72
index_point Index finger extended, others curled. Buttons, screens 0.00 - 0.86
cylindrical_power Power grasp wrapping all fingers. Handles, bottles 0.55 - 0.90
spherical_power Spread-finger power grasp. Balls, knobs 0.62 - 0.82
hook Fingers curled without thumb opposition. Bags, handles 0.05 - 1.08
platform Flat extended-finger support posture. Trays ~0.05
open Alias for relaxed_open. None (Idle) N/A
pinch Alias for precision_pinch. Pegs, beads N/A
cylindrical Alias for cylindrical_power. Handles, bottles N/A

Cutkosky Taxonomy Overview

The grasp poses are heavily inspired by the Cutkosky grasp taxonomy (Cutkosky 1989), a seminal work in robotics. The taxonomy fundamentally divides grasps into two main branches: - Power Grasps: Emphasize stability and force. The object is typically held firmly against the palm and the palmar surfaces of the fingers (e.g., cylindrical_power, spherical_power). - Precision Grasps: Emphasize dexterity and sensitivity. The object is held with the tips of the fingers and thumb, allowing for fine manipulation (e.g., precision_pinch, tripod).

Using the Grasp Library

You can easily retrieve a predefined pose from the library and command the hand:

from dexterous_hand.hand import Hand

hand = Hand.mock()
# Retrieve the grasp definition
tripod_pose = hand.grasps.get("tripod")

# Command the hand to move to the grasp
hand.move_to_grasp("tripod")

Defining Custom Poses

For specialized tasks, you can define custom grasp poses and integrate them into your workflow:

from dexterous_hand.grasp_library import GraspPose

custom_pose = GraspPose(
    name="custom_pinch",
    joint_positions_rad={
        "thumb_flex": 0.5,
        "index_flex": 0.5,
        "middle_flex": 0.0,
        "ring_flex": 0.0,
        "little_flex": 0.0,
    },
    description="A moderate pinch for fragile objects."
)

# Command the custom positions directly
hand.move_joints(custom_pose.joint_positions_rad)

Research Citation Note: If utilizing these standard poses in academic work, consider referencing the foundational taxonomy: Cutkosky, M. R. (1989). On grasp choice, grasp models, and the design of hands for manufacturing tasks. IEEE Transactions on Robotics and Automation, 5(3), 269-279.