LeRobot documentation
RoboTwin 2.0
RoboTwin 2.0
The commands below run the simulator locally. To keep its dependencies away from your policy's, serve it instead with `lerobot-env-server --config_path=docker/sim/configs/robotwin.yaml --sim.task=--docker=true`, where ` ` is the command's `--env.task`, and add `--env.server.endpoint=tcp/127.0.0.1:7448` to the command. A server runs the task it was started with (see [Simulation: local or served](./simulation)).
RoboTwin 2.0 es un benchmark de manipulación bimanual a gran escala construido sobre el motor de física SAPIEN. Proporciona un protocolo de evaluación estandarizado para políticas robóticas bimanuales en 50 tareas (según el main de la versión principal), con una fuerte aleatorización de dominio (desorden, iluminación, fondo, altura de la mesa y instrucciones en lenguaje natural).
- Artículo: RoboTwin 2.0: un generador de datos y un benchmark escalables con una fuerte aleatorización de dominio para una manipulación robótica bimanual robusta
- GitHub: RoboTwin-Platform/RoboTwin
- Clasificación: robotwin-platform.github.io/leaderboard
- Conjunto de datos: lerobot/robotwin_unified

Resumen
| Propiedad | Valor |
|---|---|
| Tareas | 50 tareas de manipulación con dos brazos |
| Robot | Aloha-AgileX bimanual (14 GDL, 7 por brazo) |
| Espacio de acciones | Espacio conjunto de 14 dimensiones, continuo en [-1, 1] |
| Cámaras | head_camera, left_camera, right_camera |
| Simulador | SAPIEN (no MuJoCo) |
| Protocolo de evaluación | 100 episodios/tarea, 50 demostraciones demo_clean |
| Configuración de evaluación | Fácil (demo_clean) y Difícil (demo_randomized) |
Tareas disponibles
RoboTwin 2.0 incluye 50 tareas de manipulación con brazos dobles en su directorio envs/ de origen. La lista canónica es la tupla ROBOTWIN_TASKS en src/lerobot/sim/integrations/robotwin.py, copiada textualmente del repositorio de origen. Tareas de ejemplo:
| Tarea | Nombre de la CLI | Categoría |
|---|---|---|
| Golpea el bloque con el martillo | beat_block_hammer | Uso de herramientas |
| Haz clic en la campana / el reloj de alarma | click_bell | Prensa de precisión |
| Bloques apilados (2 / 3) | stack_blocks_two/three | Apilamiento |
| Apilar cuencos (2 / 3) | stack_bowls_two/three | Apilamiento |
| Bloque de transición / micrófono | handover_block | Coord. bimanual |
| Levantar la olla | lift_pot | Levantamiento bimanual |
| Agitar el frasco | shake_bottle | Movimiento continuo |
| Interruptor | turn_switch | Objeto articulado |
| Sello | stamp_seal | Lugar de precisión |
| Escanear objeto | scan_object | Manipulación móvil. |
Pase una lista separada por comas a --env.task para ejecutar varias tareas en una sola evaluación.
`open_laptop` is currently broken upstream (its `check_success()` uses `self.arm_tag`, which is only set inside the scripted-expert `play_once()` path and therefore unavailable during normal policy eval). Avoid it until the upstream bug is fixed, or patch the task to default `self.arm_tag = "left"` in `load_actors()`.
Dataset
El conjunto de datos RoboTwin 2.0 está disponible en el Hugging Face Hub en el formato LeRobot v3.0:
lerobot/robotwin_unified
Contiene más de 100.000 trayectorias pre-recopiladas en las 50 tareas (79,6 GB, licencia Apache 2.0). No se necesita conversión de formato: ya está en el esquema correcto de LeRobot v3.0 con observaciones de video y etiquetas de acción.
Puedes cargarlo directamente con la biblioteca HF Datasets:
from datasets import load_dataset
ds = load_dataset("lerobot/robotwin_unified", split="train")Instalación
RoboTwin 2.0 requiere Linux con una GPU de NVIDIA (SAPIEN renderiza con Vulkan). Sus planificadores, CuRobo y pytorch3d, compilan código CUDA contra torch 2.7.1, que no coincide con el torch de LeRobot, por lo que RoboTwin se ejecuta en su propio entorno detrás de lerobot-env-server y el lado de la política solo necesita LeRobot.
Imagen servida (recomendado)
lerobot-env-server --config_path=docker/sim/configs/robotwin.yaml --sim.task=beat_block_hammer --docker=trueLa primera ejecución construye la etapa robotwin_native de docker/Dockerfile.sim (aproximadamente 20 minutos, principalmente pytorch3d y CuRobo). En una máquina pequeña, construya la imagen usted mismo primero con memoria acotada; el servidor la reutilizará a continuación:
docker build -f docker/Dockerfile.sim --build-arg SIM=robotwin \
--build-arg MAX_JOBS=1 --build-arg CUROBO_CUDA_ARCHS=8.6 -t lerobot-sim-robotwin:local .donde 8.6 es la capacidad de cálculo de tu GPU. Añade --env.server.endpoint=tcp/127.0.0.1:7448 a los comandos de evaluación que se indican a continuación.
Entorno nativo
Para ejecutar el servidor sin Docker, reproduce la etapa robotwin_native de docker/Dockerfile.sim en un entorno virtual separado, que es la receta probada: el nvcc de CUDA 12.8, torch 2.7.1, el commit y los assets fijados de RoboTwin, CuRobo v0.7.8, y los parches de mplib y SAPIEN de RoboTwin. Luego instala LeRobot con --no-deps más docker/sim/requirements.txt, y elimina --docker=true del comando anterior (ver Simulación: local o servida).
Evaluación
Evaluación estándar (recomendada)
Evalúe una política en una sola tarea con el protocolo oficial (100 episodios):
lerobot-eval \
--policy.path="your-hf-policy-id" \
--env.type=robotwin \
--env.task=beat_block_hammer \
--eval.batch_size=1 \
--eval.n_episodes=100Comprobación rápida de una sola tarea
lerobot-eval \
--policy.path="your-hf-policy-id" \
--env.type=robotwin \
--env.task=beat_block_hammer \
--eval.batch_size=1 \
--eval.n_episodes=5Barrido de tareas múltiples
Evaluar en varias tareas en una sola ejecución:
lerobot-eval \
--policy.path="your-hf-policy-id" \
--env.type=robotwin \
--env.task=beat_block_hammer,click_bell,handover_block,stack_blocks_two \
--eval.batch_size=1 \
--eval.n_episodes=100Benchmarks completos (las 50 tareas)
lerobot-eval \
--policy.path="your-hf-policy-id" \
--env.type=robotwin \
--env.task=adjust_bottle,beat_block_hammer,blocks_ranking_rgb,blocks_ranking_size,click_alarmclock,click_bell,dump_bin_bigbin,grab_roller,handover_block,handover_mic,hanging_mug,lift_pot,move_can_pot,move_pillbottle_pad,move_playingcard_away,move_stapler_pad,open_microwave,pick_diverse_bottles,pick_dual_bottles,place_a2b_left,place_a2b_right,place_bread_basket,place_bread_skillet,place_burger_fries,place_can_basket,place_cans_plasticbox,place_container_plate,place_dual_shoes,place_empty_cup,place_fan,place_mouse_pad,place_object_basket,place_object_scale,place_object_stand,place_phone_stand,place_shoe,press_stapler,put_bottles_dustbin,put_object_cabinet,rotate_qrcode,scan_object,shake_bottle,shake_bottle_horizontally,stack_blocks_three,stack_blocks_two,stack_bowls_three,stack_bowls_two,stamp_seal,turn_switch \
--eval.batch_size=1 \
--eval.n_episodes=100`open_laptop` is intentionally omitted above because of the upstream `self.arm_tag` bug (see the **Available tasks** section). Re-add it once the upstream fix lands.
Configuración de la cámara
Por defecto, se incluyen las tres cámaras:
| Tecla de cámara | Descripción |
|---|---|
head_camera | Vista cenital montada en el torso |
left_camera | Cámara montada en la muñeca del brazo izquierdo |
right_camera | Cámara montada en la muñeca del brazo derecho |
Para usar un subconjunto de cámaras, sobrescribe --env.camera_names:
lerobot-eval \
--policy.path="your-hf-policy-id" \
--env.type=robotwin \
--env.task=beat_block_hammer \
--env.camera_names="head_camera,left_camera" \
--eval.batch_size=1 \
--eval.n_episodes=10Referencia de configuración del entorno
Parámetros clave de RoboTwinEnvConfig:
| Parámetro | Predeterminado | Descripción |
|---|---|---|
task | "beat_block_hammer" | Nombre(s) de tarea(s) separados por comas |
fps | 25 | FPS de simulación |
episode_length | 1200 | Pasos máximos por episodio |
obs_type | "pixels_agent_pos" | "pixels" o "pixels_agent_pos" |
camera_names | "head_camera,left_camera,right_camera" | Cámaras activas separadas por comas |
observation_height | 240 | Altura en píxeles de la cámara |
observation_width | 320 | Ancho de píxeles de la cámara |
Envío al ranking
Los resultados pueden enviarse al tablero de clasificación de RoboTwin 2.0. El protocolo oficial requiere:
- Entrenamiento con 50
demo_cleandemostraciones por tarea - Evaluando 100 episodios por tarea
- Tasa de éxito reportada por separado para los ajustes fácil (
demo_clean) y diffícil (demo_randomized)
Para obtener instrucciones de envío, consulte la documentación de RoboTwin 2.0.
Update on GitHub