yulin-luo/RoboBench

This is the official evaluation code for Robobench

25

stars

2

commits

Python

primary language

Sep 2, 2026

updated

README

πŸ€– RoboBench

A comprehensive evaluation benchmark for Multimodal Large Language Models as embodied robot brains.

arXiv Project website Dataset Official results MIT license Python 3.10+ ECCV 2026 Intro video


Accepted to ECCV 2026.

πŸ“° News

  • πŸ–ΌοΈ 2026.09 - The official ECCV 2026 poster is released (PDF). Meet us at ECCV 2026 in MalmΓΆ, Sept 8–12 β€” see the ECCV virtual poster page.
  • πŸ“Š 2026.07 - Congratulations to HY-Embodied! HY-Embodied-0.5 MoT-2B and Hy-Embodied-VLM-1.0 A3B include RoboBench-MCQ and RoboBench-Planning as part of their official evaluation suite, highlighting RoboBench as a recognized benchmark for embodied foundation models.
  • πŸŽ‰ 2026.07 - RoboBench is accepted to ECCV 2026. The official release reports results for 18 state-of-the-art MLLMs with the MLLM-as-world-simulator planning framework.
  • πŸ“° 2026.07 - RoboBench is featured by 具身智能之心, introducing our benchmark for evaluating MLLMs as embodied brains.

πŸ” Overview

RoboBench evaluates MLLMs on robotic manipulation tasks by decomposing embodied intelligence into diagnostic abilities rather than reporting only end-to-end task success. It covers the full execution pipeline from instruction comprehension and perception to generalized planning, affordance reasoning, and failure analysis. The ECCV 2026 release contains 5 dimensions, 14 capability groups, 25 tasks (released as 32 subtask manifests), 6,092 QA pairs, and results for 18 state-of-the-art MLLMs.

RoboBench overview

✨ What RoboBench Provides

  • Fine-grained embodied evaluation: 5 cognitive dimensions, 14 capability groups, 25 tasks, and 6,092 QA pairs for diagnosing where MLLMs succeed or fail as robot brains.
  • 18-model leaderboard: closed-source, open-source, and embodied MLLMs are evaluated in the official results release, plus a GPT-5.4 text-only ablation for visual-grounding analysis.
  • Cross-domain planning tests: Robot morphology, object type, viewpoint, attributes, and world-knowledge generalization.
  • MLLM-as-world-simulator evaluation: Planning outputs are judged with a simulator-style MLLM evaluator for physically grounded task completion.
  • Reproducible package: YAML-driven configuration, API inference, task-specific evaluators, checkpoint/resume, and multi-run aggregation.
  • Reusable prompt pipeline: Open prompt construction utilities for robotic video and image-based question answering, with prompt coverage documented in docs/PROMPTS_AND_PIPELINE.md.

🧭 Benchmark Dimensions

DimensionRepresentative capabilitiesEvaluation type
Instruction ComprehensionExplicit goals, implicit demands, cross-task navigationPlanning
Perception and ReasoningObject attributes, spatial relations, temporal causality, robot type/viewMultiple-choice
Generalized PlanningCross-embodiment, cross-object, cross-view, cross-attribute, world knowledgePlanning Q1/Q2/Q3
Affordance ReasoningStatic affordance, dynamic affordance, navigation visual promptsMultiple-choice
Error AnalysisHigh-level planning errors, low-level execution errorsMultiple-choice

πŸ§ͺ Multiple-Choice Question (MCQ) and Planning

For comparison with embodied foundation models such as HY-Embodied, RoboBench provides two ready-to-run evaluation settings. Here, MCQ means Multiple-Choice Question:

SettingIncluded dimensionsEvaluation
RoboBench-MCQ2, 4, and 5: 13 subtasks, 1,895 questionsMultiple-choice answer normalization and scoring
RoboBench-Planning1 and 3: 19 subtasks, 4,197 questionsQ1 multi-step planning, Q2 next-action prediction, and Q3 state estimation; planning responses are judged by the evaluator model configured under evaluation.planning

After completing the dataset, config, and model-server setup described below, run either setting with one command:

# Validate the released metadata without running inference.
ROBOBENCH_CONFIG=config/benchmark.example.yaml \
  bash scripts/run_hy_embodied_eval.sh dry-run

# Run one setting, or replace mcq with planning/all.
ROBOBENCH_MODEL=hy_a3b \
  bash scripts/run_hy_embodied_eval.sh mcq

The helper calls the model through an OpenAI-compatible /v1/chat/completions endpoint; it does not load model weights directly. See Evaluating HY-Embodied on RoboBench for the vLLM serving example, configuration, smoke test, and output locations.

The mapping above is the current RoboBench-side interpretation of the two reported HY-Embodied settings. We are tracking confirmation of the exact reported protocol in Tencent-Hunyuan/HY-Embodied#14 and will synchronize the helper if their protocol differs.

βš™οΈ Installation

git clone https://github.com/yulin-luo/RoboBench.git
cd RoboBench

# Core package for API-based inference and evaluation.
pip install -e .

# Optional dependencies for local HuggingFace vision-language models.
pip install -e ".[local]"

πŸ“¦ Requirements

  • Python >= 3.10
  • API-compatible endpoint supported by the OpenAI Python client
  • OpenCV, PyYAML, Pydantic, NumPy, tqdm
  • Optional local-model stack: torch, transformers, pillow

πŸ“š Dataset

Download the released RoboBench dataset from Hugging Face and point the config to the local copy.

hf download LeoFan01/RoboBench \
  --repo-type dataset \
  --local-dir data/RoboBench-hf

The downloaded directory is the complete runtime data source. RoboBench reads the 32 released questions.json files and system_prompt.json, constructs the prompts deterministically, and resolves every image under paths.data_root. No separately generated prompt files or path-prefix rewrite configuration is required.

Validate the released question metadata before inference:

robobench --config config/benchmark.yaml inspect-data --metadata-only

After all images are downloaded, run the stricter file check:

robobench --config config/benchmark.yaml inspect-data

The complete release contains 32 subtask manifests, 6,092 questions, and 37,126 image references. The 32 manifests correspond to the paper's 25 tasks: two planning tasks are sharded by category at release time β€” material_affordance into 5 material buckets (articulated / deformable / rigid / special / multi-object) and physical_attribute into 4 attribute buckets (color / number / shape / size) β€” while all other tasks map one-to-one (25 + 4 + 3 = 32). RoboBench-MCQ covers 13 subtasks and 1,895 questions; RoboBench-Planning covers 19 subtasks and 4,197 questions.

Official score tables and model-output JSON files are hosted separately to keep this repository lightweight:

The official leaderboard reports 18 evaluated MLLMs:

GPT-5.4, GPT-5.2, GPT-5, GPT-4.1, GPT-4o,
Claude-Opus-4.7, Claude-Sonnet-4.6, Claude-Sonnet-4.5, Claude-Haiku-4.5,
Gemini-3.1-Pro, Gemini-2.5-Pro, Gemini-2.5-Flash,
Qwen3-VL-8B, Qwen2.5-VL-7B-Instruct, LLaVA-OneVision-7B,
RoboBrain-2.0-7B, RoboBrain-2.5-4B, MiMo-Embodied-7B

πŸš€ Quick Start

1. πŸ› οΈ Prepare a Config

cp config/benchmark.example.yaml config/benchmark.yaml

export DUBRIFY_API_KEY="your-api-key"
export ROBOBENCH_API_BASE_URL="https://your-endpoint/v1"
export ROBOBENCH_DATA_ROOT="$PWD/data/RoboBench-hf"
export ROBOBENCH_RESULTS_ROOT="$PWD/results"
export ROBOBENCH_CACHE_DIR="$PWD/cache"
export ROBOBENCH_JUDGE_API_BASE_URL="https://your-judge-endpoint/v1"
export ROBOBENCH_JUDGE_API_KEY="your-judge-api-key"

Edit config/benchmark.yaml to choose models, dimensions, and concurrency settings. Keep config/benchmark.yaml local; it is intentionally ignored by git.

