# 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, SAPIEN fizik motoru üzerine kurulu **geniş ölçekli çift kollu manipülasyon birincil ölçütüdür**. 50 görevde (yukarı akış `main` itibarıyla) bimanüel robotik politikalar için standartlaştırılmış bir değerlendirme protokolü sunar ve güçlü alan rastgeleleştirmesi (dağınıklık, aydınlatma, arka plan, masaüstü yüksekliği ve dil talimatları) içerir.

- Makale: [RoboTwin 2.0: Robust Bimanual Robotic Manipulation için Güçlü Alan Rastgeleleştirmesi ile Ölçeklenebilir Bir Veri Üreticisi ve Çizelgesi](https://arxiv.org/abs/2506.18088)
- GitHub: [RoboTwin-Platform/RoboTwin](https://github.com/RoboTwin-Platform/RoboTwin)
- Sıralama tablosu: [robotwin-platform.github.io/leaderboard](https://robotwin-platform.github.io/leaderboard)
- Veri seti: [lerobot/robotwin_unified](https://huggingface.co/datasets/lerobot/robotwin_unified)

![RoboTwin 2.0 benchmark overview](https://www.aitntnews.com/pictures/2025/7/8/9a7f79cb-5ba9-11f0-8581-fa163e47d677.png)

## Genel Bakış

| Özellik      | Değer                                                    |
| ------------- | -------------------------------------------------------- |
| Görevler         | 50 çift kollu manipülasyon görevi                           |
| Robot         | Aloha-AgileX iki kollu (14 DOF, kol başına 7)                |
| Eylem uzayı  | 14 boyutlu eklem uzayı, `[-1, 1]` aralığında sürekli              |
| Kameralar       | `head_camera`, `left_camera`, `right_camera`             |
| Simülatör     | SAPIEN (MuJoCo değil)                                      |
| Değerlendirme protokolü | 100 bölüm/görev, 50 demo_clean gösterimi          |
| Değerlendirme ayarları | **Kolay** (`demo_clean`) ve **Zor** (`demo_randomized`) |

## Mevcut görevler

RoboTwin 2.0, `envs/` dizininde 50 çift kollu manipülasyon görevi sunar. Kanonik liste, `src/lerobot/sim/integrations/robotwin.py` dosyasındaki `ROBOTWIN_TASKS` demetidir ve bu liste, upstream deposundan birebir aynalanmıştır. Örnek görevler:

| Görev                     | CLI adı                 | Kategori          |
| ------------------------ | ------------------------ | ----------------- |
| Çekiçle blok kır   | `beat_block_hammer`      | Araç kullanımı          |
| Zil / alarm saati simgesine tıklayın | `click_bell`             | Hassas baskı   |
| Blokları yığ (2 / 3)     | `stack_blocks_two/three` | Yığınlama          |
| Kâseleri üst üste diz (2 / 3)      | `stack_bowls_two/three`  | Yığınlama          |
| Devir bloğu / mikrofon     | `handover_block`         | İki elle koordinasyon   |
| Lift pot                 | `lift_pot`               | İki elle kaldırma     |
| Şişeyi çalkalayın             | `shake_bottle`           | Sürekli hareket |
| Anahtarı değiştir              | `turn_switch`            | Artiküle edilmiş nesne   |
| Mühür               | `stamp_seal`             | Hassas yer   |
| Nesneyi tara              | `scan_object`            | Mobil manipülasyon.     |

Tek bir değerlendirme turunda birden fazla görev çalıştırmak için `--env.task` parametresine virgülle ayrılmış bir liste iletin.

  `open_laptop` şu anda upstream'de bozuk (`check_success()`, yalnızca scriptli-expert `play_once()` yolunun içinde ayarlanan `self.arm_tag`'i kullandığı için normal politika değerlendirmesi sırasında kullanılamıyor). Upstream hatası düzeltilene kadar kullanmaktan kaçının veya görevi, `load_actors()` içinde `self.arm_tag = "left"` varsayılanı olacak şekilde yamalayın.

## Veri seti

RoboTwin 2.0 veri seti, Hugging Face Hub'da **LeRobot v3.0 biçiminde** mevcuttur:

```
lerobot/robotwin_unified
```

Tüm 50 görev için 100.000'den fazla önceden toplanmış yörünge içerir (79,6 GB, Apache 2.0 lisansı). Biçim dönüşümü gerekmez — zaten video gözlemleri ve eylem etiketleriyle doğru LeRobot v3.0 şemasındadır.

Bunu doğrudan HF Datasets kütüphanesiyle yükleyebilirsiniz:

```python
from datasets import load_dataset

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

## Kurulum

RoboTwin 2.0, NVIDIA GPU'ye sahip bir **Linux** gerektirir (SAPIEN, Vulkan ile render yapar). Planlayıcıları olan CuRobo ve pytorch3d, CUDA kodlarını torch 2.7.1'e karşı derler; bu da LeRobot'un torch sürümüyle eşleşmez. Bu nedenle RoboTwin, `lerobot-env-server` arkasında kendi ortamında çalışır ve politika tarafı yalnızca LeRobot'a ihtiyaç duyar.

### Sunulan görüntü (önerilen)

```bash
lerobot-env-server --config_path=docker/sim/configs/robotwin.yaml --sim.task=beat_block_hammer --docker=true
```

İlk çalıştırma, `docker/Dockerfile.sim` dosyasındaki `robotwin_native` aşamasını oluşturur (yaklaşık 20 dakika, büyük ölçüde pytorch3d ve CuRobo için). Küçük bir makinede, sınırlı bellekle önce görüntüyü kendiniz oluşturun; sunucu ardından bunu yeniden kullanır:

```bash
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 .
```

burada `8.6`, GPU'nuzun hesaplama yeteneğidir. Aşağıdaki değerlendirme komutlarına `--env.server.endpoint=tcp/127.0.0.1:7448` ekleyin.

### Yerel ortam

Docker olmadan sunucuyu çalıştırmak için, test edilen tarife olan `docker/Dockerfile.sim` dosyasındaki `robotwin_native` aşamasını ayrı bir sanal ortamda yeniden oluşturun: CUDA 12.8 `nvcc`, torch 2.7.1, sabitlenmiş RoboTwin commit'i ve varlıkları, CuRobo v0.7.8 ve RoboTwin'in mplib ile SAPIEN yamaları. Ardından LeRobot'u `--no-deps` ile birlikte `docker/sim/requirements.txt` dosyasını ekleyerek kurun ve yukarıdaki komuttan `--docker=true` parametresini çıkarın (bkz. [Simülasyon: yerel veya sunulan](./simulation)).

## Değerlendirme

### Standart değerlendirme (önerilen)

Resmi protokolü (100 bölüm) kullanarak bir politikayı tek bir görevde değerlendirin:

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

### Tek görev hızlı kontrol

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

### Çok görevli tarama

Tek çalıştırmada birden fazla görevde değerlendirme yapın:

```bash
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
```

### Tam kapsamlı test (tüm 50 görev)

```bash
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`, yukarıdaki `self.arm_tag` hatası nedeniyle (bkz. **Kullanılabilir görevler** bölümü) bilinçli olarak atlanmıştır. Yukarıdaki düzeltme yayınlandığında yeniden ekleyin.

## Kamera yapılandırması

Varsayılan olarak, üç kameranın tümü dahildir:

| Kamera anahtarı     | Açıklama                    |
| -------------- | ------------------------------ |
| `head_camera`  | Gövdeye monte edilmiş üstten görünüm    |
| `left_camera`  | Sol kol bileğine takılı kamera  |
| `right_camera` | Sağ kol bileğine takılı kamera |

Kameraların bir alt kümesini kullanmak için `--env.camera_names` parametresini geçersiz kılın:

```bash
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
```

## Ortam yapılandırma başvurusu

`RoboTwinEnvConfig` için ana parametreler:

| Parametre            | Varsayılan                                  | Açıklama                        |
| -------------------- | ---------------------------------------- | ---------------------------------- |
| `task`               | `"beat_block_hammer"`                    | Virgülle ayrılmış görev adı(ları)       |
| `fps`                | `25`                                     | Simülasyon FPS                     |
| `episode_length`     | `1200`                                   | Bölüm başına maksimum adım              |
| `obs_type`           | `"pixels_agent_pos"`                     | `"pixels"` veya `"pixels_agent_pos"` |
| `camera_names`       | `"head_camera,left_camera,right_camera"` | Virgülle ayrılmış aktif kameralar     |
| `observation_height` | `240`                                    | Kamera piksel yüksekliği                |
| `observation_width`  | `320`                                    | Kamera piksel genişliği                 |

## Sıralama tablosuna gönderim

Sonuçlar [RoboTwin 2.0 liderlik tablosuna](https://robotwin-platform.github.io/leaderboard) gönderilebilir. Resmi protokol şunları gerektirir:

- Görev başına 50 `demo_clean` gösterim üzerinde eğitim
- Görev başına 100 bölümün değerlendirilmesi
- **Kolay** (`demo_clean`) ve **Zor** (`demo_randomized`) ayarları için başarı oranını ayrı ayrı raporlama

Gönderim talimatları için [RoboTwin 2.0 belgelerine](https://robotwin-platform.github.io/doc/) başvurun.

