Implementation:Haosulab ManiSkill UnitreeG1
| Knowledge Sources | |
|---|---|
| Domains | Robotics, Simulation, Humanoid_Control |
| Last Updated | 2026-02-15 08:00 GMT |
Overview
Concrete tool for simulating the full-body Unitree G1 humanoid robot in ManiSkill environments.
Description
The UnitreeG1 is a full-body humanoid with 37 active DOF: legs (hip pitch/roll/yaw, knee, ankle pitch/roll per leg = 12 joints), torso (1 joint), arms (shoulder pitch/roll/yaw, elbow pitch/roll per arm = 10 joints), and dexterous hands (7 finger joints per hand = 14 joints). The robot has a free root link (fix_root_link=False) and loads multiple collision meshes (load_multiple_collisions=True). Body stiffness is 50, damping 1, force limit 100. Gravity compensation is disabled. The joints are organized into lower_body_joints, upper_body_joints, left_hand_joints, and right_hand_joints for modular control. Provides helper methods for standing detection (is_standing) and fall detection (is_fallen). Also defines UnitreeG1Simplified variant with simplified leg meshes.
uid: unitree_g1
URDF path: {PACKAGE_ASSET_DIR}/robots/g1_humanoid/g1.urdf
Supported control modes: pd_joint_pos, pd_joint_delta_pos
Usage
Use UnitreeG1 for full-body humanoid locomotion, standing, and whole-body manipulation tasks. The dexterous hands enable combined locomotion and manipulation. Suitable for walking, standing up, and bipedal control benchmarks.
Code Reference
Source Location
- Repository: Haosulab_ManiSkill
- File: mani_skill/agents/robots/unitree_g1/g1.py
Signature
@register_agent()
class UnitreeG1(BaseAgent):
uid = "unitree_g1"
urdf_path = f"{PACKAGE_ASSET_DIR}/robots/g1_humanoid/g1.urdf"
fix_root_link = False
load_multiple_collisions = True
body_joints = ["left_hip_pitch_joint", ..., "right_two_joint"] # 37 joints
body_stiffness = 50
body_damping = 1
body_force_limit = 100
keyframes = dict(standing=Keyframe(pose=sapien.Pose(p=[0, 0, 0.755]), qpos=np.array([...])))
@register_agent()
class UnitreeG1Simplified(UnitreeG1):
uid = "unitree_g1_simplified_legs"
Import
from mani_skill.agents.robots.unitree_g1.g1 import UnitreeG1
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| (inherited from BaseAgent) |
Outputs
| Name | Type | Description |
|---|---|---|
| robot agent | UnitreeG1 | Configured full-body 37-DOF humanoid with legs, arms, and dexterous hands |
Usage Examples
Creating Environment with Robot
import gymnasium as gym
import mani_skill.envs
env = gym.make("UnitreeG1Stand-v1", robot_uids="unitree_g1")
obs, info = env.reset()