Assistenza e sviluppo Unitree · Contattaci →

Blog Assistenza Contatti

Unitree · Software

Programmare il Unitree G1: SDK2, Python, ROS 2 e simulazione

Programmare il Unitree G1 non significa solo installare un SDK. Bisogna scegliere a quale livello lavorare (comandi di alto livello, controllo diretto dei motori, ROS 2, policy di reinforcement learning), dove far girare il codice e come provarlo senza rischiare il robot. Questa guida mette in ordine gli strumenti ufficiali di Unitree e propone un percorso di lavoro che usiamo nei progetti di sviluppo CALIGO.

Se non hai ancora collegato il robot al PC, parti dalla guida operativa G1: rete, indirizzi IP e modalità debug sono prerequisiti per tutto ciò che segue.

Gli strumenti ufficiali

RepositoryA cosa serve
unitree_sdk2SDK C++ ufficiale basato su CycloneDDS, con esempi per G1, H2, R1, Go2, B2, AS2 e altri modelli.
unitree_sdk2_pythonInterfaccia Python dello stesso SDK, utile per prototipi e integrazione con strumenti di machine learning.
unitree_ros2Messaggi e esempi per comunicare con il robot direttamente da ROS 2.
unitree_mujocoSimulatore MuJoCo che parla lo stesso protocollo dell'SDK: lo stesso codice gira in simulazione e sul robot.
unitree_rl_gymPipeline di reinforcement learning (Isaac Gym e MuJoCo) con deploy sul robot reale.
xr_teleoperateTeleoperazione con visori XR e raccolta dati per imitation learning.

Preparare l'ambiente di sviluppo

SDK C++

Il README di unitree_sdk2 indica come piattaforma di riferimento Ubuntu 20.04 LTS su architetture x86_64 e aarch64, con GCC 9.4 e CMake 3.10 o superiore. Le dipendenze e la compilazione sono quelle classiche di un progetto CMake:

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 ..
make

Per installarlo a livello di sistema si usa sudo make install, oppure un prefisso dedicato con -DCMAKE_INSTALL_PREFIX. Molti team lavorano su Ubuntu 22.04, ma non è la piattaforma indicata nel README: in caso di errori di compilazione il primo passo è verificare le versioni dei pacchetti.

SDK Python

unitree_sdk2_python richiede Python 3.8 o superiore e CycloneDDS 0.10.2. L'installazione è da sorgente:

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

Gli esempi si lanciano passando il nome dell'interfaccia di rete collegata al robot, ad esempio python3 ./example/...script.py enp3s0. Dimenticare o sbagliare questo argomento è l'errore più frequente in assoluto.

Dove far girare il codice

  • PC esterno via Ethernet — il modo più comodo per sviluppare e fare debug, con IP statico nella subnet 192.168.123.x.
  • Computer di sviluppo a bordo (192.168.123.164, Jetson Orin NX sulle EDU) — necessario quando il robot deve funzionare senza cavo o quando la latenza di rete conta.
  • Mai sul computer di locomozione (.161), riservato al controllo motorio di Unitree.

Una strategia pratica: sviluppa e testa sul PC, poi sposta sul computer di bordo solo il codice stabile.

Alto livello o basso livello?

Il G1 espone due modi molto diversi di controllo:

  • Alto livello: chiedi al servizio di locomozione di Unitree di camminare, fermarsi o cambiare postura. Il bilanciamento resta a carico del firmware. È il punto di partenza giusto per applicazioni, demo e integrazione con percezione e navigazione.
  • Basso livello: invii direttamente comandi ai motori (posizione, velocità, coppia, guadagni) e leggi lo stato di giunti, IMU e batteria. Serve per controllori propri e policy di RL. Richiede la modalità debug, che disattiva il servizio di locomozione, e il robot sospeso.

