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 là một benchmark thực tế phân tán để đánh giá các chính sách robot đa dụng trên các robot vật lý được triển khai trong môi trường thực. Các lần đánh giá được thực hiện trên các cấu hình chuẩn hóa: humanoid Unitree G1, YAM hai tay, cánh tay Franka trong cấu hình DROID và SO-101. Mọi lần chạy đánh giá, bao gồm cả các trường hợp thất bại, đều được công bố trên Hugging Face Hub ở định dạng LeRobot.

Trang này hướng dẫn cách chuẩn bị một chính sách LeRobot cho hai vòng đánh giá của nó và cách kết nối nó với các robot của RoboColosseum. Để một chính sách được đánh giá, hãy nộp đơn trên trang web RoboColosseum.

RoboColosseum benchmark overview

Tổng quan

Thuộc tínhGiá trị
Các hình thứcSO-101, Franka (DROID), YAM hai tay, Unitree G1
Lộ trình tinh chỉnh20 tác vụ, 5 tác vụ cho mỗi hình thái. Mỗi chính sách được tinh chỉnh trên cùng 100 bản diễn giải của một tác vụ, sau đó thực hiện 25 lần thử.
Mở TrackHai chính sách ẩn danh thử cùng một chỉ thị mới trong cùng một cảnh; bộ đánh giá chọn lần chạy tốt hơn hoặc tuyên bố hòa. Điểm kiểm tra được đóng băng.
Đánh giáVề các robot vật lý của RoboColosseum

Cấu hình phần cứng

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

Mọi site đều sử dụng cùng một cấu hình phần cứng cho một dạng hiện thân. Từ trái sang phải trong hình: Bimanual YAM, SO-101, Franka trong cấu hình DROID và Unitree G1. Tên camera là các khóa observation.images.* trong các bộ dữ liệu Fine-tune Track.

Thân xácRobotCamera
SO-101Cánh tay theo dõi SO-101 trên bàn di động có thể điều chỉnh chiều caofront: Intel RealSense D435 trên cánh tay khớp động; wrist: camera cổ tay
Franka (DROID)Cánh tay 7 bậc tự do Franka Panda với gắp Robotiq 2F-85 trên bàn đứng di động, trong cấu hình DROIDleft_image, right_image: hai camera stereo ZED 2 có thể điều chỉnh; wrist: camera stereo ZED Mini đeo cổ tay
YAM hai tayHai cánh tay YAM từ bộ kit YAM MolmoAct2 trên bàn di động có thể điều chỉnh chiều caotop: Intel RealSense D435 trên một cột; left, right: camera cổ tay Intel RealSense D405
Unitree G1Humanoid Unitree G1 với kẹp song song Unitree Dex-1head: camera đầu stereo; left_wrist, right_wrist: camera cổ tay Intel RealSense D405

Các trạm SO-101 và Bimanual YAM cũng được trang bị một laptop có GPU RTX 5090 và một trạm điện di động 700 W. Việc suy luận chính sách được thực hiện cục bộ trên laptop đó hoặc từ xa thông qua một endpoint được lưu trữ trên máy chủ.

Các tác vụ khả dụng

Mục Fine-tune Track có 20 tác vụ, 5 tác vụ cho mỗi dạng thân. Mỗi tác vụ là một tập dữ liệu LeRobot v3.0 riêng biệt trên Hub, được ghi lại với 100 tập:

Nhiệm vụThân xácHướng dẫn
so101-cube-drawerSO-101Đặt khối lập phương màu xanh dương trên bàn vào ngăn kéo đang mở, sau đó đóng ngăn kéo lại.
so101-remove-screwdriverSO-101Lấy tua vít màu đen ra khỏi hộp và đặt nó lên bàn.
so101-stack-bowlsSO-101Cầm cái bát nhựa màu trắng bên phải và đặt chồng lên trên cái bát nhựa màu trắng bên trái.
so101-stack-cubesSO-101Đặt khối lập phương màu xanh dương lên trên khối lập phương màu đỏ, sau đó đặt khối lập phương màu trắng lên trên khối lập phương màu xanh dương.
so101-upright-bottleSO-101Nhặt chai nước ép đã rơi và đặt nó đứng thẳng trên bàn.
droid-close-laptopFranka (DROID)đóng laptop
droid-mug-on-coasterFranka (DROID)cốc trên đế
droid-open-drawerFranka (DROID)mở ngăn kéo
droid-put-marker-penFranka (DROID)Đặt bút vào giá đỡ
droid-towel-in-basketFranka (DROID)khăn trong giỏ
yam-cupsYAM hai tayXếp chồng các cốc.
yam-drawerYAM hai tayĐặt cốc vào ngăn kéo.
yam-dustpanYAM hai tayDọn dẹp bảng.
yam-microwaveYAM hai tayMở lò vi sóng và lấy bát ra.
yam-trayYAM hai tayDọn dẹp bảng.
g1-carry-boxUnitree G1hộp đựng
g1-fold-towelUnitree G1gấp khăn
g1-hang-keysUnitree G1các khóa treo
g1-load-clothes-washing-machineUnitree G1tải máy giặt quần áo
g1-plate-into-rackUnitree G1chèn đĩa vào giá

Hướng dẫn Open Track được viết bởi một người đánh giá ngay tại chỗ.

Bộ dữ liệu

Tải xuống tất cả 20 bộ dữ liệu của Fine-tune Track vào ./data/RoboColosseum, mỗi tác vụ một thư mục. Bộ dữ liệu đầy đủ có dung lượng khoảng 35 GB: SO-101 1,4 GB, Franka 4,6 GB, Bimanual YAM 5,9 GB và 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

Để chỉ tải một số tác vụ, hãy giữ lại các tên đó trong danh sách. Mỗi thư mục là một tập dữ liệu LeRobot tự chứa. Để tải một tập dữ liệu, hãy truyền thư mục của nó làm root:

from lerobot.datasets import LeRobotDataset

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

Nếu không có root, bộ dữ liệu sẽ được tải xuống từ Hub khi sử dụng lần đầu.

Cài đặt

Cài đặt Policy Server trên máy chạy mô hình của bạn:

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

Các trang web của Robot cài đặt Robot Client trên máy tính được kết nối với robot, trong đó <robot_type> là so101, franka hoặc 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.

Đánh giá

Các bài đánh giá được chạy trên các robot của RoboColosseum. Sau khi bạn đăng ký, nhóm RoboColosseum sẽ kết nối chính sách của bạn theo một trong hai cách: bạn tự triển khai một Policy Server trên máy suy luận của mình, hoặc bạn cung cấp một checkpoint để họ triển khai trên một máy đặt cạnh robot.

Các thử nghiệm Open Track sử dụng hai chương trình:

Thành phầnChạy trênNó hoạt động như thế nàoKho lưu trữ
Máy chủ Chính sáchMáy suy luận của bạnNhận quan sát từ robot, chạy mô hình của bạn và trả về các hành độngrobocolosseum-policy-server
Robot ClientMáy tính của robotĐiều khiển robot, thực thi các hành động và ghi lại thử nghiệmrobocolosseum-client

Cung cấp chính sách của bạn

Trong bước checkout của Policy Server, hãy tạo cấu hình và đặt URL của Router cùng token của Policy Server mà bạn nhận được từ nhóm RoboColosseum:

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

Kiểm tra kết nối mà không gửi các hành động. Khi Router khớp một Robot Client với máy chủ của bạn, chỉ thị tác vụ, trạng thái khớp và gắp cùng hình ảnh từ camera sẽ được hiển thị (các hình ảnh mở trong cửa sổ OpenCV, do đó cần một màn hình đồ họa):

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

Sau đó, kết nối mô hình của bạn với Policy Server SDK. Lưu tệp này dưới tên serve_policy.py ở thư mục gốc của kho:

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) chuyển đổi quan sát (obs.instruction, obs.state.head_image, obs.state.left_image, obs.state.right_image, obs.state.joints, obs.state.gripper) thành đầu vào cho mô hình của bạn và trả về một mảng NumPy có hình dạng (horizon, action_dim) trong không gian hành động đã thống nhất với Client. Mặc định, đây là joint_position ở 15 Hz với tối đa 16 bước mỗi chunk. Khởi động server và giữ cho nó chạy trong khi các bộ đánh giá sử dụng chính sách của bạn:

uv run python serve_policy.py

Cài đặt một robot

Trong phần checkout của Robot Client, tạo cấu hình và chỉnh sửa nó cho robot của bạn:

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

