Robots Unitree livrés depuis l'Italie · support en anglais

Prices Find the right robot Financing
About us Book a call
Unitree G1 EDU, plateforme de développement humanoïde

Unitree G1 · Logiciel

Programmer l'Unitree G1 : réseau, SDK2 et ROS 2 pas à pas

En bref : seul le G1 EDU se programme. Vous reliez le PC en Ethernet sur le sous-réseau 192.168.123.x, vous compilez unitree_sdk2 (C++) ou installez unitree_sdk2_python, vous testez les exemples en simulation avec unitree_mujoco, puis sur le robot suspendu, en debug mode (L2+R2). ROS 2 Humble s'ajoute avec unitree_ros2 quand vous avez besoin de Nav2, MoveIt ou rosbag.

Pour programmer l'Unitree G1, il faut trois choses : la version EDU, un PC sous Ubuntu relié au réseau interne du robot et le SDK officiel unitree_sdk2. Ce guide suit la documentation publique d'Unitree (dépôts GitHub et Document Center) et indique pour chaque étape le fichier ou la page d'où elle provient. Si le robot vient d'arriver, commencez par la mise sous tension, la télécommande et la première mise debout.

Quel G1 peut-on programmer

Sur la fiche officielle du G1, le développement secondaire est indiqué uniquement pour le G1 EDU ; le G1 de base a 23 degrés de liberté et pas de module de calcul pour le développement. Les versions EDU vont de 23 à 43 DoF, avec un module de calcul en option (Unitree cite des cartes Orin) et des mains Dex3-1 en option. Sur la liste de prix Abra, le G1 Air commence à 19 809 € et le G1-U1 EDU (23 DoF, dock de calcul de 100 TOPS) à 38 005 €, HT. Toutes les versions sont sur la page G1 ; pour choisir entre U1, U2 et les versions avec mains, consultez le guide quelle version du G1 choisir.

Produits cités dans l'articleGamme G1

Architecture : où tourne votre code

Le G1 EDU possède un ordinateur de contrôle du mouvement, géré par Unitree, et un ordinateur de développement (PC2) pour le code utilisateur. Les dépôts Unitree, par exemple xr_teleoperate, indiquent le PC2 à l'adresse 192.168.123.164 avec l'utilisateur unitree. Le mot de passe initial est fourni par Unitree ; la FAQ développeurs et le guide LeRobot pour le G1 indiquent 123. Changez-le dès que le robot rejoint un réseau partagé.

Vous avez deux options :

  • Code sur l'ordinateur portable : le PC communique avec le robot via DDS sur le câble Ethernet. C'est le choix le plus pratique pour développer et déboguer.
  • Code sur le PC2 : vous lancez le programme via SSH sur le robot. C'est utile pour l'autonomie sans câble et pour réduire la latence.
ssh unitree@192.168.123.164

Configurer le réseau du PC

  1. Reliez le PC au robot avec un câble Ethernet.
  2. Réglez l'interface en IPv4 manuel : adresse 192.168.123.99 (celle que suggère Unitree), masque 255.255.255.0. N'utilisez pas d'adresses déjà présentes sur le robot, comme .164.
  3. Avec ip a ou ifconfig, notez le nom de l'interface (enp3s0, eth0...) : tous les exemples du SDK le demandent en argument.
  4. Vérifiez avec ping 192.168.123.164. S'il n'y a pas de réponse, le problème vient du réseau : inutile d'ouvrir l'IDE.

Un port Ethernet dédié (même un adaptateur USB) évite les conflits avec le réseau du laboratoire.

Installer unitree_sdk2 (C++)

Le README d'unitree_sdk2 indique comme environnement de référence Ubuntu 20.04, gcc 9.4.0, CPU x86_64 ou aarch64 et CMake 3.10 ou supérieur. Sur d'autres versions d'Ubuntu, la compilation passe en général, mais l'environnement testé est celui-ci. Windows n'est pas un environnement prévu par le README.

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

Le make compile aussi les exemples, qui se retrouvent dans build/bin/. L'installation dans /opt/unitree_robotics est aussi celle que recommande le simulateur unitree_mujoco.

Ou bien Python : unitree_sdk2_python

Le wrapper Python demande Python 3.8 ou supérieur et cyclonedds 0.10.2 :

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

Si l'installation s'arrête sur « Could not locate cyclonedds », le README explique comment compiler CycloneDDS depuis la branche releases/0.10.x et définir CYCLONEDDS_HOME. Les exemples pour le G1 sont dans example/g1/. Remarque utile tirée du README des exemples : le G1 et le H1-2 utilisent les messages unitree_hg, tandis que le Go2, le B2 et le H1 utilisent unitree_go.

Debug mode : avant chaque test low-level

À la mise sous tension, le G1 lance son propre contrôle du mouvement, qui continue d'envoyer des commandes aux moteurs. Si vous publiez en parallèle sur rt/lowcmd, les commandes entrent en conflit et le robot vibre. La procédure documentée dans le guide de déploiement d'unitree_rl_gym est la suivante :

  1. allumez le robot suspendu au harnais et attendez le mode à couple nul ;
  2. appuyez sur L2+R2 sur la télécommande : le robot passe en debug mode avec les articulations en amortissement ;
  3. lancez seulement à ce moment-là le programme low-level.

En debug mode, le robot ne tient pas l'équilibre tout seul : laissez-le suspendu tant que votre contrôleur ne le maintient pas.

Premier test : faire bouger les chevilles

L'exemple g1_ankle_swing_example (source dans example/g1/low_level/) lit rt/lowstate, écrit sur rt/lowcmd et fait osciller les chevilles. Depuis le dossier build :

