ROS 2 op Unitree-robots werkt zonder reverse engineering en zonder vertaalnodes: de robot publiceert zijn data via DDS (CycloneDDS), en ROS 2 gebruikt DDS als communicatielaag. Het officiële pakket unitree_ros2 levert de berichtdefinities en de omgevingsscripts. Deze gids vat de procedure uit de officiële README samen, met de punten waar men meestal vastloopt.
Welke Unitree-robots ondersteunen ROS 2
Softwareontwikkeling is alleen mogelijk op de versies voor ontwikkelaars. Voor de Go2 vermeldt de officiële productpagina secundaire ontwikkeling op de EDU-versie, niet op de Air en de Pro; voor de G1 geldt hetzelfde met de G1 EDU.
| Robot | Berichten in unitree_ros2 | ROS 2-voorbeelden in de repository |
|---|---|---|
| Go2 EDU | unitree_go | sport client, stand, robotstatus, low-level |
| B2 / B2W | unitree_go | low-level, status uitlezen |
| G1 EDU | unitree_hg | g1_low_level_example |
| H2 | map met voorbeelden h2 | aanwezig in de repository |
| H1 / H1-2 | unitree_go / unitree_hg | low-level H1-2 |
Voor de R1 en de A2 bevat unitree_sdk2 in oktober 2026 eigen C++-voorbeelden, maar unitree_ros2 heeft nog geen specifieke voorbeelden. Controleer de status van de repository voordat u een van deze modellen koopt voor een project dat alleen op ROS 2 draait.
Vereisten: Ubuntu en ROS 2-versie
De README van unitree_ros2 noemt twee geteste combinaties:
- Ubuntu 22.04 + ROS 2 Humble, aangeduid als aanbevolen;
- Ubuntu 20.04 + ROS 2 Foxy.
Volgens de tabel met ROS 2-releases bereikte Foxy het einde van de ondersteuning op 20 juni 2023, terwijl Humble ondersteund wordt tot mei 2027 en Jazzy tot mei 2029. Voor een project dat nu start is Humble de praktische keuze; Jazzy staat niet tussen de combinaties die Unitree heeft getest. ROS 2 Humble installeert u uit Debian-pakketten volgens de officiële handleiding.
unitree_ros2 stap voor stap installeren
1. Kloon de repository en installeer de afhankelijkheden (vervang met Humble foxy door humble):
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. Alleen met Foxy: compileer CycloneDDS 0.10.x in de workspace cyclonedds_ws, in een terminal waarin ROS 2 niet is geladen. De robot gebruikt CycloneDDS 0.10.2; met Humble is deze stap niet nodig.
3. Compileer de berichtpakketten (unitree_go, unitree_hg, unitree_api):
cd ~/unitree_ros2/cyclonedds_ws
source /opt/ros/humble/setup.bash
colcon build
Netwerk en CycloneDDS
Verbind de pc met een ethernetkabel met de robot. Stel in de instellingen van de netwerkinterface handmatig IPv4 in, met adres 192.168.123.99 en netmasker 255.255.255.0, zoals de README aangeeft. Zoek met ifconfig of ip a de naam van de interface op (bijvoorbeeld enp3s0) en zet die in ~/unitree_ros2/setup.sh:
#!/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>'
De beslissende regel is RMW_IMPLEMENTATION=rmw_cyclonedds_cpp: Humble gebruikt standaard een andere middleware, en zonder deze variabele ziet de pc de robot niet. De ROS 2-documentatie legt uit hoe u de DDS-middleware kiest. Zonder aangesloten robot kunt u setup_local.sh gebruiken, dat op de loopback-interface werkt.
Het eerste topic
source ~/unitree_ros2/setup.sh
ros2 topic list
ros2 topic echo /sportmodestate
Op de Go2 en B2 geeft /sportmodestate positie, snelheid en gang weer; /lowstate geeft motoren, IMU en accu weer. Zo compileert en start u de voorbeelden:
cd ~/unitree_ros2/example
colcon build
./install/unitree_ros2_example/bin/read_motion_state
De README laat ook zien hoe u de puntenwolk van de LiDAR van de Go2 in RViz2 weergeeft, op het topic utlidar/cloud met frame utlidar_lidar.
Aansturing: hoog niveau en laag niveau
- Hoog niveau (Go2, B2): requests op
/api/sport/requestmetunitree_api-berichten, gegenereerd door de klasseSportClientuit de voorbeelden. De robot gebruikt zijn eigen bewegingsregeling. - Laag niveau: commando's voor positie, snelheid, koppel en versterkingen op
/lowcmd. Eerst moet de ingebouwde bewegingsservice uit, anders overlappen de commando's elkaar. Op de humanoïde robots gaat u in debug mode met L2+R2, met de robot opgehangen: de volledige procedure staat in de gids de G1 programmeren.
Simuleren vóór de hardware
unitree_mujoco is de officiële simulator op basis van MuJoCo: hij accepteert programma's die zijn geschreven met unitree_sdk2, unitree_sdk2_python en unitree_ros2, met dezelfde low-level berichten als de echte robot. De aanbevolen werkwijze: ontwikkelen in simulatie op loopback, daarna dezelfde code op de robot draaien door alleen de netwerkinterface te wijzigen. Voor locomotie-policy's is er unitree_rl_gym (Go2, G1, H1, H1-2).
Veelvoorkomende fouten
- Geen topics: RMW niet ingesteld, verkeerde interface in
setup.shof pc buiten het subnet. De README raadt ook aan de pc na de eerste configuratie opnieuw op te starten. - Compilatie van CycloneDDS mislukt op Foxy: de terminal had
/opt/ros/foxy/setup.bashal geladen; zet de regel in~/.bashrcin commentaar en open de terminal opnieuw. - Meerdere ROS-installaties op dezelfde pc: zet
setup.shniet in~/.bashrc, maar laad het handmatig wanneer u het nodig hebt.
Voor universitaire labs levert Abra Robotics de EDU-modellen van Unitree in Nederland en België, met support in het Engels, en biedt training en ontwikkeling op de SDK aan als aparte diensten: zie Universities & Research en Software. De productpagina's van de versies voor ontwikkelaars zijn Go2 EDU en G1 EDU.
Veelgestelde vragen
Welke ROS 2-versie gebruikt u met Unitree-robots?
Humble op Ubuntu 22.04: dat is de combinatie die Unitree aanbeveelt in de README van unitree_ros2. Foxy op Ubuntu 20.04 is getest, maar bereikte het einde van de ondersteuning op 20 juni 2023. Humble wordt ondersteund tot mei 2027.
Kan de Go2 Air of Pro met ROS 2 werken?
Nee. In de officiële tabel van de Go2 is secundaire ontwikkeling voorzien voor de EDU-versie; de Air en de Pro hebben die niet. Voor ROS 2 hebt u een Go2 EDU nodig.
Moet u een bridge tussen de SDK en ROS 2 installeren?
Nee. De robot en ROS 2 gebruiken allebei DDS, dus met unitree_ros2 en de CycloneDDS-middleware verschijnen de berichten van de robot direct als ROS 2-topics, zonder vertaalnodes.
Waarom toont ros2 topic list de topics van de robot niet?
Er zijn drie veelvoorkomende oorzaken: RMW_IMPLEMENTATION niet ingesteld op rmw_cyclonedds_cpp, een verkeerde naam van de netwerkinterface in setup.sh, of een pc die niet op 192.168.123.x is geconfigureerd. Controleer setup.sh opnieuw en ping de robot.
Kunt u ROS 2 gebruiken zonder aangesloten robot?
Ja. unitree_ros2 bevat setup_local.sh, dat de loopback-interface gebruikt, en unitree_mujoco simuleert de robot met dezelfde berichten: u kunt in simulatie ontwikkelen en testen voordat u de hardware aanraakt.
Bronnen
- Unitree, unitree_ros2, README en voorbeelden: 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, productpagina's Go2 en G1 (secundaire ontwikkeling alleen op EDU): unitree.com/go2 · unitree.com/g1
- Unitree Document Center, sectie voor ontwikkelaars: support.unitree.com/home/en/developer
- ROS 2 Documentation, distributies en einddata van de ondersteuning: docs.ros.org/en/humble/Releases.html
- ROS 2 Documentation, installatie van Humble uit Debian-pakketten: docs.ros.org
- ROS 2 Documentation, DDS-middleware en RMW: docs.ros.org