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 UnitreeG1

From Leeroopedia
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

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()

Related Pages

Page Connections

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