Open Source RoboticsRobots, software & learning

UnitreeCpp

Software

Python binding to Unitree SDK2 with a C++ communication backend and a G1 control example. [1]

Installation & first result →Official websiteGetting started

For
Developers integrating low-level G1 control on onboard compute [1]
Hardware
Unitree G1 [1]
Source rights
Named licenses are documented by part. Review licenses
Unknowns
operating system, compute requirements not fully established. Review gaps

Source researched · Not tested by us
Sources checked · Research details

Licenses & related hardware

Requirements · Research details and dates

On this page

Overview

UnitreeCpp exposes Unitree SDK2 through Python while keeping communication in a C++ backend. It targets developers running control code on a Unitree G1, including the onboard Jetson computer. The maintainers report lower communication overhead than the official Python SDK in their AMO setup; that comparison does not establish whole-policy latency for another deployment. [1]

Is this for you?

Known limitations
  • Example startup self-check failure is printed but not propagated by its constructor.
  • The example config uses net_if, despite README naming eth_if.
  • The example moves real joints and is not a passive connectivity check.

Editorial assessment from cited documentation; no runtime testing.

[1] [3] [4] · Editorial assessment

What you need

Languages / runtimes
  • Python
  • C++

[2] [3]

Dependencies
  • Installed Unitree SDK2 and Cyclone DDS libraries/headers
  • C++17, CMake >=3.15 and pybind11
  • Python >=3.8 reported tested by upstream

[1] [2]

Installation & first result

Open the upstream getting-started guide [3]

  • Install SDK2 libraries and headers.
  • Build the Python binding with pip install .
  • Review the G1 configuration and physical-motion example before operating a robot.

Editorial assessment from cited documentation; no runtime testing.

[1] [3] · Editorial assessment

Installation

Install SDK2 first, then pip install . from the binding checkout; custom SDK paths require CMake changes.

[1]

Hardware, models & data

Supported hardware
  • Unitree G1; Dex-3 hand and odometry services reported by upstream

[1]

Inputs and outputs

Python joint targets go to the SDK2 controller; joint and IMU state are exposed to the example.

[3]

Project notes

Build the binding around an installed SDK

This profile reviews release 1.0.4. Installation begins with Unitree SDK2, followed by pip install . in the binding checkout. The build requires C++17, CMake 3.15 or newer, pybind11, SDK2 and DDS libraries and headers. CMake stops with an error when the required SDK or DDS components cannot be found. A custom SDK installation path requires adjusting the build configuration. [1] [2] [6]

The README reports Python 3.8 or newer as tested, while the package metadata does not declare a Python version bound. Treat the upstream report as a starting point for an environment check, rather than a complete compatibility matrix. [1] [5]

The example is a motion command

The supplied example reads the starting joint positions and interpolates toward configured defaults over 200 steps, with a 0.02-second sleep per step. It sends commands to the robot. Review the joint mapping, gains and physical operating procedure before using it; this is not a passive connection test. The example configuration names the network setting net_if, although the README calls it eth_if. [3] [4] [1]

There is also a startup behavior to account for: the Python constructor calls self_check() but does not use its returned failure value. A printed failed check therefore does not stop that constructor. An integration should explicitly require valid state before issuing commands; we have not tested the underlying controller's failure handling on hardware. [3]

The reviewed example uses the G1 hg message route and raises NotImplementedError for its go route. The repository advertises Dex-3 and odometry support, but that does not establish compatibility with every robot configuration. Release 1.0.4 adds torso IMU state; the changelog identifies 1.0.3 as fixing a control-delay issue. [1] [3] [4]

The repository declares CC-BY-4.0 for its software and documentation. Unitree SDK2 and other dependencies retain their own terms. No pretrained model or dataset is needed for this binding's default-position example. We inspected source without building it, connecting a robot or verifying timing. [7] [3]

What we checked

Source researched only; no installation, training, benchmark or physical hardware test performed. No affiliate links or reused media.

Not yet established

  • Requirements: operating system, host computer

Updates

Upstream last updated
May 22, 2026 [6]
Latest release
May 22, 2026 [6]
Profile updated
Oct 17, 2026
Sources last checked
Oct 17, 2026
Next review
Nov 17, 2026
Reviewed revision
1.0.4 / e419746e0d8555e9c59f2bcf265144b7d3b2086e · software repository

Source files and licenses

Useful SDK binding under declared CC-BY-4.0 terms; hardware operation and external SDK permissions remain separate.

LayerAvailability / license
softwareavailable · CC-BY-4.0
Repository materials only; external components retain their own terms. [7]
documentationavailable · CC-BY-4.0
Repository materials only; external components retain their own terms. [7]

The SDK binding does not require pretrained weights.

The default-position example uses configured joint targets.

References

Each source links to the exact revision we read. “Used for” shows where this page relies on it.

Correction guidance · Discussion is not enabled · Profile format 0.7.0-draft.5

Change history