Unitree Roboter mit Lieferung aus Italien · Support auf Englisch

Prices Find the right robot Financing
About us Book a call
Unitree G1 EDU, humanoide Entwicklungsplattform

Unitree G1 · Software

Unitree G1 programmieren: Netzwerk, SDK2 und ROS 2 Schritt für Schritt

Kurz gesagt: Mit einem G1 EDU verbinden Sie den PC per Ethernet mit dem Subnetz 192.168.123.x, kompilieren unitree_sdk2 (C++) oder installieren unitree_sdk2_python, testen die Beispiele zuerst in der Simulation mit unitree_mujoco und danach am hängenden Roboter im Debug Mode (L2+R2). ROS 2 Humble kommt mit unitree_ros2 dazu, sobald Sie Nav2, MoveIt oder rosbag brauchen.

Um den Unitree G1 zu programmieren, brauchen Sie drei Dinge: die EDU-Version, einen Ubuntu-PC im internen Netzwerk des Roboters und das offizielle SDK unitree_sdk2. Ist der Roboter gerade erst angekommen, beginnen Sie mit Einschalten, Fernbedienung und erstem Aufstehen.

Welcher G1 sich programmieren lässt

Im offiziellen Datenblatt des G1 ist eigene Softwareentwicklung nur beim G1 EDU vorgesehen; der G1 in der Basisversion hat 23 Freiheitsgrade und kein Rechenmodul für die Entwicklung. Die EDU-Versionen reichen von 23 bis 43 DoF, mit optionalem Rechenmodul (Unitree nennt Orin-Module) und optionalen Dex3-1 Händen. Laut Preisliste kostet der G1 Air 19.809 € und der G1-U1 EDU (23 DoF, Rechenmodul mit 100 TOPS) 38.005 €, jeweils zzgl. MwSt.; Versand und Versicherung werden im Angebot ausgewiesen. Bei der Wahl zwischen U1, U2 und den Versionen mit Händen hilft der Leitfaden Welche G1 Version passt.

Im Artikel erwähnte ProdukteAlle G1 Versionen

Architektur: wo Ihr Code läuft

Der G1 EDU hat einen Rechner für die Bewegungssteuerung, den Unitree verwaltet, und einen Entwicklungsrechner (PC2) für den Code der Anwender. Die Repositorys von Unitree, zum Beispiel xr_teleoperate, geben für PC2 die Adresse 192.168.123.164 mit dem Benutzer unitree an. Das Startpasswort stellt Unitree bereit; die Entwickler-FAQ und die LeRobot-Anleitung für den G1 nennen 123. Ändern Sie es, sobald der Roboter in ein gemeinsam genutztes Netzwerk kommt.

Sie haben zwei Möglichkeiten:

  • Code auf dem Laptop: Der PC spricht über DDS auf dem Ethernet-Kabel mit dem Roboter. Das ist der bequemste Weg für Entwicklung und Debugging.
  • Code auf PC2: Sie starten das Programm per SSH auf dem Roboter. Das brauchen Sie für autonomen Betrieb ohne Kabel und für geringere Latenz.
ssh unitree@192.168.123.164

Netzwerk am PC einrichten

  1. Verbinden Sie den PC mit einem Ethernet-Kabel mit dem Roboter.
  2. Stellen Sie die Schnittstelle auf manuelles IPv4: Adresse 192.168.123.99 (von Unitree vorgeschlagen), Netzmaske 255.255.255.0. Verwenden Sie keine Adressen, die der Roboter bereits belegt, etwa .164.
  3. Notieren Sie mit ip a oder ifconfig den Namen der Schnittstelle (enp3s0, eth0...): Alle SDK-Beispiele erwarten ihn als Argument.
  4. Prüfen Sie die Verbindung mit ping 192.168.123.164. Kommt keine Antwort, liegt das Problem im Netzwerk, und die IDE zu öffnen bringt nichts.

Ein eigener Ethernet-Port (auch ein USB-Adapter) vermeidet Konflikte mit dem Netzwerk des Labors.

unitree_sdk2 installieren (C++)

