For å programmere Unitree G1 trenger du tre ting: EDU-versjonen, en Ubuntu-PC koblet til robotens interne nettverk og det offisielle SDK-et unitree_sdk2. Denne guiden følger Unitrees offentlige dokumentasjon (GitHub-repositorier og Document Center) og oppgir for hvert trinn hvilken fil eller side det kommer fra. Har roboten nettopp kommet, start med oppstart, fjernkontroll og første gang den reiser seg.
Hvilken G1 som kan programmeres
I det offisielle produktarket for G1 er sekundærutvikling bare oppgitt for G1 EDU. Grunnversjonen av G1 har 23 frihetsgrader og ingen beregningsmodul for utvikling. EDU-versjonene har fra 23 til 43 DoF, med valgfri beregningsmodul (Unitree nevner Orin-kort) og valgfrie Dex3-1-hender. I Abras prisliste starter G1 Air på 19 809 € og G1-U1 EDU (23 DoF, beregningsdokk på 100 TOPS) på 38 005 €, eks. mva. Alle versjonene står på G1-siden. For å velge mellom U1, U2 og versjonene med hender finnes guiden hvilken G1-versjon du bør velge.
Arkitektur: hvor koden din kjører
G1 EDU har en datamaskin for bevegelseskontroll, som Unitree styrer, og en utviklingsdatamaskin (PC2) for brukerkoden. Unitrees repositorier, for eksempel xr_teleoperate, oppgir PC2 på adressen 192.168.123.164 med brukeren unitree. Startpassordet får du fra Unitree. Utvikler-FAQ-en og LeRobot-guiden for G1 oppgir 123. Bytt det så snart roboten kobles til et delt nettverk.
Du har to muligheter:
- Kode på den bærbare PC-en: PC-en snakker med roboten via DDS over Ethernet-kabelen. Det er det enkleste valget for utvikling og feilsøking.
- Kode på PC2: du starter programmet på roboten via SSH. Det trengs for autonomi uten kabel og for lavere forsinkelse.
ssh unitree@192.168.123.164
Sette opp nettverket på PC-en
- Koble PC-en til roboten med en Ethernet-kabel.
- Sett grensesnittet til manuell IPv4: adresse
192.168.123.99(den Unitree foreslår) og nettmaske255.255.255.0. Ikke bruk adresser som allerede finnes på roboten, som.164. - Noter navnet på grensesnittet med
ip aellerifconfig(enp3s0,eth0...): alle SDK-eksemplene krever det som argument. - Test med
ping 192.168.123.164. Får du ikke svar, er problemet nettverket, og det er ingen vits i å åpne IDE-en.
En egen Ethernet-port (gjerne en USB-adapter) unngår konflikter med nettverket i laboratoriet.
Installere unitree_sdk2 (C++)
README-filen til unitree_sdk2 oppgir Ubuntu 20.04, gcc 9.4.0, x86_64- eller aarch64-CPU og CMake 3.10 eller nyere som referansemiljø. På andre Ubuntu-versjoner kompilerer det vanligvis, men det er dette miljøet som er testet. Windows er ikke et miljø README-filen tar høyde for.
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 kompilerer også eksemplene, som havner i build/bin/. Installasjon i /opt/unitree_robotics er også det simulatoren unitree_mujoco anbefaler.
Eller Python: unitree_sdk2_python
Python-wrapperen krever Python 3.8 eller nyere og cyclonedds 0.10.2:
git clone https://github.com/unitreerobotics/unitree_sdk2_python.git
cd unitree_sdk2_python
pip3 install -e .
Stopper installasjonen med "Could not locate cyclonedds", forklarer README-filen hvordan du kompilerer CycloneDDS fra grenen releases/0.10.x og setter CYCLONEDDS_HOME. Eksemplene for G1 ligger i example/g1/. Et nyttig poeng fra README-filen til eksemplene: G1 og H1-2 bruker meldingene unitree_hg, mens Go2, B2 og H1 bruker unitree_go.
Debug mode: før hver lavnivåtest
Når G1 slås på, starter den sin egen bevegelseskontroll, som hele tiden sender kommandoer til motorene. Publiserer du samtidig på rt/lowcmd, kolliderer kommandoene, og roboten vibrerer. Fremgangsmåten som er dokumentert i deploy-guiden i unitree_rl_gym, er:
- slå på roboten mens den henger i selen, og vent på modus med null moment;
- trykk L2+R2 på fjernkontrollen: roboten går i debug mode med leddene i dempet modus;
- start lavnivåprogrammet først nå.
I debug mode holder ikke roboten balansen selv. Den må henge til kontrolleren din kan bære den.
Første test: bevege anklene
Eksemplet g1_ankle_swing_example (kildekode i example/g1/low_level/) leser rt/lowstate, skriver rt/lowcmd og får anklene til å svinge. Fra mappen build:
./bin/g1_ankle_swing_example enp3s0
Bytt ut enp3s0 med ditt grensesnitt. Skriver terminalen "CRC Error", er den mottatte meldingen ødelagt eller av en annen type enn forventet: sjekk kabel, grensesnitt og SDK-versjon.
For kommandoer på høyt nivå (stå oppreist, gå med angitte hastigheter) finnes g1_loco_client. Den bruker den innebygde bevegelseskontrollen og må derfor startes utenfor debug mode:
./bin/g1_loco_client --network_interface=enp3s0 --get_fsm_id
Viktigste topics
| DDS-topic | Innhold | Kilde |
|---|---|---|
rt/lowstate | Status for motorer, IMU, batteri | eksemplet ankle swing |
rt/lowcmd | Kommandoer for posisjon, hastighet, moment og forsterkning kp/kd | eksemplet ankle swing |
rt/secondary_imu | IMU i torsoen | eksemplet ankle swing, unitree_mujoco |
rt/dex3/left/cmd, rt/dex3/right/cmd | Kommandoer til Dex3-1-hånden | eksemplet g1_dex3_example |
rt/lf/dex3/left/state, rt/lf/dex3/right/state | Status for Dex3-1-hånden | eksemplet g1_dex3_example |
Hendene har egne topics, adskilt fra gangen. Det lønner seg å kjøre kontrollsløyfen for bena i én prosess og grepet i en annen, med ulike frekvenser.
Simuler først: unitree_mujoco
unitree_mujoco er en simulator basert på MuJoCo som eksponerer de samme meldingene (LowCmd, LowState, SportModeState, IMU i torsoen for G1). Et program skrevet med unitree_sdk2, unitree_sdk2_python eller unitree_ros2 kjører først i simulering og deretter på roboten. Simulatoren støtter bare utvikling på lavt nivå. For reinforcement learning dekker unitree_rl_gym hele løpet med train, play, sim2sim (MuJoCo) og sim2real for G1, H1, H1-2 og Go2.
Når du bør legge til ROS 2
SDK-et direkte er den korteste veien til motorene og til isolerte tester. ROS 2 trengs når du skal integrere Nav2, MoveIt, standard bildebehandlingskjeder, opptak med rosbag eller flere roboter i samme laboratorium. Pakken unitree_ros2 inneholder meldingene unitree_hg og et lavnivåeksempel for G1 (g1/lowlevel/g1_low_level_example). Unitree har testet den på Ubuntu 22.04 med Humble (anbefalt) og på Ubuntu 20.04 med Foxy. Installasjon, nettverk og første topic står i guiden ROS 2 på Unitree-roboter.
Sikkerhetssjekkliste for laboratoriet
- De første testene alltid med roboten hengende og fritt område rundt.
- Lave kp/kd-forsterkninger og forsiktige momentgrenser i den første kontrollsløyfen.
- Én person ved fjernkontrollen, klar til å sette roboten i dempet modus.
- Samme SDK-versjon på PC-en og på roboten. Etter en OTA-oppdatering bør du teste eksemplene på nytt.
Abra Robotics leverer Unitree-sortimentet i Norge, med support på engelsk, og tilbyr opplæring og programvareutvikling på toppen av SDK-et som tjenester adskilt fra maskinvaren: detaljer under Programvare og Universiteter og forskning.
Ofte stilte spørsmål
Kan grunnversjonen av G1 (ikke EDU) programmeres?
Nei. I Unitrees offisielle produktark er sekundærutvikling bare oppgitt for G1 EDU. Grunnversjonen av G1 har verken beregningsmodulen for utvikling eller SDK-tilgang.
Hvilket operativsystem trenger utviklings-PC-en?
README-filen til unitree_sdk2 oppgir Ubuntu 20.04 med gcc 9.4.0 som referansemiljø, på x86_64- eller aarch64-CPU. For ROS 2 har Unitree testet Ubuntu 20.04 med Foxy og Ubuntu 22.04 med Humble, og anbefaler Humble.
Hva er adressen til utviklingsdatamaskinen på G1?
Utviklingsdatamaskinen (PC2) på G1 EDU svarer på 192.168.123.164, med brukeren unitree. PC-en din må være på samme subnett 192.168.123.x med en ledig adresse. Unitree foreslår 192.168.123.99.
Hvorfor vibrerer roboten når jeg starter et lavnivåeksempel?
Nesten alltid er den innebygde bevegelseskontrollen fortsatt aktiv og sender kommandoer parallelt med dine. Gå i debug mode (L2+R2 med roboten hengende og i dempet modus) før du sender kommandoer på rt/lowcmd.
Bør jeg starte med simulering eller maskinvare?
Med simulering. unitree_mujoco bruker de samme DDS-meldingene som roboten, så samme program kjører først i MuJoCo og deretter på G1. Du bytter bare nettverksgrensesnitt.
Kilder
- Unitree, produktark for G1 (versjoner, DoF, sekundærutvikling): unitree.com/g1
- Unitree, unitree_sdk2, README og G1-eksempler: 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, guide til deploy på ekte robot (debug mode L2+R2): deploy_real/README.md
- Unitree, xr_teleoperate (PC2 på 192.168.123.164): github.com/unitreerobotics/xr_teleoperate
- Unitree Document Center, utviklerseksjonen for G1: support.unitree.com/home/en/G1_developer
- Hugging Face, LeRobot-dokumentasjon for Unitree G1: huggingface.co/docs/lerobot/en/unitree_g1