ROS 2 på Unitree-robotter virker uden reverse engineering og uden oversættelsesnoder: robotten publicerer sine data på DDS (CycloneDDS), og ROS 2 bruger DDS som kommunikationslag. Den officielle pakke unitree_ros2 indeholder beskeddefinitionerne og miljøscripts. Denne guide opsummerer fremgangsmåden fra den officielle README og peger på de steder, hvor man typisk går i stå.
Hvilke Unitree-robotter understøtter ROS 2
Softwareudvikling er kun mulig på udviklerversionerne. For Go2 angiver den officielle produktside sekundær udvikling på EDU-versionen, ikke på Air og Pro; for G1 gælder det samme med G1 EDU.
| Robot | Beskeder i unitree_ros2 | ROS 2-eksempler i repositoriet |
|---|---|---|
| Go2 EDU | unitree_go | sport client, stand, robottilstand, low-level |
| B2 / B2W | unitree_go | low-level, aflæsning af tilstand |
| G1 EDU | unitree_hg | g1_low_level_example |
| H2 | eksempelmappen h2 | findes i repositoriet |
| H1 / H1-2 | unitree_go / unitree_hg | low-level H1-2 |
For R1 og A2 indeholder unitree_sdk2 i oktober 2026 egne C++-eksempler, men unitree_ros2 har endnu ingen specifikke eksempler. Før du køber til et rent ROS 2-projekt på disse modeller, bør du tjekke repositoriets status.
Krav: Ubuntu og ROS 2-version
README'en til unitree_ros2 nævner to testede kombinationer:
- Ubuntu 22.04 + ROS 2 Humble, angivet som anbefalet;
- Ubuntu 20.04 + ROS 2 Foxy.
Ifølge oversigten over ROS 2-udgivelser nåede Foxy end of life den 20. juni 2023, mens Humble understøttes til maj 2027 og Jazzy til maj 2029. For et projekt, der starter i dag, er Humble det praktiske valg; Jazzy er ikke blandt de kombinationer, Unitree har testet. ROS 2 Humble installeres fra Debian-pakker efter den officielle vejledning.
Installation af unitree_ros2 trin for trin
1. Klon repositoriet og installer afhængighederne (med Humble erstatter du foxy med 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. Kun med Foxy: kompilér CycloneDDS 0.10.x i workspacet cyclonedds_ws i en terminal, hvor ROS 2 ikke er indlæst. Robotten bruger CycloneDDS 0.10.2; med Humble er dette trin ikke nødvendigt.
3. Kompilér beskedpakkerne (unitree_go, unitree_hg, unitree_api):
cd ~/unitree_ros2/cyclonedds_ws
source /opt/ros/humble/setup.bash
colcon build
Netværk og CycloneDDS
Forbind pc'en med robotten med et Ethernet-kabel. I interfacets indstillinger sætter du IPv4 til manuel med adressen 192.168.123.99 og masken 255.255.255.0, som README'en angiver. Find interfacets navn med ifconfig eller ip a (for eksempel enp3s0), og skriv det ind i ~/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>'
Den afgørende linje er RMW_IMPLEMENTATION=rmw_cyclonedds_cpp: Humbles standard-middleware er en anden, og uden denne variabel kan pc'en ikke se robotten. ROS 2-dokumentationen forklarer, hvordan man vælger DDS-middleware. Uden tilsluttet robot kan du bruge setup_local.sh, som arbejder på loopback-interfacet.
Første topic
source ~/unitree_ros2/setup.sh
ros2 topic list
ros2 topic echo /sportmodestate
På Go2 og B2 viser /sportmodestate position, hastighed og gangart; /lowstate viser motorer, IMU og batteri. Sådan kompilerer og kører du eksemplerne:
cd ~/unitree_ros2/example
colcon build
./install/unitree_ros2_example/bin/read_motion_state
README'en viser også, hvordan du visualiserer punktskyen fra Go2's LiDAR i RViz2 på topic'et utlidar/cloud med framen utlidar_lidar.
Styring: højt niveau og lavt niveau
- Højt niveau (Go2, B2): requests på
/api/sport/requestmedunitree_api-beskeder, genereret af klassenSportClienti eksemplerne. Robotten bruger sin egen bevægelsesstyring. - Lavt niveau: kommandoer for position, hastighed, drejningsmoment og forstærkninger på
/lowcmd. Først skal den indbyggede bevægelsestjeneste slås fra, ellers overlapper kommandoerne hinanden. På humanoiderne går man i debug mode med L2+R2, mens robotten hænger i ophænget: hele proceduren står i guiden programmering af G1.
Simulér før hardwaren
unitree_mujoco er den officielle simulator baseret på MuJoCo: den accepterer programmer skrevet med unitree_sdk2, unitree_sdk2_python og unitree_ros2, med de samme low-level-beskeder som den fysiske robot. Det anbefalede forløb er udvikling i simulering på loopback og derefter samme kode på robotten, hvor kun netværksinterfacet ændres. Til locomotion-politikker findes unitree_rl_gym (Go2, G1, H1, H1-2).
Typiske fejl
- Ingen topics: RMW er ikke sat, forkert interface i
setup.sh, eller pc'en er uden for subnettet. README'en anbefaler også at genstarte pc'en efter den første konfiguration. - Kompilering af CycloneDDS fejler på Foxy: terminalen havde allerede indlæst
/opt/ros/foxy/setup.bash; kommentér linjen ud i~/.bashrc, og åbn terminalen igen. - Flere ROS-installationer på samme pc: undgå at lægge
setup.shi~/.bashrc, og indlæs den manuelt, når du har brug for den.
Til universitetslaboratorier leverer Abra Robotics Unitrees EDU-modeller i Danmark med support på engelsk og tilbyder træning og udvikling med SDK som separate ydelser: se Universiteter og forskning og Software. Produktsiderne for udviklerversionerne er Go2 EDU og G1 EDU.
Ofte stillede spørgsmål
Hvilken ROS 2-version skal man bruge med Unitree-robotter?
Humble på Ubuntu 22.04: det er den kombination, Unitree anbefaler i README'en til unitree_ros2. Foxy på Ubuntu 20.04 er testet, men nåede end of life den 20. juni 2023. Humble understøttes til maj 2027.
Kan Go2 Air eller Pro bruges med ROS 2?
Nej. I den officielle Go2-tabel er sekundær udvikling forbeholdt EDU-versionen; Air og Pro har det ikke. Til ROS 2 skal du bruge en Go2 EDU.
Skal man installere en bridge mellem SDK og ROS 2?
Nej. Robotten og ROS 2 bruger begge DDS, så med unitree_ros2 og CycloneDDS som middleware dukker robottens beskeder direkte op som ROS 2-topics uden oversættelsesnoder.
Hvorfor viser ros2 topic list ikke robottens topics?
Der er tre almindelige årsager: RMW_IMPLEMENTATION er ikke sat til rmw_cyclonedds_cpp, interfacets navn i setup.sh er forkert, eller pc'en er ikke konfigureret på 192.168.123.x. Tjek setup.sh igen, og ping robotten.
Kan man bruge ROS 2 uden tilsluttet robot?
Ja. unitree_ros2 indeholder setup_local.sh, som bruger loopback-interfacet, og unitree_mujoco simulerer robotten med de samme beskeder: du kan udvikle og teste i simulering, før du rører hardwaren.
Kilder
- Unitree, unitree_ros2, README og eksempler: 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, produktsider for Go2 og G1 (sekundær udvikling kun på EDU): unitree.com/go2 · unitree.com/g1
- Unitree Document Center, udviklersektionen: support.unitree.com/home/en/developer
- ROS 2 Documentation, distributioner og datoer for end of life: docs.ros.org/en/humble/Releases.html
- ROS 2 Documentation, installation af Humble fra Debian-pakker: docs.ros.org
- ROS 2 Documentation, DDS-middleware og RMW: docs.ros.org


