SARM-robosuite-can-mh-stages
收藏数据集概述
SARM Robosuite PickPlaceCan (Multi-Human) — Stage-Annotated Dataset 是一个为机器人操作任务设计的分阶段标注数据集,专门用于训练 SARM(Stage-Aware Reward Models)。该数据集基于 robosuite 环境中的 PickPlaceCan 任务,并由多人类演示生成。
基本信息
| 属性 | 值 |
|---|---|
| 任务 | 抓取并放置易拉罐(Pick and Place Can) |
| 机器人 | Panda(Franka Emika) |
| 环境 | robosuite PickPlaceCan |
| 数据来源 | robosuite 多人类(Multi-Human)演示 |
| 总片段数 | 300 |
| 总帧数 | 62,756 |
| 帧率 | 20 FPS |
| 摄像头 | agentview(第三人称)、robot0_eye_in_hand(腕部) |
| 图像分辨率 | 256 x 256 |
| 视频编码 | AV1(libsvtav1) |
| LeRobot 版本 | v2.1 |
数据特征
| 特征 | 类型 | 形状 | 描述 |
|---|---|---|---|
state |
float32 | (9,) | 末端执行器位置 (3) + 四元数 (4) + 夹爪位置 (2) |
actions |
float32 | (7,) | 末端执行器增量动作(6 自由度 + 夹爪) |
reward |
float32 | (1,) | 连续进度标签(详见奖励编码) |
agentview-images-rgb |
视频 | (256, 256, 3) | 第三人称摄像头视角 |
robot0-eye-in-hand-images-rgb |
视频 | (256, 256, 3) | 腕部摄像头视角 |
阶段标注(共 4 个阶段)
每个阶段对应一个任务提示,帧被分配到其所属的阶段(不包含边界/过渡帧):
| 阶段编号 | 提示 | 描述 |
|---|---|---|
| 0 | “机器人接近易拉罐” | 从片段开始到夹爪接触易拉罐 |
| 1 | “机器人抓取并举起易拉罐” | 从接触开始到将易拉罐抬离桌面 |
| 2 | “机器人将易拉罐移向放置箱” | 运输抓取的易拉罐至放置箱 |
| 3 | “机器人将易拉罐放入放置箱” | 降低/释放易拉罐至箱中,直到完成 |
奖励编码
reward 字段编码了一个用于 SARM 训练的连续进度标签:
reward = 阶段编号 + (帧在阶段中的位置 / 阶段总帧数)
例如,如果阶段 0 有 60 帧:
- 第 0 帧:reward = 0.0000
- 第 30 帧:reward = 0.5000
- 第 59 帧:reward = 0.9833
SARM 解码方式:
floor(reward)= 阶段类别(0, 1, 2, 或 3)frac(reward)= 阶段内进度(0.0 到约 1.0)
奖励范围:[0.0, 4.0) —— 永远不会达到 4.0。
在 SARM 配置中应使用 num_classes_sparse: 4。
阶段检测方法
阶段通过直接读取 robosuite 仿真中的 MuJoCo 状态 来检测:
- 末端执行器位置:来自
sim.data.site_xpos[eef_site_id] - 易拉罐位置:来自
sim.data.body_xpos[can_body_id] - 夹爪接触:来自
sim.data.contact的几何体对匹配 - 放置箱边界:来自静态放置几何体
HDF5 文件仅存储每帧的整数阶段标签。连续奖励在 LeRobot 转换期间计算。
在 SARM / LeRobot 中使用
python from lerobot.common.datasets.rm_lerobot_dataset import FrameGapLeRobotDataset
dataset = FrameGapLeRobotDataset( repo_id="poolvarine/SARM-robosuite-can-mh-stages", episodes=list(range(300)), n_obs_steps=4, frame_gap=1, max_rewind_steps=2, image_names=["agentview-images-rgb"], task_name="pick and place can", )
sample = dataset[0]
sample["state"] -> (n_obs_steps+max_rewind_steps+1, 9)
sample["targets"] -> 用于奖励模型训练的连续进度标签
sample["agentview-images-rgb"] -> 解码后的视频帧
SARM 配置(PickPlaceCan)
yaml general: camera_names: ["agentview-images-rgb"] state_dim: 9 model: num_classes_sparse: 4 annotation_list: ["approaching", "grasping_lifting", "transporting", "placing"]




