Robots Unitree con envío desde Italia · soporte en inglés

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

Unitree G1 · Software

Programar el Unitree G1: red, SDK2 y ROS 2 paso a paso

En resumen: solo se programa el G1 EDU. Conecte el PC por Ethernet a la subred 192.168.123.x, compile unitree_sdk2 (C++) o instale unitree_sdk2_python, pruebe los ejemplos en simulación con unitree_mujoco y después en el robot suspendido, en debug mode (L2+R2). ROS 2 Humble se añade con unitree_ros2 cuando necesite Nav2, MoveIt o rosbag.

Para programar el Unitree G1 hacen falta tres cosas: la versión EDU, un PC con Ubuntu conectado a la red interna del robot y el SDK oficial unitree_sdk2. Esta guía sigue la documentación pública de Unitree (repositorios de GitHub y Document Center) e indica en cada paso el archivo o la página de origen. Si el robot acaba de llegar, empiece por encendido, mando a distancia y primera puesta en pie.

Qué G1 se puede programar

En la ficha oficial del G1, el desarrollo secundario figura solo para el G1 EDU; el G1 básico tiene 23 grados de libertad y no lleva módulo de cómputo para desarrollo. Las versiones EDU van de 23 a 43 DoF, con módulo de cómputo opcional (Unitree menciona placas Orin) y manos Dex3-1 opcionales. En la tarifa de Abra, el G1 Air parte de 19.809 € y el G1-U1 EDU (23 DoF, dock de cómputo de 100 TOPS) de 38.005 €, sin IVA. Todas las versiones están en el hub del G1; para elegir entre U1, U2 y las versiones con manos tiene la guía qué versión del G1 elegir.

Productos citados en el artículoGama G1

Arquitectura: dónde se ejecuta su código

El G1 EDU tiene un ordenador de control de movimiento, gestionado por Unitree, y un ordenador de desarrollo (PC2) para el código del usuario. Los repositorios de Unitree, por ejemplo xr_teleoperate, sitúan el PC2 en la dirección 192.168.123.164 con el usuario unitree. La contraseña inicial la facilita Unitree; la FAQ para desarrolladores y la guía de LeRobot para el G1 indican 123. Cámbiela en cuanto el robot entre en una red compartida.

Tiene dos opciones:

  • Código en el portátil: el PC habla con el robot por DDS a través del cable Ethernet. Es la opción más cómoda para desarrollar y depurar.
  • Código en el PC2: lanza el programa por SSH en el robot. Sirve para trabajar de forma autónoma, sin cable, y para reducir la latencia.
ssh unitree@192.168.123.164

Configurar la red del PC

  1. Conecte el PC al robot con un cable Ethernet.
  2. Configure la interfaz con IPv4 manual: dirección 192.168.123.99 (la que sugiere Unitree), máscara 255.255.255.0. No use direcciones que ya existan en el robot, como .164.
  3. Con ip a o ifconfig anote el nombre de la interfaz (enp3s0, eth0...): todos los ejemplos del SDK lo piden como argumento.
  4. Compruebe la conexión con ping 192.168.123.164. Si no responde, el problema es de red: no tiene sentido abrir el IDE.

Un puerto Ethernet dedicado (también vale un adaptador USB) evita conflictos con la red del laboratorio.

Instalar unitree_sdk2 (C++)

El README de unitree_sdk2 indica como entorno de referencia Ubuntu 20.04, gcc 9.4.0, CPU x86_64 o aarch64 y CMake 3.10 o superior. En otras versiones de Ubuntu suele compilar, pero el entorno probado es ese. Windows no es un entorno contemplado en el 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

El make compila también los ejemplos, que quedan en build/bin/. La instalación en /opt/unitree_robotics es también la que recomienda el simulador unitree_mujoco.

O bien Python: unitree_sdk2_python

El wrapper de Python requiere Python 3.8 o superior y cyclonedds 0.10.2:

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

Si la instalación se detiene con "Could not locate cyclonedds", el README explica cómo compilar CycloneDDS desde la rama releases/0.10.x y definir CYCLONEDDS_HOME. Los ejemplos para el G1 están en example/g1/. Un dato útil del README de los ejemplos: G1 y H1-2 usan los mensajes unitree_hg, mientras que Go2, B2 y H1 usan unitree_go.

Debug mode: antes de cada prueba de bajo nivel

Al encenderse, el G1 arranca su propio control de movimiento, que sigue enviando comandos a los motores. Si en paralelo usted publica en rt/lowcmd, los comandos chocan y el robot vibra. El procedimiento documentado en la guía de despliegue de unitree_rl_gym es:

  1. encienda el robot colgado del arnés y espere al modo de par cero;
  2. pulse L2+R2 en el mando: el robot entra en debug mode con las articulaciones en amortiguación;
  3. solo entonces lance el programa de bajo nivel.

En debug mode el robot no mantiene el equilibrio por sí solo: debe seguir suspendido hasta que su controlador lo sostenga.

Primera prueba: mover los tobillos

El ejemplo g1_ankle_swing_example (código fuente en example/g1/low_level/) lee rt/lowstate, escribe en rt/lowcmd y hace oscilar los tobillos. Desde la carpeta build:

./bin/g1_ankle_swing_example enp3s0

