Unitree-robotar levererade från Italien · support på engelska

Prices Find the right robot Financing
About us Book a call
Unitree G1 EDU, piattaforma di sviluppo umanoide

Unitree G1 · Mjukvara

Programmera Unitree G1: nätverk, SDK2 och ROS 2 steg för steg

I korthet: bara G1 EDU går att programmera. Du ansluter datorn via Ethernet på subnätet 192.168.123.x, kompilerar unitree_sdk2 (C++) eller installerar unitree_sdk2_python, provar exemplen i simulering med unitree_mujoco och sedan på den upphängda roboten i debug mode (L2+R2). ROS 2 Humble läggs till med unitree_ros2 när du behöver Nav2, MoveIt eller rosbag.

För att programmera Unitree G1 behövs tre saker: EDU-versionen, en Ubuntu-dator ansluten till robotens interna nät och det officiella SDK:t unitree_sdk2. Den här guiden följer Unitrees offentliga dokumentation (GitHub-repositorier och Document Center) och anger för varje steg vilken fil eller sida det kommer från. Om roboten precis har kommit börjar du med start, fjärrkontroll och första gången den reser sig.

Vilken G1 går att programmera

I det officiella produktbladet för G1 anges sekundär utveckling bara för G1 EDU. Bas-G1 har 23 frihetsgrader och ingen beräkningsmodul för utveckling. EDU-versionerna har från 23 till 43 DoF, med beräkningsmodul som tillval (Unitree nämner Orin-kort) och Dex3-1-händer som tillval. I Abras prislista börjar G1 Air på 19 809 € och G1-U1 EDU (23 DoF, beräkningsdocka på 100 TOPS) på 38 005 €, exklusive moms. Alla versioner finns i G1-översikten; för att välja mellan U1, U2 och versionerna med händer finns guiden vilken G1-version ska man välja.

Produkter i artikelnHela G1-serien

Arkitektur: var din kod körs

G1 EDU har en dator för rörelsestyrning, som Unitree sköter, och en utvecklingsdator (PC2) för användarens kod. Unitrees repositorier, till exempel xr_teleoperate, anger PC2 på adressen 192.168.123.164 med användaren unitree. Det initiala lösenordet kommer från Unitree; utvecklar-FAQ:n och LeRobot-guiden för G1 anger 123. Byt det så snart roboten kopplas in i ett delat nät.

Du har två alternativ:

  • Koden på den bärbara datorn: datorn pratar med roboten via DDS över Ethernetkabeln. Det är det bekvämaste valet för utveckling och felsökning.
  • Koden på PC2: du startar programmet på roboten via SSH. Det behövs för autonom drift utan kabel och för att minska latensen.
ssh unitree@192.168.123.164

Konfigurera datorns nätverk

  1. Anslut datorn till roboten med en Ethernetkabel.
  2. Ställ in gränssnittet på manuell IPv4: adress 192.168.123.99 (den som Unitree föreslår), nätmask 255.255.255.0. Använd inte adresser som redan finns på roboten, som .164.
  3. Notera gränssnittets namn med ip a eller ifconfig (enp3s0, eth0...): alla SDK-exempel kräver det som argument.
  4. Kontrollera med ping 192.168.123.164. Svarar den inte är problemet nätverket: ingen idé att öppna IDE:n.

En egen Ethernetport (även en USB-adapter) undviker konflikter med labbets nätverk.

Installera unitree_sdk2 (C++)

README-filen för unitree_sdk2 anger Ubuntu 20.04, gcc 9.4.0, x86_64- eller aarch64-processor och CMake 3.10 eller senare som referensmiljö. På andra Ubuntu-versioner brukar det kompilera, men det är den miljön som är testad. Windows är ingen miljö som README-filen räknar med.

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 kompilerar även exemplen, som hamnar i build/bin/. Installationen i /opt/unitree_robotics är den som även simulatorn unitree_mujoco rekommenderar.

Eller Python: unitree_sdk2_python

Python-wrappern kräver Python 3.8 eller senare och cyclonedds 0.10.2:

git clone https://github.com/unitreerobotics/unitree_sdk2_python.git
cd unitree_sdk2_python
pip3 install -e .

Om installationen stoppar med "Could not locate cyclonedds" förklarar README-filen hur man kompilerar CycloneDDS från grenen releases/0.10.x och sätter CYCLONEDDS_HOME. Exemplen för G1 finns i example/g1/. En nyttig upplysning i exemplens README: G1 och H1-2 använder meddelandena unitree_hg, medan Go2, B2 och H1 använder unitree_go.

Debug mode: före varje low-level-test

När G1 startar kör den sin egen rörelsestyrning, som hela tiden skickar kommandon till motorerna. Publicerar du samtidigt på rt/lowcmd krockar kommandona och roboten vibrerar. Proceduren som dokumenteras i driftsättningsguiden för unitree_rl_gym är:

  1. starta roboten upphängd i selen och vänta på läget med noll vridmoment;
  2. tryck L2+R2 på fjärrkontrollen: roboten går in i debug mode med lederna i dämpat läge;
  3. först nu startar du low-level-programmet.

I debug mode håller roboten inte balansen själv: den ska hänga kvar tills din regulator bär den.

Första testet: röra fotlederna

Exemplet g1_ankle_swing_example (källkod i example/g1/low_level/) läser rt/lowstate, skriver rt/lowcmd och får fotlederna att pendla. Från mappen build:

./bin/g1_ankle_swing_example enp3s0

Byt enp3s0 mot ditt gränssnitt. Skriver terminalen ut "CRC Error" är det mottagna meddelandet skadat eller av en annan typ än väntat: kontrollera kabel, gränssnitt och SDK-version.

