智元精灵GO1 agibot数据转换Lerobot通用格式数据脚本
概述
在机器人学习领域,数据格式的统一对于模型训练和算法开发至关重要。本文介绍一个专门用于将zhiyuanData格式转换为LeRobot格式的Python脚本,该脚本支持每秒10帧的数据处理,确保数据一致性。该脚本的详细代码已经开源到GitHub仓库:https://github.com/Pytorchlover/convert_agibot_to_lerobot.git
目录结构
转换前的zhiyuanData目录结构
zhiyuanData/
├── meta_info.json # 元信息文件,包含任务描述等
├── record/
│ └── raw_joints.h5 # HDF5格式的关节状态数据
└── camera/├── head/color/ # 头部相机图像(*.jpg)├── hand_left/color/ # 左手相机图像(*.jpg)└── hand_right/color/ # 右手相机图像(*.jpg)
转换后的LeRobot目录结构
output/
├── data/
│ └── chunk-000/
│ └── episode_000000.parquet # Parquet格式的主数据文件
├── images/
│ ├── image/ # 头部相机图像目录
│ ├── wrist_image_left/ # 左手腕部相机图像目录
│ └── wrist_image_right/ # 右手腕部相机图像目录
└── meta/├── episodes_stats.jsonl # 片段统计信息├── episodes.jsonl # 片段元数据├── info.json # 数据集信息└── tasks.jsonl # 任务描述信息
核心功能
1. 数据加载与解析
脚本能够读取zhiyuanData格式的多种数据源:
- HDF5格式的关节状态数据(raw_joints.h5)
- JSON格式的元信息(meta_info.json)
- 多视角相机图像数据(头部、左手、右手相机)
2. 智能降采样与同步
通过计算原始数据的持续时间和频率,自动确定最佳降采样比例,将数据统一到目标帧率(默认10fps)。使用状态数据计算动作数据,确保状态-动作对的一致性。
3. 时间戳对齐
基于纳秒级时间戳精确同步多模态数据,为每个数据帧找到最接近的图像帧,保证视觉信息与机器人状态的时空一致性。
4. LeRobot数据集创建
自动创建符合LeRobot标准的数据集结构,包含:
- 多视角图像数据(256x256 RGB)
- 机器人状态(14维关节位置)
- 动作数据(14维关节目标)
- 任务描述文本
技术特点
数据一致性保证
# 使用未来的state作为action: action = state[t+1]
computed_actions = downsampled_states[1:]
容错处理
- 图像加载失败时返回黑色图像作为fallback
- 自动处理缺失的相机数据
- 提供详细的处理进度和统计信息
高性能处理
- 多线程图像处理(10个线程,5个进程)
- 批量数据处理优化
- 内存高效的数据操作
使用方法
基本转换
python convert_zhiyuan_to_lerobot_10fps.py \--data_dir zhiyuanData \--output_name zhiyuan_robot_data_10fps
推送到Hugging Face Hub
python convert_zhiyuan_to_lerobot_10fps.py \--data_dir zhiyuanData \--output_name zhiyuan_robot_data_10fps \--push_to_hub
- 参数说明:
--input_dir
:输入数据目录,必须包含多个episode子目录。--output_dir
:输出目录,脚本自动创建并保存HDF5文件。--push_to_hub
:可选,启用后推送到Hugging Face Hub(需配置API密钥)。
注意事项
- 数据完整性:脚本检查
raw_joints.h5
和meta_info.json
文件,缺失时会跳过episode并输出警告。 - 频率调整:目标为10fps,但实际频率可能因数据长度而略有偏差(如9.8Hz9.8\text{Hz}9.8Hz),通过降采样最小化误差。
- 时间戳对齐:图像文件假设文件名是整数时间戳(纳秒),需确保数据采集时一致。
- 资源消耗:处理大尺寸图像时可能占用较多内存,建议分批运行。
输出统计
转换完成后脚本会显示:
- 总数据帧数
- 状态和动作的维度信息
- 实际采样频率
- 数据数值范围统计
应用价值
该转换脚本为机器人学习研究提供了:
- 标准化数据格式:统一不同来源的机器人数据
- 高质量数据集:确保时序一致性的多模态数据
- 便捷的共享机制:支持一键推送到Hugging Face Hub
- 可扩展架构:易于适配新的机器人类型和数据格式
总结
这个数据转换工具解决了机器人学习中常见的数据格式不统一问题,通过智能的降采样和同步算法,为后续的模型训练提供了高质量、一致性的数据集基础。其模块化设计和详细的错误处理机制使其成为机器人数据预处理的重要工具。