Das README von unitree_sdk2 nennt als Referenzumgebung Ubuntu 20.04, gcc 9.4.0, CPU x86_64 oder aarch64 und CMake 3.10 oder neuer. Windows gehört nicht zu den genannten Umgebungen.

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 kompiliert auch die Beispiele, die in build/bin/ landen. Die Installation in /opt/unitree_robotics empfiehlt auch der Simulator unitree_mujoco.

Oder Python: unitree_sdk2_python

Der Python-Wrapper setzt Python 3.8 oder neuer und cyclonedds 0.10.2 voraus:

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

Bricht die Installation mit "Could not locate cyclonedds" ab, erklärt das README, wie Sie CycloneDDS aus dem Branch releases/0.10.x kompilieren und CYCLONEDDS_HOME setzen. Die Beispiele für den G1 liegen in example/g1/. Ein nützlicher Hinweis aus dem README der Beispiele: G1 und H1-2 verwenden die Nachrichten unitree_hg, Go2, B2 und H1 dagegen unitree_go.

Debug Mode: vor jedem Low-Level-Test

Nach dem Einschalten startet der G1 seine eigene Bewegungssteuerung, die laufend Befehle an die Motoren sendet. Veröffentlichen Sie gleichzeitig auf rt/lowcmd, geraten die beiden Befehlsströme in Konflikt. Das Vorgehen aus der Deploy-Anleitung von unitree_rl_gym:

  1. Schalten Sie den Roboter ein, während er im Gurtgeschirr hängt, und warten Sie auf den Nullmoment-Modus;
  2. drücken Sie L2+R2 auf der Fernbedienung: Der Roboter wechselt in den Debug Mode, die Gelenke sind gedämpft;
  3. erst jetzt starten Sie das Low-Level-Programm.

Im Debug Mode hält der Roboter das Gleichgewicht nicht selbst: Er bleibt hängen, bis Ihr Regler ihn trägt.

Erster Test: die Knöchel bewegen

Das Beispiel g1_ankle_swing_example (Quellcode in example/g1/low_level/) liest rt/lowstate, schreibt rt/lowcmd und lässt die Knöchel pendeln. Aus dem Ordner build:

./bin/g1_ankle_swing_example enp3s0

Ersetzen Sie enp3s0 durch Ihre Schnittstelle. Gibt das Terminal "CRC Error" aus, ist die empfangene Nachricht beschädigt oder entspricht nicht dem erwarteten Typ: Prüfen Sie Kabel, Schnittstelle und SDK-Version.

Für High-Level-Befehle (Stehen, Gehen mit vorgegebener Geschwindigkeit) gibt es g1_loco_client. Er nutzt die integrierte Bewegungssteuerung und wird deshalb außerhalb des Debug Mode gestartet:

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

Wichtige Topics

DDS TopicInhaltQuelle
rt/lowstateMotorstatus, IMU, AkkuBeispiel ankle swing
rt/lowcmdBefehle für Position, Geschwindigkeit, Drehmoment und Verstärkungen kp/kdBeispiel ankle swing
rt/secondary_imuIMU im TorsoBeispiel ankle swing, unitree_mujoco
rt/dex3/left/cmd, rt/dex3/right/cmdBefehle Hand Dex3-1Beispiel g1_dex3_example
rt/lf/dex3/left/state, rt/lf/dex3/right/stateStatus Hand Dex3-1Beispiel g1_dex3_example

Die Dex3-1 Hände haben eigene Topics, getrennt von denen der Körpergelenke.

Erst simulieren: unitree_mujoco

unitree_mujoco ist ein Simulator auf Basis von MuJoCo, der dieselben Nachrichten bereitstellt (LowCmd, LowState, SportModeState, beim G1 die IMU im Torso). Ein Programm, das mit unitree_sdk2, unitree_sdk2_python oder unitree_ros2 geschrieben ist, läuft zuerst in der Simulation und danach auf dem Roboter. Der Simulator unterstützt nur die Low-Level-Entwicklung. Für den Wechsel auf den Roboter ändern Sie Netzwerkschnittstelle und DDS Domain ID: Das README empfiehlt 1 in der Simulation, auf dem Roboter ist der Standardwert 0. Für Reinforcement Learning deckt unitree_rl_gym den Ablauf Train, Play, Sim2Sim (MuJoCo) und Sim2Real für G1, H1, H1-2 und Go2 ab.

