ROBOMETER
ROBOMETER 是一个通用视频-语言机器人奖励模型。它根据一段轨迹视频和任务描述,预测逐帧的任务进度和逐帧的成功概率(均为密集输出)。
论文: ROBOMETER: Scaling General-Purpose Robotic Reward Models via Trajectory Comparisons 项目主页: robometer.github.io 原始代码: github.com/robometer/robometer 检查点: lerobot/Robometer-4B
概述
ROBOMETER 基于 Qwen/Qwen3-VL-4B-Instruct 构建,并在其基础上添加了三个轻量级预测头:
- 进度头(Progress head):预测每帧的任务进度,取值范围为
[0, 1]。 - 成功头(Success head):预测每帧的任务成功概率。
- 偏好头(Preference head):在训练阶段,预测两条轨迹中哪一条更好地完成了任务。
论文使用以下复合目标函数训练 ROBOMETER:
L = L_pref + L_prog + L_succ
LeRobot 集成目前仅支持推理。为确保已发布的 Robometer-4B 检查点能够直接加载而无需重映射权重,偏好头被保留在模型中,但 compute_reward() 仅查询进度头或成功头。
LeRobot 集成功能范围
- 通过 LeRobot 标准配置项
reward_model.type=robometer使用 ROBOMETER。 - 通过
RobometerEncoderProcessorStep完成 Qwen3-VL 图像和文本预处理。 - 通过
PreTrainedRewardModel使用 LeRobot 奖励模型的保存/加载 API。 - 在内部进行密集的逐帧进度和成功概率预测。
- 通过
compute_reward()返回标量奖励,供 LeRobot 下游奖励模型使用。
本页面聚焦于将已发布的 ROBOMETER 检查点用作零样本奖励模型。从头训练 ROBOMETER 不在当前 LeRobot 集成的范围内。
安装要求
- 按照安装指南安装 LeRobot。
- 安装 ROBOMETER 依赖项:
pip install -e ".[robometer]"
如果从源码目录直接使用 uv:
uv sync --extra robometer
ROBOMETER 使用 Qwen3-VL-4B 骨干网络,因此强烈建议使用 GPU 进行推理。
模型输入与输出
ROBOMETER 的输入要求:
- 轨迹视频或帧序列。
- 自然语言任务描述。
在 LeRobot 数据集中,预处理器读取以下配置字段:
| 配置字段 | 默认值 | 含义 |
|---|---|---|
reward_model.image_key |
observation.images.top |
ROBOMETER 使用的相机/视频观测 |
reward_model.task_key |
task |
互补数据中存储任务字符串的键名 |
reward_model.max_frames |
8 |
传入 ROBOMETER 的最大帧数 |
模型在内部预测逐帧进度和成功概率。LeRobot 奖励 API 为每个样本返回一个标量:
reward_output="progress"(默认):返回最后一帧的进度值,截断至[0, 1]。reward_output="success":若最后一帧的成功概率超过success_threshold,返回1.0,否则返回0.0。
使用方法
直接加载奖励模型
from lerobot.rewards.robometer import RobometerConfig, RobometerRewardModel
cfg = RobometerConfig(
pretrained_path="lerobot/Robometer-4B",
device="cuda",
reward_output="progress",
)
reward_model = RobometerRewardModel.from_pretrained(cfg.pretrained_path, config=cfg)
编码帧并计算奖励
若直接通过 Python 调用,请以形状为 (T, H, W, C) 的 uint8 数组提供帧数据,并传入任务字符串:
from lerobot.rewards.robometer.modeling_robometer import ROBOMETER_FEATURE_PREFIX
from lerobot.rewards.robometer.processor_robometer import RobometerEncoderProcessorStep
# frames: np.ndarray, shape (T, H, W, C), dtype uint8
# task: str
encoder = RobometerEncoderProcessorStep(
base_model_id=cfg.base_model_id,
use_multi_image=cfg.use_multi_image,
use_per_frame_progress_token=cfg.use_per_frame_progress_token,
max_frames=cfg.max_frames,
)
encoded = encoder.encode_samples([(frames, task)])
batch = {f"{ROBOMETER_FEATURE_PREFIX}{key}": value for key, value in encoded.items()}
reward = reward_model.compute_reward(batch)
reward 是形状为 (batch_size,) 的张量。
使用奖励工厂
也可以通过奖励工厂实例化 ROBOMETER:
from lerobot.rewards import make_reward_model, make_reward_model_config, make_reward_pre_post_processors
cfg = make_reward_model_config(
"robometer",
pretrained_path="lerobot/Robometer-4B",
device="cuda",
image_key="observation.images.top",
)
reward_model = make_reward_model(cfg)
preprocessor, postprocessor = make_reward_pre_post_processors(cfg)
预处理器将 Qwen-VL 张量写入 observation.robometer.* 命名空间,compute_reward() 读取这些已编码的张量。
配置说明
骨干网络与词表
已发布的检查点使用 Qwen3-VL-4B 骨干网络。ROBOMETER 按固定顺序向分词器添加五个特殊令牌:
<|split_token|>
<|reward_token|>
<|pref_token|>
<|sim_token|>
<|prog_token|>
<|prog_token|> 在每帧之后插入,其隐状态位置用于逐帧进度和成功预测。<|split_token|> 和 <|pref_token|> 用于论文中的成对轨迹偏好目标函数。<|reward_token|> 和 <|sim_token|> 保留以确保检查点兼容性。
LeRobot 配置中存储了一份序列化的 vlm_config,其中包含调整后的词表大小,使模型可以从 config.json 重新加载,而无需先下载基础 Qwen 权重。对于 Qwen/Qwen3-VL-4B-Instruct,分词器词表长度为 151669,添加五个 ROBOMETER 令牌后,检查点词表大小为 151674。
进度预测
在已发布的检查点中,进度是离散化的。进度头在 [0, 1] 区间内均匀分布的 progress_discrete_bins=10 个桶中心上输出 logits。LeRobot 通过对 logits 应用 softmax 后对桶中心取期望,将离散结果转换为连续值,与上游 ROBOMETER 实现保持一致。
成功预测
成功头对每帧输出原始 logits。LeRobot 使用 sigmoid 将其转换为概率。当 reward_output="success" 时,compute_reward() 使用 success_threshold 对最后一帧的成功概率进行阈值判断。
局限性
- 当前 LeRobot 集成仅支持推理,不实现 ROBOMETER 的训练或偏好对训练。
- 尽管 ROBOMETER 在内部预测逐帧进度和成功概率,
compute_reward()仍为每个样本返回一个标量,以符合 LeRobot 奖励模型 API 的接口规范。 - ROBOMETER 基于视频-语言输入,不使用接触力或物体位姿等机器人特权状态信息。
参考资料
引用
@inproceedings{liang2026robometer,
title = {Robometer: Scaling General-Purpose Robotic Reward Models via Trajectory Comparisons},
author={Anthony Liang and Yigit Korkmaz and Jiahui Zhang and Minyoung Hwang and Abrar Anwar and Sidhant Kaushik and Aditya Shah and Alex S. Huang and Luke Zettlemoyer and Dieter Fox and Yu Xiang and Anqi Li and Andreea Bobu and Abhishek Gupta and Stephen Tu and Erdem Biyik and Jesse Zhang},
year={2026},
booktitle={Robotics: Science and Systems 2026},
}
许可证
本 LeRobot 集成遵循 LeRobot 所采用的 Apache 2.0 许可证。原始实现和已发布检查点的许可证,请参阅上游 ROBOMETER 代码库和模型页面。