仿真评测平台使用指南
在自备 GPU 服务器上运行模型,通过 Policy Space 接入 X2Real 云平台,完成仿真评测并查看轨迹回放。
摘要
X2Real 通过真机校准仿真环境、设置覆盖 10 类能力的 44 项任务,并严格区分训练与评测环境,旨在构建可持续扩展的仿真评测与合成数据管线的基础设施,更可信、全面、公平地评估通用机器人策略的任务执行能力及其对新环境的适应能力。
本文主要介绍如何在自备 GPU 服务器上运行模型,通过适配 Policy Space 接入 X2Real 云平台 进行仿真评测。开发者负责模型推理服务,云平台负责仿真、评分和生成可回放的轨迹。正文适用于不同模型,文末以 π0.5 简要示例;提交前可选用开源 ManaEnv 仿真客户端与分布内(In-Distribution,ID)资产进行本地联调。
接入流程: 准备推理环境 → 适配 Policy Space → 启动 Model Server → 仿真云平台注册与提交评测。
相关资源链接:
Technical Report: https://arxiv.org/pdf/2609.27449
Policy Space: https://github.com/X-Square-Robot/policy-space
X2Real Dataset: https://huggingface.co/datasets/x-square-robot/X2Real-Dataset
ManaEnv Client: https://github.com/X-Square-Robot/x2real
XReal Assets: https://huggingface.co/datasets/x-square-robot/x2real-assets
X2Real 仿真云平台:https://developer.x2robot.com/developer/platform#task-library
准备推理环境
使用 X2Real Dataset 微调模型是可选步骤。需要微调时,按本体和动作空间选择数据,微调完成后再部署 checkpoint。
只做云端评测时,模型服务器不需要安装仿真环境。请先确认下面三项:
| 准备项 | 说明 |
|---|---|
| GPU 服务器 | 驱动、显存和依赖满足所选模型的推理要求。服务启动后,X2Real 云平台必须能访问这个地址。 |
| 推理文件 | 包含模型权重、推理代码、加载配置,以及预处理、后处理和归一化参数。 |
| 本体与动作空间 | 确认模型支持的机器人本体,以及关节控制或末端位姿控制。后续通过 Policy Space 把观测输入和动作输出对齐到云平台要求。 |
适配 Policy Space
Policy Space 提供统一的 WebSocket 协议和服务运行时。自定义模型主要修改 model.py 和 deploy.yaml。已有适配器见仓库说明。
| 修改位置 | 要核对的内容 |
|---|---|
转换输入(model.py) | 把云平台观测映射为模型输入。逐项核对相机视角、RGB / 图像布局、状态字段及顺序、任务指令。按模型要求完成缩放和归一化,避免重复处理。具体字段以选定的 observation_schema 为准。 |
转换输出(model.py) | 把模型结果还原为 action_schema 约定的动作。核对维度、单位、坐标系、绝对 / 相对含义、夹爪范围与时间顺序,并完成必要的反归一化,例如不同夹爪的开合范围。模型内部为了固定维度补充的占位值,返回前只保留契约规定的有效动作维度。所有动作值必须是有限数,不能出现 NaN 或正负无穷大。常见输出为 {"actions": [T, D]},T 为动作步数,D 为每步维度,实际返回结构以契约为准。 |
声明接口(deploy.yaml) | 在 metadata.supported_schema_pairs 中填写 observation_schema、action_schema、embodiment_constraints,并按所用适配器声明动作类型、维度、步数及夹爪约定。元数据必须与真实输出一致,不能只改声明而不改转换逻辑。 |
管理回合状态(model.py) | initialize_episode 初始化回合,ingest_observation 接收观测,infer_actions 推理并返回动作,finalize_episode 清理缓存。多回合之间不能混用历史或缓存。 |
各模型、本体的相机数量和动作维度可以不同。能否用于云评测,取决于云平台是否支持该契约组合。新增契约或本体需要先与平台确认,不能只填写一个新名称就接入。
进一步阅读:自定义模型接入步骤,观测、动作与本体契约说明。
启动 Model Server
在模型服务器上,先激活已经安装好推理依赖的 Python 环境,再安装 Policy Space。下面使用 uv。使用其他环境管理器时,安装和启动必须使用同一个 Python。
git clone https://github.com/X-Square-Robot/policy-space.git
cd policy-space
uv pip install --python "$(command -v python)" -e .
export PYTHONPATH="$PWD/src:$PWD/packages/protocol/src:$PWD"
# 按适配器 README 配置权重路径及其他参数;替换为实际 deploy.yaml 路径
POLICY_DEPLOY=policies/your_family/your_policy/deploy.yaml
python -m policy_space.cli check "$POLICY_DEPLOY"
python -m policy_space.cli serve "$POLICY_DEPLOY" --host 0.0.0.0 --port 8001先确认 check 返回 status: passed,再启动 serve。check 会加载真实模型并用合成观测推理,可能占用 GPU。检查通过表示接口格式符合约定。服务启动后,用 tmux 或进程管理工具保持运行,评测结束前不要关闭。
在 deploy.yaml 的 server.session_mode 中选择会话模式。模型保存回合专属历史或缓存时,优先使用 exclusive。确认状态能安全隔离后,再使用 multiplexed_serial。两种模式的适用条件见部署说明。
在云平台注册时,填写云平台可以访问的完整服务地址,包括协议、主机和端口。地址里如果有路径,也要完整保留。端口映射、域名和安全配置按自己的网络环境处理。
排错可以按这个顺序:
| 现象 | 先查什么 |
|---|---|
| 加载失败 | 权重路径、配置和依赖。 |
| 格式检查失败 | 输入输出转换与契约声明。 |
| 自备服务器能通,云平台连不上 | 地址、端口和代理。 |
| 能运行但动作异常 | 单位、坐标系、夹爪尺度和动作频率。 |
在仿真云平台注册并提交评测
页面后续会更新,核心流程不变:登录、登记服务地址、检查接口、选择任务、查看进度和回放。
登录平台
打开自变量开发者平台。首次使用时,用邮箱或手机号完成验证,再填写昵称、身份类型和机构。已有账号可以切换到“密码登录”,填写自己的邮箱或手机号及密码,阅读并确认页面协议后登录。

