ROS 2 na robotech Unitree funguje bez reverzního inženýrství a bez překládacích uzlů: robot publikuje svá data přes DDS (CycloneDDS) a ROS 2 používá DDS jako komunikační vrstvu. Oficiální balíček unitree_ros2 obsahuje definice zpráv a skripty pro nastavení prostředí. Tento návod shrnuje postup z oficiálního README a upozorňuje na místa, kde se obvykle zasekne.
Kteří roboti Unitree podporují ROS 2
Vývoj softwaru je možný jen na verzích pro vývojáře. U Go2 uvádí oficiální produktová stránka sekundární vývoj u verze EDU, ne u Air a Pro; u G1 platí totéž pro G1 EDU.
| Robot | Zprávy v unitree_ros2 | Příklady ROS 2 v repozitáři |
|---|---|---|
| Go2 EDU | unitree_go | sport client, stand, stav robota, low-level |
| B2 / B2W | unitree_go | low-level, čtení stavu |
| G1 EDU | unitree_hg | g1_low_level_example |
| H2 | složka s příklady h2 | v repozitáři k dispozici |
| H1 / H1-2 | unitree_go / unitree_hg | low-level H1-2 |
Pro R1 a A2 obsahuje unitree_sdk2 v říjnu 2026 vlastní příklady v C++, ale unitree_ros2 pro ně zatím specifické příklady nemá. Pokud kupujete tyto modely pro projekt čistě v ROS 2, ověřte si předem stav repozitáře.
Požadavky: Ubuntu a verze ROS 2
README k unitree_ros2 uvádí dvě otestované kombinace:
- Ubuntu 22.04 + ROS 2 Humble, označená jako doporučená;
- Ubuntu 20.04 + ROS 2 Foxy.
Podle tabulky vydání ROS 2 skončila podpora Foxy 20. června 2023, Humble je podporován do května 2027 a Jazzy do května 2029. Pro projekt, který začíná dnes, je praktickou volbou Humble; Jazzy mezi kombinacemi otestovanými firmou Unitree není. ROS 2 Humble se instaluje z balíčků Debian podle oficiálního návodu.
Instalace unitree_ros2 krok za krokem
1. Naklonujte repozitář a nainstalujte závislosti (u Humble nahraďte foxy za 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. Jen u Foxy: zkompilujte CycloneDDS 0.10.x ve workspace cyclonedds_ws, a to v terminálu, kde ROS 2 není načtený. Robot používá CycloneDDS 0.10.2; u Humble tento krok odpadá.
3. Zkompilujte balíčky se zprávami (unitree_go, unitree_hg, unitree_api):
cd ~/unitree_ros2/cyclonedds_ws
source /opt/ros/humble/setup.bash
colcon build
Síť a CycloneDDS
Propojte PC s robotem ethernetovým kabelem. V nastavení rozhraní zvolte ruční IPv4, adresu 192.168.123.99 a masku 255.255.255.0, jak uvádí README. Příkazem ifconfig nebo ip a zjistěte název rozhraní (například enp3s0) a zapište ho do ~/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>'
Rozhodující je řádek RMW_IMPLEMENTATION=rmw_cyclonedds_cpp: výchozí middleware Humble je jiný a bez této proměnné PC robota neuvidí. Dokumentace ROS 2 vysvětluje, jak vybrat middleware DDS. Bez připojeného robota můžete použít setup_local.sh, který pracuje s rozhraním loopback.
První topic
source ~/unitree_ros2/setup.sh
ros2 topic list
ros2 topic echo /sportmodestate
U Go2 a B2 hlásí /sportmodestate polohu, rychlost a typ chůze; /lowstate hlásí motory, IMU a baterii. Kompilace a spuštění příkladů:
cd ~/unitree_ros2/example
colcon build
./install/unitree_ros2_example/bin/read_motion_state
README také ukazuje, jak zobrazit mračno bodů z LiDARu Go2 v RViz2, na topicu utlidar/cloud s rámcem utlidar_lidar.
Řízení: vysoká a nízká úroveň
- Vysoká úroveň (Go2, B2): požadavky na
/api/sport/requestse zprávamiunitree_api, které generuje třídaSportClientz příkladů. Robot používá vlastní řízení pohybu. - Nízká úroveň: příkazy pro polohu, rychlost, moment a zesílení na
/lowcmd. Nejprve je třeba vypnout vestavěnou službu řízení pohybu, jinak se příkazy navzájem přepisují. U humanoidů se do debug mode přechází kombinací L2+R2, s robotem zavěšeným: celý postup najdete v návodu programování G1.
Nejdřív simulace, pak hardware
unitree_mujoco je oficiální simulátor postavený na MuJoCo: přijímá programy napsané s unitree_sdk2, unitree_sdk2_python a unitree_ros2 a používá stejné low-level zprávy jako skutečný robot. Doporučený postup je vývoj v simulaci přes loopback a pak stejný kód na robotu, jen se změněným síťovým rozhraním. Pro politiky chůze je k dispozici unitree_rl_gym (Go2, G1, H1, H1-2).
Časté chyby
- Žádné topicy: nenastavené RMW, špatné rozhraní v
setup.shnebo PC mimo podsíť. README také doporučuje po první konfiguraci PC restartovat. - Kompilace CycloneDDS na Foxy selhala: terminál už měl načtený
/opt/ros/foxy/setup.bash; zakomentujte řádek v~/.bashrca otevřete terminál znovu. - Více instalací ROS na jednom PC: nedávejte
setup.shdo~/.bashrca načítejte ho ručně, když ho potřebujete.
Pro univerzitní laboratoře dodává Abra Robotics modely EDU řady Unitree do Česka a na Slovensko, s podporou v angličtině, a jako samostatné služby nabízí školení a vývoj nad SDK: viz Univerzity a výzkum a Software. Produktové stránky verzí pro vývojáře: Go2 EDU a G1 EDU.
Časté dotazy
Jakou verzi ROS 2 použít s roboty Unitree?
Humble na Ubuntu 22.04: tuto kombinaci Unitree doporučuje v README k unitree_ros2. Foxy na Ubuntu 20.04 je otestovaný, ale jeho podpora skončila 20. června 2023. Humble je podporován do května 2027.
Dá se Go2 Air nebo Pro použít s ROS 2?
Ne. V oficiální tabulce Go2 je sekundární vývoj určen pro verzi EDU; Air a Pro ho nezahrnují. Pro ROS 2 potřebujete Go2 EDU.
Je potřeba instalovat bridge mezi SDK a ROS 2?
Ne. Robot i ROS 2 používají DDS, takže s unitree_ros2 a middlewarem CycloneDDS se zprávy robota objeví přímo jako topicy ROS 2, bez překládacích uzlů.
Proč ros2 topic list nezobrazuje topicy robota?
Nejčastější příčiny jsou tři: RMW_IMPLEMENTATION není nastaveno na rmw_cyclonedds_cpp, v setup.sh je špatný název síťového rozhraní, nebo PC není nastavené na 192.168.123.x. Zkontrolujte setup.sh a pingněte robota.
Lze ROS 2 používat bez připojeného robota?
Ano. unitree_ros2 obsahuje setup_local.sh, který používá rozhraní loopback, a unitree_mujoco simuluje robota se stejnými zprávami: vyvíjet a testovat můžete v simulaci dřív, než sáhnete na hardware.
Zdroje
- Unitree, unitree_ros2, README a příklady: 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, produktové stránky Go2 a G1 (sekundární vývoj jen u EDU): unitree.com/go2 · unitree.com/g1
- Unitree Document Center, sekce pro vývojáře: support.unitree.com/home/en/developer
- ROS 2 Documentation, distribuce a data konce podpory: docs.ros.org/en/humble/Releases.html
- ROS 2 Documentation, instalace Humble z balíčků Debian: docs.ros.org
- ROS 2 Documentation, middleware DDS a RMW: docs.ros.org