För kommandon på hög nivå (stå upp, gå med inställda hastigheter) finns g1_loco_client, som använder den inbyggda rörelsestyrningen och därför ska startas utanför debug mode:

./bin/g1_loco_client --network_interface=enp3s0 --get_fsm_id

Viktigaste topics

DDS-topicInnehållKälla
rt/lowstateStatus för motorer, IMU, batteriexemplet ankle swing
rt/lowcmdKommandon för position, hastighet, vridmoment och förstärkningar kp/kdexemplet ankle swing
rt/secondary_imuTorsots IMUexemplet ankle swing, unitree_mujoco
rt/dex3/left/cmd, rt/dex3/right/cmdKommandon till Dex3-1-handenexemplet g1_dex3_example
rt/lf/dex3/left/state, rt/lf/dex3/right/stateStatus för Dex3-1-handenexemplet g1_dex3_example

Händerna har egna topics, skilda från gången: det lönar sig att köra benens reglerloop i en process och greppet i en annan, med olika frekvenser.

Simulera först: unitree_mujoco

unitree_mujoco är en simulator baserad på MuJoCo som exponerar samma meddelanden (LowCmd, LowState, SportModeState, torsots IMU för G1). Ett program skrivet med unitree_sdk2, unitree_sdk2_python eller unitree_ros2 körs först i simulering och sedan på roboten. Simulatorn stöder bara utveckling på låg nivå. För reinforcement learning täcker unitree_rl_gym hela kedjan train, play, sim2sim (MuJoCo) och sim2real för G1, H1, H1-2 och Go2.

När ROS 2 ska läggas till

Att gå direkt via SDK:t är den kortaste vägen för motorer och isolerade tester. ROS 2 behövs när du ska integrera Nav2, MoveIt, standardiserade bildbehandlingskedjor, inspelning med rosbag eller flera robotar i samma labb. Paketet unitree_ros2 innehåller meddelandena unitree_hg och ett low-level-exempel för G1 (g1/lowlevel/g1_low_level_example); Unitree har testat det på Ubuntu 22.04 med Humble (rekommenderas) och på Ubuntu 20.04 med Foxy. Installation, nätverk och första topic finns i guiden ROS 2 på Unitree-robotar.

Säkerhetschecklista för labbet

  • De första testerna alltid med roboten upphängd och fritt utrymme runt omkring.
  • Låga förstärkningar kp/kd och försiktiga momentgränser i den första reglerloopen.
  • En person vid fjärrkontrollen, redo att ställa roboten i dämpat läge.
  • Samma SDK-version på datorn och på roboten; efter en OTA-uppdatering kontrollerar du exemplen igen.

Abra Robotics levererar Unitree-sortimentet i Sverige, med support på engelska, och erbjuder utbildning och mjukvaruutveckling ovanpå SDK:t som tjänster separata från hårdvaran: mer om detta under Mjukvara och Universitet och forskning.

Vanliga frågor

Går bas-G1 (inte EDU) att programmera?

Nej. I Unitrees officiella produktblad anges sekundär utveckling bara för G1 EDU. Bas-G1 har varken beräkningsmodul för utveckling eller SDK-åtkomst.

Vilket operativsystem behövs på utvecklingsdatorn?

README-filen för unitree_sdk2 anger Ubuntu 20.04 med gcc 9.4.0 som referensmiljö, på x86_64- eller aarch64-processor. För ROS 2 har Unitree testat Ubuntu 20.04 med Foxy och Ubuntu 22.04 med Humble, och rekommenderar Humble.

Vilken adress har G1:s utvecklingsdator?

Utvecklingsdatorn (PC2) i G1 EDU svarar på 192.168.123.164, användare unitree. Din dator ska ligga på samma subnät 192.168.123.x med en ledig adress; Unitree föreslår 192.168.123.99.

Varför vibrerar roboten när jag startar ett low-level-exempel?

Nästan alltid är den inbyggda rörelsestyrningen fortfarande aktiv och skickar kommandon parallellt med dina. Gå in i debug mode (L2+R2 med roboten upphängd och i dämpat läge) innan du skickar kommandon på rt/lowcmd.

Är det bättre att börja i simulering eller på hårdvaran?

I simulering. unitree_mujoco använder samma DDS-meddelanden som roboten, så samma program körs först i MuJoCo och sedan på G1 genom att bara byta nätverksgränssnitt.

Källor

  1. Unitree, produktblad G1 (versioner, DoF, sekundär utveckling): unitree.com/g1
  2. Unitree, unitree_sdk2, README och G1-exempel: github.com/unitreerobotics/unitree_sdk2 · example/g1
  3. Unitree, unitree_sdk2_python: github.com/unitreerobotics/unitree_sdk2_python
  4. Unitree, unitree_ros2: github.com/unitreerobotics/unitree_ros2
  5. Unitree, unitree_mujoco: github.com/unitreerobotics/unitree_mujoco
  6. Unitree, unitree_rl_gym, guide för driftsättning på riktig robot (debug mode L2+R2): deploy_real/README.md
  7. Unitree, xr_teleoperate (PC2 på 192.168.123.164): github.com/unitreerobotics/xr_teleoperate
  8. Unitree Document Center, utvecklaravsnittet för G1: support.unitree.com/home/en/G1_developer
  9. Hugging Face, LeRobot-dokumentation för Unitree G1: huggingface.co/docs/lerobot/en/unitree_g1

Utbildning och utveckling på Unitrees SDK

Vi levererar G1 EDU konfigurerade och, som separat tjänst, utbildning och utveckling ovanpå unitree_sdk2 och ROS 2.

MjukvarutjänsterG1 EDU-konfigurationer