ROS 2 på Unitree-roboter fungerer uten reverse engineering og uten oversettelsesnoder: roboten publiserer dataene sine over DDS (CycloneDDS), og ROS 2 bruker DDS som kommunikasjonslag. Den offisielle pakken unitree_ros2 inneholder meldingsdefinisjonene og miljøskriptene. Denne guiden oppsummerer fremgangsmåten i den offisielle README-filen, med stedene der folk vanligvis står fast.
Hvilke Unitree-roboter som støtter ROS 2
Programvareutvikling er bare mulig på utviklerversjonene. For Go2 oppgir det offisielle produktarket sekundærutvikling på EDU-versjonen, ikke på Air og Pro. For G1 gjelder det samme med G1 EDU.
| Robot | Meldinger i unitree_ros2 | ROS 2-eksempler i repositoriet |
|---|---|---|
| Go2 EDU | unitree_go | sport client, stå opp, robotstatus, lavnivå |
| B2 / B2W | unitree_go | lavnivå, lesing av status |
| G1 EDU | unitree_hg | g1_low_level_example |
| H2 | eksempelmappen h2 | finnes i repositoriet |
| H1 / H1-2 | unitree_go / unitree_hg | lavnivå H1-2 |
For R1 og A2 har unitree_sdk2 egne C++-eksempler per oktober 2026, men unitree_ros2 har ennå ingen egne eksempler. Skal du kjøpe til et rent ROS 2-prosjekt på disse modellene, bør du sjekke status i repositoriet først.
Krav: Ubuntu og ROS 2-versjon
README-filen til unitree_ros2 oppgir to testede kombinasjoner:
- Ubuntu 22.04 + ROS 2 Humble, oppgitt som anbefalt;
- Ubuntu 20.04 + ROS 2 Foxy.
Ifølge oversikten over ROS 2-utgivelser nådde Foxy slutten av støtteperioden 20. juni 2023, mens Humble støttes til mai 2027 og Jazzy til mai 2029. For et prosjekt som starter i dag, er Humble det praktiske valget. Jazzy er ikke blant kombinasjonene Unitree har testet. ROS 2 Humble installeres fra Debian-pakker etter den offisielle veiledningen.
Installere unitree_ros2 trinn for trinn
1. Klon repositoriet og installer avhengighetene (med Humble bytter 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. Bare med Foxy: kompiler CycloneDDS 0.10.x i arbeidsområdet cyclonedds_ws, i en terminal der ROS 2 ikke er lastet. Roboten bruker CycloneDDS 0.10.2. Med Humble trengs ikke dette trinnet.
3. Kompiler meldingspakkene (unitree_go, unitree_hg, unitree_api):
cd ~/unitree_ros2/cyclonedds_ws
source /opt/ros/humble/setup.bash
colcon build
Nettverk og CycloneDDS
Koble PC-en til roboten med en Ethernet-kabel. I innstillingene for grensesnittet setter du manuell IPv4, adresse 192.168.123.99 og nettmaske 255.255.255.0, slik README-filen sier. Finn navnet på grensesnittet med ifconfig eller ip a (for eksempel enp3s0) og legg det inn 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 avgjørende linjen er RMW_IMPLEMENTATION=rmw_cyclonedds_cpp: Humble har en annen standard mellomvare, og uten denne variabelen ser ikke PC-en roboten. ROS 2-dokumentasjonen forklarer hvordan du velger DDS-mellomvare. Uten tilkoblet robot kan du bruke setup_local.sh, som går over loopback-grensesnittet.
Første topic
source ~/unitree_ros2/setup.sh
ros2 topic list
ros2 topic echo /sportmodestate
På Go2 og B2 gir /sportmodestate posisjon, hastighet og gangart, mens /lowstate gir motorer, IMU og batteri. Slik kompilerer og kjører du eksemplene:
cd ~/unitree_ros2/example
colcon build
./install/unitree_ros2_example/bin/read_motion_state
README-filen viser også hvordan du ser punktskyen fra LiDAR-en på Go2 i RViz2, på topicen utlidar/cloud med rammen utlidar_lidar.
Styring: høyt nivå og lavt nivå
- Høyt nivå (Go2, B2): forespørsler på
/api/sport/requestmedunitree_api-meldinger, laget av klassenSportClienti eksemplene. Roboten bruker sin egen bevegelseskontroll. - Lavt nivå: kommandoer for posisjon, hastighet, moment og forsterkning på
/lowcmd. Først må den innebygde bevegelsestjenesten slås av, ellers kolliderer kommandoene. På humanoidene går du i debug mode med L2+R2 mens roboten henger: hele fremgangsmåten står i guiden programmere G1.
Simuler før du bruker maskinvaren
unitree_mujoco er den offisielle simulatoren basert på MuJoCo. Den tar imot programmer skrevet med unitree_sdk2, unitree_sdk2_python og unitree_ros2, med de samme lavnivåmeldingene som den virkelige roboten. Anbefalt arbeidsflyt er å utvikle i simulering over loopback og deretter kjøre samme kode på roboten ved å bytte nettverksgrensesnitt. For gangpolicyer finnes unitree_rl_gym (Go2, G1, H1, H1-2).
Vanlige feil
- Ingen topics: RMW er ikke satt, feil grensesnitt i
setup.sh, eller PC-en er utenfor subnettet. README-filen anbefaler også å starte PC-en på nytt etter første oppsett. - Kompilering av CycloneDDS feiler på Foxy: terminalen hadde allerede lastet
/opt/ros/foxy/setup.bash. Kommenter ut linjen i~/.bashrcog åpne terminalen på nytt. - Flere ROS-installasjoner på samme PC: ikke legg
setup.shi~/.bashrc, men last den manuelt når du trenger den.
For universitetslaboratorier leverer Abra Robotics EDU-modellene i Unitree-sortimentet i Norge, med support på engelsk, og tilbyr opplæring og SDK-utvikling som egne tjenester: se Universiteter og forskning og Programvare. Produktsidene for utviklerversjonene er Go2 EDU og G1 EDU.
Ofte stilte spørsmål
Hvilken ROS 2-versjon bør jeg bruke med Unitree-roboter?
Humble på Ubuntu 22.04: det er kombinasjonen Unitree anbefaler i README-filen til unitree_ros2. Foxy på Ubuntu 20.04 er testet, men nådde slutten av støtteperioden 20. juni 2023. Humble støttes til mai 2027.
Kan Go2 Air eller Pro brukes med ROS 2?
Nei. I den offisielle tabellen for Go2 er sekundærutvikling forbeholdt EDU-versjonen. Air og Pro har det ikke. For ROS 2 trenger du en Go2 EDU.
Må jeg installere en bro mellom SDK og ROS 2?
Nei. Både roboten og ROS 2 bruker DDS. Med unitree_ros2 og CycloneDDS som mellomvare dukker meldingene fra roboten opp direkte som ROS 2-topics, uten oversettelsesnoder.
Hvorfor viser ikke ros2 topic list topicene fra roboten?
Det er tre vanlige årsaker: RMW_IMPLEMENTATION er ikke satt til rmw_cyclonedds_cpp, navnet på nettverksgrensesnittet i setup.sh er feil, eller PC-en er ikke satt opp på 192.168.123.x. Sjekk setup.sh på nytt og ping roboten.
Kan jeg bruke ROS 2 uten at roboten er tilkoblet?
Ja. unitree_ros2 inneholder setup_local.sh, som bruker loopback-grensesnittet, og unitree_mujoco simulerer roboten med de samme meldingene. Du kan utvikle og teste i simulering før du rører maskinvaren.
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, produktark for Go2 og G1 (sekundærutvikling bare på EDU): unitree.com/go2 · unitree.com/g1
- Unitree Document Center, utviklerseksjonen: support.unitree.com/home/en/developer
- ROS 2 Documentation, distribusjoner og datoer for slutt på støtte: docs.ros.org/en/humble/Releases.html
- ROS 2 Documentation, installasjon av Humble fra Debian-pakker: docs.ros.org
- ROS 2 Documentation, DDS-mellomvare og RMW: docs.ros.org


