A comprehensive evaluation benchmark for Multimodal Large Language Models as embodied robot brains.
Accepted to ECCV 2026.
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.
| Dimension | Representative capabilities | Evaluation type |
|---|---|---|
| Instruction Comprehension | Explicit goals, implicit demands, cross-task navigation | Planning |
| Perception and Reasoning | Object attributes, spatial relations, temporal causality, robot type/view | Multiple-choice |
| Generalized Planning | Cross-embodiment, cross-object, cross-view, cross-attribute, world knowledge | Planning Q1/Q2/Q3 |
| Affordance Reasoning | Static affordance, dynamic affordance, navigation visual prompts | Multiple-choice |
| Error Analysis | High-level planning errors, low-level execution errors | Multiple-choice |
For comparison with embodied foundation models such as HY-Embodied, RoboBench provides two ready-to-run evaluation settings. Here, MCQ means Multiple-Choice Question:
| Setting | Included dimensions | Evaluation |
|---|---|---|
| RoboBench-MCQ | 2, 4, and 5: 13 subtasks, 1,895 questions | Multiple-choice answer normalization and scoring |
| RoboBench-Planning | 1 and 3: 19 subtasks, 4,197 questions | Q1 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.
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]"
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
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.
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.
robobench --config config/benchmark.yaml evaluate \
--dimension perception_reasoning
Remove --max-samples when running the full selected dimension.
robobench --config config/benchmark.yaml pipeline --repeats 3
The full pipeline runs inference, evaluation, and aggregation across repeated runs configured by runs.num_repeats.
Most behavior is controlled from config/benchmark.yaml.
| Field | Description |
|---|---|
api.base_url | OpenAI-compatible endpoint for the model being evaluated |
api.api_key | API key for the model endpoint, usually supplied as ${DUBRIFY_API_KEY} |
api.api_max_concurrent | Request-level API concurrency |
api.task_timeout | Per-request timeout in seconds |
api.retry_attempts | Maximum retry attempts for transient failures |
evaluation.planning.eval_model | Model used to judge Planning Q1/Q2/Q3 responses |
evaluation.api | Independent OpenAI-compatible API configuration for Planning judging and optional MCQ answer normalization |
models:
- name: "gpt-5.4"
provider: "openai"
vision: true
text_only_variants:
- name: "gpt-5.4"
suffix: "text_only"
dimensions:
perception_reasoning:
enabled: true
eval_type: "multi_choice"
subtasks:
- static_attribute
- spatial_relation
| Field | Description |
|---|---|
paths.data_root | Local RoboBench dataset directory containing system_prompt.json, released questions.json files, and images |
paths.results_root | Model outputs and evaluated scores |
paths.cache_dir | Checkpoints and temporary files |
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
| Evaluator | What it checks |
|---|---|
multi_choice | Multiple-choice answer normalization and exact scoring |
planning | Q1 multi-step plans, Q2 single-step actions, Q3 state estimation |
point | Distance between predicted and ground-truth coordinates |
iou | Bounding-box intersection over union |
trajectory | Multi-point trajectory comparison |
Planning evaluation can call an evaluator model, configured by evaluation.planning.eval_model, to judge action feasibility and task completion.
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")
pip install -e ".[dev]"
python -m compileall -q src
black src/
ruff check src/
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},
}
This repository is released under the MIT License.
2 commits
Python
97.8%
Shell
2.2%
A comprehensive evaluation benchmark for Multimodal Large Language Models as embodied robot brains.
Accepted to ECCV 2026.
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.
| Dimension | Representative capabilities | Evaluation type |
|---|---|---|
| Instruction Comprehension | Explicit goals, implicit demands, cross-task navigation | Planning |
| Perception and Reasoning | Object attributes, spatial relations, temporal causality, robot type/view | Multiple-choice |
| Generalized Planning | Cross-embodiment, cross-object, cross-view, cross-attribute, world knowledge | Planning Q1/Q2/Q3 |
| Affordance Reasoning | Static affordance, dynamic affordance, navigation visual prompts | Multiple-choice |
| Error Analysis | High-level planning errors, low-level execution errors | Multiple-choice |
For comparison with embodied foundation models such as HY-Embodied, RoboBench provides two ready-to-run evaluation settings. Here, MCQ means Multiple-Choice Question:
| Setting | Included dimensions | Evaluation |
|---|---|---|
| RoboBench-MCQ | 2, 4, and 5: 13 subtasks, 1,895 questions | Multiple-choice answer normalization and scoring |
| RoboBench-Planning | 1 and 3: 19 subtasks, 4,197 questions | Q1 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.
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]"
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
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.
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.
robobench --config config/benchmark.yaml evaluate \
--dimension perception_reasoning
Remove --max-samples when running the full selected dimension.
robobench --config config/benchmark.yaml pipeline --repeats 3
The full pipeline runs inference, evaluation, and aggregation across repeated runs configured by runs.num_repeats.
Most behavior is controlled from config/benchmark.yaml.
| Field | Description |
|---|---|
api.base_url | OpenAI-compatible endpoint for the model being evaluated |
api.api_key | API key for the model endpoint, usually supplied as ${DUBRIFY_API_KEY} |
api.api_max_concurrent | Request-level API concurrency |
api.task_timeout | Per-request timeout in seconds |
api.retry_attempts | Maximum retry attempts for transient failures |
evaluation.planning.eval_model | Model used to judge Planning Q1/Q2/Q3 responses |
evaluation.api | Independent OpenAI-compatible API configuration for Planning judging and optional MCQ answer normalization |
models:
- name: "gpt-5.4"
provider: "openai"
vision: true
text_only_variants:
- name: "gpt-5.4"
suffix: "text_only"
dimensions:
perception_reasoning:
enabled: true
eval_type: "multi_choice"
subtasks:
- static_attribute
- spatial_relation
| Field | Description |
|---|---|
paths.data_root | Local RoboBench dataset directory containing system_prompt.json, released questions.json files, and images |
paths.results_root | Model outputs and evaluated scores |
paths.cache_dir | Checkpoints and temporary files |
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
| Evaluator | What it checks |
|---|---|
multi_choice | Multiple-choice answer normalization and exact scoring |
planning | Q1 multi-step plans, Q2 single-step actions, Q3 state estimation |
point | Distance between predicted and ground-truth coordinates |
iou | Bounding-box intersection over union |
trajectory | Multi-point trajectory comparison |
Planning evaluation can call an evaluator model, configured by evaluation.planning.eval_model, to judge action feasibility and task completion.
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")
pip install -e ".[dev]"
python -m compileall -q src
black src/
ruff check src/
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},
}
This repository is released under the MIT License.
2 commits
Python
97.8%
Shell
2.2%