K programování Unitree G1 potřebujete tři věci: verzi EDU, PC s Ubuntu připojené do vnitřní sítě robota a oficiální SDK unitree_sdk2. Tento návod vychází z veřejné dokumentace Unitree (repozitáře na GitHubu a Document Center) a u každého kroku uvádí soubor nebo stránku, ze které pochází. Pokud robot právě dorazil, začněte návodem zapnutí, dálkový ovladač a první postavení.
Který G1 lze programovat
Na oficiální produktové stránce G1 je sekundární vývoj uveden jen u G1 EDU; základní G1 má 23 stupňů volnosti a žádný výpočetní modul pro vývoj. Verze EDU mají 23 až 43 DoF, volitelný výpočetní modul (Unitree zmiňuje desky Orin) a volitelné ruce Dex3-1. V ceníku Abra stojí G1 Air od 19 809 € a G1-U1 EDU (23 DoF, výpočetní dok 100 TOPS) od 38 005 €, bez DPH. Všechny verze najdete na stránce G1; s výběrem mezi U1, U2 a verzemi s rukama pomůže návod kterou verzi G1 zvolit.
Architektura: kde běží váš kód
G1 EDU má počítač pro řízení pohybu, který spravuje Unitree, a vývojový počítač (PC2) pro uživatelský kód. Repozitáře Unitree, například xr_teleoperate, uvádějí PC2 na adrese 192.168.123.164 s uživatelem unitree. Výchozí heslo dodává Unitree; vývojářské FAQ a návod LeRobot pro G1 uvádějí 123. Jakmile robot připojíte do sdílené sítě, heslo změňte.
Máte dvě možnosti:
- Kód na notebooku: PC komunikuje s robotem přes DDS po ethernetovém kabelu. Pro vývoj a ladění je to nejpohodlnější varianta.
- Kód na PC2: program spouštíte na robotu přes SSH. Hodí se pro autonomní provoz bez kabelu a pro nižší latenci.
ssh unitree@192.168.123.164
Nastavení sítě na PC
- Propojte PC s robotem ethernetovým kabelem.
- Nastavte rozhraní na ruční IPv4: adresa
192.168.123.99(doporučuje ji Unitree), maska255.255.255.0. Nepoužívejte adresy, které už robot používá, například.164. - Příkazem
ip aneboifconfigsi poznamenejte název rozhraní (enp3s0,eth0...): všechny příklady SDK ho vyžadují jako argument. - Ověřte spojení příkazem
ping 192.168.123.164. Pokud robot neodpovídá, jde o problém se sítí a nemá smysl otevírat IDE.
Samostatný ethernetový port (stačí i USB adaptér) zabrání konfliktům se sítí laboratoře.
Instalace unitree_sdk2 (C++)
README k unitree_sdk2 uvádí jako referenční prostředí Ubuntu 20.04, gcc 9.4.0, CPU x86_64 nebo aarch64 a CMake 3.10 nebo novější. Na jiných verzích Ubuntu se SDK obvykle zkompiluje, otestované prostředí je ale toto. Windows README jako prostředí nepočítá.
sudo apt-get update
sudo apt-get install -y cmake g++ build-essential libyaml-cpp-dev \
libeigen3-dev libboost-all-dev libfmt-dev
git clone https://github.com/unitreerobotics/unitree_sdk2.git
cd unitree_sdk2 && mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/unitree_robotics
make
sudo make install
make zkompiluje i příklady, které skončí v build/bin/. Instalaci do /opt/unitree_robotics doporučuje také simulátor unitree_mujoco.
Nebo Python: unitree_sdk2_python
Wrapper pro Python vyžaduje Python 3.8 nebo novější a cyclonedds 0.10.2:
git clone https://github.com/unitreerobotics/unitree_sdk2_python.git
cd unitree_sdk2_python
pip3 install -e .
Pokud se instalace zastaví s hláškou "Could not locate cyclonedds", README popisuje, jak zkompilovat CycloneDDS z větve releases/0.10.x a nastavit CYCLONEDDS_HOME. Příklady pro G1 jsou v example/g1/. Užitečná poznámka z README k příkladům: G1 a H1-2 používají zprávy unitree_hg, zatímco Go2, B2 a H1 používají unitree_go.
Debug mode: před každým low-level testem
Po zapnutí spustí G1 vlastní řízení pohybu, které průběžně posílá příkazy motorům. Pokud souběžně publikujete na rt/lowcmd, příkazy se střetnou a robot vibruje. Postup popsaný v návodu k nasazení v unitree_rl_gym je tento:
- zapněte robota zavěšeného v postroji a počkejte na režim nulového momentu;
- na dálkovém ovladači stiskněte L2+R2: robot přejde do debug mode s klouby v tlumení;
- teprve teď spusťte low-level program.
V debug mode robot sám neudrží rovnováhu: nechte ho zavěšeného, dokud ho neudrží váš regulátor.
První test: pohyb kotníků
Příklad g1_ankle_swing_example (zdrojový kód v example/g1/low_level/) čte rt/lowstate, zapisuje do rt/lowcmd a rozkmitá kotníky. Ze složky build:
./bin/g1_ankle_swing_example enp3s0
Místo enp3s0 zadejte své rozhraní. Pokud terminál vypíše "CRC Error", přijatá zpráva je poškozená nebo neodpovídá očekávanému typu: zkontrolujte kabel, rozhraní a verzi SDK.
Pro příkazy vysoké úrovně (stání, chůze se zadanou rychlostí) slouží g1_loco_client. Ten používá vestavěné řízení pohybu, a proto se spouští mimo debug mode:
./bin/g1_loco_client --network_interface=enp3s0 --get_fsm_id
Hlavní topicy
| Topic DDS | Obsah | Zdroj |
|---|---|---|
rt/lowstate | Stav motorů, IMU, baterie | příklad ankle swing |
rt/lowcmd | Příkazy pro polohu, rychlost, moment a zesílení kp/kd | příklad ankle swing |
rt/secondary_imu | IMU trupu | příklad ankle swing, unitree_mujoco |
rt/dex3/left/cmd, rt/dex3/right/cmd | Příkazy pro ruku Dex3-1 | příklad g1_dex3_example |
rt/lf/dex3/left/state, rt/lf/dex3/right/state | Stav ruky Dex3-1 | příklad g1_dex3_example |
Ruce mají topicy oddělené od lokomoce: řídicí smyčku nohou je vhodné držet v jednom procesu a úchop v jiném, s různými frekvencemi.
Nejdřív simulace: unitree_mujoco
unitree_mujoco je simulátor postavený na MuJoCo, který poskytuje stejné zprávy (LowCmd, LowState, SportModeState, u G1 i IMU trupu). Program napsaný s unitree_sdk2, unitree_sdk2_python nebo unitree_ros2 běží nejdřív v simulaci a potom na robotu. Simulátor podporuje jen low-level vývoj. Pro reinforcement learning pokrývá unitree_rl_gym celý cyklus train, play, sim2sim (MuJoCo) a sim2real pro G1, H1, H1-2 a Go2.
Kdy přidat ROS 2
Přímé SDK je nejkratší cesta k motorům a k izolovaným testům. ROS 2 potřebujete, když integrujete Nav2, MoveIt, standardní pipeline pro vidění, záznam přes rosbag nebo více robotů v jedné laboratoři. Balíček unitree_ros2 obsahuje zprávy unitree_hg a low-level příklad pro G1 (g1/lowlevel/g1_low_level_example); Unitree ho otestoval na Ubuntu 22.04 s Humble (doporučeno) a na Ubuntu 20.04 s Foxy. Instalaci, síť a první topic popisuje návod ROS 2 na robotech Unitree.
Bezpečnostní checklist pro laboratoř
- První testy vždy se zavěšeným robotem a volným prostorem kolem.
- V první řídicí smyčce nízká zesílení kp/kd a konzervativní limity momentu.
- Jedna osoba u dálkového ovladače, připravená přepnout robota do tlumení.
- Stejná verze SDK na PC i na robotu; po aktualizaci OTA příklady znovu ověřte.
Abra Robotics dodává řadu Unitree do Česka a na Slovensko, s podporou v angličtině, a jako služby oddělené od hardwaru nabízí školení a vývoj softwaru nad SDK: podrobnosti v sekcích Software a Univerzity a výzkum.
Časté dotazy
Lze programovat základní G1 (ne EDU)?
Ne. Na oficiální produktové stránce Unitree je sekundární vývoj uveden jen u G1 EDU; základní G1 nemá výpočetní modul pro vývoj ani přístup k SDK.
Jaký operační systém potřebuje vývojové PC?
README k unitree_sdk2 uvádí jako referenční prostředí Ubuntu 20.04 s gcc 9.4.0, na CPU x86_64 nebo aarch64. Pro ROS 2 Unitree otestoval Ubuntu 20.04 s Foxy a Ubuntu 22.04 s Humble a doporučuje Humble.
Jakou adresu má vývojový počítač G1?
Vývojový počítač (PC2) G1 EDU odpovídá na 192.168.123.164, uživatel unitree. Vaše PC musí být ve stejné podsíti 192.168.123.x s volnou adresou; Unitree doporučuje 192.168.123.99.
Proč robot vibruje, když spustím low-level příklad?
Téměř vždy je ještě aktivní vestavěné řízení pohybu a posílá příkazy souběžně s vašimi. Než začnete posílat příkazy na rt/lowcmd, přejděte do debug mode (L2+R2, robot zavěšený a v tlumení).
Začít simulací, nebo hardwarem?
Simulací. unitree_mujoco používá stejné zprávy DDS jako robot, takže stejný program běží nejdřív v MuJoCo a pak na G1, jen se změní síťové rozhraní.
Zdroje
- Unitree, produktová stránka G1 (verze, DoF, sekundární vývoj): unitree.com/g1
- Unitree, unitree_sdk2, README a příklady pro G1: github.com/unitreerobotics/unitree_sdk2 · example/g1
- Unitree, unitree_sdk2_python: github.com/unitreerobotics/unitree_sdk2_python
- Unitree, unitree_ros2: github.com/unitreerobotics/unitree_ros2
- Unitree, unitree_mujoco: github.com/unitreerobotics/unitree_mujoco
- Unitree, unitree_rl_gym, návod k nasazení na skutečném robotu (debug mode L2+R2): deploy_real/README.md
- Unitree, xr_teleoperate (PC2 na 192.168.123.164): github.com/unitreerobotics/xr_teleoperate
- Unitree Document Center, sekce pro vývojáře G1: support.unitree.com/home/en/G1_developer
- Hugging Face, dokumentace LeRobot pro Unitree G1: huggingface.co/docs/lerobot/en/unitree_g1
