robotOM1 Integrations with different machines

Unitree G1 Humanoid

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

uv run src/run.py unitree_g1_humanoid

Installation on Mac

brew install uv portaudio cmake

Install cycloneDDS via https://cyclonedds.io/docs/cyclonedds/latest/installation/installation.html.

git clone https://github.com/eclipse-cyclonedds/cyclonedds -b releases/0.10.x
cd cyclonedds && mkdir build install && cd build
cmake -DBUILD_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=$HOME/Documents/GitHub/cyclonedds/install ..
cmake --build . --target install

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:

[8268] 2.005  rss:4.7MB vcsw:0 ivcsw:472 tev:0%+1% recv:0%+1%
[8268] 3.005  rss:4.8MB vcsw:0 ivcsw:275 tev:0%+1% others:0%+1%

List CycloneDDS Topics on Mac

Then, compile and run the listtopics example:

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 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 and step 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 instructionsarrow-up-right. 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.

Last updated

Was this helpful?