NoahWeiss/farm_uf850
收藏资源简介:
FARM UF850数据集是一个LeRobot格式的远程操作单臂机械臂操作数据集,专门针对UFactory UF850机械臂(6自由度,带平行夹爪)收集。数据通过Meta Quest作为远程控制器进行采集,包含66个操作片段,覆盖17个不同的自然语言任务,主要涉及立方体操作(例如拾取魔方或立方体并放置到盒子上),并包括遮挡和故障恢复场景。数据集总帧数为25,803帧,持续时间为14.3分钟,中位片段长度为12秒,帧率为30 FPS。机器人状态和动作空间为7维浮点数,包括6个关节角度和夹爪状态(0表示打开,1表示关闭)。数据收集作为CS153最终项目的一部分,使用FARM边缘代理完成,硬件配置包括UF850机械臂、两个Intel RealSense D435摄像头(基座和腕部),以及Mac mini主机。数据集格式为LeRobot v2.0,支持从HuggingFace Hub流式加载,适用于机器人学习和操作任务研究。
许可证:Apache-2.0 任务类别: - 机器人学 标签: - LeRobot - 机器人学 - 操作操控 - UFactory - UF850 - 遥操作 - 鲁比克魔方 样本量范围:1万至10万条 # FARM UF850 — 基于UFactory UF850的拾取-放置任务数据集 本数据集为采用LeRobot格式 (LeRobot) 存储的遥操作单臂操控数据集,采集自**UFactory UF850**(带并联夹爪的6自由度机械臂),使用Meta Quest作为遥操作控制器。数据集包含66段轨迹,涵盖17种不同的自然语言指令任务,以鲁比克魔方操控为主(例如拾取魔方并放置于盒子上),包含遮挡场景与失败恢复场景。 本数据集作为CS153课程期末项目,由**FARM**边缘智能体([代码仓库](https://github.com/NoahWeiss123/CS153))采集完成。 ## 快速统计数据 | 指标 | 数值 | |---|---| | 轨迹段数 | 66 | | 总帧数 | 25,803 | | 总时长 | 14.3 分钟 | | 单段轨迹中位时长 | 12 秒 | | 帧率 | 30 | | 机器人平台 | UFactory UF850,6自由度机械臂+并联夹爪(7维状态/动作空间) | | 相机配置 | 2台英特尔实感(Intel RealSense)D435相机(基座+腕部),分辨率640×480,编码格式h264 | | 唯一任务数 | 17 | | 数据格式 | LeRobot v2.0 | ## 状态与动作空间 `observation.state`与`action`均为7维float32类型数据,各维度详情如下: | 索引 | 名称 | 单位 | 取值范围 | |----:|------|------|-------| | 0 | 关节1 | 弧度(rad) | ~[-0.94, 0.83] | | 1 | 关节2 | 弧度(rad) | ~[-1.45, -0.07] | | 2 | 关节3 | 弧度(rad) | ~[-1.88, -0.18] | | 3 | 关节4 | 弧度(rad) | ~[-2.71, 2.22] | | 4 | 关节5 | 弧度(rad) | ~[ 0.26, 1.82] | | 5 | 关节6 | 弧度(rad) | ~[-1.18, 0.78] | | 6 | 夹爪 | 0(张开)→ 1(闭合) | 实测范围0.0–0.39 | 注:`action[t] = observation.state[t+1]`;最后一帧的动作会重复最终状态,以保证数据块对齐。 ## 任务列表 所有任务描述均为祈使句、小写形式,无末尾标点。 | 索引 | 轨迹段数 | 任务指令 | |----:|-----------:|------| | 0 | 4 | 从黄色面拾取鲁比克魔方并放置于盒子上 | | 1 | 3 | 从白色面拾取鲁比克魔方并放置于盒子上 | | 2 | 1 | 从黄色面拾取鲁比克魔方后掉落,随后重新拾取并放置于盒子上 | | 3 | 1 | 从右侧拾取鲁比克魔方并放置于盒子上 | | 4 | 30 | 拾取魔方并放置于盒子上 | | 5 | 1 | 观察到盒子后方的魔方,将盒子侧向推移,随后拾取魔方并放置于盒子上 | | 6 | 1 | 从右侧拾取鲁比克魔方并放置于盒子上 | | 7 | 2 | 拾取魔方并放置于盒子上时魔方掉落,随后重新拾取并放置于盒子上 | | 8 | 5 | 观察到盒子后方的魔方,拿起盒子移至一旁,随后拾取魔方并放置于盒子上 | | 9 | 1 | 拾取魔方并放置于盒子上,移开时将其碰落,随后重新拾取并放置于盒子上 | |10 |3 | 拾取魔方,放置到盒子上时失手掉落,随后重新拾取并放置于盒子上 | |11 |1 | 拾取魔方并误放导致其掉落,随后重新拾取并正确放置于盒子上 | |12 |1 | 从盒子后方拾取魔方并放置于盒子上 | |13 |1 | 拾取魔方时意外掉落,随后重新拾取并放置于盒子上 | |14 |5 | 拿起盒子,未发现下方的魔方,随后将盒子放回原位 | |15 |3 | 拿起盒子并放回原位 | |16 |3 | 拿起盒子,发现下方的魔方,将盒子移至一旁,拾取魔方后放置于盒子上 | ## 文件结构 farm_uf850/ ├── meta/ │ ├── info.json # LeRobot v2.0 清单文件 │ ├── episodes.jsonl # 每条轨迹对应一行,格式为 {episode_index, tasks, length} │ ├── tasks.jsonl # 每个任务对应一行,格式为 {task_index, task} │ └── stats.json # 各特征的均值/标准差/最小值/最大值 ├── data/chunk-000/ │ └── episode_NNNNNN.parquet ×66 └── videos/chunk-000/ ├── observation.images.base/ # h264 编码MP4文件,共66个 └── observation.images.wrist/ # h264 编码MP4文件,共66个 ## 使用示例 python from lerobot.common.datasets.lerobot_dataset import LeRobotDataset ds = LeRobotDataset("YOUR_USERNAME/farm_uf850") # 从Hub流式加载数据集 print(ds.num_episodes, ds.num_frames, ds.fps) # 输出:66, 25803, 30 sample = ds[0] sample["observation.state"].shape # 输出:torch.Size([7]) sample["observation.images.base"].shape # 输出:torch.Size([3, 480, 640]) sample["task"] # 自然语言任务指令字符串 ## 采集说明 * 硬件配置:UF850机械臂、2台D435相机(基座+腕部)、Meta Quest 2控制器、Mac mini主机。 * 遥操作流程:VR控制器位姿 → Quest发布ROS-TCP消息 → 笔记本桥接 → 逆运动学求解 → UF850关节指令。关节数据流采用单欧元滤波器(One-Euro filter)进行平滑处理。 * 数据以30 Hz帧率采集,控制器输入支持运动缩放(`motion_scale`可在0.2×–4×范围内按会话配置)。 * 已剔除相机子进程返回重复(缓存)JPEG的帧;本次发布未包含相机帧率修复前采集的41段轨迹。 * 存储的数据为**平滑后的物理机器人运动数据**,而非未平滑的数字臂目标位姿(从UF850 SDK以250 Hz读取编码器数据,以30 Hz帧率快照生成帧数据)。




