Skip to content

Módulos Unitree - Go2 EDU / AS2 EDU / B2

Estos módulos extienden el curso base de ROS 2 para trabajar con robots cuadrúpedos de Unitree: Go2 EDU, AS2 EDU y B2.

Los tres robots comparten el mismo SDK (unitree_sdk2) y el mismo código ROS 2 del curso. La diferencia principal está en la conectividad y las capacidades de hardware - el AS2 EDU añade WiFi 6, 5 m/s de velocidad y un CPU de 8 núcleos para IA embebida.

El material asume que completaste los módulos principales del curso (Partes 1-6) y que ya dominas los conceptos de publishers, subscribers, servicios y acciones de ROS 2.

¿Por qué es diferente programar un cuadrúpedo?

Característica Robot diferencial (Partes 1-6) Unitree Go2/B2
Tipo de locomoción Tracción diferencial (2 DOF) Holonómica - 4 patas (3 DOF)
Control base Plugin diff-drive de Gazebo SportClient del SDK2 de Unitree
LiDAR 2D nativo (LaserScan) 3D nube de puntos (→ slice 2D)
Comportamientos extra Solo movimiento StandUp, Sit, Hello, Dance, FrontFlip, …
Middleware Fast DDS (default ROS 2) CycloneDDS por Ethernet (en hardware real)

A pesar de estas diferencias, tu código ROS 2 usa los mismos topics y servicios estándar. El puente unitree_ros2_bridge.py se encarga de la traducción al SDK en hardware real; en el simulador sim_lite provee la misma interfaz. Puedes desarrollar y probar en el sandbox y después desplegar en el robot sin cambiar ninguna línea de tu código.

El principio "escribe una vez, ejecuta en cualquier lugar"

