Unitree G1 Humanoid
Unitree G1 Humanoid
- Useful links and Reading
- Basic Command
- ORIN/G1: System Description
- Control via Unitree Hand Controller
- Boot from Chair
- Special DEBUG state
- Using the Internal Orin
- Fixing the broken CycloneDDS installation on the Nvidia Orin
- CycloneDDS Testing and Usage on your Development Computer
- Terminal based setup of Bluetooth audio devices
Useful links and Reading
https://support.unitree.com/home/en/G1_developer https://github.com/unitreerobotics/avp_teleoperate
C++ SDK https://github.com/unitreerobotics/unitree_sdk2
Python SDK https://github.com/unitreerobotics/unitree_sdk2_python
Basic Command
Run
Installation on Mac
Install cycloneDDS via https://cyclonedds.io/docs/cyclonedds/latest/installation/installation.html.
At this point, if you are connected to a robot and you run ./ddsperf sanity
(located in $HOME/Documents/GitHub/cyclonedds/install/bin/
or whatever you chose) you should start to see data:
List CycloneDDS Topics on Mac
Then, set your wired Ethernet adapter to 192.168.123.99
and 255.255.255.0
, double check via ifconfig
, and set the correct Ethernet adapter name in NetworkInterface
:
Now, when you run ./listtopics
, you should see an extensive data dump:
The Ethernet adapter you set above (such as en0
) is the value you should provide to /config/unitree_g1_humanoid.json
.
Then add the optional Python CycloneDDS module to OM1:
Installation on Linux
You will need:
- OM1
- uv
- ffmpeg (for audio, otherwise the audio out will not work due to missing
ffprobe
) - v4l-utils (for video)
- CycloneDDS (for DDS comms to the G1 motion client)
v4l-utils is also useful to debug video problems. WARNING: The camera system, if not correctly configured, has a tendency to bring down the entire USB bus. FIX: reboot the humanoid.
Set the correct CYCLONEDDS_HOME
env var. This is where the actual CycloneDDS is installed on your computer:
If you do not do this correctly, installation of the Python CycloneDDS, a later step, will fail since it cannot find the correct libraries. Note: make absolutely sure CYCLONEDDS_HOME
actually points to the CycloneDDS install /lib. This can be confusing, since if you install indirectly via unitree_ros2
, then the location of the CycloneDDS libraries will be in slightly different location than if you install directly, via git clone https://github.com/eclipse-cyclonedds/cyclonedds
.
Then add the optional Python CycloneDDS module to OM1:
Note: on first invocation, the system sometimes cannot find the Unitree libraries. This should resolve by itself quickly.
ORIN/G1: System Description
Your development computer will (should) be at 192.168.123.99
The LIDAR is 192.168.123.120
The internal control computer (RockChip, aka the operation and control computing unit
) is at 192.168.123.161
The internal development computer (Orin 16GB, aka the development computing unit
) is at 192.168.123.164
Useful commands:
ORIN: Set default input and output Audio devices
Control via Unitree Hand Controller
Hang G1 on gantry
Turn on (short press, long press)
Wait for boot to complete
When the G1 boots, it is in damp
state
Use the hand controller to command “L1+A” and “L1+UP”\
The system is then ready to move using the ai_sport
client. The system will respond to manual controller and SDK commands.
- Press “L1+A” -> EMERGENCY DAMP / SINK TO FLOOR
- Press “L1+UP” -> Stand firmly (aka “lock stand”). The arms will move slightly. The system is now in the “ready” state.
- Lower the G1 to the ground (but do not unclip her yet). Stability not yet running - she will fall over if let go.
- Press “R2+X” -> Start motion control. The arms will jump outwards and she will actively control her stability.
- Press “Start” to switch back and forth between
stand
andstep in place
.
Other actions:
- “SELECT + Y” -> Wave Hand. Alternates sides.
- “SELECT + A” -> Handshake. Hold for movement to complete. Wait 3s and press again to relax arm to initial state.
- “SELECT + X” -> Turn around and wave hand.s
Use the joysticks to move forwards and backwards, and to rotate/turn
Boot from Chair
This is similar to boot from gantry, except, when you press “L1+UP”, you have to help the humanoid stand up, while it straightens itself. For the sit-down procedure, back up the chair behind the robot, select “L1+LEFT”, and help the humanoid settle back into the chair.
Special DEBUG state
Avoid this mode since it disables all high level motion since it turns off the ai_sport
client.
- Press L2+R2 -> Enter DEBUG STATE
- Press L2+A -> Diagnostic Posture (Arms bent)
- Press L2+B -> Relax arms, damping state
To exit this mode, reboot the G1.
Using the Internal Orin
SSH to Orin via
The default password is 123
but you should obviously change this. Result:
Select foxy(1)
.
Fixing the broken CycloneDDS installation on the Nvidia Orin
The default installation of CycloneDDS on the G1 Orin is broken, since it does not support the newer unitree_hg
IDL data format for the G1. Solution: remove the default CycloneDDS installation and reinstall following the Unitree ROS2 installation instructions. The unitree_hg
bug was fixed in early Dec. 2024 in this commit: unitreerobotics/unitree_ros2@b34fdf7.
You will need to export suitable env variables and correct the setting in .bashrc
and in $HOME/unitree_ros2/setup.sh
. Add this to the .bashrc
:
Set $HOME/unitree_ros2/setup.sh
to
Source the setup.sh
via source ~/unitree_ros2/setup.sh
. Finally, you should start to see data.
Here is what will be visible on an external development machine at .99
, for example, using ./bin/listtopics
:
Terminal based setup of Bluetooth audio devices
This is only needed on the headless Orin, otherwise (e.g. on the Mac) just use the system settings.
Was this page helpful?