登录后,在仿真平台点击“提交模型”。

登录后进入“我的模型”。首次使用时显示“还没有模型”是正常状态。右上角“注册新模型”和空列表中的“注册模型”进入同一个表单。以后也可以从顶部“仿真平台”的下拉菜单进入这个页面。

登记模型服务
点击“注册新模型”,填写以下信息。
| 填写项 | 填写说明 |
|---|---|
| 模型名称 | 使用方便辨认的名字,至少 2 个字符。 |
| 服务地址 | 填写 Model Server 的完整地址,保留协议、端口和路径。本指南的 Policy Space 示例使用 http:// 或 https://,例如 http://8.8.8.8:8888。 |
| 评测本体 | 选择与模型服务支持的机器人一致的本体,并确认服务契约中的本体与动作配置匹配。 |
向下阅读评测确认事项,包括模型及服务的使用授权、结果公开等说明。确认后勾选确认框,再点击“注册模型”。
如果模型已经在列表中,直接使用现有记录,不用重复注册。
注册成功只表示平台保存了模型服务信息,接下来还需要检查接口。
检查模型接口
在模型右侧点击“检查接口”。已经检查过的模型,按钮显示为“重新检查”。
检查期间请等待结果,不要连续重复点击。完成后,展开“查看接口检查报告”,核对连接、协议、本体、Observation 和 Action。

根据检查结果进行下一步:
- 接口可用,允许评测:继续选择评测任务。
- 可评测(有警告):可以继续,但请先阅读警告。标有“不阻止评测”的项目可以继续。
- 检查失败或超时:查看失败项及服务日志,修复后重新检查。
接口检查会向服务发出协议及输入输出探测请求。是否触发真实模型推理,取决于服务实现。通过检查表示接口可用,不代表模型一定能完成仿真任务。

选择评测内容
接口可用后,点击模型右侧的“发起评测”。如果上一次评测失败,页面会显示可以重新发起评测的入口,同样可以打开任务选择窗口。
窗口中有两种评测类型:
| 评测类型 | 使用方式 |
|---|---|
| X2Real | 按需选择任务分类,以及分布内(ID)、分布外(OOD)。可以只选一个分布,也可以同时选择。ID 用于评估训练数据分布内表现,OOD 用于评估分布变化后的泛化能力。具体场景以平台划分为准。 |
| 具亮计划 | 使用固定任务集合及规定的 ID/OOD 范围,不能自行删减任务。任务数以当前窗口为准。 |

