UnitreeCpp
SoftwarePython 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
- License
- CC-BY-4.0 · Details by part
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.
What you need
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.
- Installation
Install SDK2 first, then pip install . from the binding checkout; custom SDK paths require CMake changes.
Hardware, models & data
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
Source files and licenses
Useful SDK binding under declared CC-BY-4.0 terms; hardware operation and external SDK permissions remain separate.
| Layer | Availability / license |
|---|---|
| software | available · CC-BY-4.0 Repository materials only; external components retain their own terms. [7] |
| documentation | available · 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.
- S001 Overview and installation
Revision, date & where cited
HansZ8/unitree_cpp contributors · github.com · revision
e419746· Accessed Oct 17, 2026
Used for: Overview, Is this for you?, What you need, Installation & first result and 3 more - S002 Build requirements
Revision, date & where cited
HansZ8/unitree_cpp contributors · github.com · revision
e419746· Accessed Oct 17, 2026
Used for: What you need, Build the binding around an installed SDK - S003 Physical control example
Revision, date & where cited
HansZ8/unitree_cpp contributors · github.com · revision
e419746· Accessed Oct 17, 2026
Used for: Is this for you?, What you need, Installation & first result, Hardware, models & data and 1 more - S004 G1 configuration
Revision, date & where cited
HansZ8/unitree_cpp contributors · github.com · revision
e419746· Accessed Oct 17, 2026
Used for: Is this for you?, The example is a motion command - S005 Package metadata
Revision, date & where cited
HansZ8/unitree_cpp contributors · github.com · revision
e419746· Accessed Oct 17, 2026
Used for: Build the binding around an installed SDK - S007 HansZ8/unitree_cpp: LICENSE
Revision, date & where cited
HansZ8/unitree_cpp contributors · github.com · revision
e419746· Accessed Oct 17, 2026
Used for: The example is a motion command, Source files and licenses - S006 Reviewed release and revision
Revision, date & where cited
HansZ8/unitree_cpp / GitHub · github.com · revision
e419746· 1.0.4 / · Accessed Oct 17, 2026
Used for: Build the binding around an installed SDK, What we checked
Correction guidance · Discussion is not enabled · Profile format 0.7.0-draft.5