2. 🧠 Run Inference

After pip install -e ., the package exposes a robobench command-line entrypoint. The CLI uses a top-level --config argument before the subcommand.

robobench --config config/benchmark.yaml inference \
  --model gpt-5.4 \
  --dimension perception_reasoning \
  --subtask static_attribute \
  --max-samples 1 \
  --run-id smoke_test

If you prefer not to install the package, use the equivalent Python module form:

PYTHONPATH=src python -m robobench.cli --config config/benchmark.yaml inference \
  --model gpt-5.4 \
  --dimension perception_reasoning \
  --subtask static_attribute \
  --max-samples 1 \
  --run-id smoke_test

For text-only ablation:

robobench --config config/benchmark.yaml inference \
  --model gpt-5.4 \
  --dimension perception_reasoning \
  --subtask static_attribute \
  --max-samples 1 \
  --run-id run_0_text_only \
  --text-only

HY-Embodied users who want to run the reported RoboBench-MCQ and RoboBench-Planning style settings can use the helper script in docs/HY_EMBODIED_EVAL.md. The helper expects a HY-Embodied model served through an OpenAI-compatible endpoint, such as the official Hy-Embodied-VLM-1.0 vLLM server; it does not load HY weights directly.

3. πŸ“Š Evaluate Existing Results

robobench --config config/benchmark.yaml evaluate \
  --dimension perception_reasoning

Remove --max-samples when running the full selected dimension.

4. πŸ” Run an End-to-End Pipeline

robobench --config config/benchmark.yaml pipeline --repeats 3

The full pipeline runs inference, evaluation, and aggregation across repeated runs configured by runs.num_repeats.

🧩 Configuration

Most behavior is controlled from config/benchmark.yaml.

πŸ” API Settings

FieldDescription
api.base_urlOpenAI-compatible endpoint for the model being evaluated
api.api_keyAPI key for the model endpoint, usually supplied as ${DUBRIFY_API_KEY}
api.api_max_concurrentRequest-level API concurrency
api.task_timeoutPer-request timeout in seconds
api.retry_attemptsMaximum retry attempts for transient failures
evaluation.planning.eval_modelModel used to judge Planning Q1/Q2/Q3 responses
evaluation.apiIndependent OpenAI-compatible API configuration for Planning judging and optional MCQ answer normalization

🧠 Model Selection

models:
  - name: "gpt-5.4"
    provider: "openai"
    vision: true

text_only_variants:
  - name: "gpt-5.4"
    suffix: "text_only"

πŸ§ͺ Dimension Selection

dimensions:
  perception_reasoning:
    enabled: true
    eval_type: "multi_choice"
    subtasks:
      - static_attribute
      - spatial_relation

πŸ“ Paths

FieldDescription
paths.data_rootLocal RoboBench dataset directory containing system_prompt.json, released questions.json files, and images
paths.results_rootModel outputs and evaluated scores
paths.cache_dirCheckpoints and temporary files

πŸ—‚οΈ Project Structure

RoboBench/
β”œβ”€β”€ config/
β”‚   └── benchmark.example.yaml
β”œβ”€β”€ src/robobench/
β”‚   β”œβ”€β”€ analysis/          # Dataset and correlation analysis utilities
β”‚   β”œβ”€β”€ data/              # Dataset loading from released questions.json files
β”‚   β”œβ”€β”€ evaluation/        # Multiple-choice, planning, point, IoU, trajectory evaluators
β”‚   β”œβ”€β”€ generation/        # Generation-stage nodes
β”‚   β”œβ”€β”€ inference/         # Async API client, checkpoints, image handling, local HF client
β”‚   β”œβ”€β”€ pipeline/          # Dataflow nodes and executor
β”‚   β”œβ”€β”€ prompts/           # Prompt builders and robot-task templates
β”‚   β”œβ”€β”€ scoring/           # Multi-run aggregation and statistics
β”‚   └── utils/             # Path utilities
β”œβ”€β”€ pyproject.toml
└── README.md

πŸ“ Evaluation Metrics