可先在正式平台任务库查看任务介绍。
首次使用:先跑一个小范围评测
以“动态物体”的 ID 评测为例:
- 选择“X2Real”。
- 勾选“动态物体”。
- 保留“分布内 ID”,点击“分布外 OOD”取消选中。
- 核对右下角按钮上的“测评 N 项”。最终以提交窗口列出的范围为准。
没有勾选任何套件时,网页会按“全部套件”评测,不是零项。 提交前请检查已选范围及按钮上的数量,避免误提交全部任务。
这里的“项”不等于实际执行次数。同一个任务可能展开成多个环境,每个环境还会重复执行。实际执行数量以运行页显示的轨迹总数为准。
参加具亮计划
切换到“具亮计划”,核对固定任务范围后提交。任务数以页面实际显示为准。

提交评测并查看进度
完成一次具亮计划评测目前约需 5 小时。参与的人较多时,任务会先排队。平台最多接受 100 人排队。
| 情况 | 页面表现 |
|---|---|
| 同一时间只能评测一个模型 | 账号里已有任务在排队或运行时,再提交其他模型会被拒绝。资源有限,也是为了避免一个账号占满全部名额。 |
| 排队人数未超过 100 | 任务进入队列,并显示排队信息,例如“目前排队 85/100 位,预计等待时间 X 小时”。 |
| 排队人数超过 100 | 本次提交会被拒绝,并提示“排队已超过 100 人,请稍后再提交”。 |
排队期间保持 Model Server 运行。轮到之后,任务状态会从排队变为准备环境和运行中。

确认范围后,点击右下角“测评 N 项”。显示“正在提交”时请等待,不要重复点击或重新登记模型。
回到“我的模型”,展开“评测实时监控”,重点查看以下信息:
| 信息 | 查看内容 |
|---|---|
| 任务状态 | 确认任务是否已经受理,区分排队、准备环境、运行中、已完成和失败。 |
| 轨迹进度 | 查看已完成数量和总数量。排队时“等待首条轨迹”或平均分为空是正常现象。一条轨迹执行结束,即使没有完成任务目标,也会计入已完成数量。 |
| 运行日志 | Manaenv Client 查看评测侧信息,Policy Server 查看模型服务侧信息。遇到问题先看最新状态与错误日志。 |
评测提交后可以离开页面,之后再回到“我的模型”查看。评测结束前,请保持模型服务运行。
查看轨迹和视频回放
回到“我的模型”,点击模型名称,进入模型详情。
- 如果页面提供评测类型切换,普通 X2Real 评测选择“一键测评”,固定计划选择“具亮计划”。
- 在“评测会话历史”里按时间找到本次记录。
- 点击该条记录,查看轨迹回放。

