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:ARISE Initiative Robosuite GR1Robot

From Leeroopedia
Knowledge Sources
Domains Robotics, Robot Modeling, Humanoid Robots
Last Updated 2026-02-15 07:00 GMT

Overview

The GR1Robot module defines the robot model and variants for the GR1 humanoid robot, a full-body bimanual legged manipulator with configurable lower-body actuation modes.

Description

This module provides the GR1 base class and three variant classes for the GR1 humanoid robot. The base GR1 class extends LeggedManipulatorModel and represents the full humanoid with 32 degrees of freedom, including torso, head, two 7-DOF arms, and two legs. It loads its MJCF definition from robots/gr1/robot.xml and configures Fourier dexterous hands (right and left) as default grippers.

The controller configuration covers six body parts: right arm, left arm, head, torso, right leg, and left leg, each with a GR1-specific default controller. The initial joint configuration places the arms in a slightly bent posture with elbows at approximately -90 degrees.

Three variants modify the base configuration for different use cases. GR1FixedLowerBody removes leg joint actuation and the free joint, fixing the lower body in place for tabletop manipulation tasks (20 DOF). GR1FloatingBody similarly removes leg actuation and the free joint but uses a FloatingLeggedBase for a mobile base that can be repositioned. GR1ArmsOnly removes legs, head, and torso actuation, leaving only the 14 arm DOF for arm-only manipulation tasks.

All variants use the _remove_joint_actuation and _remove_free_joint methods inherited from LeggedManipulatorModel to strip unnecessary joints and actuators from the MJCF model at construction time.

Usage

Use GR1 for full humanoid simulation with legs, GR1FixedLowerBody for tabletop bimanual tasks, GR1FloatingBody for mobile bimanual tasks, and GR1ArmsOnly for isolated arm control experiments.

Code Reference

Source Location

Signature

class GR1(LeggedManipulatorModel):
    arms = ["right", "left"]
    def __init__(self, idn=0)

class GR1FixedLowerBody(GR1):
    def __init__(self, idn=0)

class GR1FloatingBody(GR1):
    def __init__(self, idn=0)

class GR1ArmsOnly(GR1):
    def __init__(self, idn=0)

Import

from robosuite.models.robots.manipulators.gr1_robot import (
    GR1, GR1FixedLowerBody, GR1FloatingBody, GR1ArmsOnly
)

I/O Contract

Inputs

Name Type Required Description
idn int or str No Unique identification number or string for this robot instance (default: 0)

Outputs

Name Type Description
default_base str "NoActuationBase" (GR1, GR1FixedLowerBody, GR1ArmsOnly) or "FloatingLeggedBase" (GR1FloatingBody)
default_gripper dict {"right": "FourierRightHand", "left": "FourierLeftHand"}
default_controller_config dict Dict mapping body parts (right, left, head, torso, right_leg, left_leg) to controller configs
init_qpos np.ndarray Initial joint positions (size depends on variant: 32, 20, or 14)
arm_type str "bimanual"
_eef_name dict {"right": "right_eef", "left": "left_eef"}

Usage Examples

import robosuite

# Create environment with full GR1 humanoid
env = robosuite.make(
    "Lift",
    robots="GR1",
    has_renderer=True,
)
env.reset()

# Use the fixed lower body variant for tabletop tasks
env_fixed = robosuite.make(
    "Lift",
    robots="GR1FixedLowerBody",
    has_renderer=True,
)
env_fixed.reset()

# Use the arms-only variant for simplified control
env_arms = robosuite.make(
    "Lift",
    robots="GR1ArmsOnly",
    has_renderer=True,
)
env_arms.reset()

Related Pages

Page Connections

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