Wann ROS 2 dazukommt

Das SDK direkt zu nutzen ist der kürzeste Weg für Motoren und isolierte Tests. ROS 2 brauchen Sie, wenn Sie Nav2, MoveIt, Standard-Pipelines für die Bildverarbeitung, Aufzeichnung mit rosbag oder mehrere Roboter im selben Labor integrieren. Das Paket unitree_ros2 enthält die Nachrichten unitree_hg und ein Low-Level-Beispiel für den G1 (g1/lowlevel/g1_low_level_example); Unitree hat es unter Ubuntu 22.04 mit Humble (empfohlen) und unter Ubuntu 20.04 mit Foxy getestet. Installation, Netzwerk und erstes Topic beschreibt die Anleitung ROS 2 auf Unitree Robotern.

Sicherheits-Checkliste für das Labor

  • Erste Tests immer mit hängendem Roboter und freiem Bereich ringsum.
  • Niedrige Verstärkungen kp/kd und vorsichtige Drehmomentgrenzen in der ersten Regelschleife.
  • Eine Person an der Fernbedienung, bereit, den Roboter in die Dämpfung zu schalten.
  • Dieselbe SDK-Version auf PC und Roboter; nach einem OTA-Update prüfen Sie die Beispiele erneut.

Abra Robotics bietet Schulung und Softwareentwicklung auf Basis des SDK als eigene Leistungen getrennt von der Hardware an: mehr dazu unter Software und Hochschulen und Forschung.

Häufige Fragen

Lässt sich der G1 in der Basisversion (nicht EDU) programmieren?

Nein. Laut Datenblatt von Unitree ist eigene Softwareentwicklung nur beim G1 EDU vorgesehen: Der Basis-G1 hat weder den Entwicklungsrechner noch Zugang zum SDK.

Welches Betriebssystem braucht der Entwicklungs-PC?

Ubuntu. Für das SDK ist Ubuntu 20.04 die Referenzumgebung; für ROS 2 empfiehlt Unitree Ubuntu 22.04 mit Humble.

Welche Adresse hat der Entwicklungsrechner des G1?

Der PC2 des G1 EDU ist unter 192.168.123.164 erreichbar, Benutzer unitree. Ihr PC bekommt eine freie Adresse im selben Subnetz.

Warum braucht es vor einem Low-Level-Test den Debug Mode?

Weil die integrierte Bewegungssteuerung weiter Befehle an die Motoren sendet. Mit L2+R2 stoppen Sie sie am hängenden Roboter, und erst dann veröffentlichen Sie auf rt/lowcmd.

Besser mit der Simulation oder mit der Hardware beginnen?

Mit der Simulation. Mit unitree_mujoco wechselt dasselbe Programm auf den G1, wenn Sie Netzwerkschnittstelle und DDS Domain ID ändern (1 in der Simulation, 0 auf dem Roboter).

Quellen

  1. Unitree, Produktseite G1 (Versionen, DoF, Entwicklung mit SDK): unitree.com/g1
  2. Unitree, unitree_sdk2, README und Beispiele G1: 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, Anleitung zum Deploy auf dem echten Roboter (Debug Mode L2+R2): deploy_real/README.md
  7. Unitree, xr_teleoperate (PC2 unter 192.168.123.164): github.com/unitreerobotics/xr_teleoperate
  8. Unitree Document Center, Bereich für G1 Entwickler: support.unitree.com/home/en/G1_developer
  9. Hugging Face, LeRobot-Dokumentation für Unitree G1: huggingface.co/docs/lerobot/en/unitree_g1

Schulung und Entwicklung mit dem Unitree SDK

Wir liefern den G1 EDU konfiguriert und bieten als separate Leistung Schulung und Entwicklung auf Basis von unitree_sdk2 und ROS 2 an.

Software-LeistungenG1 EDU Konfigurationen