Sau đó, khởi động Client:

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

Làm theo các hướng dẫn để nhập một chỉ thị hoặc chọn một tác vụ, chạy thử nghiệm và gửi đánh giá. Mỗi thử nghiệm được ghi lại và xuất ở định dạng LeRobot.

Mã đánh giá theo dõi Fine-tune

Mã fine-tuning và đánh giá được sử dụng cho từng embodiment trong Fine-tune Track là công khai: SO-101, Franka (DROID), Bimanual YAM và Unitree G1.

Huấn luyện

Lộ trình tinh chỉnh

Huấn luyện trên bộ dữ liệu tác vụ đã tải xuống bằng --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

Cấu hình chính sách cụ thể, ánh xạ camera, biểu diễn hành động và công thức huấn luyện phụ thuộc vào chính sách đang được điều chỉnh. Nếu chính sách của bạn kỳ vọng các tên camera khác nhau, hãy ánh xạ chúng bằng --rename_map.

Lưu ý: các baseline G0.5 và LingBot-VLA 2.0 đã được fine-tune bằng mã nguồn gốc của chúng, GalaxeaVLA @ 89f2322 và lingbot-vla-v2 @ be969b8.

Mở Track

Open Track đánh giá một checkpoint đóng băng trên các tác vụ thực tế. Không có quá trình huấn luyện nào được thực hiện trên dữ liệu đánh giá của RoboColosseum Open Track.

Nếu chính sách của bạn chưa hỗ trợ cấu hình robot đích, trước tiên hãy điều chỉnh nó trên dữ liệu robot công khai cho cấu hình đó, sau đó đóng băng checkpoint kết quả trước khi đánh giá. Các bộ dữ liệu khởi tạo công khai được khuyến nghị:

Hình thái mục tiêuDữ liệu khởi tạo công khai
SO-100 / SO-101allenai/MolmoAct2-SO100_101-Dataset
Franka (DROID)DROID
YAM hai tayallenai/MolmoAct2-BimanualYAM-Dataset

allenai/MolmoAct2-SO100_101-Dataset liệt kê các bộ dữ liệu LeRobot SO-100 và SO-101 được sử dụng để huấn luyện MolmoAct2, kèm theo chú thích ngôn ngữ cho từng episode. Tải xuống danh sách các kho lưu trữ nguồn bằng cách:

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

Mỗi mục trong repo_list.json là một ID dataset Hub được đặt tiền tố lerobot: (ví dụ lerobot:<user>/<dataset>). Hãy chọn các dataset SO-100 / SO-101 tương thích từ danh sách và huấn luyện trên chúng. Nhiều dataset trong số đó sử dụng định dạng LeRobot v2.1: hãy chuyển đổi chúng sang v3.0 trước khi nạp (xem Sử dụng LeRobotDataset).

DROID được phát hành ở định dạng RLDS. Hãy chuyển đổi nó thành một tập dữ liệu LeRobot bằng cách làm theo ví dụ DROID trong Porting Large Datasets, sau đó huấn luyện trên tập dữ liệu đã chuyển đổi bằng lerobot-train.

Bộ dữ liệu Bimanual YAM hoạt động trực tiếp với 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

Giai đoạn bootstrap chỉ làm cho chính sách tương thích với cấu hình mục tiêu. Điểm kiểm tra được nộp cho Open Track sẽ được giữ nguyên trong suốt quá trình đánh giá.

Gửi bài dự thi lên bảng xếp hạng

Các điểm số được công bố trên bảng xếp hạng RoboColosseum. Để một chính sách được đánh giá, hãy đăng ký trên trang web RoboColosseum. Giao thức cho mỗi hạng mục:

  • Lộ trình tinh chỉnh: mỗi chính sách được tinh chỉnh trên cùng 100 ví dụ minh họa của một tác vụ, sau đó thực hiện 25 lần thử. Các thành công hoàn toàn và tiến độ đạt mốc được báo cáo.
  • Open Track: người đánh giá sẽ xem hai chính sách ẩn danh thực hiện cùng một chỉ thị trên cùng một robot và cùng một cảnh, sau đó chọn lượt chạy tốt hơn hoặc tuyên bố hòa. Các đánh giá được khớp từ tất cả các so sánh trên robot đó và được hiển thị kèm theo độ không chắc chắn của chúng.
Update on GitHub