LeRobot documentation

RoboColosseum

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

and get access to the augmented documentation experience

to get started

RoboColosseum

RoboColosseum adalah benchmark dunia nyata terdistribusi untuk mengevaluasi kebijakan robot serbaguna pada robot fisik yang diimplementasikan di lingkungan nyata. Evaluasi dijalankan pada setup standar: humanoid Unitree G1, YAM bimanual, lengan Franka dalam setup DROID, dan SO-101. Setiap eksekusi evaluasi, termasuk kegagalan, dipublikasikan di Hugging Face Hub dalam format LeRobot.

Halaman ini membahas cara menyiapkan kebijakan LeRobot untuk dua jalur evaluasinya dan cara menghubungkannya ke robot RoboColosseum. Agar kebijakan dapat dievaluasi, ajukan permohonan di situs web RoboColosseum.

RoboColosseum benchmark overview

Ikhtisar

PropertiNilai
EmbodimentSO-101, Franka (DROID), Bimanual YAM, Unitree G1
Lacak Penyesuaian Halus20 tugas, 5 per embodiment. Setiap policy dihaluskan (fine-tuned) pada 100 demonstrasi yang sama untuk sebuah tugas, kemudian melakukan 25 percobaan.
Buka TrackDua kebijakan anonim mencoba instruksi baru yang sama dalam adegan yang sama; evaluator memilih eksekusi yang lebih baik atau menyatakan seri. Checkpoint dibekukan.
EvaluasiTentang robot fisik di RoboColosseum

Pengaturan fisik

RoboColosseum robot platforms: Bimanual YAM, SO-101, Franka in the DROID configuration and Unitree G1

Setiap situs menggunakan konfigurasi perangkat keras yang sama untuk satu perwujudan. Dari kiri ke kanan pada gambar: Bimanual YAM, SO-101, Franka dalam konfigurasi DROID, dan Unitree G1. Nama kamera adalah kunci observation.images.* dalam dataset Fine-tune Track.

EmbodimentRobotKamera
SO-101Lengan pengikut SO-101 di atas meja mobile dengan ketinggian yang dapat disesuaikanfront: Intel RealSense D435 pada lengan artikulasi; wrist: kamera pergelangan
Franka (DROID)Lengan Franka Panda 7-DoF dengan gripper Robotiq 2F-85 di atas meja berdiri portabel, dalam konfigurasi DROIDleft_image, right_image: dua kamera stereo ZED 2 yang dapat disesuaikan; wrist: kamera stereo pergelangan tangan ZED Mini
YAM BimanualDua lengan YAM dari kit YAM MolmoAct2 di atas meja mobile dengan ketinggian yang dapat disesuaikantop: Intel RealSense D435 di tiang; left, right: kamera pergelangan tangan Intel RealSense D405
Unitree G1Humanoid Unitree G1 dengan gripper paralel Unitree Dex-1head: kamera kepala stereo; left_wrist, right_wrist: kamera pergelangan tangan Intel RealSense D405

Stasiun SO-101 dan Bimanual YAM juga dilengkapi laptop dengan GPU RTX 5090 dan stasiun daya portabel 700 W. Inferensi kebijakan dijalankan secara lokal di laptop tersebut atau secara jarak jauh melalui endpoint yang dihosting di server.

Tugas yang tersedia

Fine-tune Track memiliki 20 tugas, 5 per embodiment. Setiap tugas adalah dataset LeRobot v3.0 terpisah di Hub, direkam dengan 100 episode:

TugasEmbodimentInstruksi
so101-cube-drawerSO-101Letakkan kubus biru di atas meja ke dalam laci yang terbuka, lalu tutup lacinya.
so101-remove-screwdriverSO-101Ambil obeng hitam dari kotak dan letakkan di atas meja.
so101-stack-bowlsSO-101Ambil mangkuk plastik putih di sebelah kanan dan tumpuk di atas mangkuk plastik putih di sebelah kiri.
so101-stack-cubesSO-101Tumpuk kubus biru di atas kubus merah, lalu tumpuk kubus putih di atas kubus biru.
so101-upright-bottleSO-101Ambil botol jus yang terjatuh dan tegakkan di atas meja.
droid-close-laptopFranka (DROID)tutup laptop
droid-mug-on-coasterFranka (DROID)mug di atas tatakan
droid-open-drawerFranka (DROID)buka laci
droid-put-marker-penFranka (DROID)Masukkan penanda ke dalam tempat pena
droid-towel-in-basketFranka (DROID)handuk di keranjang
yam-cupsYAM BimanualTumpuk cangkirnya.
yam-drawerYAM BimanualLetakkan cangkir ke dalam laci.
yam-dustpanYAM BimanualBersihkan tabel.
yam-microwaveYAM BimanualBuka microwave dan keluarkan mangkuknya.
yam-trayYAM BimanualBersihkan tabel.
g1-carry-boxUnitree G1kotak pembawa
g1-fold-towelUnitree G1lipat handuk
g1-hang-keysUnitree G1kunci hang
g1-load-clothes-washing-machineUnitree G1memuat mesin cuci
g1-plate-into-rackUnitree G1pindahkan pelat ke rak