Sustituya enp3s0 por su interfaz. Si el terminal muestra "CRC Error", el mensaje recibido está corrupto o no corresponde al tipo esperado: revise el cable, la interfaz y la versión del SDK.

Para comandos de alto nivel (ponerse de pie, caminar a velocidades fijadas) está g1_loco_client, que usa el control de movimiento integrado y por tanto debe lanzarse fuera del debug mode:

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

Topics principales

Topic DDSContenidoFuente
rt/lowstateEstado de motores, IMU, bateríaejemplo ankle swing
rt/lowcmdComandos de posición, velocidad, par y ganancias kp/kdejemplo ankle swing
rt/secondary_imuIMU del torsoejemplo ankle swing, unitree_mujoco
rt/dex3/left/cmd, rt/dex3/right/cmdComandos de la mano Dex3-1ejemplo g1_dex3_example
rt/lf/dex3/left/state, rt/lf/dex3/right/stateEstado de la mano Dex3-1ejemplo g1_dex3_example

Las manos tienen topics separados de la locomoción: conviene llevar el bucle de control de las piernas en un proceso y el agarre en otro, a frecuencias distintas.

Simular primero: unitree_mujoco

unitree_mujoco es un simulador basado en MuJoCo que expone los mismos mensajes (LowCmd, LowState, SportModeState, IMU del torso para el G1). Un programa escrito con unitree_sdk2, unitree_sdk2_python o unitree_ros2 se ejecuta primero en simulación y después en el robot. El simulador solo admite desarrollo de bajo nivel. Para aprendizaje por refuerzo, unitree_rl_gym cubre el ciclo train, play, sim2sim (MuJoCo) y sim2real para G1, H1, H1-2 y Go2.

Cuándo añadir ROS 2

El SDK directo es el camino más corto para motores y pruebas aisladas. ROS 2 tiene sentido cuando necesita integrar Nav2, MoveIt, pipelines de visión estándar, grabación con rosbag o varios robots en el mismo laboratorio. El paquete unitree_ros2 contiene los mensajes unitree_hg y un ejemplo de bajo nivel para el G1 (g1/lowlevel/g1_low_level_example); Unitree lo ha probado en Ubuntu 22.04 con Humble (recomendado) y en Ubuntu 20.04 con Foxy. La instalación, la red y el primer topic están en la guía ROS 2 en robots Unitree.

Lista de comprobación de seguridad para el laboratorio

  • Primeras pruebas siempre con el robot suspendido y el área despejada a su alrededor.
  • Ganancias kp/kd bajas y límites de par conservadores en el primer bucle de control.
  • Una persona al mando, lista para poner el robot en amortiguación.
  • La misma versión del SDK en el PC y en el robot; después de una actualización OTA, vuelva a comprobar los ejemplos.

Abra Robotics suministra la gama Unitree en España, con soporte en inglés, y ofrece formación y desarrollo de software sobre el SDK como servicios independientes del hardware: detalles en Software y Universidad e Investigación.

Preguntas frecuentes

¿Se puede programar el G1 básico (no EDU)?

No. En la ficha oficial de Unitree, el desarrollo secundario figura solo para el G1 EDU; el G1 básico no tiene ni el módulo de cómputo para desarrollo ni acceso al SDK.

¿Qué sistema operativo necesita el PC de desarrollo?

El README de unitree_sdk2 indica Ubuntu 20.04 con gcc 9.4.0 como entorno de referencia, en CPU x86_64 o aarch64. Para ROS 2, Unitree ha probado Ubuntu 20.04 con Foxy y Ubuntu 22.04 con Humble, y recomienda Humble.

¿Cuál es la dirección del ordenador de desarrollo del G1?

El ordenador de desarrollo (PC2) del G1 EDU responde en 192.168.123.164, usuario unitree. Su PC debe estar en la misma subred 192.168.123.x con una dirección libre; Unitree sugiere 192.168.123.99.

¿Por qué vibra el robot cuando lanzo un ejemplo de bajo nivel?

Casi siempre se debe a que el control de movimiento integrado sigue activo y envía comandos en paralelo a los suyos. Entre en debug mode (L2+R2 con el robot suspendido y en amortiguación) antes de enviar comandos a rt/lowcmd.

¿Es mejor empezar por la simulación o por el hardware?

Por la simulación. unitree_mujoco usa los mismos mensajes DDS que el robot, así que el mismo programa se ejecuta primero en MuJoCo y después en el G1 cambiando solo la interfaz de red.

Fuentes

  1. Unitree, ficha de producto G1 (versiones, DoF, desarrollo secundario): unitree.com/g1
  2. Unitree, unitree_sdk2, README y ejemplos del 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, guía de despliegue en el robot real (debug mode L2+R2): deploy_real/README.md
  7. Unitree, xr_teleoperate (PC2 en 192.168.123.164): github.com/unitreerobotics/xr_teleoperate
  8. Unitree Document Center, sección para desarrolladores del G1: support.unitree.com/home/en/G1_developer
  9. Hugging Face, documentación de LeRobot para Unitree G1: huggingface.co/docs/lerobot/en/unitree_g1

Formación y desarrollo sobre el SDK de Unitree

Suministramos los G1 EDU configurados y, como servicio aparte, formación y desarrollo sobre unitree_sdk2 y ROS 2.

Servicios de softwareConfiguraciones G1 EDU