Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Haosulab ManiSkill UnitreeH1WithHands

From Leeroopedia
Knowledge Sources
Domains Robotics, Simulation, Humanoid_Control
Last Updated 2026-02-15 08:00 GMT

Overview

Concrete tool for simulating the Unitree H1 humanoid robot with dexterous hands (upper body only) in ManiSkill environments.

Description

The UnitreeH1WithHandsUpperBodyOnly is an upper-body-only variant of the H1 humanoid with dexterous hands. It has a free root link and disables self-collisions. The body joints include 8 upper-body joints (shoulder pitch/roll/yaw and elbow for both arms), plus 6 arm/hand joints (left_hand_joint, right_hand_joint, and 4 right thumb joints: proximal yaw/pitch, intermediate, distal). The full H1 with hands (including legs) is currently commented out due to a simulation bug with all fingers. Controller configurations separate body joints from arm/hand joints, both using pd_joint_pos and pd_joint_delta_pos modes with gravity compensation disabled.

uid: unitree_h1_with_hands_upper_body_only

URDF path: {ASSET_DIR}/robots/unitree_h1/urdf/h1_with_hand.urdf

Supported control modes: pd_joint_pos, pd_joint_delta_pos

Usage

Use UnitreeH1WithHands for upper-body manipulation tasks that require dexterous hand control on a humanoid platform. The combination of arm reach and finger dexterity enables complex manipulation scenarios. Note that the full-body variant with hands is currently not available due to simulation constraints.

Code Reference

Source Location

Signature

@register_agent()
class UnitreeH1WithHandsUpperBodyOnly(BaseAgent):
    uid = "unitree_h1_with_hands_upper_body_only"
    urdf_path = f"{ASSET_DIR}/robots/unitree_h1/urdf/h1_with_hand.urdf"
    fix_root_link = False
    load_multiple_collisions = True
    disable_self_collisions = True
    body_joints = ["left_shoulder_pitch_joint", ..., "right_elbow_joint"]  # 8 joints
    arm_hand_joints = ["left_hand_joint", "right_hand_joint",
                       "R_thumb_proximal_yaw_joint", ..., "R_thumb_distal_joint"]  # 6 joints
    keyframes = dict(standing=Keyframe(pose=sapien.Pose(p=[0, 0, 0.975]), qpos=np.array([...])))

Import

from mani_skill.agents.robots.unitree_h1.h1_dextrous_hand import UnitreeH1WithHandsUpperBodyOnly

I/O Contract

Inputs

Name Type Required Description
(inherited from BaseAgent)

Outputs

Name Type Description
robot agent UnitreeH1WithHandsUpperBodyOnly Configured upper-body humanoid with shoulder/elbow joints and dexterous hand control

Usage Examples

Creating Environment with Robot

import gymnasium as gym
import mani_skill.envs

env = gym.make("PickCube-v1", robot_uids="unitree_h1_with_hands_upper_body_only")
obs, info = env.reset()

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment