ROS 2 Unitree-roboteissa toimii ilman takaisinmallinnusta ja ilman käännössolmuja: robotti julkaisee tietonsa DDS:n (CycloneDDS) kautta, ja ROS 2 käyttää DDS:ää tiedonsiirtokerroksenaan. Virallinen unitree_ros2-paketti sisältää viestien määrittelyt ja ympäristöskriptit. Tämä opas tiivistää virallisen README-tiedoston menettelyn ja kertoo kohdat, joihin työ tavallisesti pysähtyy.
Mitkä Unitree-robotit tukevat ROS 2:ta
Ohjelmistokehitys on mahdollista vain kehittäjäversioissa. Go2:n virallinen tuotesivu mainitsee jatkokehityksen EDU-versiossa, ei Air- eikä Pro-versiossa. G1:ssä sama koskee G1 EDU -versiota.
| Robotti | Viestit unitree_ros2:ssa | ROS 2 -esimerkit repositoriossa |
|---|---|---|
| Go2 EDU | unitree_go | sport client, seisominen, robotin tila, low-level |
| B2 / B2W | unitree_go | low-level, tilan lukeminen |
| G1 EDU | unitree_hg | g1_low_level_example |
| H2 | esimerkkikansio h2 | löytyvät repositoriosta |
| H1 / H1-2 | unitree_go / unitree_hg | low-level H1-2 |
Malleille R1 ja A2 unitree_sdk2 sisältää lokakuussa 2026 omat C++-esimerkit, mutta unitree_ros2:ssa ei vielä ole niille erillisiä esimerkkejä. Jos projekti perustuu pelkästään ROS 2:een, tarkista repositorion tilanne ennen kuin ostat jommankumman näistä malleista.
Vaatimukset: Ubuntu ja ROS 2 -versio
unitree_ros2:n README mainitsee kaksi testattua yhdistelmää:
- Ubuntu 22.04 + ROS 2 Humble, joka on merkitty suositelluksi;
- Ubuntu 20.04 + ROS 2 Foxy.
ROS 2 -julkaisutaulukon mukaan Foxyn tuki päättyi 20. kesäkuuta 2023, kun taas Humblea tuetaan toukokuuhun 2027 ja Jazzya toukokuuhun 2029 asti. Nyt alkavassa projektissa käytännöllinen valinta on Humble; Jazzy ei kuulu Unitreen testaamiin yhdistelmiin. ROS 2 Humble asennetaan Debian-paketeista virallisen ohjeen mukaan.
unitree_ros2:n asennus vaihe vaiheelta
1. Kloonaa repositorio ja asenna riippuvuudet (Humblea käytettäessä korvaa foxy sanalla 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. Vain Foxyn kanssa: käännä CycloneDDS 0.10.x työtilassa cyclonedds_ws terminaalissa, johon ROS 2:ta ei ole ladattu. Robotti käyttää CycloneDDS:n versiota 0.10.2; Humblea käytettäessä tätä vaihetta ei tarvita.
3. Käännä viestipaketit (unitree_go, unitree_hg, unitree_api):
cd ~/unitree_ros2/cyclonedds_ws
source /opt/ros/humble/setup.bash
colcon build
Verkko ja CycloneDDS
Liitä PC robottiin Ethernet-kaapelilla. Aseta verkkoliitännän asetuksissa IPv4 manuaaliseksi, osoitteeksi 192.168.123.99 ja aliverkon peitteeksi 255.255.255.0, kuten README neuvoo. Selvitä liitännän nimi komennolla ifconfig tai ip a (esimerkiksi enp3s0) ja kirjoita se tiedostoon ~/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>'
Ratkaiseva rivi on RMW_IMPLEMENTATION=rmw_cyclonedds_cpp: Humblen oletusväliohjelmisto on toinen, ja ilman tätä muuttujaa PC ei näe robottia. ROS 2 -dokumentaatio kertoo, miten DDS-väliohjelmisto valitaan. Ilman kytkettyä robottia voit käyttää tiedostoa setup_local.sh, joka toimii loopback-liitännässä.
Ensimmäinen topic
source ~/unitree_ros2/setup.sh
ros2 topic list
ros2 topic echo /sportmodestate
Go2:ssa ja B2:ssa /sportmodestate kertoo sijainnin, nopeuden ja askellajin; /lowstate kertoo moottorien, IMU:n ja akun tilan. Esimerkkien kääntäminen ja ajaminen:
cd ~/unitree_ros2/example
colcon build
./install/unitree_ros2_example/bin/read_motion_state
README näyttää myös, miten Go2:n LiDARin pistepilvi visualisoidaan RViz2:ssa topicista utlidar/cloud koordinaatistossa utlidar_lidar.
Ohjaus: korkea taso ja matala taso
- Korkea taso (Go2, B2): pyynnöt topiciin
/api/sport/requestunitree_api-viesteinä, jotka esimerkkienSportClient-luokka muodostaa. Robotti käyttää omaa liikkeenohjaustaan. - Matala taso: asento-, nopeus-, vääntömomentti- ja vahvistuskomennot topiciin
/lowcmd. Sisäänrakennettu liikepalvelu on ensin kytkettävä pois, muuten komennot menevät päällekkäin. Humanoideissa debug-tilaan siirrytään yhdistelmällä L2+R2 robotin roikkuessa nostimessa: koko menettely on oppaassa G1:n ohjelmointi.
Simuloi ennen laitteistoa
unitree_mujoco on virallinen MuJoCoon perustuva simulaattori: se hyväksyy ohjelmat, jotka on kirjoitettu unitree_sdk2:lla, unitree_sdk2_python:lla ja unitree_ros2:lla, ja käyttää samoja low-level-viestejä kuin oikea robotti. Suositeltu työnkulku on kehittää simulaatiossa loopbackin kautta ja ajaa sitten sama koodi robotissa vaihtamalla vain verkkoliitäntä. Liikkumisen policyille on unitree_rl_gym (Go2, G1, H1, H1-2).
Yleisimmät virheet
- Ei yhtään topicia: RMW:tä ei ole asetettu,
setup.sh:ssa on väärä liitäntä tai PC on aliverkon ulkopuolella. README suosittelee myös PC:n uudelleenkäynnistystä ensimmäisen määrityksen jälkeen. - CycloneDDS:n kääntäminen epäonnistuu Foxyssa: terminaaliin oli jo ladattu
/opt/ros/foxy/setup.bash; kommentoi rivi pois tiedostosta~/.bashrcja avaa terminaali uudelleen. - Useita ROS-asennuksia samassa PC:ssä: älä lisää
setup.sh:ta tiedostoon~/.bashrc, vaan lataa se käsin tarvittaessa.
Yliopistojen laboratorioille Abra Robotics toimittaa EDU-malleja Suomeen englanninkielisellä tuella ja tarjoaa SDK-koulutusta ja -kehitystä erillisinä palveluina: katso Yliopistot ja tutkimus ja Ohjelmistot. Kehittäjäversioiden tuotesivut ovat Go2 EDU ja G1 EDU.
Usein kysytyt kysymykset
Mitä ROS 2 -versiota Unitree-robottien kanssa kannattaa käyttää?
Humblea Ubuntu 22.04:ssä: Unitree suosittelee tätä yhdistelmää unitree_ros2:n README-tiedostossa. Foxy Ubuntu 20.04:ssä on testattu, mutta sen tuki päättyi 20. kesäkuuta 2023. Humblea tuetaan toukokuuhun 2027 asti.
Voiko Go2 Airia tai Prota käyttää ROS 2:n kanssa?
Ei. Go2:n virallisessa taulukossa jatkokehitys on mahdollista EDU-versiossa; Air ja Pro eivät sisällä sitä. ROS 2:ta varten tarvitaan Go2 EDU.
Tarvitaanko SDK:n ja ROS 2:n välille silta?
Ei. Sekä robotti että ROS 2 käyttävät DDS:ää, joten unitree_ros2:n ja CycloneDDS-väliohjelmiston avulla robotin viestit näkyvät suoraan ROS 2 -topiceina ilman käännössolmuja.
Miksi ros2 topic list ei näytä robotin topiceja?
Yleisimpiä syitä on kolme: RMW_IMPLEMENTATION ei ole asetettu arvoon rmw_cyclonedds_cpp, setup.sh:ssa on väärä verkkoliitännän nimi tai PC:tä ei ole määritetty aliverkkoon 192.168.123.x. Tarkista setup.sh uudelleen ja pingaa robottia.
Voiko ROS 2:ta käyttää ilman kytkettyä robottia?
Kyllä. unitree_ros2 sisältää tiedoston setup_local.sh, joka käyttää loopback-liitäntää, ja unitree_mujoco simuloi robottia samoilla viesteillä: voit kehittää ja testata simulaatiossa ennen kuin kosket laitteistoon.
Lähteet
- Unitree, unitree_ros2, README ja esimerkit: 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, Go2:n ja G1:n tuotesivut (jatkokehitys vain EDU-versiossa): unitree.com/go2 · unitree.com/g1
- Unitree Document Center, kehittäjäosio: support.unitree.com/home/en/developer
- ROS 2 Documentation, jakelut ja tuen päättymispäivät: docs.ros.org/en/humble/Releases.html
- ROS 2 Documentation, Humblen asennus Debian-paketeista: docs.ros.org
- ROS 2 Documentation, DDS-väliohjelmisto ja RMW: docs.ros.org


