pusht-manipulation
收藏资源简介:
该数据集包含100个在真实Franka Emika Panda机器人上执行Push-T任务的人类遥操作演示。任务内容是将一个橙色T形块推过桌面,直至其与表面标记的粉色T形轮廓对齐。机器人的夹爪夹持一支笔作为单点推杆,夹爪保持闭合状态。数据集以10 Hz的频率录制,总共包含32,131帧,约54分钟的演示。每个episode存储为一个独立的HDF5文件,文件组织方式为按会话文件夹分组(如0826_1637/),每个会话内episode编号从0开始。数据包含观测和动作信息:观测包括场景摄像头图像(256×256 RGB)、腕部摄像头图像(256×256 RGB)、夹爪宽度(米)、末端执行器位置(米,机器人基坐标系)、末端执行器四元数(xyzw顺序,标量在最后)、关节位置(7维);动作为7维向量 [dx, dy, dz, drx, dry, drz, gripper],其中dx, dy, dz是每100 ms步骤的平移增量(米),但drx, dry, drz恒为零,gripper恒为+1(闭合),因此仅前三个通道携带有效信息。99个episode的起始姿态几乎一致,仅有1个episode经过裁剪处理以减小起始偏移。该数据集适用于机器人模仿学习、操作策略训练等任务,特别是需要处理恒定动作通道的归一化场景。
This dataset contains 100 human teleoperation demonstrations of the Push-T task performed on a real Franka Emika Panda robot. The task is to push an orange T-shaped block across the table until it aligns with a pink T-shaped contour marked on the surface. The robots gripper holds a pen as a single-point pusher, and the gripper remains closed. The dataset is recorded at 10 Hz, totaling 32,131 frames (approximately 54 minutes of demonstration). Each episode is stored as an independent HDF5 file, organized by session folders (e.g., 0826_1637/), with episode numbers starting from 0 within each session. The data includes observations and actions: observations consist of scene camera images (256×256 RGB), wrist camera images (256×256 RGB), gripper width (meters), end-effector position (meters in robot base frame), end-effector quaternion (xyzw order, scalar last), and joint positions (7-dimensional); actions are 7-dimensional vectors [dx, dy, dz, drx, dry, drz, gripper], where dx, dy, dz are translation increments per 100 ms step (meters), but drx, dry, drz are always zero, and gripper is always +1 (closed), so only the first three channels carry valid information. The starting poses of 99 episodes are almost identical, with only one episode cropped to reduce initial offset. This dataset is suitable for robot imitation learning, manipulation policy training, and other tasks, especially scenarios requiring normalization of constant action channels.
数据集概述
该数据集为 Push-T 真实机器人操作任务数据集,包含 100 条人类远程操作演示,由 Franka Emika Panda 机械臂执行任务:将橙色 T 形木块推至桌面上粉色 T 形轮廓处对齐。机械爪夹持一支记号笔作为单点推杆,是该任务在真实硬件上的实现。
基本统计信息
| 会话文件夹 | 演示条数 | 帧数 | 采集日期 |
|---|---|---|---|
0826_1637/ |
50 | 19,392 | 2026-08-26 |
0827_1114/ |
2 | 585 | 2026-08-27 |
0827_1118/ |
33 | 8,837 | 2026-08-27 |
0827_1144/ |
15 | 3,317 | 2026-08-27 |
| 总计 | 100 | 32,131 | — |
- 数据以 10 Hz 频率记录,总时长约 54 分钟。
- 每条演示的长度为 100–767 步(10–77 秒),中位数为 292 步(29 秒)。
- 文件结构为
<session>/episode_<n>.hdf5,会话名称按采集时间排序(如0826_1637表示 8 月 26 日 16:37),episode 编号在会话内重新开始,并非全局唯一。
数据格式
每个 episode 存储为一个 HDF5 文件,记录于 10 Hz,使用 polymetis 笛卡尔阻抗控制和两个 RealSense 摄像头(场景和腕部)采集:
obs/agentview_image:场景相机 RGB 图像,形状(T, 256, 256, 3),uint8。obs/wrist_image:腕部相机 RGB 图像,形状(T, 256, 256, 3),uint8。obs/gripper_width:夹爪宽度,形状(T, 1),float32,单位米。obs/robot0_eef_pos:末端执行器位置,形状(T, 3),float32,单位米(机器人基座坐标系)。obs/robot0_eef_quat:末端执行器姿态四元数,形状(T, 4),float32,xyzw 顺序(标量在最后)。obs/robot0_joint_pos:关节位置,形状(T, 7),float32。actions:动作,形状(T, 7),float32。
动作定义:[dx, dy, dz, drx, dry, drz, gripper]
dx, dy, dz:末端平移增量,单位米/100 毫秒步长,范围 ±0.018 米。drx, dry, drz:旋转增量。gripper:夹爪开闭命令。
重要提示:7 个动作通道中有 4 个是常数。
drx, dry, drz在所有帧中恒为零(仅控制平移)。gripper在所有 32,131 帧中恒为 +1(夹爪闭合),对应obs/gripper_width恒为 0.0076 米。- 仅
dx, dy, dz承载有效信息。在使用未加保护的归一化器(如(x-min)/(max-min))时可能产生除零错误导致 NaN,建议使用带保护分支的归一化器,或仅归一化前三个通道,或使用 3 维动作空间进行训练。
观测信息
- 两个相机图像均为 256×256 RGB,未经任何后处理(无旋转、翻转或裁剪)。
obs[t]对应操作者在选择actions[t]时看到的观测。- 末端执行器范围为 x ∈ [0.395, 0.606] 米,y ∈ [−0.130, 0.312] 米,z ∈ [0.221, 0.389] 米(机器人基座坐标系)。任务并非严格平面运动:z 方向 168 毫米的变化是操作者在两次推动之间抬起笔以重新定位,避免拖动木块。
起始位姿说明
- 99 条演示从几乎相同的位姿开始:中位起始位姿与全集中位起始位姿偏差 4.8 毫米,p90 为 6.3 毫米,最大偏差 7.1 毫米。
- 例外:
0827_1144/episode_13.hdf5。该条演示在录制开始时手臂停在其他位置,操作者花费前 3 秒将手臂移至常规起始区域后才开始推动。这些前导帧(30 帧)已被从发布的文件中裁剪,因此该文件包含 263 帧而非原始 293 帧(文件属性attrs["trimmed_lead_in_frames"] = 30)。裁剪后其起始位姿偏差从 292 毫米降至 26 毫米(主要为 y 轴 +287 毫米的偏差被消除),但仍比其他 99 条演示的最大偏差(7.1 毫米)大约 3.7 倍,若需严格同质起始分布可考虑剔除该演示。
已移除内容
原始记录还包含 480×640 RGB、480×640 及 256×256 深度图、腕部红外立体对等数据。这些未被包含在数据集中,因为它们约占原始字节的 88%,且在训练流程中完全不被使用。上文列出的通道是训练策略所消费的完整数据集合。
数据加载示例
python import h5py, glob
for path in sorted(glob.glob("/episode_.hdf5")): with h5py.File(path, "r") as f: rgb = f["obs/agentview_image"][:] # (T, 256, 256, 3) uint8 wrist = f["obs/wrist_image"][:] state = f["obs/robot0_eef_pos"][:] # (T, 3) actions = f["actions"][:, :3] # only xyz carries signal
采集说明
数据使用 github.com/sleepmastergx/franka-robot-tools(recorder/collect.py)记录,通过 3Dconnexion SpaceMouse 进行远程操作。每条演示均从相同的保存主位姿开始,因此会话内的起始帧保持一致。




