LeRobot documentation
RoboColosseum
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.
- Makalah: RoboColosseum: Evaluating Physical Intelligence at Scale In-The-Wild
- GitHub: RoboColosseum/RoboColosseum
- Situs web proyek: robocolosseum.ai
- Papan Peringkat: robocolosseum.ai/leaderboard
- Dataset: koleksi Dataset RoboColosseum

Ikhtisar
| Properti | Nilai |
|---|---|
| Embodiment | SO-101, Franka (DROID), Bimanual YAM, Unitree G1 |
| Lacak Penyesuaian Halus | 20 tugas, 5 per embodiment. Setiap policy dihaluskan (fine-tuned) pada 100 demonstrasi yang sama untuk sebuah tugas, kemudian melakukan 25 percobaan. |
| Buka Track | Dua kebijakan anonim mencoba instruksi baru yang sama dalam adegan yang sama; evaluator memilih eksekusi yang lebih baik atau menyatakan seri. Checkpoint dibekukan. |
| Evaluasi | Tentang robot fisik di RoboColosseum |
Pengaturan fisik

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.
| Embodiment | Robot | Kamera |
|---|---|---|
| SO-101 | Lengan pengikut SO-101 di atas meja mobile dengan ketinggian yang dapat disesuaikan | front: 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 DROID | left_image, right_image: dua kamera stereo ZED 2 yang dapat disesuaikan; wrist: kamera stereo pergelangan tangan ZED Mini |
| YAM Bimanual | Dua lengan YAM dari kit YAM MolmoAct2 di atas meja mobile dengan ketinggian yang dapat disesuaikan | top: Intel RealSense D435 di tiang; left, right: kamera pergelangan tangan Intel RealSense D405 |
| Unitree G1 | Humanoid Unitree G1 dengan gripper paralel Unitree Dex-1 | head: 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:
| Tugas | Embodiment | Instruksi |
|---|---|---|
so101-cube-drawer | SO-101 | Letakkan kubus biru di atas meja ke dalam laci yang terbuka, lalu tutup lacinya. |
so101-remove-screwdriver | SO-101 | Ambil obeng hitam dari kotak dan letakkan di atas meja. |
so101-stack-bowls | SO-101 | Ambil mangkuk plastik putih di sebelah kanan dan tumpuk di atas mangkuk plastik putih di sebelah kiri. |
so101-stack-cubes | SO-101 | Tumpuk kubus biru di atas kubus merah, lalu tumpuk kubus putih di atas kubus biru. |
so101-upright-bottle | SO-101 | Ambil botol jus yang terjatuh dan tegakkan di atas meja. |
droid-close-laptop | Franka (DROID) | tutup laptop |
droid-mug-on-coaster | Franka (DROID) | mug di atas tatakan |
droid-open-drawer | Franka (DROID) | buka laci |
droid-put-marker-pen | Franka (DROID) | Masukkan penanda ke dalam tempat pena |
droid-towel-in-basket | Franka (DROID) | handuk di keranjang |
yam-cups | YAM Bimanual | Tumpuk cangkirnya. |
yam-drawer | YAM Bimanual | Letakkan cangkir ke dalam laci. |
yam-dustpan | YAM Bimanual | Bersihkan tabel. |
yam-microwave | YAM Bimanual | Buka microwave dan keluarkan mangkuknya. |
yam-tray | YAM Bimanual | Bersihkan tabel. |
g1-carry-box | Unitree G1 | kotak pembawa |
g1-fold-towel | Unitree G1 | lipat handuk |
g1-hang-keys | Unitree G1 | kunci hang |
g1-load-clothes-washing-machine | Unitree G1 | memuat mesin cuci |
g1-plate-into-rack | Unitree G1 | pindahkan 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}"
doneUntuk 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 demoSitus 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:
| Komponen | Berjalan di | Fungsinya | Repository |
|---|---|---|---|
| Policy Server | Mesin inferensi Anda | Menerima observasi robot, menjalankan model Anda, dan mengembalikan aksi | robocolosseum-policy-server |
| Klien Robot | Komputer robot | Mengendalikan robot, mengeksekusi aksi, dan merekam percobaan | robocolosseum-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.yamlurl: wss://router.example.com:8443
token: pol_replace_with_token_from_router_uiPeriksa 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.yamlLalu 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-bowlsKonfigurasi 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 target | Data bootstrap publik |
|---|---|
| SO-100 / SO-101 | allenai/MolmoAct2-SO100_101-Dataset |
| Franka (DROID) | DROID |
| YAM Bimanual | allenai/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_yamTahap 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.