Il G1 usa la famiglia di messaggi unitree_hg, condivisa con H1-2 e AS2, mentre Go2, B2 e H1 usano unitree_go. Quando adatti esempi pensati per un altro robot, controlla di usare i tipi di messaggio giusti.

Simulazione prima del robot

unitree_mujoco è il passaggio che consigliamo sempre prima di toccare l'hardware. Il simulatore è costruito sopra l'SDK: se non specifichi un'interfaccia di rete usa l'interfaccia locale e un domain ID dedicato alla simulazione (1), mentre sul robot reale si usa il domain ID 0 e l'interfaccia collegata. In pratica lo stesso programma passa dalla simulazione al robot cambiando solo la configurazione di rete.

Per la locomozione appresa, unitree_rl_gym segue il flusso Train → Play → Sim2Sim → Sim2Real: addestramento in Isaac Gym, verifica, test incrociato in MuJoCo e infine deploy con deploy_real.py, sempre con il robot in modalità debug. Per ambienti di simulazione più recenti vedi la nostra guida su NVIDIA Isaac e Omniverse.

Teleoperazione e raccolta dati

Per progetti di manipolazione e imitation learning, xr_teleoperate permette di guidare il G1 (versioni 23 e 29 DoF) con Apple Vision Pro, PICO 4 Ultra Enterprise o Meta Quest 3, con mani Dex3-1, Dex1-1, Inspire o BrainCo, e di registrare episodi compatibili con unitree_IL_lerobot. Anche il progetto LeRobot di Hugging Face supporta ufficialmente il G1.

Un percorso di lavoro in 7 passi

  1. Rete stabile: ping verso .161 e .164, SSH sul computer di sviluppo.
  2. SDK compilato e primo esempio di sola lettura dello stato (nessun comando inviato).
  3. Simulazione in unitree_mujoco con lo stesso codice.
  4. Alto livello sul robot reale, in area sicura.
  5. Basso livello solo con robot sospeso, guadagni bassi e transizioni graduali.
  6. ROS 2 se serve integrare navigazione e sensori: vedi ROS 2 su Unitree.
  7. Deploy a bordo e test di durata, annotando versioni di firmware e SDK.

Errori frequenti

  • Nessun dato dall'SDK: interfaccia di rete sbagliata o CycloneDDS di versione diversa dalla 0.10.x.
  • Comandi di alto livello ignorati: il robot è in modalità debug.
  • Conflitti con ROS 2: più installazioni di CycloneDDS sul sistema o variabili d'ambiente di ROS caricate quando non servono.
  • Tipi di messaggio errati: esempi Go2 (unitree_go) usati sul G1 (unitree_hg).
  • Codice di basso livello testato a terra: è il modo più rapido per danneggiare il robot.

Domande frequenti

Posso programmare il G1 in Python?

Sì, con unitree_sdk2_python (Python 3.8 o superiore). Per controllori ad alta frequenza molti team preferiscono comunque il C++ dell'SDK ufficiale.

Serve ROS 2 per programmare il G1?

No. L'SDK basta per controllare il robot. ROS 2 è utile quando vuoi riusare pacchetti esistenti di navigazione, percezione o visualizzazione.

Il G1 base si può programmare?

Lo sviluppo secondario è pensato per le versioni EDU, che includono anche il computer di sviluppo a bordo. Prima di acquistare verifica con il venditore cosa è abilitato sulla configurazione esatta.

Quanto tempo serve per arrivare al primo programma funzionante?

Con rete e ambiente già configurati, eseguire un esempio ufficiale è questione di poco. Il tempo vero si spende su rete, versioni delle dipendenze e sicurezza dei test: è lì che un supporto esperto fa risparmiare di più.

Vuoi accelerare lo sviluppo?

CALIGO configura l'ambiente, imposta la simulazione e sviluppa con te le prime applicazioni sul G1, formando il team lungo il percorso. Parliamo del tuo progetto.

Panoramica commerciale e catalogo: Abra Robotics.

Richiedi assistenza Unitree Tutti gli articoli