问题定位
从错误堆栈看,这次是 数据集加载失败 的问题。核心原因是数据集格式与 LeRobot v2.1 不匹配。
快速排查步骤
步骤 1:验证数据集目录结构
# 检查你的数据集目录结构
tree -L 3 /home/taoz123/datasets/so100_test
v2.1 格式的数据集应该包含:
so100_test/
├── meta.json # 必须有
├── train/
│ ├── chunk-000/
│ │ ├── action.hdf5
│ │ ├── observation.image.hdf5
│ │ └── ...
└── info.json # 可能有
步骤 2:测试数据集能否加载
python -c "
from lerobot.common.datasets.lerobot_dataset import LeRobotDataset
try:
dataset = LeRobotDataset(root='/home/taoz123/datasets/so100_test')
print('✓ 数据集加载成功')
print(f'数据量:{len(dataset)}')
print(f'特征 keys: {dataset.camera_keys}')
except Exception as e:
print('✗ 数据集加载失败')
print(f'错误:{e}')
"
步骤 3:检查配置文件
# 查看当前配置
cat rdk_lerobot_tools/bpu_export_config.yaml
确保以下字段正确:
dataset:
# repo_id: "dummy/dataset" # 保持注释!
root: "/home/taoz123/datasets/so100_test" # 绝对路径
policy:
type: "act"
device: "cpu"
# repo_id: "dummy/policy" # 保持注释!
act_path: "/home/taoz123/lerobot/outputs/train/xxx/pretrained_model"
type: "nash-e"
根本原因分析
根据错误堆栈,问题可能是:
| 可能原因 | 概率 | 解决方案 |
|---|---|---|
| 数据集是 v3.x 格式 | 高 | 用 v2.1 环境重新采集或转换 |
| 数据集路径错误 | 中 | 检查路径是否存在 |
| meta.json 缺失 | 中 | 检查数据集完整性 |
| datasets 版本不对 | 低 | 确认 pip show datasets 是 2.19.0 |
解决方案
方案 A:用 v2.1 环境重新采集数据(推荐)
# 1. 确认环境正确
cd lerobot && git log -1 --oneline
pip show datasets | grep Version # 应该是 2.19.0
# 2. 重新采集 1 组测试数据
python lerobot/scripts/control_robot.py \
--robot.type=so100 \
--control.type=record \
--control.num_episodes=1 \
--control.episode_time_s=30 \
--control.root=datasets/so100_v2_test
# 3. 用新数据集重新训练
python lerobot/scripts/train.py \
--dataset.root=datasets/so100_v2_test \
--policy.type=act \
--output_dir=outputs/act_v2_test
# 4. 导出模型
python rdk_lerobot_tools/export_bpu_actpolicy.py \
--config bpu_export_config.yaml
方案 B:转换现有数据集
如果数据集是在新版 LeRobot 下采集的,需要转换格式:
# 检查是否有转换脚本
ls rdk_lerobot_tools/damo/
# 如果有 replace.py,运行转换
python rdk_lerobot_tools/damo/replace.py
请提供以下信息
如果上述方案仍无法解决,请提供:
# 1. 数据集目录结构
tree -L 3 /home/taoz123/datasets/so100_test
# 2. 环境版本
pip list | grep -E "lerobot|datasets"
cd lerobot && git log -1 --oneline
# 3. 完整错误文字(复制终端输出,不要截图)
# 4. 数据集是如何采集的?
# - 用哪个 LeRobot 版本?
# - 用哪个 commit?
参考资源
bpu_export_config.yaml
ACT Policy 全流程文档
建议:用 v2.1 环境重新采集 1 组数据(30 秒即可),快速跑通整个 pipeline,确认环境正确后再处理正式数据