Tu código del curso
      ↓ mismos topics y servicios ROS 2
 /cmd_vel  /odom  /scan  /sport/*
      ↓                        ↓
  sim_lite.py            unitree_ros2_bridge.py
  (simulador,                  (robot real,
   ~150 MB RAM)                 SDK de Unitree)

Estructura del curso

El material está organizado en tres niveles de dificultad progresiva:

Fundamentos (U1-U12)     → ROS 2 estándar sobre sim_lite
Bloque 1 (S1-S7)         → SDK2 Profesional: DDS, LocoClient, LowState
Bloque 2 (S1-S7)         → ROS 2 Aplicado al B2/H1-2: Nav2, SLAM, lifecycle

Prerrequisito: completar los módulos U1-U6 antes de iniciar los Bloques 1 y 2.


Módulos de este curso

Fundamentos (U1-U6)

Módulo Tema Archivo semilla
U1 - Introducción Arquitectura, bridge, comparación -
U2 - Locomoción /cmd_vel holonómico, 3 DOF unitree_move.py
U3 - Odometría /odom, quaternion→yaw, tracking de posición unitree_odom.py
U4 - Comportamientos Servicios /sport/*, SportClient API unitree_sport.py
U5 - LiDAR /scan, detección de obstáculos unitree_lidar.py
U6 - Autonomía Integración: odom + LiDAR + movimiento unitree_autonomy.py

Soluciones industriales (U7-U12)

Módulo Tema Archivo semilla
U7 - SLAM slam_toolbox 2D · guardado de mapa · FAST-LIO2 (avanzado) unitree_slam.py
U8 - Navegación con Mapa POIs en YAML · controlador proporcional (Enfoque A) · Nav2 stack completo (Enfoque B) unitree_waypoint_nav.py
U9 - Rutinas de Inspección FSM completa, parámetros ROS 2, reintentos, logging unitree_inspection.py
U10 - Tags ArUco Detección visual de marcadores, pose estimation, acercamiento fino unitree_aruco.py
U11 - Gestión de Batería BatteryState, umbrales, retorno autónomo al dock unitree_battery.py
U12 - Logging y Reportes CSV, JSON, rosbag2, niveles de log, análisis offline unitree_logger.py

Entorno de práctica

Todos los módulos se pueden trabajar en el sandbox del curso (en el navegador) con sim_lite en modo holonómico. Activa el mundo correcto seleccionando el módulo en el portal del sandbox:

  • U1-U4: mundo unitree_empty - espacio abierto, motor holonómico
  • U5-U6: mundo unitree_obstacles - campo con obstáculos, motor holonómico
  • U7-U12: mundo unitree_inspection - planta industrial con 4 estaciones (ArUco), dock de carga y POIs etiquetados

Los mismos archivos .py funcionan sin cambios en el robot real una vez que unitree_ros2_bridge.py esté corriendo en el mismo host que el robot.

Referencia de hardware y plataformas

Documento Contenido
AS2 EDU WiFi 6, 5 m/s, CPU 8-core, IA embebida, GPS/4G
B2 Industrial IP67, 60 kg payload, Hesai AT128, 4 h autonomía
SLAM Avanzado FAST-LIO2 3D mapping para B2 y AS2 con LiDAR de alta densidad
Go2 EDU — Hardware en profundidad 12 motors, L1 LiDAR specs, SDK2 DDS topics, D1 arm, Go2-W
Go2 en Isaac Lab RL con unitree_rl_lab, sim2real, isaac-go2-ros2
RL en Google Colab Entrenar políticas Go2 en Colab Pro con unitree_rl_mjlab, sin GPU propia
G1 EDU: Humanoide 29 DOF, LeRobot, OpenWBT, Isaac Lab, papers
Papers y Recursos Colección curada de papers open-source y proyectos de GitHub

Bloque 1: SDK2 Profesional (S1-S7)

Acceso directo al SDK2 de Unitree vía DDS nativo. Prerrequisito: U1-U6.

Módulo Tema Archivos
S1 — Intro SDK2 Arquitectura DDS, Pub/Sub, Req/Resp sdk2_bridge_sim.py
S2 — Python vs C++ Bindings, rendimiento, setup -
S3 — Acceso al PC2 SSH, red, DDS unicast, procesos críticos s3_test_conexion.py
S4 — Bajo Nivel LowState 500 Hz, motores, IMU, LowCmd s4_monitor_lowstate.py
S5 — Alto Nivel LocoClient, modos de marcha, holonómico s5_loco_client.py
S6 — Periféricos Cámara, audio, HandClient H1-2, joystick s6_camara.py
S7 — Caso Integrado Patrulla autónoma: LiDAR + cámara + log s7_patrol_system.py

Bloque 2: ROS 2 Aplicado al B2 / H1-2 (S1-S7)

Integración de SDK2 con el ecosistema ROS 2: SLAM, Nav2, lifecycle, visualización. Prerrequisito: Bloque 1.

Módulo Tema Archivos
S1 — Arquitectura Bridge DDS↔ROS 2, mapeo de tópicos s1_verificar_bridge.py
S2 — Lifecycle Drivers hardware como nodos lifecycle s2_b2_lifecycle_driver.py
S3 — Visualización RViz, TF tree, rqt, PlotJuggler s3_diagnostico_viz.py
S4 — Interfaces HW JointState, IMU, ros2_control, batería s4_joint_monitor.py
S5 — Conexión y Tests Health check, integration tests, CI s5_health_check.py
S6 — Simulación sim_lite vs Gazebo, escenarios, validación s6_scenario_runner.py
S7 — Percepción y Nav SLAM Toolbox, Nav2, misión autónoma s7_nav2_mission.py

Acceso al robot real

El B2 físico del laboratorio está disponible mediante un sistema de reserva de turnos de 30 minutos:

  1. Ve a la Cola de Robot en tu sesión del sandbox (icono 🤖 en la barra superior)
  2. Reserva un slot disponible
  3. Al inicio de tu turno, aparece el panel "Robot Real" con acceso por terminal web
  4. Cambia el import en tu script: sdk2_bridge_sim → unitree_sdk2py.b2.loco_client

Solo un estudiante puede usar el robot a la vez. La cola es de primera reserva, primer servicio.


Lecturas de referencia adicionales