EvaluatorWhat it checks
multi_choiceMultiple-choice answer normalization and exact scoring
planningQ1 multi-step plans, Q2 single-step actions, Q3 state estimation
pointDistance between predicted and ground-truth coordinates
iouBounding-box intersection over union
trajectoryMulti-point trajectory comparison

Planning evaluation can call an evaluator model, configured by evaluation.planning.eval_model, to judge action feasibility and task completion.

πŸ’¬ Prompt Builder Example

from robobench.data.dataset import RoboBenchDataset
from robobench.prompts.builder import PromptBuilder

dataset = RoboBenchDataset("data/RoboBench-hf")
questions = dataset.load_questions(
    "perception_reasoning",
    "static_attribute",
    max_samples=1,
)
builder = PromptBuilder()
prompts = builder.build(questions, mode="base64")
builder.save(prompts, "prompts.jsonl")

πŸ› οΈ Development

pip install -e ".[dev]"
python -m compileall -q src
black src/
ruff check src/

πŸ“ Citation

If you use RoboBench in your research, please cite:

@misc{luo2026robobenchcomprehensiveevaluationbenchmark,
      title={Robobench: A Comprehensive Evaluation Benchmark for Multimodal Large Language Models as Embodied Brain},
      author={Yulin Luo and Chun-Kai Fan and Menghang Dong and Jiayu Shi and Xiangju Mi and Mengdi Zhao and Bo-Wen Zhang and Cheng Chi and Jiaming Liu and Gaole Dai and Rongyu Zhang and Ruichuan An and Kun Wu and Zhengping Che and Shaoxuan Xie and Guocai Yao and Zhongxia Zhao and Pengwei Wang and Guang Liu and Zhongyuan Wang and Tiejun Huang and Shanghang Zhang},
      year={2026},
      eprint={2510.17801},
      archivePrefix={arXiv},
      primaryClass={cs.RO},
      url={https://arxiv.org/abs/2510.17801},
}

πŸ“œ License

This repository is released under the MIT License.

Contributors

yulin-luo

2 commits

yulin-luo/RoboBench

This is the official evaluation code for Robobench

25

stars

2

commits

Python

primary language

Sep 2, 2026

updated

README

πŸ€– RoboBench

A comprehensive evaluation benchmark for Multimodal Large Language Models as embodied robot brains.

arXiv Project website Dataset Official results MIT license Python 3.10+ ECCV 2026 Intro video


Accepted to ECCV 2026.

πŸ“° News

  • πŸ–ΌοΈ 2026.09 - The official ECCV 2026 poster is released (PDF). Meet us at ECCV 2026 in MalmΓΆ, Sept 8–12 β€” see the ECCV virtual poster page.
  • πŸ“Š 2026.07 - Congratulations to HY-Embodied! HY-Embodied-0.5 MoT-2B and Hy-Embodied-VLM-1.0 A3B include RoboBench-MCQ and RoboBench-Planning as part of their official evaluation suite, highlighting RoboBench as a recognized benchmark for embodied foundation models.
  • πŸŽ‰ 2026.07 - RoboBench is accepted to ECCV 2026. The official release reports results for 18 state-of-the-art MLLMs with the MLLM-as-world-simulator planning framework.
  • πŸ“° 2026.07 - RoboBench is featured by 具身智能之心, introducing our benchmark for evaluating MLLMs as embodied brains.

πŸ” Overview

RoboBench evaluates MLLMs on robotic manipulation tasks by decomposing embodied intelligence into diagnostic abilities rather than reporting only end-to-end task success. It covers the full execution pipeline from instruction comprehension and perception to generalized planning, affordance reasoning, and failure analysis. The ECCV 2026 release contains 5 dimensions, 14 capability groups, 25 tasks (released as 32 subtask manifests), 6,092 QA pairs, and results for 18 state-of-the-art MLLMs.

RoboBench overview

✨ What RoboBench Provides

  • Fine-grained embodied evaluation: 5 cognitive dimensions, 14 capability groups, 25 tasks, and 6,092 QA pairs for diagnosing where MLLMs succeed or fail as robot brains.
  • 18-model leaderboard: closed-source, open-source, and embodied MLLMs are evaluated in the official results release, plus a GPT-5.4 text-only ablation for visual-grounding analysis.
  • Cross-domain planning tests: Robot morphology, object type, viewpoint, attributes, and world-knowledge generalization.
  • MLLM-as-world-simulator evaluation: Planning outputs are judged with a simulator-style MLLM evaluator for physically grounded task completion.
  • Reproducible package: YAML-driven configuration, API inference, task-specific evaluators, checkpoint/resume, and multi-run aggregation.
  • Reusable prompt pipeline: Open prompt construction utilities for robotic video and image-based question answering, with prompt coverage documented in docs/PROMPTS_AND_PIPELINE.md.

🧭 Benchmark Dimensions

DimensionRepresentative capabilitiesEvaluation type
Instruction ComprehensionExplicit goals, implicit demands, cross-task navigationPlanning
Perception and ReasoningObject attributes, spatial relations, temporal causality, robot type/viewMultiple-choice
Generalized PlanningCross-embodiment, cross-object, cross-view, cross-attribute, world knowledgePlanning Q1/Q2/Q3
Affordance ReasoningStatic affordance, dynamic affordance, navigation visual promptsMultiple-choice
Error AnalysisHigh-level planning errors, low-level execution errorsMultiple-choice

πŸ§ͺ Multiple-Choice Question (MCQ) and Planning

For comparison with embodied foundation models such as HY-Embodied, RoboBench provides two ready-to-run evaluation settings. Here, MCQ means Multiple-Choice Question:

SettingIncluded dimensionsEvaluation
RoboBench-MCQ2, 4, and 5: 13 subtasks, 1,895 questionsMultiple-choice answer normalization and scoring
RoboBench-Planning1 and 3: 19 subtasks, 4,197 questionsQ1 multi-step planning, Q2 next-action prediction, and Q3 state estimation; planning responses are judged by the evaluator model configured under evaluation.planning

After completing the dataset, config, and model-server setup described below, run either setting with one command:

# Validate the released metadata without running inference.
ROBOBENCH_CONFIG=config/benchmark.example.yaml \
  bash scripts/run_hy_embodied_eval.sh dry-run

# Run one setting, or replace mcq with planning/all.
ROBOBENCH_MODEL=hy_a3b \
  bash scripts/run_hy_embodied_eval.sh mcq

The helper calls the model through an OpenAI-compatible /v1/chat/completions endpoint; it does not load model weights directly. See Evaluating HY-Embodied on RoboBench for the vLLM serving example, configuration, smoke test, and output locations.

The mapping above is the current RoboBench-side interpretation of the two reported HY-Embodied settings. We are tracking confirmation of the exact reported protocol in Tencent-Hunyuan/HY-Embodied#14 and will synchronize the helper if their protocol differs.

βš™οΈ Installation

git clone https://github.com/yulin-luo/RoboBench.git
cd RoboBench

# Core package for API-based inference and evaluation.
pip install -e .

# Optional dependencies for local HuggingFace vision-language models.
pip install -e ".[local]"

πŸ“¦ Requirements

  • Python >= 3.10
  • API-compatible endpoint supported by the OpenAI Python client
  • OpenCV, PyYAML, Pydantic, NumPy, tqdm
  • Optional local-model stack: torch, transformers, pillow

πŸ“š Dataset

Download the released RoboBench dataset from Hugging Face and point the config to the local copy.

hf download LeoFan01/RoboBench \
  --repo-type dataset \
  --local-dir data/RoboBench-hf

The downloaded directory is the complete runtime data source. RoboBench reads the 32 released questions.json files and system_prompt.json, constructs the prompts deterministically, and resolves every image under paths.data_root. No separately generated prompt files or path-prefix rewrite configuration is required.

Validate the released question metadata before inference:

robobench --config config/benchmark.yaml inspect-data --metadata-only

After all images are downloaded, run the stricter file check:

robobench --config config/benchmark.yaml inspect-data

The complete release contains 32 subtask manifests, 6,092 questions, and 37,126 image references. The 32 manifests correspond to the paper's 25 tasks: two planning tasks are sharded by category at release time β€” material_affordance into 5 material buckets (articulated / deformable / rigid / special / multi-object) and physical_attribute into 4 attribute buckets (color / number / shape / size) β€” while all other tasks map one-to-one (25 + 4 + 3 = 32). RoboBench-MCQ covers 13 subtasks and 1,895 questions; RoboBench-Planning covers 19 subtasks and 4,197 questions.

Official score tables and model-output JSON files are hosted separately to keep this repository lightweight:

The official leaderboard reports 18 evaluated MLLMs:

GPT-5.4, GPT-5.2, GPT-5, GPT-4.1, GPT-4o,
Claude-Opus-4.7, Claude-Sonnet-4.6, Claude-Sonnet-4.5, Claude-Haiku-4.5,
Gemini-3.1-Pro, Gemini-2.5-Pro, Gemini-2.5-Flash,
Qwen3-VL-8B, Qwen2.5-VL-7B-Instruct, LLaVA-OneVision-7B,
RoboBrain-2.0-7B, RoboBrain-2.5-4B, MiMo-Embodied-7B

πŸš€ Quick Start

1. πŸ› οΈ Prepare a Config

cp config/benchmark.example.yaml config/benchmark.yaml

export DUBRIFY_API_KEY="your-api-key"
export ROBOBENCH_API_BASE_URL="https://your-endpoint/v1"
export ROBOBENCH_DATA_ROOT="$PWD/data/RoboBench-hf"
export ROBOBENCH_RESULTS_ROOT="$PWD/results"
export ROBOBENCH_CACHE_DIR="$PWD/cache"
export ROBOBENCH_JUDGE_API_BASE_URL="https://your-judge-endpoint/v1"
export ROBOBENCH_JUDGE_API_KEY="your-judge-api-key"

Edit config/benchmark.yaml to choose models, dimensions, and concurrency settings. Keep config/benchmark.yaml local; it is intentionally ignored by git.

2. 🧠 Run Inference

After pip install -e ., the package exposes a robobench command-line entrypoint. The CLI uses a top-level --config argument before the subcommand.

robobench --config config/benchmark.yaml inference \
  --model gpt-5.4 \
  --dimension perception_reasoning \
  --subtask static_attribute \
  --max-samples 1 \
  --run-id smoke_test

If you prefer not to install the package, use the equivalent Python module form:

PYTHONPATH=src python -m robobench.cli --config config/benchmark.yaml inference \
  --model gpt-5.4 \
  --dimension perception_reasoning \
  --subtask static_attribute \
  --max-samples 1 \
  --run-id smoke_test

For text-only ablation:

robobench --config config/benchmark.yaml inference \
  --model gpt-5.4 \
  --dimension perception_reasoning \
  --subtask static_attribute \
  --max-samples 1 \
  --run-id run_0_text_only \
  --text-only

HY-Embodied users who want to run the reported RoboBench-MCQ and RoboBench-Planning style settings can use the helper script in docs/HY_EMBODIED_EVAL.md. The helper expects a HY-Embodied model served through an OpenAI-compatible endpoint, such as the official Hy-Embodied-VLM-1.0 vLLM server; it does not load HY weights directly.

3. πŸ“Š Evaluate Existing Results

robobench --config config/benchmark.yaml evaluate \
  --dimension perception_reasoning

Remove --max-samples when running the full selected dimension.

4. πŸ” Run an End-to-End Pipeline

robobench --config config/benchmark.yaml pipeline --repeats 3

The full pipeline runs inference, evaluation, and aggregation across repeated runs configured by runs.num_repeats.

🧩 Configuration

Most behavior is controlled from config/benchmark.yaml.

πŸ” API Settings

FieldDescription
api.base_urlOpenAI-compatible endpoint for the model being evaluated
api.api_keyAPI key for the model endpoint, usually supplied as ${DUBRIFY_API_KEY}
api.api_max_concurrentRequest-level API concurrency
api.task_timeoutPer-request timeout in seconds
api.retry_attemptsMaximum retry attempts for transient failures
evaluation.planning.eval_modelModel used to judge Planning Q1/Q2/Q3 responses
evaluation.apiIndependent OpenAI-compatible API configuration for Planning judging and optional MCQ answer normalization

🧠 Model Selection

models:
  - name: "gpt-5.4"
    provider: "openai"
    vision: true

text_only_variants:
  - name: "gpt-5.4"
    suffix: "text_only"

πŸ§ͺ Dimension Selection

dimensions:
  perception_reasoning:
    enabled: true
    eval_type: "multi_choice"
    subtasks:
      - static_attribute
      - spatial_relation

πŸ“ Paths

FieldDescription
paths.data_rootLocal RoboBench dataset directory containing system_prompt.json, released questions.json files, and images
paths.results_rootModel outputs and evaluated scores
paths.cache_dirCheckpoints and temporary files

πŸ—‚οΈ Project Structure

RoboBench/
β”œβ”€β”€ config/
β”‚   └── benchmark.example.yaml
β”œβ”€β”€ src/robobench/
β”‚   β”œβ”€β”€ analysis/          # Dataset and correlation analysis utilities
β”‚   β”œβ”€β”€ data/              # Dataset loading from released questions.json files
β”‚   β”œβ”€β”€ evaluation/        # Multiple-choice, planning, point, IoU, trajectory evaluators
β”‚   β”œβ”€β”€ generation/        # Generation-stage nodes
β”‚   β”œβ”€β”€ inference/         # Async API client, checkpoints, image handling, local HF client
β”‚   β”œβ”€β”€ pipeline/          # Dataflow nodes and executor
β”‚   β”œβ”€β”€ prompts/           # Prompt builders and robot-task templates
β”‚   β”œβ”€β”€ scoring/           # Multi-run aggregation and statistics
β”‚   └── utils/             # Path utilities
β”œβ”€β”€ pyproject.toml
└── README.md

πŸ“ Evaluation Metrics

EvaluatorWhat it checks
multi_choiceMultiple-choice answer normalization and exact scoring
planningQ1 multi-step plans, Q2 single-step actions, Q3 state estimation
pointDistance between predicted and ground-truth coordinates
iouBounding-box intersection over union
trajectoryMulti-point trajectory comparison

Planning evaluation can call an evaluator model, configured by evaluation.planning.eval_model, to judge action feasibility and task completion.

πŸ’¬ Prompt Builder Example

from robobench.data.dataset import RoboBenchDataset
from robobench.prompts.builder import PromptBuilder

dataset = RoboBenchDataset("data/RoboBench-hf")
questions = dataset.load_questions(
    "perception_reasoning",
    "static_attribute",
    max_samples=1,
)
builder = PromptBuilder()
prompts = builder.build(questions, mode="base64")
builder.save(prompts, "prompts.jsonl")

πŸ› οΈ Development

pip install -e ".[dev]"
python -m compileall -q src
black src/
ruff check src/

πŸ“ Citation

If you use RoboBench in your research, please cite:

@misc{luo2026robobenchcomprehensiveevaluationbenchmark,
      title={Robobench: A Comprehensive Evaluation Benchmark for Multimodal Large Language Models as Embodied Brain},
      author={Yulin Luo and Chun-Kai Fan and Menghang Dong and Jiayu Shi and Xiangju Mi and Mengdi Zhao and Bo-Wen Zhang and Cheng Chi and Jiaming Liu and Gaole Dai and Rongyu Zhang and Ruichuan An and Kun Wu and Zhengping Che and Shaoxuan Xie and Guocai Yao and Zhongxia Zhao and Pengwei Wang and Guang Liu and Zhongyuan Wang and Tiejun Huang and Shanghang Zhang},
      year={2026},
      eprint={2510.17801},
      archivePrefix={arXiv},
      primaryClass={cs.RO},
      url={https://arxiv.org/abs/2510.17801},
}

πŸ“œ License

This repository is released under the MIT License.

Contributors

yulin-luo

2 commits

Languages

Python

97.8%

Shell

2.2%