ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

开源 VLA 数据集全景指南:从 LIBERO、RoboTwin 到智元 AgiBot World

开源 VLA 数据集全景指南:从 LIBERO、RoboTwin 到智元 AgiBot World 0. 简介开源VLAVision-Language-Action数据集面向的是同一类机器人学习问题却分成仿真评测、真机示范和跨本体聚合三条路线。LIBERO 强调 130 个语言条件任务上的迁移RoboTwin 2.0 提供双臂仿真与强域随机化智元 AgiBot World Beta 则扩展到 1,003,672 条真机轨迹。三者的体量、动作空间和文件格式并不兼容不能只看“轨迹数”决定能否训练。下面从官方下载、解压结构、字段语义、许可边界和 LeRobot 转换五个层面给出一套通用的数据准备路线。很多数据集列表把轨迹数排成一列就结束了但 VLA 训练真正关心的是一条轨迹有没有语言指令视觉是否覆盖头部和腕部视角动作到底是关节位置、末端位姿还是相对位移控制频率是否一致训练集与评测环境能否闭环。数据集规模只是第一层指标动作语义、时间同步和许可条件才决定它能否进入训练流水线。本文因此把每个数据集都放回它原本解决的问题而不是强行排出一个脱离任务目标的总榜。1. 先把 VLA 数据集分成三类1.1 Benchmark、训练语料与聚合库的职责不同LIBERO、RoboTwin 和 CALVIN 首先是可复现实验环境与评测协议下载示范数据只是为了训练策略并在同一套模拟器中回放DROID、BridgeData V2、RoboSet、RH20T 和 AgiBot World 主要是真机轨迹语料重点是场景、技能和传感器覆盖Open X-Embodiment 则把多个来源包装成 RLDS解决跨数据集读取问题。Benchmark 回答“模型能否完成任务”训练语料回答“模型见过多少真实变化”聚合库回答“异构数据如何被同一个输入管线消费”。三类资源可以组合但不能互相替代。类别代表数据集主要用途常见原始格式是否自带闭环评测仿真 benchmarkLIBERO、RoboTwin 2.0、CALVIN模仿学习、语言跟随、长程与泛化评测HDF5、NPZ、图像或视频是真机训练语料DROID、BridgeData V2、RoboSet、RH20T、AgiBot World预训练、共训练、跨场景泛化RLDS、HDF5、NPY、MP4、JPEG通常否跨本体聚合库Open X-Embodiment多来源统一读取、RT-X/Octo 类训练RLDS/TFDS各子集不同1.2 一张图看清数据集版图下面的概念图用于表达“资源职责”而非比较优劣左侧三项是带环境的仿真 benchmark中间五项是真机数据语料右侧 Open X-Embodiment 是格式与数据来源的聚合层。直观理解是同一套 VLA 工程往往需要左侧做可重复评测、中间做真实世界预训练再通过右侧或 LeRobot 这样的统一格式降低 loader 复杂度。直觉理解把 VLA 数据工程想成驾校训练。仿真 benchmark 像标准化考试场地保证每个人面对同样的路线真机语料像驾驶里程负责覆盖雨天、夜间和不同车辆RLDS 或 LeRobot 像统一的档案表让教练能按同一种方式读取记录。只积累里程而没有考试无法稳定比较模型只刷考场而没有真实变化也很难部署。2. 模型常常需要的目标格式2.1 LeRobot 目录不是“有 data、meta、videos 就行”常用的VLA基本都是使用 LeRobot wrapper 读取数据根目录。目标目录除了存在data/、meta/和videos/还必须让meta/info.json中的 features、fps、路径模板与磁盘文件一致每个 episode 的 Parquet 行数、视频帧时间戳和episodes.jsonl也要互相对应。LeRobot 是一份可执行的数据契约而不是三个同名文件夹。当前 wrapper 的文档直接给出了下面这棵标准树视频键还会成为中间一级目录名。# LeRobot 官方lerobot/src/lerobot/datasets/lerobot_dataset.py dataset_root/ ├── data/chunk-000/episode_000000.parquet ├── meta/ │ ├── episodes.jsonl │ ├── info.json │ ├── stats.json │ └── tasks.jsonl └── videos/chunk-000/ ├── observation.images.cam_high/episode_000000.mp4 ├── observation.images.cam_left_wrist/episode_000000.mp4 └── observation.images.cam_right_wrist/episode_000000.mp4进一步看仓库把这些位置固化成常量而不是在训练时猜目录。转换器应复用相同路径模板生成元数据和媒体文件如果自行把视频放成videos/episode_0/cam.mp4哪怕内容正确loader 也不会沿错误模板自动搜索。更稳妥的做法是从info.json读取 chunk 和 episode 模板再据此写文件并在转换结束后逐条验证元数据引用的相对路径确实存在避免训练启动后才发现批量视频无法定位。# lerobot/src/lerobot/datasets/utils.pyINFO_PATHmeta/info.jsonEPISODES_PATHmeta/episodes.jsonlSTATS_PATHmeta/stats.jsonTASKS_PATHmeta/tasks.jsonlDEFAULT_VIDEO_PATH(videos/chunk-{episode_chunk:03d}/{video_key}/episode_{episode_index:06d}.mp4)DEFAULT_PARQUET_PATH(data/chunk-{episode_chunk:03d}/episode_{episode_index:06d}.parquet)2.2default是配置别名不是 Parquet 字段后缀很多训练框架的数据配置会把 state 和 action 的 key 写成default。这里的关键是wrapper 通常会把图像键拼成observation.images.key但会把 state 的default映射到裸键observation.state把 action 的default映射到裸键action。因此目标 Parquet 应包含observation.state和action而不是observation.state.default与action.default。这也是从其他数据集迁移到新框架时最容易出现的“目录都对但 KeyError”来源。# 训练框架中的 LeRobot 数据集封装示例formetainself.state_meta:keymeta[key]meta[lerobot_key](fobservation.state.{key}ifkey!defaultelseobservation.state)formetainself.action_meta:keymeta[key]meta[lerobot_key](faction.{key}ifkey!defaultelseaction)典型的 RoboTwin 数据配置要求三个相机、14 维状态、14 维动作和文本任务。只有源数据本来就是 ALOHA 双臂 14 维关节向量时才能保持这个 shapeLIBERO 的 7 维末端动作、DROID 的 Franka 动作或 AgiBot 的全身状态都需要重新定义shape_meta或经过明确的投影。不要用补零把不同本体伪装成 14 维同一种动作。补零可以统一张量形状却会抹掉关节、末端和底盘控制之间的语义差异。# 数据配置示例robotwin.yamlshape_meta:images:-{key:cam_high,raw_shape:[3,480,640],shape:[3,240,320]}-{key:cam_left_wrist,raw_shape:[3,480,640],shape:[3,240,320]}-{key:cam_right_wrist,raw_shape:[3,480,640],shape:[3,240,320]}state:-{key:default,raw_shape:14,shape:14}action:-{key:default,raw_shape:14,shape:14}2.3dataset_stats.json是训练归一化状态不是数据集元数据的替代品第一次训练可以把pretrained_norm_stats设为null训练集会计算统计量并写入当前 run 的dataset_stats.json验证集则复用训练统计量不能在验证数据上重新估计。后续训练把该文件路径填回 train 与 val可减少启动时间并保证动作尺度一致。换句话说meta/stats.json属于 LeRobot 数据目录的统计信息而 run 目录中的dataset_stats.json是当前 processor 使用并留档的归一化状态两者位置和消费者并不完全相同。# 训练框架中的视频数据集封装ifnotpretrained_norm_stats:dataset_statsself.lerobot_dataset.get_dataset_stats(processor)save_dataset_stats_to_json(dataset_stats,os.path.join(work_dir,dataset_stats.json))else:dataset_statsload_dataset_stats_from_json(pretrained_norm_stats)processor.set_normalizer_from_stats(dataset_stats)3. LIBERO适合先打通 VLA 训练闭环3.1 官方数据与社区已转换版本LIBERO 官方提供130 个任务分为 LIBERO-Spatial、LIBERO-Object、LIBERO-Goal 和 LIBERO-100其中 LIBERO-100 又分 LIBERO-90 与 LIBERO-10用来研究预训练后的持续学习。官方示范数据采用 CC BY 4.0代码采用 MIT。原始环境通常使用 Franka 和 7 维末端笛卡尔动作适合验证语言条件策略与长程迁移但不适合不改配置就塞入 RoboTwin 的 14 维双臂接口。对刚搭好训练环境的用户来说LIBERO 的价值是数据小、评测闭环完整、问题定位快。社区常见的 LeRobot 转换结果中libero_spatial_no_noops_lerobot的info.json显示 434 个 episode、53,229 帧、20 fps、两路 512×512 视频、8 维 state 和 7 维 action。这些数字只代表某个预处理版本不等于 LIBERO 官方全部原始示范规模。目录中的meta/tasks.jsonl保存 10 条语言任务Parquet 与 AV1 编码 MP4 已按 episode 分片可直接作为理解 LeRobot 结构的最小样板。data/libero_mujoco3.3.2/ ├── libero_10_no_noops_lerobot/ ├── libero_goal_no_noops_lerobot/ ├── libero_object_no_noops_lerobot/ └── libero_spatial_no_noops_lerobot/ ├── data/chunk-000/episode_000000.parquet ├── meta/{info.json,tasks.jsonl,episodes.jsonl,episodes_stats.jsonl} └── videos/chunk-000/ ├── observation.images.image/ └── observation.images.wrist_image/3.2 官方下载命令与使用建议LIBERO 官方仓库已经把 Hugging Face 下载封装进脚本优先使用--use-huggingface因为 README 明确提示原始链接可能过期。若只想先跑通一套任务可下载libero_spatial或libero_10对应数据如果目标是复现完整 lifelong 设置再下载全部套件。这里值得注意官方脚本得到的是 LIBERO 自己使用的数据格式基于 LeRobot 的训练框架仍需要 LeRobot 版本或转换脚本不能把下载目录直接填入dataset_dirs就期待 wrapper 自动识别。gitclone https://github.com/Lifelong-Robot-Learning/LIBERO.gitcdLIBERO pipinstall-e.# 下载全部官方示范python benchmark_scripts/download_libero_datasets.py --use-huggingface# 只下载一个套件python benchmark_scripts/download_libero_datasets.py\--datasetslibero_spatial\--use-huggingface如果目标是快速上手训练优先使用已经转好的*_lerobot目录并从meta/info.json读取真实键名后单独建立 LIBERO 配置。官方 AgiBot World 仓库也提供了evaluate/libero/convert_libero_data_to_lerobot.py其输入是 OpenVLA 发布的modified_libero_rlds输出是 LeRobot这条路线适合 GO-1 生态但仍要检查生成版本是否与训练框架使用的 LeRobot 版本如 v2.1兼容。4. RoboTwin 2.0双臂仿真、数据生成与强域随机化4.1 官方预采集数据与当前训练包不是同一个切面RoboTwin 2.0 面向双臂操作官方 README 展示 50 个任务并在 Hugging Face 的TianxingChen/RoboTwin2.0仓库提供超过 100,000 条预采集轨迹。官方同时建议用户按自己的本体、相机与域随机化设置重新采集因为任务配置高度可变。社区常见的一个 LeRobot 预处理包则包含 27,500 个 episode、6,075,103 帧、82,500 个视频和 50 fps三路相机分别是头部、左腕和右腕state/action 都是 ALOHA 风格 14 维双臂关节向量。官方总数据规模与某个训练子集必须分开引用。这类预处理包的meta/info.json有时会看到一个不寻常字段total_tasks为 921,032而 episode 只有 27,500。结合tasks.jsonl中大量同义指令可以判断这个预处理包把语言改写作为 task 索引扩展而不是把 92 万理解成 92 万个物理任务。这里的关键是训练时task是文本条件评估时仍应按 RoboTwin 的物理任务、随机种子和域随机化设置划分不能让语言改写数量污染任务泛化结论。4.2 下载官方原始数据与社区预处理包官方 Hugging Face 仓库以任务名作为dataset/下一级目录。第一次不建议把整个仓库拉满可以用--include只取一个任务检查其 episode、HDF5 和视频结构后再扩展。试下载阶段还应随机打开一条轨迹核对相机数量、控制频率、关节顺序、夹爪取值范围和语言任务名这些信息会直接决定转换映射。下列命令使用 Hugging Face 官方 CLI 语法仓库标识来自 RoboTwin README具体 task 配置目录以下载当天的数据树为准。pipinstall-Uhuggingface_hub[cli]mkdir-pdata/robotwin2_raw# 先下载一个任务避免直接拉取全量huggingface-cli download TianxingChen/RoboTwin2.0\--repo-type dataset\--local-dir data/robotwin2_raw\--includedataset/beat_block_hammer/**社区还提供一个预转换压缩包yuanty/robotwin2.0-fastwam。它不是 RoboTwin 官方原始目录而是针对特定训练框架键名整理的 LeRobot 包。下载后要确认真正的数据根是data/robotwin2.0/robotwin2.0不要把外层分片目录填进配置。判断根目录的标准是该层能同时看到data/、meta/和videos/并能直接读取meta/info.json。若分片未下全cat ... | tar会在中途报错或解出不完整数据因此解压后还要核对分片数量、归档退出码和元数据声明的 episode 总数。mkdir-pdata/robotwin2.0 huggingface-cli download yuanty/robotwin2.0-fastwam\--repo-type dataset\--local-dir data/robotwin2.0\--includerobotwin2.0.tar.gz.part-*catdata/robotwin2.0/robotwin2.0.tar.gz.part-*|\tar-xzf--Cdata/robotwin2.04.3 从 RoboTwin 原始 HDF5 转成 LeRobot 时要保留什么RoboTwin 采集代码先把每帧保存成 pkl再合并为episodeN.hdf5与 episode 视频。帧内字典包含observation、pointcloud、joint_action和endpose相机数据可含 RGB、深度、分割与标定双臂关节向量放在joint_action.vector。转换时至少要从连续帧提取三路 RGB、14 维状态与下一时刻动作并把任务说明映射到task_index。源 HDF5 中有更多模态时可以保留为附加 features但不能让可选深度或点云破坏基础 RGB 训练路径。# third_party/RoboTwin/envs/_base_task.pypkl_dic{observation:{},pointcloud:[],joint_action:{},endpose:{},}pkl_dic[joint_action][left_arm]left_jointstate[:-1]pkl_dic[joint_action][left_gripper]left_jointstate[-1]pkl_dic[joint_action][right_arm]right_jointstate[:-1]pkl_dic[joint_action][right_gripper]right_jointstate[-1]pkl_dic[joint_action][vector]np.array(left_jointstateright_jointstate)5. 智元 AgiBot World百万级真机数据要先解决访问与存储5.1 Beta、Alpha 和 sample 的规模差异AgiBot World 官方仓库列出的 Beta 版本包含1,003,672 条轨迹约 43.8 TBAlpha 是精选子集包含 92,214 条轨迹仓库说明约 8.5 TB。技术报告给出的最新统计口径是 1,001,552 条轨迹、2,976.4 小时、217 个具体任务、87 类技能和 106 个场景硬件包含双 7-DoF 手臂、移动底盘、可调腰部、夹爪或 6-DoF 灵巧手图像和本体状态以 30 Hz 采集。不同页面的版本时间和压缩口径并不完全一致下载预算应按数据卡当前文件列表计算而不是只抄论文中的一个 TB 数字。Hugging Face API 将 Alpha 标记为 gated 自动审批用户要填写姓名、机构、研究方向并接受社区许可后才能取文件。数据与代码采用CC BY-NC-SA 4.0这意味着署名、非商业和相同方式共享三个约束都会传递到数据使用与衍生成果。准备企业产品或商用模型时不能把“能下载”理解成“可商用”应由项目负责人或法务结合官方协议确认训练模型的使用范围。5.2 推荐先下 7 GB sample再决定是否拉 Alpha官方 Alpha 仓库根目录包含一个约 7.1 GB 的sample_dataset.tar这是最适合验证解析和转换脚本的入口。完成 Hugging Face 页面上的许可申请后先登录 CLI只下载 sample确认本地字段、磁盘吞吐和转换时间都能接受再按 task id 选择observations/、parameters/、proprio_stats/与task_info/。直接下载完整 Alpha 或 Beta 不只占用数 TB还会产生大量解压、重编码和 Parquet 写入临时空间。pipinstall-Uhuggingface_hub[cli]huggingface-cli login# 先下载官方 sample_dataset.tarhuggingface-cli download agibot-world/AgiBotWorld-Alpha\sample_dataset.tar\--repo-type dataset\--local-dir data/agibot_world_alpha_samplemkdir-pdata/agibot_world_alpha_sample/extractedtar-xfdata/agibot_world_alpha_sample/sample_dataset.tar\-Cdata/agibot_world_alpha_sample/extracted官方 GitHub 还给出 OpenDataLab 入口网络到 Hugging Face 较慢时可以用openxlabCLI。两条下载路径对应同一项目但账号授权、分片组织与断点续传行为不同不要混用两个平台下载出的半套目录后直接转换。这里值得注意官方 README 中的huggingface-cli download --resume-download仍可见而新版 huggingface_hub 已默认支持断点续传出现参数弃用提示时可以去掉该选项。pipinstallopenxlab openxlab dataset get --dataset-repo OpenDriveLab/AgiBot-World5.3 原始目录、转换脚本与 LeRobot 版本Alpha 数据卡公开树显示原始仓库按模态拆成observations/、parameters/、proprio_stats/和task_info/。observations/task_id/下面是按 episode id 范围切分的 tarparameters/和proprio_stats/也是大分片任务说明以task_info/task_id.json保存仓库还提供 gated 的scripts/convert_to_lerobot.py。AgiBot World 主仓库说明其 GO-1 工程建立在LeRobot dataset v2.1、commit 2b71789上多数基于 LeRobot 的训练框架方向一致但转换后仍需核对 feature names、视频路径与 state/action 维度。AgiBotWorld-Alpha/ ├── observations/ │ └── 390/ │ ├── 648634-654682.tar │ └── ... ├── parameters/ │ ├── 648533-663816.tar │ └── ... ├── proprio_stats/648533-923022.tar ├── task_info/task_390.json ├── scripts/convert_to_lerobot.py └── sample_dataset.tar换句话说AgiBot 原始数据不是开箱即用的data/meta/videos。官方主仓库明确写着需要通过any4lerobot或数据卡脚本转换。典型的 RoboTwin 数据配置只接受三路 RGB 与 14 维双臂状态动作而 AgiBot 还包含底盘、腰部、灵巧手、深度、标定和子任务注释一个负责任的转换器应先选定本体和控制子空间再写新的shape_meta不能为了兼容旧配置丢掉动作语义却不留 manifest。6. CALVIN 与 Open X-Embodiment长程评测和跨本体聚合6.1 CALVIN 适合语言条件长程任务CALVIN 是语言条件长程操作 benchmark静态 RGB 为 200×200×3、夹爪 RGB 为 84×84×3还可提供深度、触觉和本体状态控制频率为 30 Hz动作可选 7 维绝对末端位姿、7 维相对末端位移或 8 维关节加夹爪。官方脚本支持 D、ABC、ABCD 和 1.3 GB 的 debug 包。对 VLA 工程而言D split 常用于标准评测debug 包适合先验证依赖和数据读取原始 NPZ 的 episode 索引和语言标注要在转换时展开成逐帧 Parquet。gitclone --recurse-submodules https://github.com/mees/calvin.gitcdcalvinexportCALVIN_ROOT$(pwd)cd$CALVIN_ROOT/datasetshdownload_data.sh debug# 约 1.3 GB用于管线检查shdownload_data.sh D# 常用标准 splittask_D_D/ ├── training/ │ ├── episode_0000000.npz │ ├── ep_start_end_ids.npy │ └── lang_annotations/auto_lang_ann.npy └── validation/ ├── episode_*.npz ├── ep_start_end_ids.npy └── lang_annotations/auto_lang_ann.npy6.2 Open X-Embodiment 统一的是容器不是动作空间Open X-Embodiment 把多个机器人数据集封装成RLDS episode format。每个 episode 包含一个steps数据集step 内通常有observation、action、language_instruction、is_first、is_last和is_terminal等字段具体相机键、状态维度和动作语义仍由子数据集决定。RLDS 统一了读取方式并没有把 Franka、WidowX、ALOHA 和移动双臂变成同一个控制向量。训练 RT-X 或 Octo 时使用的标准化动作需要额外的 dataset-specific transform。官方 README 给出的本地下载方式是从 Google Cloud Storage 复制指定 dataset builder再用tfds.load读取。{dataset_name}必须替换为官方 spreadsheet 中的准确名称和版本第一次建议先在 Colab 可视化少量 episode确认键名后再复制到本地。各贡献数据集还要分别引用其许可不能被聚合仓库的 Apache 2.0 代码许可覆盖。# 安装 Google Cloud CLI 后只复制需要的一个子数据集gsutil-mcp-r\gs://gdm-robotics-open-x-embodiment/{dataset_name}\$HOME/tensorflow_datasets/# Open X-Embodiment 官方 RLDS 读取方式importtensorflow_datasetsastfds dstfds.load({dataset_name},splittrain)forepisodeinds.take(1):forstepinepisode[steps].take(1):observationstep[observation]actionstep[action]7. DROID 与 BridgeData V2真实场景和可迁移桌面技能7.1 DROID 的优势是场景与相机位姿多样性DROID 官方项目页给出 76,000 条示范、350 小时交互、564 个场景和 86 类任务由 50 名采集者在 13 个机构使用统一 Franka Panda 平台完成。硬件包含两台可调 ZED 2 双目相机和一台腕部 ZED Mini官方还发布了改进相机标定与三条自然语言标注。它适合研究真实场景鲁棒性和共训练却仍是单臂 Franka 数据不能直接映射成 RoboTwin 的双臂 14 维关节动作。官方 quickstart 允许直接从gs://gresearch/robotics以 TFDS/RLDS 方式读取不必先完整下载。样例字段明确包含exterior_image_1_left、wrist_image_left、action和language_instruction。这种远程流式方式适合抽样检查不适合长时间多机训练正式训练通常要把所需分片缓存到高速本地盘并记录 TFDS builder 版本。DROID 官方主页抓取内容未给出一条覆盖所有发布附件的统一商用许可说明部署前应以当前数据卡和发布协议为准。importtensorflow_datasetsastfds dstfds.load(droid,data_dirgs://gresearch/robotics,splittrain,)forepisodeinds.take(1):forstepinepisode[steps].take(1):imagestep[observation][exterior_image_1_left]wriststep[observation][wrist_image_left]actionstep[action]instructionstep[language_instruction]7.2 BridgeData V2 的原始格式与 RLDS 版本并存BridgeData V2 包含 60,096 条轨迹其中 50,365 条是遥操作示范、9,731 条来自脚本策略覆盖 24 个环境和 13 类技能。数据由 WidowX 250 六自由度机械臂采集控制频率 5 Hz平均轨迹 38 步主相机为肩后 RGB-D并逐步加入两路随机外部 RGB 和一路腕部 RGB。官方数据采用 CC BY 4.0并同时发布原始 JPEG/PNG/pkl 压缩包与下采样到 256×256 的 TFDS/RLDS 版本。官方数据目录中demos*.zip是遥操作示范scripted*.zip是脚本策略数据。由于具体分片名会随镜像更新最稳妥的做法是先打开官方目录选择需要的分片再用断点续传工具下载训练仓库中的data_processing可把原始文件依次转成 NumPy 和 TFRecord。如果目标是 VLA 预训练优先采用官方 RLDS 版本并配合 Octo loader如果目标是保留原始分辨率或新增键再从 raw 重建。# 官方数据目录# https://rail.eecs.berkeley.edu/datasets/bridge_release/data/# 将网页中选定的 demos*.zip 或 scripted*.zip 链接替换到这里wget-cofficial_bridge_zip_url-Pdata/bridge_v2_rawunzipdata/bridge_v2_raw/archive_name.zip\-ddata/bridge_v2_raw/extracted8. RoboSet 与 RH20T小规模多技能和高模态接触数据8.1 RoboSet 适合研究多视角与数据效率RoboSet 官方页面展示的数据由 Franka-Emika 与 Robotiq gripper 采集单帧最多有四个相机视角任务以语言定义。主页口径显示 28,500 到 30,050 条遥操作与 kinesthetic 轨迹RoboAgent 页面还提到包含 autonomous 数据的更大集合总计约 100,050 条这反映了不同子集与发布阶段引用时应明确是 MT-ACT、teleoperation、kinesthetic 还是 autonomous。用于 RoboAgent 的 MT-ACT 训练集只有 7,500 条轨迹强调的是数据效率而不是全量 RoboSet 的规模。RoboSet 文件采用 HDF5顶层 key 是Trial0、Trial1等每个 trial 下有data、derived与config。官方下载不是单个统一压缩包而是按 activity、task、scene 提供 tar.gz下面以 Baking Prep 的开抽屉场景作为最小下载样例。官方网页未在抓取内容中展示统一许可证文本因此研究和再发布前应单独确认条款不要因为文件托管在 Meta 公共 CDN 就推断许可。mkdir-pdata/robosetwget-c\http://dl.fbaipublicfiles.com/RoboSet/TeleoperationSet/Activities/baking_prep/baking_prep_slide_open_drawer_scene_1.tar.gz\-Pdata/robosettar-xzfdata/roboset/baking_prep_slide_open_drawer_scene_1.tar.gz\-Cdata/robosetimporth5py h5h5py.File(/path/to/dataset.h5,r)print(h5.keys())# Trial0, Trial1, ...print(h5[Trial0].keys())# data, derived, configsampleh5[Trial0][data]8.2 RH20T 的难点是同步、容量与混合许可RH20T 包含超过 110,000 条接触丰富的真机操作序列覆盖视觉、深度、双目红外、关节角、关节力矩、末端位姿、夹爪宽度、六维力/力矩、音频与可选触觉。原始数据约 40 TB官方提供 640×360 压缩版和 320×180 版本后者将 RGB 视频压缩同时对深度做无损压缩更适合保留 3D 精度。它不是一个“下载后直接训练”的轻量数据集真正成本在多频率传感器时间对齐、相机标定和数 TB 解压缓存。许可也必须按 episode 名分流RH20T-C 中scene_0001到scene_0005采用 CC BY-SA 4.0RH20T-NC 中scene_0006到scene_0010采用 CC BY-NC不能商用。官方下载页按 cfg1 到 cfg7、RGB、Depth、LowDim 和 Calibration 分别提供 Google Drive 与百度网盘链接。第一次只下载一个配置的 Calibration、LowDim 和少量 RGB先用官方rh20t_api验证时间戳和标定再决定是否拉深度。gitclone https://github.com/rh20t/rh20t_api.gitcdrh20t_api pipinstall-rrequirements_api.txt# 数据文件从 https://rh20t.github.io/ 的 Download 区按 cfg/模态选择# 下载并解压后先运行官方可视化预处理python visualize.py\--scene_folder/path/to/RH20T_cfg1/task_xxx_cfg_0001\--cache_folder/path/to/rh20t_cache\--preprocessRH20T 的原始树把每个相机放在独立cam_serial/下颜色与深度使用 MP4时间戳使用 NPY末端、关节、夹爪和力数据放在transformed/。这意味着转换到 LeRobot 时不能把视频第i ii帧和低维数组第i ii行直接配对而要按真实 timestamp 插值或最近邻采样。官方 API 已提供get_tcp_aligned、get_joint_angles_aligned和get_ft_aligned应优先复用这些同步逻辑。RH20T_cfg1/ ├── calib/ ├── task_0001_user_0001_scene_0001_cfg_0001/ │ ├── metadata.json │ ├── cam_serial/ │ │ ├── color.mp4 │ │ ├── depth.mp4 │ │ └── timestamps.npy │ ├── transformed/ │ │ ├── tcp_base.npy │ │ ├── joint.npy │ │ ├── gripper.npy │ │ ├── force_torque_base.npy │ │ └── high_freq_data.npy │ └── audio_mixed/ └── task_0001_user_0001_scene_0001_cfg_0001_human/9. HDF5、RLDS 与 LeRobot 到底差在哪9.1 三种格式解决的是不同问题HDF5 适合把一个 episode 的多层数组放进单文件RoboTwin 和 RoboSet 都能高效随机读取但视频压在 HDF5 内会增加解码和迁移成本RLDS 把 episode 定义成steps序列TFDS 能统一流式读取 Open X-Embodiment、DROID 和 BridgeData V2却依赖 TensorFlow 生态LeRobot 把低维表格写入 Parquet、视觉写成 MP4、任务与 episode 写成 JSON/JSONL便于按 episode 下载并被 PyTorch loader 消费。格式转换不是后缀替换而是 episode、时间轴、媒体和元数据四份契约同时重建。…详情请参照古月居
返回列表