Skip to main content
The Unitree G1 is a full-body humanoid robot with 29 degrees of freedom. It supports both simulation and real hardware deployment, with advanced features including arm inverse kinematics, gravity compensation, and optional locomotion controllers.

Overview

The Unitree G1 is designed for:
  • Whole-body manipulation
  • Bipedal locomotion
  • Research and development
  • Simulation and real-world deployment
  • Vision-based control with remote cameras

Key Features

  • 29 DOF: Full-body articulation
  • Dual Arms: 7-DOF arms with IK support
  • Legs: Bipedal locomotion with balance control
  • Waist: 3-DOF torso articulation
  • Wrists: 3-DOF dexterous wrists
  • Simulation: MuJoCo simulation support
  • Locomotion: Optional GROOT or Holosoma controllers
  • Cameras: ZMQ-based remote camera streaming

Hardware Specifications

Joint Configuration (29 DOF)

Left Leg (6 DOF):
  • Hip: pitch, roll, yaw
  • Knee: pitch
  • Ankle: pitch, roll
Right Leg (6 DOF):
  • Hip: pitch, roll, yaw
  • Knee: pitch
  • Ankle: pitch, roll
Waist (3 DOF):
  • Yaw, roll, pitch
Left Arm (4 DOF):
  • Shoulder: pitch, roll, yaw
  • Elbow: pitch
Right Arm (4 DOF):
  • Shoulder: pitch, roll, yaw
  • Elbow: pitch
Left Wrist (3 DOF):
  • Roll, pitch, yaw
Right Wrist (3 DOF):
  • Roll, pitch, yaw

Control Gains

Default PID gains are configured per body part:

Installation

Simulation Mode

For MuJoCo simulation:

Real Hardware

For real Unitree G1 robot:
Ensure network connectivity to the robot (default IP: 192.168.123.164).

Configuration

Simulation Configuration

Real Robot Configuration

With Locomotion Controller

Configuration Parameters

bool
default:"true"
Whether to use MuJoCo simulation or real hardware
str
default:"192.168.123.164"
IP address of the Unitree G1 robot (for real hardware)
float
default:"1.0/250.0"
Control loop timestep in seconds (250 Hz default)
list[float]
Position gains for all 29 joints (auto-configured from body parts)
list[float]
Velocity gains for all 29 joints (auto-configured from body parts)
list[float]
Default joint positions (29 values, all zeros by default)
bool
default:"false"
Enable gravity compensation for arms using IK solver
str | None
default:"None"
Locomotion controller class name: "GrootLocomotionController", "HolosomaLocomotionController", or None
dict[str, CameraConfig]
ZMQ-based remote camera configurations

Usage

Basic Usage (Simulation)

Real Hardware Usage

Observation Format

Simulation

Real Hardware

Includes additional IMU data:

Action Format

Advanced Features

Gravity Compensation

Automatically compensate for arm weight:

Inverse Kinematics

The G1 includes an arm IK solver:

Locomotion Controllers

GROOT Controller

Holosoma Controller

Remote Cameras

For ZMQ-based camera streaming:

Simulation vs Real Hardware

Simulation (MuJoCo)

  • Runs locally without hardware
  • No SDK required
  • Faster than real-time possible
  • No IMU data
  • No motor temperature/torque feedback
  • Ideal for development and testing

Real Hardware

  • Requires Unitree SDK2
  • Network connection to robot
  • Real-time control (250 Hz)
  • Full sensor feedback (IMU, motor states)
  • Safety considerations required

Safety Considerations

Control Rate

Joint Limits

The robot enforces hardware joint limits automatically. Ensure your actions respect these limits.

Emergency Stop

For real hardware, implement an emergency stop:

Troubleshooting

SDK Not Found (Real Hardware)

Network Connection Failed

Control Rate Too Slow

Simulation Not Starting

Implementation Details

  • SDK: Unitree SDK2 (for real hardware)
  • Simulation: MuJoCo
  • Control: PD control with configurable gains
  • IK: Custom G1_29_ArmIK solver
  • Source: /home/daytona/workspace/source/src/lerobot/robots/unitree_g1/unitree_g1.py
  • Config: /home/daytona/workspace/source/src/lerobot/robots/unitree_g1/config_unitree_g1.py

Robot Overview

See all supported robots

Environments

MuJoCo simulation environments

Recording Data

Record whole-body demonstrations

ZMQ Cameras

Remote camera setup

External Resources