LeRobot 数据集
LeRobotDataset 是 LeRobot 中机器人数据集的标准化数据格式。它解决了机器人领域的数据碎片化问题,提供统一高效的格式,使机器人演示数据能够在社区中无缝共享和重用。
数据格式和结构
文件结构
数据集在磁盘上组织如下:
- meta/ 目录:存储全局信息
info.json:数据集元数据(FPS、特征定义等)stats.json:各模态的统计数据(均值、标准差、最小、最大值)tasks.parquet:任务描述
- data/ 或 videos/ 目录:存储实际样本
- Parquet 文件:存储状态、动作、奖励等表格数据
- MP4 文件:存储视觉观测数据
数据被分块到多个文件中以提高存储效率和加载性能。
数据访问
LeRobotDataset 类继承自 torch.utils.data.Dataset,提供以下功能:
- 元数据管理:
LeRobotDatasetMetadata处理数据集发现,先下载meta/目录检查数据集结构(FPS、特征等),再提交下载大型 Parquet 或视频文件 - 读取器:
DatasetReader通过torchcodec(首选)或pyav(回退)后端解码视频帧 - 写入器:
DatasetWriter处理顺序录制,包括 episode 缓冲区和视频编码
时间查询和增量时间戳
数据集支持通过相对时间偏移进行查询。策略可以接收过去观测的滑动窗口(例如 [-0.2, -0.1, 0.0]),通过传递相对时间偏移字典来实现。
创建和录制数据集
通过遥操作录制
使用 lerobot-record 命令通过遥操作录制 episodes:
lerobot-record --robot.type=so100 --dataset.path=./my_dataset
录制过程将:
- 通过
Teleoperator读取动作 - 通过
Robot读取观测 - 将 (观测, 动作) 对写入
DatasetWriter - 每个 episode 完成后保存到磁盘
数据集操作工具
LeRobot 提供多种工具来操作已有数据集:
- lerobot-edit-dataset:修改数据集特征、删除 episodes、拆分数据集
- lerobot-dataset-viz:可视化数据集内容
- lerobot-imgtransform-viz:可视化图像变换效果
- lerobot-annotate:为数据集添加标注
视频处理
TorchCodec
LeRobot 利用 TorchCodec 实现高效的多线程视频解码:
- 支持平台:Linux (x8664)、macOS (Apple Silicon)、Windows (PyTorch >= 2.8) * 不支持平台:Linux ARM (aarch64)、macOS Intel (x8664)
- 回退方案:在不受支持的平台上自动使用
pyav
推荐编码器
libsvtav1 编码器是 LeRobotDataset 格式的首选编解码器,提供高压缩率和良好的解码性能。
版本兼容性
当前标准格式版本为 v3.0(由 CODEBASE_VERSION = “v3.0” 定义)。
v2.1 到 v3.0 迁移:使用 v2.1 创建的数据集与 v3.0 读取器不兼容。LeRobot 提供迁移脚本 convertdatasetv21tov30.py 来处理格式转换。
评论