ROS 2 auf Unitree Robotern funktioniert ohne Reverse Engineering und ohne Übersetzungsknoten: Der Roboter veröffentlicht seine Daten über DDS (CycloneDDS), und ROS 2 verwendet DDS als Kommunikationsschicht. Das offizielle Paket unitree_ros2 liefert die Nachrichtendefinitionen und die Konfigurationsskripte. Die Schritte unten folgen dem offiziellen README.
Welche Unitree Roboter ROS 2 unterstützen
Softwareentwicklung ist nur auf den Entwicklerversionen vorgesehen. Beim Go2 sieht das offizielle Datenblatt den SDK-Zugang für eigene Softwareentwicklung bei der EDU-Version vor, nicht bei Air und Pro; beim G1 gilt dasselbe mit dem G1 EDU.
| Roboter | Nachrichten in unitree_ros2 | ROS 2 Beispiele im Repository |
|---|---|---|
| Go2 EDU | unitree_go | Sport Client, Stand, Roboterstatus, Low-Level-Steuerung |
| B2 / B2W | unitree_go | Sport Client, Stand |
| G1 EDU | unitree_hg | g1_low_level_example |
| H2 | unitree_hg | h2_loco_client (High-Level), h2_ankle_swing_example (Low-Level) |
| H1 / H1-2 | unitree_go / unitree_hg | Low-Level-Steuerung H1-2 |
Für R1 und A2 enthält unitree_sdk2 im Oktober 2026 eigene C++-Beispiele, unitree_ros2 hat aber noch keine spezifischen Beispiele. Bevor Sie für ein reines ROS 2 Projekt eines dieser Modelle kaufen, prüfen Sie den aktuellen Stand des Repositorys.
Voraussetzungen: Ubuntu und ROS 2 Version
Das README von unitree_ros2 nennt zwei getestete Kombinationen:
- Ubuntu 22.04 + ROS 2 Humble, als empfohlen gekennzeichnet;
- Ubuntu 20.04 + ROS 2 Foxy.
Laut der Übersicht der ROS 2 Releases hat Foxy am 20. Juni 2023 das Ende des Supports erreicht, Humble wird bis Mai 2027 unterstützt und Jazzy bis Mai 2029. Für ein Projekt, das heute startet, ist Humble die praktische Wahl; Jazzy gehört nicht zu den von Unitree getesteten Kombinationen. ROS 2 Humble installieren Sie aus Debian-Paketen nach der offiziellen Anleitung.
unitree_ros2 Schritt für Schritt installieren
1. Klonen Sie das Repository und installieren Sie die Abhängigkeiten. Die Befehle gelten für Humble; bei Foxy ersetzen Sie humble durch foxy:
git clone https://github.com/unitreerobotics/unitree_ros2
sudo apt install ros-humble-rmw-cyclonedds-cpp
sudo apt install ros-humble-rosidl-generator-dds-idl
sudo apt install libyaml-cpp-dev
2. Nur bei Foxy: Kompilieren Sie CycloneDDS 0.10.x im Workspace cyclonedds_ws, in einem Terminal, in dem ROS 2 nicht geladen wurde. Der Roboter verwendet CycloneDDS 0.10.2; mit Humble entfällt dieser Schritt.
3. Kompilieren Sie die Nachrichtenpakete (unitree_go, unitree_hg, unitree_api):
cd ~/unitree_ros2/cyclonedds_ws
source /opt/ros/humble/setup.bash
colcon build
Netzwerk und CycloneDDS
Verbinden Sie den PC per Ethernet-Kabel mit dem Roboter. Stellen Sie in den Einstellungen der Schnittstelle IPv4 manuell ein, Adresse 192.168.123.99, Netzmaske 255.255.255.0, wie im README angegeben. Mit ifconfig oder ip a finden Sie den Namen der Schnittstelle (zum Beispiel enp3s0) und tragen ihn in ~/unitree_ros2/setup.sh ein:
#!/bin/bash
source /opt/ros/humble/setup.bash
source $HOME/unitree_ros2/cyclonedds_ws/install/setup.bash
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
export CYCLONEDDS_URI='<CycloneDDS><Domain><General><Interfaces>
<NetworkInterface name="enp3s0" priority="default" multicast="default" />
</Interfaces></General></Domain></CycloneDDS>'
Entscheidend ist die Zeile RMW_IMPLEMENTATION=rmw_cyclonedds_cpp: Humble verwendet standardmäßig eine andere Middleware, und ohne diese Variable sieht der PC den Roboter nicht. Wie man die DDS-Middleware auswählt, erklärt die ROS 2 Dokumentation. Ohne angeschlossenen Roboter können Sie setup_local.sh verwenden, das über die Loopback-Schnittstelle arbeitet.
Das erste Topic
source ~/unitree_ros2/setup.sh
ros2 topic list
ros2 topic echo /sportmodestate
Auf Go2 und B2 liefert /sportmodestate Position, Geschwindigkeit und Gangart; /lowstate liefert Motoren, IMU und Akku. So kompilieren und starten Sie die Beispiele:
cd ~/unitree_ros2/example
colcon build
./install/unitree_ros2_example/bin/read_motion_state
Das README zeigt außerdem, wie Sie die Punktwolke des Go2 LiDAR in RViz2 darstellen, auf dem Topic utlidar/cloud mit dem Frame utlidar_lidar.
Steuerung: High-Level und Low-Level
- High-Level (Go2, B2): Anfragen auf
/api/sport/requestmitunitree_apiNachrichten, erzeugt von der KlasseSportClientaus den Beispielen. Der Roboter nutzt dabei seine eigene Bewegungssteuerung. - Low-Level: Befehle für Position, Geschwindigkeit, Drehmoment und Verstärkungen auf
/lowcmd. Vorher muss der integrierte Bewegungsdienst deaktiviert werden, sonst überlagern sich die Befehle. Bei den Humanoiden wechseln Sie mit L2+R2 in den Debug Mode, während der Roboter hängt: Das vollständige Vorgehen steht in der Anleitung G1 programmieren.
Erst simulieren, dann die Hardware
unitree_mujoco ist der offizielle Simulator auf Basis von MuJoCo: Er akzeptiert Programme, die mit unitree_sdk2, unitree_sdk2_python und unitree_ros2 geschrieben sind, mit denselben Low-Level-Nachrichten wie der echte Roboter. Entwickelt wird in der Simulation über die Loopback-Schnittstelle; danach läuft derselbe Code auf dem Roboter, nur die Netzwerkschnittstelle ändert sich. Für Laufpolicies gibt es unitree_rl_gym (Go2, G1, H1, H1-2).
Häufige Fehler
- Keine Topics: RMW nicht gesetzt, falsche Schnittstelle in
setup.shoder PC außerhalb des Subnetzes. Das README empfiehlt außerdem, den PC nach der ersten Konfiguration neu zu starten. - Kompilierung von CycloneDDS unter Foxy schlägt fehl: Im Terminal war bereits
/opt/ros/foxy/setup.bashgeladen; kommentieren Sie die Zeile in~/.bashrcaus und öffnen Sie das Terminal neu. - Mehrere ROS-Installationen auf demselben PC: Tragen Sie
setup.shnicht in~/.bashrcein, sondern laden Sie es bei Bedarf von Hand.
Für Hochschullabore liefert Abra Robotics die Unitree EDU-Modelle nach Deutschland, Österreich und in die Schweiz, mit Support auf Englisch, und bietet Schulung und SDK-Entwicklung als separate Leistungen an: siehe Hochschulen und Forschung und Software.
Häufige Fragen
Welche ROS 2 Version sollte ich mit Unitree Robotern verwenden?
Humble unter Ubuntu 22.04, die von Unitree empfohlene Kombination, unterstützt bis Mai 2027. Foxy ist getestet, wird aber seit Juni 2023 nicht mehr unterstützt.
Lässt sich der Go2 Air oder Pro mit ROS 2 verwenden?
Nein. Das SDK und damit ROS 2 gibt es nur beim Go2 EDU.
Muss ich eine Bridge zwischen SDK und ROS 2 installieren?
Nein. Roboter und ROS 2 sprechen beide DDS: Mit unitree_ros2 und CycloneDDS sind die Nachrichten des Roboters bereits ROS 2 Topics.
Warum zeigt ros2 topic list die Topics des Roboters nicht an?
Meist fehlt RMW_IMPLEMENTATION=rmw_cyclonedds_cpp, die Schnittstelle in setup.sh ist falsch, oder der PC liegt nicht im Subnetz 192.168.123.x. Ein Ping an den Roboter klärt den dritten Fall.
Kann ich ROS 2 ohne angeschlossenen Roboter nutzen?
Ja, mit setup_local.sh auf der Loopback-Schnittstelle und mit dem Simulator unitree_mujoco, der dieselben Nachrichten wie der Roboter verwendet.
Quellen
- Unitree, unitree_ros2, README und Beispiele: github.com/unitreerobotics/unitree_ros2
- Unitree, unitree_sdk2: github.com/unitreerobotics/unitree_sdk2
- Unitree, unitree_mujoco: github.com/unitreerobotics/unitree_mujoco
- Unitree, unitree_rl_gym: github.com/unitreerobotics/unitree_rl_gym
- Unitree, Produktseiten Go2 und G1 (SDK nur bei den EDU-Versionen): unitree.com/go2 · unitree.com/g1
- Unitree Document Center, Bereich für Entwickler: support.unitree.com/home/en/developer
- ROS 2 Documentation, Distributionen und Support-Enddaten: docs.ros.org/en/humble/Releases.html
- ROS 2 Documentation, Installation von Humble aus Debian-Paketen: docs.ros.org
- ROS 2 Documentation, DDS-Middleware und RMW: docs.ros.org