./bin/g1_ankle_swing_example enp3s0

Remplacez enp3s0 par votre interface. Si le terminal affiche « CRC Error », le message reçu est corrompu ou ne correspond pas au type attendu : vérifiez le câble, l'interface et la version du SDK.

Pour les commandes de haut niveau (se tenir debout, marcher à des vitesses définies), il existe g1_loco_client, qui utilise le contrôle du mouvement intégré et doit donc être lancé hors du debug mode :

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

Topics principaux

Topic DDSContenuSource
rt/lowstateÉtat des moteurs, IMU, batterieexemple ankle swing
rt/lowcmdCommandes de position, de vitesse, de couple et gains kp/kdexemple ankle swing
rt/secondary_imuIMU du torseexemple ankle swing, unitree_mujoco
rt/dex3/left/cmd, rt/dex3/right/cmdCommandes de la main Dex3-1exemple g1_dex3_example
rt/lf/dex3/left/state, rt/lf/dex3/right/stateÉtat de la main Dex3-1exemple g1_dex3_example

Les mains ont des topics séparés de la locomotion : mieux vaut garder la boucle de contrôle des jambes dans un processus et la préhension dans un autre, à des fréquences différentes.

Simuler d'abord : unitree_mujoco

unitree_mujoco est un simulateur basé sur MuJoCo qui expose les mêmes messages (LowCmd, LowState, SportModeState, IMU du torse pour le G1). Un programme écrit avec unitree_sdk2, unitree_sdk2_python ou unitree_ros2 tourne d'abord en simulation, puis sur le robot. Le simulateur ne prend en charge que le développement low-level. Pour l'apprentissage par renforcement, unitree_rl_gym couvre le cycle train, play, sim2sim (MuJoCo) et sim2real pour le G1, le H1, le H1-2 et le Go2.

Quand ajouter ROS 2

Le SDK direct est la voie la plus courte pour les moteurs et les tests isolés. ROS 2 devient utile quand vous devez intégrer Nav2, MoveIt, des pipelines de vision standard, l'enregistrement avec rosbag ou plusieurs robots dans le même laboratoire. Le paquet unitree_ros2 contient les messages unitree_hg et un exemple low-level pour le G1 (g1/lowlevel/g1_low_level_example) ; Unitree l'a testé sur Ubuntu 22.04 avec Humble (recommandé) et sur Ubuntu 20.04 avec Foxy. L'installation, le réseau et le premier topic sont dans le guide ROS 2 sur les robots Unitree.

Check-list de sécurité pour le laboratoire

  • Premiers tests toujours avec le robot suspendu et un espace libre autour.
  • Gains kp/kd bas et limites de couple prudentes dans la première boucle de contrôle.
  • Une personne à la télécommande, prête à mettre le robot en amortissement.
  • La même version du SDK sur le PC et sur le robot ; après une mise à jour OTA, revérifiez les exemples.

Abra Robotics fournit la gamme Unitree en France, en Belgique, au Luxembourg et en Suisse, avec un support en anglais, et propose la formation et le développement logiciel au-dessus du SDK comme services distincts du matériel : détails sur les pages Logiciel et Universités et recherche.

Questions fréquentes

Peut-on programmer le G1 de base (non EDU) ?

Non. Sur la fiche officielle d'Unitree, le développement secondaire est indiqué uniquement pour le G1 EDU ; le G1 de base n'a ni module de calcul pour le développement ni accès au SDK.

Quel système d'exploitation faut-il sur le PC de développement ?

Le README d'unitree_sdk2 indique Ubuntu 20.04 avec gcc 9.4.0 comme environnement de référence, sur CPU x86_64 ou aarch64. Pour ROS 2, Unitree a testé Ubuntu 20.04 avec Foxy et Ubuntu 22.04 avec Humble, et recommande Humble.

Quelle est l'adresse de l'ordinateur de développement du G1 ?

L'ordinateur de développement (PC2) du G1 EDU répond sur 192.168.123.164, utilisateur unitree. Votre PC doit être sur le même sous-réseau 192.168.123.x avec une adresse libre ; Unitree suggère 192.168.123.99.

Pourquoi le robot vibre-t-il quand je lance un exemple low-level ?

Presque toujours, le contrôle du mouvement intégré est encore actif et envoie des commandes en parallèle des vôtres. Passez en debug mode (L2+R2 avec le robot suspendu et en amortissement) avant d'envoyer des commandes sur rt/lowcmd.

Vaut-il mieux commencer par la simulation ou par le matériel ?

Par la simulation. unitree_mujoco utilise les mêmes messages DDS que le robot : le même programme tourne d'abord dans MuJoCo, puis sur le G1 en changeant seulement l'interface réseau.

Sources

  1. Unitree, fiche produit G1 (versions, DoF, développement secondaire) : unitree.com/g1
  2. Unitree, unitree_sdk2, README et exemples 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, guide de déploiement sur le robot réel (debug mode L2+R2) : deploy_real/README.md
  7. Unitree, xr_teleoperate (PC2 sur 192.168.123.164) : github.com/unitreerobotics/xr_teleoperate
  8. Unitree Document Center, section développeurs G1 : support.unitree.com/home/en/G1_developer
  9. Hugging Face, documentation LeRobot pour l'Unitree G1 : huggingface.co/docs/lerobot/en/unitree_g1

Formation et développement sur le SDK Unitree

Nous fournissons des G1 EDU configurés et, comme service distinct, la formation et le développement au-dessus d'unitree_sdk2 et de ROS 2.

Services logicielsConfigurations G1 EDU