Implementation:Haosulab ManiSkill AllegroHand
| Knowledge Sources | |
|---|---|
| Domains | Robotics, Simulation, Dexterous_Manipulation |
| Last Updated | 2026-02-15 08:00 GMT |
Overview
Concrete tool for simulating the Allegro Hand (right and left variants) dexterous robot hand in ManiSkill environments.
Description
The AllegroHandRight is a 16-DOF dexterous hand with four fingers: thumb, index, middle, and ring. Each finger has 4 joints (joint_0.0 through joint_15.0). The hand is fixed in space (no floating base). Tip links have high-friction materials (static=2.0, dynamic=1.0) for stable contact. The robot provides proprioceptive observations including palm pose and tip poses for all four fingertips. Joint stiffness is 4e2, damping is 1e1, and force limit is 5e1. The file also defines AllegroHandLeft which inherits from AllegroHandRight with a different URDF.
uid: allegro_hand_right / allegro_hand_left
URDF path: {PACKAGE_ASSET_DIR}/robots/allegro/allegro_hand_right_glb.urdf (right) / allegro_hand_left.urdf (left)
Supported control modes: pd_joint_delta_pos, pd_joint_pos, pd_joint_target_delta_pos
Usage
Use AllegroHand for dexterous in-hand manipulation tasks such as object rotation, reorientation, and finger gaiting. The 16-DOF design allows complex finger coordination. Suitable for benchmarking dexterous manipulation policies where a fixed hand must manipulate objects using only finger motions.
Code Reference
Source Location
- Repository: Haosulab_ManiSkill
- File: mani_skill/agents/robots/allegro_hand/allegro.py
Signature
@register_agent()
class AllegroHandRight(BaseAgent):
uid = "allegro_hand_right"
urdf_path = f"{PACKAGE_ASSET_DIR}/robots/allegro/allegro_hand_right_glb.urdf"
joint_names = ["joint_0.0", ..., "joint_15.0"] # 16 joints
joint_stiffness = 4e2
joint_damping = 1e1
joint_force_limit = 5e1
tip_link_names = ["link_15.0_tip", "link_3.0_tip", "link_7.0_tip", "link_11.0_tip"]
keyframes = dict(palm_side=Keyframe(...), palm_up=Keyframe(...))
@register_agent()
class AllegroHandLeft(AllegroHandRight):
uid = "allegro_hand_left"
Import
from mani_skill.agents.robots.allegro_hand.allegro import AllegroHandRight, AllegroHandLeft
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| (inherited from BaseAgent) |
Outputs
| Name | Type | Description |
|---|---|---|
| robot agent | AllegroHandRight | Configured 16-DOF dexterous hand with PD joint controllers and proprioceptive tip/palm pose feedback |
Usage Examples
Creating Environment with Robot
import gymnasium as gym
import mani_skill.envs
env = gym.make("RotateSingleObjectInHand-v1", robot_uids="allegro_hand_right")
obs, info = env.reset()