U1: Introducción a los Robots Unitree¶
Los robots cuadrúpedos del curso¶
Este curso usa tres plataformas cuadrúpedas de Unitree - todas comparten la misma API y el mismo código ROS 2:
| Robot | Peso | Velocidad | Conectividad | LiDAR | Uso en el curso |
|---|---|---|---|---|---|
| Go2 EDU | 15 kg | 3.5 m/s | WiFi 5 / Ethernet | L1 (16-line) | Fundamentos, laboratorio |
| AS2 EDU | 18 kg | 5 m/s | WiFi 6 / Ethernet / 4G | L2 o 64-128 line | Inspección + IA embebida |
| B2 | 60 kg | 3.3 m/s | Ethernet | Hesai AT128 (128-line) | Inspección industrial pesada |
A diferencia de los robots de ruedas que usamos en el resto del curso, estos robots:
- Se mueven sobre patas - tienen una dinámica mucho más compleja que las ruedas
- Son holonómicos - pueden moverse en cualquier dirección sin girar primero
- Tienen comportamientos de alto nivel integrados (sentarse, saludar, bailar, voltear)
- Llevan un LiDAR 3D en lugar del LiDAR 2D del robot diferencial de las primeras partes del curso
Los tres comparten el mismo SDK (unitree_sdk2) y el mismo bridge del curso.
El AS2 EDU destaca por su velocidad (hasta 5 m/s), conectividad WiFi 6 nativa
(sin necesidad de Ethernet) y su CPU de 8 núcleos capaz de ejecutar modelos de IA
directamente en el robot - orientado a inspección autónoma.
Arquitectura del sistema¶
┌─────────────────────────────────────────────────────────┐
│ Tu código ROS 2 │
│ publishers · subscribers · service clients │
│ /cmd_vel /odom /sport/* │
│ /scan /camera/image_raw │
└──────────────────────┬──────────────────────────────────┘
│ interfaces ROS 2 estándar
┌───────────┴───────────┐
│ │
┌──────▼───────┐ ┌────────▼──────────┐
│ sim_lite.py │ │ unitree_ros2_bridge│
│ (simulador) │ │ (hardware real) │
│ ~150 MB RAM │ │ unitree_sdk2_python│
└──────────────┘ └────────┬──────────┘
│ SDK DDS / Ethernet
┌───────▼────────┐
│ Unitree Go2/B2 │
│ (hardware real) │
└────────────────┘
El componente clave del diseño es el puente (unitree_ros2_bridge.py):
un nodo ROS 2 que se ejecuta junto al robot y traduce entre:
- Los topics estándar que tu código usa (igual que en el curso base)
- La API SportClient del SDK de Unitree que el robot necesita
¿Qué es el SDK de Unitree?¶
El unitree_sdk2 (y su versión Python unitree_sdk2_python) es la biblioteca
oficial de Unitree para comunicarse con los robots Go2/B2. Usa CycloneDDS sobre
Ethernet para enviar comandos al robot a baja latencia.
Las API principales del SDK relevantes para este curso son:
SportClient - control de movimiento y comportamientos¶
sport_client.Move(vx, vy, vyaw) # Mover el robot (holonómico)
sport_client.StandUp() # Levantarse
sport_client.StandDown() # Bajar
sport_client.Sit() # Sentarse
sport_client.Hello() # Agitar la pata
sport_client.Dance1() # Bailar
sport_client.FrontFlip() # Voltereta frontal (EDU solamente)
# ... y muchos más (ver ros2_sport_client.h, IDs 1001-1032)
Datos de estado¶
El robot publica continuamente su estado (posición estimada, velocidades, orientación)
en el topic DDS rt/sportmodestate (tipo SportModeState_). El bridge lee esto y lo
republica como nav_msgs/Odometry en /odom.
LiDAR¶
El LiDAR L1 del Go2 publica una nube de puntos 3D en /utlidar/cloud
(sensor_msgs/PointCloud2). El bridge extrae un corte horizontal a la altura del
cuerpo y lo convierte a sensor_msgs/LaserScan, idéntico al del robot diferencial del curso.
Diferencias de red¶
En hardware real, todos los robots Unitree usan CycloneDDS:
# Variables de entorno necesarias en el host del robot
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
# Go2 EDU / B2 - Ethernet
python3 unitree_ros2_bridge.py --network_interface eth0
# AS2 EDU - WiFi 6 (conectado a la red WiFi del robot)
python3 unitree_ros2_bridge.py --network_interface wlan0
# AS2 EDU - también acepta Ethernet si prefieres conexión cableada
python3 unitree_ros2_bridge.py --network_interface eth0
En el sandbox y en la simulación se usa Fast DDS (el default de ROS 2 Jazzy) - no necesitas cambiar nada.
Los robots Unitree tienen 3 DOF; el robot diferencial tiene 2¶
| Velocidad | Robot diferencial (Partes 1-6) | Go2 EDU / AS2 EDU / B2 |
|---|---|---|
vx (adelante/atrás) |
✅ | ✅ |
vy (izquierda/derecha) |
❌ diferencial | ✅ holonómico |
vyaw (rotación) |
✅ | ✅ |
Tu código del curso base (que solo usa vx y vyaw) funciona sin cambios en
cualquier robot Unitree - simplemente no estás usando el desplazamiento lateral.
Resumen: lo que cambia vs. lo que se mantiene¶
| Concepto | ¿Cambia? | Detalle |
|---|---|---|
| Publishers y subscribers de ROS 2 | ❌ | Exactamente igual en todos |
| Servicios y acciones de ROS 2 | ❌ | Exactamente igual en todos |
| Nombres de topics | Parcialmente | /cmd_vel, /odom, /scan iguales; agregar vy |
| Configuración de red | Sí (hardware) | Go2/B2: Ethernet · AS2: WiFi 6 o Ethernet |
| Iniciar el robot | Sí | Ejecutar unitree_ros2_bridge.py primero |
Tu código .py |
❌ | Sin cambios |
Actividad de este módulo¶
Este módulo es conceptual - no hay ejercicio de código.
- Lee esta página completa.
- Explora la guía de porting: Portando a Unitree.
- Abre una sesión del sandbox con "Unitree U1: Introducción" y familiarízate
con el mundo
unitree_emptydesim_lite(verde = holonómico). - Ejecuta en una terminal del sandbox:
Verás
/cmd_vel,/odom,/scany todos los/sport/*listos para usar.
Cuando termines, continúa con U2 - Locomoción Holonómica.