Skip to content

Go2 EDU en NVIDIA Isaac Sim / Isaac Lab

NVIDIA Isaac Lab es el entorno de referencia para entrenamiento de políticas de RL para robots físicos. Para el Go2 existen múltiples proyectos open-source que van desde URDF básico hasta pipelines completos de entrenamiento + sim2real.

Ecosistema de herramientas NVIDIA para robótica

Isaac Sim        ← simulador de física (PhysX + RTX rendering)
     ↓
Isaac Lab        ← framework de RL sobre Isaac Sim (reemplaza a Isaac Gym)
     ↓
Isaac ROS        ← paquetes ROS 2 acelerados por GPU (perception, Nav2, etc.)
     ↓
Isaac Perceptor  ← pipeline de percepción 3D para navegación autónoma

Para el Go2 el camino más directo es Isaac Lab → política de locomoción → ROS 2.

Proyectos open-source para Go2 en Isaac

1. unitree_rl_lab — Oficial de Unitree Robotics

Repositorio: github.com/unitreerobotics/unitree_rl_lab

El repositorio oficial de Unitree con implementaciones de RL para Go2, G1 y H1. Basado en Isaac Lab 2.3.0+ y Isaac Sim 5.1.0+.

# Instalación
git clone https://github.com/unitreerobotics/unitree_rl_lab.git
cd unitree_rl_lab

# Requiere conda con Isaac Lab ya instalado
conda activate isaaclab   # entorno de Isaac Lab

# Entrenar política de locomoción para Go2
./unitree_rl_lab.sh -t --task Unitree-Go2-Velocity-v0

# Visualizar entrenamiento
./unitree_rl_lab.sh -p --task Unitree-Go2-Velocity-v0

Robots soportados: - Unitree-Go2-Velocity-v0 — locomoción con velocidades variables - Unitree-G1-29dof-Velocity — G1 de 29 DOF - Unitree-H1-Velocity — H1 humanoid

Pipeline de deployment:

Entrenamiento Isaac Lab (GPU)
        ↓
Validación Sim2Sim en MuJoCo
        ↓
Compilación C++ del controlador
        ↓
Deploy en Go2 EDU real

El directorio deploy/ contiene el controlador C++ que se compila con CMake e interfaza directamente con unitree_sdk2:

cd deploy
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)

# Ejecutar en el robot (conectado por Ethernet)
./unitree_controller --interface eth0 --policy ../policies/go2_velocity.pt

2. isaac-go2-ros2 — Plataforma de navegación

Repositorio: github.com/Zhefan-Xu/isaac-go2-ros2

Plataforma para testing de navegación, toma de decisiones y tareas autónomas del Go2 en Isaac Sim con interfaz ROS 2 completa.

Requisitos: - Isaac Sim 4.5 (~/isaacsim/) - Isaac Lab 2.1.0 (conda) - ROS 2 Humble

Entornos disponibles:

ID Entorno Descripción
0 Warehouse basic Almacén vacío
1 Warehouse forklifts Con carretillas elevadoras
2 Warehouse shelves Con estanterías
3 Warehouse full Almacén completo
4 Obstacle sparse Campo con pocos obstáculos
5 Obstacle medium Densidad media
6 Obstacle dense Alta densidad de obstáculos

Topics ROS 2 publicados:

Topic Tipo Descripción
/unitree_go2/cmd_vel Twist Control de velocidad
/unitree_go2/odom Odometry Odometría
/unitree_go2/lidar/point_cloud PointCloud2 LiDAR simulado
/unitree_go2/camera/color Image Cámara RGB
/unitree_go2/camera/depth Image Profundidad
/unitree_go2/camera/segmentation Image Segmentación semántica
# Lanzar simulación en entorno de almacén
python launch_go2_warehouse.py --env_id 2 --num_robots 1

# En otra terminal: teleop
ros2 run teleop_twist_keyboard teleop_twist_keyboard \
  --ros-args -r cmd_vel:=/unitree_go2/cmd_vel

# Visualizar en RViz2
ros2 launch isaac_go2_ros2 rviz2.launch.py

Integración con RL:

El repositorio incluye ejemplos de agentes RL preentrenados que usan la interfaz ROS 2 para recibir observaciones y publicar acciones:

# Cargar política preentrenada
import torch

policy = torch.jit.load("policies/go2_flat_terrain.pt")

# Loop de control
obs = get_observation()     # de los topics ROS 2
action = policy(obs)        # inferencia
publish_cmd_vel(action)     # publicar en /unitree_go2/cmd_vel

3. go2_omniverse — URDFs y configs para Isaac Lab

Repositorio: github.com/abizovnuralem/go2_omniverse

Proporciona los URDFs calibrados, configuraciones de sensores y workflows de sim2real para Go2 y G1 en Isaac Lab.

git clone https://github.com/abizovnuralem/go2_omniverse.git

# Incluye:
# - go2/urdf/go2.urdf         ← URDF del Go2
# - go2/usd/go2.usd           ← modelo USD para Isaac Sim
# - g1/urdf/g1_29dof.urdf     ← URDF del G1 (29 DOF)
# - configs/go2_sensors.yaml  ← configuración de cámara, LiDAR, IMU