Instruksi Open Track ditulis oleh evaluator secara langsung.

Dataset

Unduh semua 20 dataset Fine-tune Track ke ./data/RoboColosseum, satu folder per tugas. Total set lengkapnya sekitar 35 GB: SO-101 1,4 GB, Franka 4,6 GB, Bimanual YAM 5,9 GB, dan Unitree G1 22,7 GB.

for task in so101-cube-drawer so101-remove-screwdriver so101-stack-bowls so101-stack-cubes so101-upright-bottle \
            droid-close-laptop droid-mug-on-coaster droid-open-drawer droid-put-marker-pen droid-towel-in-basket \
            yam-cups yam-drawer yam-dustpan yam-microwave yam-tray \
            g1-carry-box g1-fold-towel g1-hang-keys g1-load-clothes-washing-machine g1-plate-into-rack; do
  hf download "RoboColosseum/${task}" --repo-type dataset --local-dir "./data/RoboColosseum/${task}"
done

Untuk mengunduh hanya beberapa tugas, simpan hanya nama-nama tersebut dalam daftar. Setiap folder adalah dataset LeRobot yang mandiri. Muat salah satunya dengan meneruskan foldernya sebagai root:

from lerobot.datasets import LeRobotDataset

dataset = LeRobotDataset(
    "RoboColosseum/so101-stack-bowls",
    root="./data/RoboColosseum/so101-stack-bowls",
)

Tanpa root, dataset diunduh dari Hub saat pertama kali digunakan.

Instalasi

Instal Policy Server pada mesin yang menjalankan model Anda:

git clone https://github.com/RoboColosseum/robocolosseum-policy-server.git
cd robocolosseum-policy-server
uv sync --extra demo

Situs robot menginstal Robot Client pada komputer yang terhubung ke robot, di mana <robot_type> adalah so101, franka atau yam:

git clone https://github.com/RoboColosseum/robocolosseum-client.git
cd robocolosseum-client
uv sync --extra <robot_type>
Both need Python 3.10 or newer and [uv](https://docs.astral.sh/uv/). The Robot Client also needs FFmpeg to export recordings. On SO-101, the Robot Client drives the arm with LeRobot's `so101_follower` driver, which needs Python 3.12: follow the Client's [SO-101 guide](https://github.com/RoboColosseum/robocolosseum-client/blob/main/docs/so101.md) instead.

Evaluasi

Evaluasi dijalankan pada robot RoboColosseum. Setelah Anda mengajukan, tim RoboColosseum akan menghubungkan kebijakan Anda dengan salah satu dari dua cara: Anda menghosting Policy Server di mesin inferensi Anda sendiri, atau Anda menyerahkan checkpoint yang akan mereka layankan di mesin di samping robot.

Uji coba Open Track menggunakan dua program:

KomponenBerjalan diFungsinyaRepository
Policy ServerMesin inferensi AndaMenerima observasi robot, menjalankan model Anda, dan mengembalikan aksirobocolosseum-policy-server
Klien RobotKomputer robotMengendalikan robot, mengeksekusi aksi, dan merekam percobaanrobocolosseum-client

Layani kebijakan Anda

Di checkout Policy Server, buat konfigurasi dan atur Router URL serta token Policy Server yang Anda terima dari tim RoboColosseum:

cp configs/policy.yaml.example configs/policy.yaml
url: wss://router.example.com:8443
token: pol_replace_with_token_from_router_ui

Periksa koneksi tanpa mengirim aksi. Ketika Router mencocokkan Robot Client ke server Anda, instruksi tugas, keadaan sendi dan gripper, serta gambar kamera akan ditampilkan (gambar dibuka di jendela OpenCV, sehingga ini memerlukan tampilan grafis):

uv run --extra demo python examples/test_policy.py --no-enable-action

Lalu hubungkan model Anda dengan Policy Server SDK. Simpan ini sebagai serve_policy.py di root repositori:

from colosseum_policy_server import ColosseumPolicySDK
from your_policy import load_model  # Replace with your own model loader.


def main():
    model = load_model()

    with ColosseumPolicySDK.from_yaml("configs/policy.yaml") as sdk:
        print("Connected to Router. Waiting for observations...", flush=True)
        while True:
            obs = sdk.get_obs()
            actions = model.infer(obs)
            sdk.send_action(actions, observation=obs)


if __name__ == "__main__":
    main()

model.infer(obs) mengonversi observasi (obs.instruction, obs.state.head_image, obs.state.left_image, obs.state.right_image, obs.state.joints, obs.state.gripper) menjadi input model Anda, dan mengembalikan array NumPy dengan bentuk (horizon, action_dim) dalam ruang aksi yang disepakati dengan Client. Secara default, ini adalah joint_position pada 15 Hz dengan maksimal 16 langkah per chunk. Jalankan server dan biarkan tetap berjalan selama evaluator menggunakan kebijakan Anda:

uv run python serve_policy.py

Menyiapkan robot

Di checkout Robot Client, buat konfigurasi dan edit untuk robot Anda:

cp configs/robot.yaml.example configs/robot.yaml

Lalu mulai Client:

.venv/bin/colosseum-robot configs/robot.yaml

Ikuti instruksi untuk memasukkan perintah atau memilih tugas, jalankan percobaan, dan kirimkan evaluasi. Setiap percobaan direkam dan diekspor dalam format LeRobot.

Kode evaluasi penyesuaian halus Track

Kode fine-tuning dan evaluasi yang digunakan untuk setiap embodiment di Fine-tune Track bersifat publik: SO-101, Franka (DROID), Bimanual YAM, dan Unitree G1.

Pelatihan

Lacak Penyesuaian Halus

Latih pada dataset tugas yang diunduh dengan --dataset.root:

lerobot-train \
  --dataset.repo_id=RoboColosseum/so101-stack-bowls \
  --dataset.root=./data/RoboColosseum/so101-stack-bowls \
  --policy.type=<policy_type> \
  --policy.repo_id=${HF_USER}/<policy_type>_robocolosseum_so101-stack-bowls \
  --output_dir=./outputs/<policy_type>_robocolosseum_so101-stack-bowls

Konfigurasi kebijakan yang tepat, pemetaan kamera, representasi aksi, dan resep pelatihan bergantung pada kebijakan yang diadaptasi. Jika kebijakan Anda mengharapkan nama kamera yang berbeda, petakan mereka dengan --rename_map.

Catatan: baseline G0.5 dan LingBot-VLA 2.0 dihaluskan dengan kode aslinya, GalaxeaVLA @ 89f2322 dan lingbot-vla-v2 @ be969b8.

Buka Track

Open Track mengevaluasi checkpoint beku pada tugas dunia nyata. Tidak ada pelatihan yang dilakukan pada data evaluasi RoboColosseum Open Track.

Jika kebijakan Anda belum mendukung target embodiment, pertama sesuaikan pada data robot publik untuk embodiment tersebut, lalu bekukan checkpoint yang dihasilkan sebelum evaluasi. Dataset bootstrap publik yang direkomendasikan:

Embodimen targetData bootstrap publik
SO-100 / SO-101allenai/MolmoAct2-SO100_101-Dataset
Franka (DROID)DROID
YAM Bimanualallenai/MolmoAct2-BimanualYAM-Dataset

allenai/MolmoAct2-SO100_101-Dataset mencantumkan dataset LeRobot SO-100 dan SO-101 yang digunakan untuk melatih MolmoAct2, dengan anotasi bahasa per episode. Unduh daftar repositori sumber dengan:

hf download allenai/MolmoAct2-SO100_101-Dataset repo_list.json \
  --repo-type dataset \
  --local-dir ./data/molmoact2_so100_101

Setiap entri dalam repo_list.json adalah ID dataset Hub yang diawali dengan lerobot: (misalnya lerobot:<user>/<dataset>). Pilih dataset SO-100 / SO-101 yang kompatibel dari daftar tersebut dan latih model pada dataset tersebut. Banyak di antaranya menggunakan format LeRobot v2.1: konversikan ke v3.0 sebelum dimuat (lihat Menggunakan LeRobotDataset).

DROID dirilis dalam format RLDS. Konversikan menjadi dataset LeRobot dengan mengikuti contoh DROID di Porting Large Datasets, lalu latih pada dataset yang telah dikonversi menggunakan lerobot-train.

Dataset Bimanual YAM dapat digunakan langsung dengan lerobot-train:

lerobot-train \
  --dataset.repo_id=allenai/MolmoAct2-BimanualYAM-Dataset \
  --policy.type=<policy_type> \
  --policy.repo_id=${HF_USER}/<policy_type>_bimanual_yam \
  --output_dir=./outputs/<policy_type>_bimanual_yam

Tahap bootstrap hanya membuat kebijakan kompatibel dengan target embodiment. Checkpoint yang dikirim ke Open Track tetap beku selama evaluasi.

Pengajuan papan peringkat

Skor dipublikasikan di papan peringkat RoboColosseum. Untuk mengevaluasi kebijakan, ajukan permohonan di situs web RoboColosseum. Protokol untuk setiap trek:

  • Jejak Fine-tune: setiap kebijakan di-fine-tune pada 100 demonstrasi yang sama dari suatu tugas, kemudian melakukan 25 percobaan. Keberhasilan penuh dan kemajuan tonggak dilaporkan.
  • Open Track: para evaluator melihat dua kebijakan anonim yang mencoba instruksi yang sama pada robot dan adegan yang sama, lalu memilih eksekusi yang lebih baik atau menyatakan seri. Penilaian disesuaikan dari semua perbandingan pada robot tersebut dan ditampilkan beserta ketidakpastiannya.
Update on GitHub