结果页可以查看每条轨迹的执行情况。点击“查看回放”后,视频在该条轨迹下方展开。使用播放器的播放、暂停和进度条查看过程,看完后点击“收起”。
运行页显示“回放生成中”时,说明录像尚未准备好,可以稍后再看。暂时没有视频,不代表这条轨迹没有执行。
停止、重试与修改模型
在监控区域右上角点击“终止评测”,确认后是发出停止请求。请等待任务状态更新,再决定后续操作。如果不想停止,在确认框中选择取消即可。
评测失败后,先查看日志并处理失败原因,再点击“重新评测”,重新核对范围并提交。重试会重新执行完整评测,不会接着上次中断的位置续跑。
模型右侧的“…”菜单可以修改地址、重命名或删除。修改服务地址后需要重新检查接口。运行中通常不能修改地址或删除。不要用删除代替停止。
常见问题
| 情况 | 处理方式 |
|---|---|
| “发起评测”不可点击 | 确认接口检查已经结束且允许评测,并检查是否已有任务在运行。 |
| 资源暂满或网络异常 | 先返回“我的模型”核对任务是否已受理,再决定重试。不要连续重复提交。 |
| 接口检查超时 | 服务日志没有请求时,排查地址、端口、转发和防火墙。已经收到请求时,排查加载、推理错误及耗时。维度或契约不匹配时,回到“适配 Policy Space”。 |
| 接口通过但正式评测失败 | 查看运行记录中的最新状态和日志,反馈工作人员。 |
| 模型详情“暂无评测记录” | 先确认选对了“一键测评”或“具亮计划”,再确认运行记录是否已完成。正在运行或失败的任务不一定产生完整结果。 |
反馈问题时,请附上操作时间、评测 Job ID、任务状态、相关日志或截图。遮盖密码、服务密钥,以及不希望公开的地址。
选用:提交前在本地做训练分布内仿真测试
这一节可以跳过。安装 ManaEnv 仿真客户端需要符合 NVIDIA Isaac 要求的 GPU 环境,建议与模型推理环境分开安装。安装后,客户端通过 Model Server 地址请求动作并评测。这个客户端也可以用来生产合成数据。
资产下载和安装说明:
本地联调按下面的顺序做:
- 按 README 安装运行环境。用 assets 仓库的下载脚本下载并解包资产,将
MANAENV_ASSET_ROOT指向解包后的资产根目录。 - 保持上文的 Model Server 运行,填写仿真客户端能够访问的模型服务地址。
- 选择与模型服务一致的本体、观测和动作配置,并核对执行步数及动作频率。开源示例
x2real_ps@v1.0.0.yaml默认使用absolute_ee末端控制。关节模型需要使用对应的 joint 配置。 - 用
x2real_eval.py的--list选择一个训练分布内评测任务环境,通过--policy-config指向匹配的 policy YAML。先以--num-episodes 1、--num-parallel-envs 1联调,再扩大范围。公共版本提供分布内(ID)本地测试。正式成绩以云平台评测为准。
本地评测用来提前发现相机顺序、关节 / 末端控制混用、夹爪尺度和动作频率等问题。只通过格式检查,发现不了这些行为问题。
模型评测适配案例:基于 X2Real 仿真云平台评测 π0.5
这个案例适用于 ArtiXon Arm-6A 双臂的绝对关节控制。可以部署自己的 π0.5 checkpoint,也可以使用 X2Real Dataset 中 data/x2real-desktop-joint-lerobot-v2 微调后的 checkpoint。
使用现有 π0.5 Joint 适配器。它的 model.py 已经完成下面的转换,deploy.yaml 已经声明对应契约。
| 项目 | 本适配器的约定 |
|---|---|
| 输入 | 前视、左腕、右腕三路 RGB。follow1_pos 与 follow2_pos 各 7 维,按左、右顺序拼接为 14 维状态。任务指令传给 OpenPI prompt。图像映射为 observation/image、observation/left_wrist_image、observation/right_wrist_image。 |
| 输出 | 返回 float32 的 [32, 14] 绝对关节动作。每行按左臂 6 关节 + 左夹爪、右臂 6 关节 + 右夹爪排列。夹爪范围 0–1。模型内部的 32 维填充必须在输出前还原。 |
| 契约 | bimanual_rgb_joint@1 → bimanual_joint_position@1,本体 ex001_6r@1。14 维与 32 步是这个适配器的要求,不是所有模型的通用要求。 |
按 OpenPI 和 checkpoint 提供方的说明准备推理环境,然后在 Policy Space 仓库目录执行。示例假设 OpenPI 已有可用的 .venv,并且已经安装 uv。请替换路径和配置名。
export OPENPI_ROOT=/absolute/path/to/openpi
export OPENPI_CHECKPOINT_PATH=/absolute/path/to/checkpoint
export OPENPI_TRAIN_CONFIG=your_registered_config
export OPENPI_DEVICE=cuda:0
export CUDA_VISIBLE_DEVICES=0
uv pip install --python "$OPENPI_ROOT/.venv/bin/python" -e .
export PYTHONPATH="$PWD/src:$PWD/packages/protocol/src:$PWD"
POLICY_DEPLOY=policies/openpi/pi05_artixon_arm_6a_joint/deploy.yaml
"$OPENPI_ROOT/.venv/bin/python" -m policy_space.cli check "$POLICY_DEPLOY"
"$OPENPI_ROOT/.venv/bin/python" -m policy_space.cli serve "$POLICY_DEPLOY" \
--host 0.0.0.0 --port 8001检查通过并启动 Model Server 后,按「在仿真云平台注册并提交评测」注册地址,选择 ArtiXon Arm-6A 并提交评测。如果要做本地测试,需要配置 action_mode: joint_position 和 action_type: absolute_joint,并设置匹配的动作频率。
核对基线:2026-10-12,Policy Space e08bb54e(包版本 0.3.0 / 协议 v2),X2Real b77a438b。使用其他模型时,以其适配器说明和平台实际支持的契约为准。