Este repositorio es el punto de partida para crear tareas de RL customizadas en Isaac Lab.

4. Go2_Isaac_ros2 — Navegación + YOLO + LLM

Repositorio: github.com/sallu-786/Go2_Isaac_ros2

Plataforma avanzada que integra: - Navegación autónoma con política RL preentrenada - Detección de objetos con YOLO en tiempo real - Control por LLM (comandos en lenguaje natural) - Interfaz web con visualización de grafo de topics

git clone https://github.com/sallu-786/Go2_Isaac_ros2.git

# Políticas disponibles:
# actor_critic/  — locomotion policy flat terrain
# student/       — locomotion policy rough terrain

Instalar Isaac Lab — guía rápida

Requisitos mínimos: - GPU NVIDIA con ≥ 12 GB VRAM (RTX 3080 Ti / A4000 o superior) - CUDA 12.x - Ubuntu 22.04 - RAM: 32 GB recomendado

# 1. Instalar Isaac Sim 5.1.0
# Descargar desde: https://developer.nvidia.com/isaac/sim
# Extrae en ~/isaacsim/

# 2. Clonar Isaac Lab
git clone https://github.com/isaac-sim/IsaacLab.git
cd IsaacLab

# 3. Crear entorno conda
./isaaclab.sh --conda isaaclab
conda activate isaaclab

# 4. Instalar
./isaaclab.sh --install

# 5. Verificar instalación
./isaaclab.sh -p source/standalone/tutorials/00_sim/create_empty.py

Workflow completo: entrenar y desplegar en Go2

Paso 1: Entrenar política de locomoción

# En el PC con GPU (puede tardar 2-8 horas)
conda activate isaaclab

./unitree_rl_lab.sh -t \
  --task Unitree-Go2-Velocity-v0 \
  --headless \         # sin renderizado (más rápido)
  --max_iterations 5000

# Los checkpoints se guardan en logs/Go2Velocity/

Paso 2: Validar en MuJoCo (sim2sim)

# Instalar MuJoCo
pip install mujoco

# Ejecutar la política en MuJoCo
python deploy/mujoco_sim.py \
  --policy logs/Go2Velocity/model_5000.pt \
  --urdf go2/urdf/go2.urdf

MuJoCo es un simulador diferente a Isaac Sim — si la política funciona en ambos, es más probable que funcione en hardware real (el "transfer gap" es menor).

Paso 3: Desplegar en Go2 real

# En el host conectado al Go2 por Ethernet
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp

# Compilar el controlador de deployment
cd deploy && mkdir build && cd build
cmake .. && make -j4

# Poner el robot en modo de control bajo nivel
ros2 service call /sport/damp std_srvs/srv/Trigger

# Ejecutar la política (comando de referencia de velocidad desde /cmd_vel)
./unitree_go2_controller \
  --policy ../../logs/Go2Velocity/model_5000.pt \
  --interface eth0 \
  --cmd_vel_topic /cmd_vel

Paso 4: Conectar con la pila de navegación

Con la política de locomoción activa como "capa de bajo nivel", puedes usar la pila de ROS 2 del curso como "capa de alto nivel":

Nav2 (planificador de ruta)
        ↓ /cmd_vel
  Política RL (locomotion)    ← reemplaza la marcha stock del SDK
        ↓ LowCmd DDS
      Go2 EDU (hardware)
# El nodo de locomoción RL se suscribe a /cmd_vel
# y traduce velocidades a comandos de joint:
self.create_subscription(Twist, "/cmd_vel", self._vel_cb, 10)

def _vel_cb(self, msg):
    obs = self._build_observation(msg.linear.x, msg.linear.y, msg.angular.z)
    action = self._policy(obs)        # inferencia de la red neuronal
    self._apply_lowcmd(action)        # enviar a los motores

Temas de investigación habilitados

Con Isaac Lab + Go2 EDU puedes explorar:

Tema Recursos recomendados
Locomoción en terreno irregular unitree_rl_lab Velocity tasks con terrain curriculum
Navegación semántica isaac-go2-ros2 + segmentation topic
Manipulación + locomoción go2_omniverse con D1 arm URDF
Multi-robot isaac-go2-ros2 --num_robots N
Control con LLM Go2_Isaac_ros2 portal web
Sim2Real transfer unitree_rl_lab deploy pipeline

Referencia rápida de requisitos por proyecto

Proyecto Isaac Sim Isaac Lab ROS 2 GPU VRAM
unitree_rl_lab 5.1.0 2.3.0 Humble 16 GB
isaac-go2-ros2 4.5.0 2.1.0 Humble 12 GB
go2_omniverse 4.x+ 2.x+ Humble 8 GB
Go2_Isaac_ros2 4.5.0 2.1.0 Humble 12 GB

Sin GPU? Usa el sandbox del curso

Si no tienes GPU disponible, sim_lite.py del sandbox es suficiente para el curso U1-U12. Isaac Lab se necesita solo para investigación de RL y sim2real. El sandbox no requiere GPU y corre en el navegador.