Implementation:ARISE Initiative Robosuite InspireHands
| Knowledge Sources | |
|---|---|
| Domains | Robotics, Simulation, MJCF_Modeling |
| Last Updated | 2026-02-15 07:00 GMT |
Overview
InspireHands defines the dexterous Inspire left and right hand gripper models for the GR1 humanoid robot in robosuite.
Description
This module provides two classes, InspireLeftHand and InspireRightHand, both extending GripperModel. These represent the Inspire series five-fingered dexterous hands designed for the GR1 humanoid robot, each with 6 degrees of freedom in control space that map to 12 physical joints through the format_action method.
The format_action method implements a joint coupling scheme where a 6-dimensional action vector is expanded to 12 joint values using the index mapping [0,0,1,1,2,2,3,3,4,4,4,5]. This differs from the Fourier hands in that the thumb has 3 coupled joints (index 4 is repeated three times) rather than 2, resulting in 12 total joints instead of 11. This coupling replaces MuJoCo equality constraints, which were found to introduce finger movement lag.
Both hands share identical control properties: a grasp speed of 0.15, initial joint positions of all zeros (12 joints), and grasp configurations mapping -1 (open) and 1 (close) to specific 6-element joint angle arrays. The left hand uses collision geometry names prefixed with l_ while the right hand uses r_, each covering thumb (4 geometries: proximal, proximal_2, middle, distal), index, middle, ring, and pinky fingers with proximal and distal collision geometries.
Usage
Use InspireLeftHand or InspireRightHand when configuring a GR1 humanoid robot with Inspire-series dexterous hands. These grippers are typically assigned through the robot model configuration and support full five-finger grasping tasks requiring dexterous manipulation.
Code Reference
Source Location
- Repository: ARISE_Initiative_Robosuite
- File: robosuite/models/grippers/inspire_hands.py
Signature
class InspireLeftHand(GripperModel):
def __init__(self, idn=0):
class InspireRightHand(GripperModel):
def __init__(self, idn=0):
Import
from robosuite.models.grippers.inspire_hands import InspireLeftHand, InspireRightHand
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| idn | int or str | No | Unique identification number or string for this gripper instance. Default: 0 |
Outputs
| Name | Type | Description |
|---|---|---|
| InspireLeftHand / InspireRightHand instance | GripperModel | Dexterous hand model with 6 DOF control and 12 physical joints |
| init_qpos | np.array | Array of 12 zeros representing the default open position |
| dof | int | Returns 6 (control degrees of freedom) |
| speed | float | Returns 0.15 (grasp speed) |
| grasp_qpos | dict | Maps -1 (open) and 1 (close) to 6-element joint angle arrays |
Usage Examples
from robosuite.models.grippers.inspire_hands import InspireLeftHand, InspireRightHand
import numpy as np
# Create left and right Inspire hand instances
left_hand = InspireLeftHand(idn=0)
right_hand = InspireRightHand(idn=0)
# Format a 6-DOF action to 12 joint commands
action = np.array([0.5, -0.3, 0.2, 0.1, -0.5, 0.8])
joint_commands = left_hand.format_action(action)
# joint_commands has shape (12,) due to joint coupling
# Access initial joint positions
init_pos = left_hand.init_qpos # 12 zeros
print(f"DOF: {left_hand.dof}") # 6
print(f"Speed: {left_hand.speed}") # 0.15