LeRobot documentation

RoboTwin 2.0

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.6.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

RoboTwin 2.0

RoboTwin 2.0 est un benchmark de manipulation à double bras à grande échelle construit sur le moteur physique SAPIEN. Il fournit un protocole d'évaluation standardisé pour les politiques robotiques bimanuelles sur 50 tâches (à ce jour, en amont de main) avec une forte randomisation de domaine (désordre, éclairage, arrière-plan, hauteur de la table et instructions en langage naturel).

RoboTwin 2.0 benchmark overview

Aperçu

PropriétéValeur
Tâches50 tâches de manipulation à deux bras
RobotAloha-AgileX bimanual (14 DDL, 7 par bras)
Espace d'actionsEspace articulé 14 dimensions, continu dans [-1, 1]
Camérashead_camera, left_camera, right_camera
SimulateurSAPIEN (et non MuJoCo)
Protocole d'évaluation100 épisodes/tâche, 50 démonstrations demo_clean
Paramètres d'évaluationFacile (demo_clean) et Difficile (demo_randomized)

Tâches disponibles

RoboTwin 2.0 fournit 50 tâches de manipulation à deux bras dans son répertoire envs/ en amont. La liste canonique est le tuple ROBOTWIN_TASKS dans src/lerobot/envs/robotwin.py, reproduit à l'identique depuis le dépôt en amont. Exemples de tâches :

TâcheNom de la CLICatégorie
Battre le bloc au marteaubeat_block_hammerUtilisation d'outils
Cliquez sur la cloche / l'horlogeclick_bellPresse de précision
Empiler des blocs (2 / 3)stack_blocks_two/threeEmpilement
Empiler les bols (2 / 3)stack_bowls_two/threeEmpilement
Bloc de passation / microhandover_blockCoordination bimanuelle
Soulever le potlift_potLevage bimanuel
Agiter le flaconshake_bottleMouvement continu
Basculer l'interrupteurturn_switchObjet articulé
Sceaustamp_sealEmplacement de la précision
Objet à scannerscan_objectManipulation mobile.

Passez une liste séparée par des virgules à --env.task pour exécuter plusieurs tâches dans un seul balayage d'évaluation.

`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()`.

Jeu de données

Le jeu de données RoboTwin 2.0 est disponible au format LeRobot v3.0 sur le Hugging Face Hub :

lerobot/robotwin_unified

Il contient plus de 100 000 trajectoires précollectées pour les 50 tâches (79,6 Go, licence Apache 2.0). Aucune conversion de format n'est nécessaire — il est déjà au schéma LeRobot v3.0 correct, avec des observations vidéo et des étiquettes d'action.

Vous pouvez le charger directement avec la bibliothèque HF Datasets :

from datasets import load_dataset

ds = load_dataset("lerobot/robotwin_unified", split="train")

Installation

L'intégration RoboTwin actuelle est cassée et n'est pas prise en charge avec la pile PyTorch 2.15 par défaut de LeRobot. Son job CI de benchmark est temporairement désactivé. Les instructions ci-dessous décrivent la configuration legacy ; elles ne constituent pas une recette d'installation fonctionnelle pour les dépendances par défaut actuelles. Les correctifs de compatibilité et l'isolation des dépendances du simulateur sont reportés à PR #4888.

RoboTwin 2.0 nécessite Linux avec un GPU NVIDIA (CUDA 12.1 recommandé). L’installation prend environ 20 minutes.

1. Créer un environnement conda

conda create -n robotwin python=3.12 -y
conda activate robotwin

2. Installer LeRobot

git clone https://github.com/huggingface/lerobot.git
cd lerobot
pip install -e "."

3. Installer RoboTwin 2.0

git clone https://github.com/RoboTwin-Platform/RoboTwin.git
cd RoboTwin
bash script/_install.sh
bash script/_download_assets.sh

Le script d'installation gère toutes les dépendances Python, y compris SAPIEN, CuRobo, mplib et pytorch3d.

If the automated install fails, install manually:
pip install -r requirements.txt
pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable"
cd envs && git clone https://github.com/NVlabs/curobo.git && cd curobo
pip install -e . --no-build-isolation

Appliquez ensuite le correctif requis pour mplib : dans mplib/planner.py, ligne 807, supprimez or collide de la condition.

4. Ajouter RoboTwin à PYTHONPATH

Les modules de tâches RoboTwin doivent être importables par LeRobot. Depuis le répertoire RoboTwin/ :

export PYTHONPATH="${PYTHONPATH}:$(pwd)"

Ajoutez ceci à votre profil de shell pour le rendre permanent.

Évaluation

Évaluation standard (recommandée)

Évaluer une politique sur une tâche unique avec le protocole officiel (100 épisodes) :

lerobot-eval \
  --policy.path="your-hf-policy-id" \
  --env.type=robotwin \
  --env.task=beat_block_hammer \
  --eval.batch_size=1 \
  --eval.n_episodes=100

Vérification rapide de tâche unique

lerobot-eval \
  --policy.path="your-hf-policy-id" \
  --env.type=robotwin \
  --env.task=beat_block_hammer \
  --eval.batch_size=1 \
  --eval.n_episodes=5

Balayage multi-tâches

Évaluer sur plusieurs tâches en une seule exécution :

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=100

Benchmarks complets (les 50 tâches)

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.

Configuration de la caméra

Par défaut, les trois caméras sont incluses :

Touche caméraDescription
head_cameraVue de dessus fixée au torse
left_cameraCaméra de poignet du bras gauche
right_cameraCaméra de poignet du bras droit

Pour utiliser un sous-ensemble de caméras, écrasez --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=10

Référence de configuration de l'environnement

Paramètres clés de RoboTwinEnvConfig :

ParamètrePar défautDescription
task"beat_block_hammer"Nom(s) de tâche(s) séparé(s) par des virgules
fps25FPS de simulation
episode_length1200Nombre maximal d'étapes par épisode
obs_type"pixels_agent_pos""pixels" ou "pixels_agent_pos"
camera_names"head_camera,left_camera,right_camera"Caméras actives séparées par des virgules
observation_height240Hauteur en pixels de la caméra
observation_width320Largeur des pixels de la caméra

Soumission au classement

Les résultats peuvent être soumis au classement RoboTwin 2.0. Le protocole officiel exige :

  • Entraînement sur 50 demo_clean démonstrations par tâche
  • Évaluation de 100 épisodes par tâche
  • Taux de réussite signalé séparément pour les configurations Easy (demo_clean) et Hard (demo_randomized)

Pour les instructions de soumission, reportez-vous à la documentation RoboTwin 2.0.

Update on GitHub