
# LeRobot数据集V2.1转V3
LeRobot V2.1转V3算子用于将LeRobot V2.1格式的数据集转换为V3格式。V3是当前推荐的格式，统一了元数据组织方式（以parquet替代jsonl存储任务与episode信息）。
- **核心能力：**
  - 格式升级：将V2.1的meta/tasks.jsonl、episodes.jsonl、episodes_stats.jsonl转换为V3的meta/tasks.parquet与meta/episodes/目录结构。
  
  - 视频重组：将V2.1的视频文件（videos/）统一重组为V3的videos/目录结构。
  
  - 子目录自动扫描：当输入路径本身不是V2.1数据集时，自动扫描其子目录下的所有V2.1数据集。
  
  - 批量处理：支持一次提交多个数据集并行转换，单个失败不影响其他。
   
- **输入：** LeRobot V2.1格式数据集目录（须含data/、meta/目录）。
- **输出：**LeRobot V3格式数据集目录。如果用户输出选的OBS路径，预置算法会判断是否有冲突目录，如果有冲突目录，则创建一个新目录并将结果放在新目录下。
#### 输入说明
支持LeRobot V2.1格式数据集，不符合要求的数据集目录会自动跳过。支持环境变量
表1参数说明 
| 参数名  | 是否必填 | 默认值  | 可选值        | 说明                                                                                       |
|:---|:---|:---|:---|:---|
| flat | 否    | true | true/false | 结果输出是否平铺。若选择true，则不会创建默认的repo_id文件夹，输出数据集直接展示data、meta、videos目录；若设置为false，则按照repo_id来设置。 |
   
#### 输入数据集目录结构
输入须为LeRobot V2.1格式：
```
<dataset_dir>/                           # 输入路径（V2.1 数据集根目录）
├── data/
│   └── chunk-000/
│       ├── episode_000000.parquet       # 轨迹数据
│       ├── episode_000001.parquet
│       └── ...
├── meta/
│   ├── info.json                        # 数据集基本信息（版本、帧率等）
│   ├── tasks.jsonl                      # 任务定义（jsonl 格式）
│   ├── episodes.jsonl                   # Episode 元信息
│   └── episodes_stats.jsonl             # Episode 统计信息
├── images/                              # 图像数据（图片序列，可选）
│   ├── observation.images.front/
│   ├── observation.images.wrist_left/
│   └── observation.images.wrist_right/
└── videos/                              # 视频数据
```
#### 子目录自动扫描
当输入路径本身不满足V2.1格式（即未同时包含data/、meta/）时，算子会自动遍历其一级子目录，识别其中的V2.1数据集并逐一转换：
```
<input_path>/                            # 父目录（非 V2.1 格式）
├── pick_up_balls/                       # 子目录，V2.1 格式 → 转换
│   ├── data/
│   ├── meta/
│   └── videos/
└── wash_dishes/                         # 子目录，V2.1 格式 → 转换
    ├── data/
    ├── meta/
    └── videos/
```
![](https://support.huaweicloud.com/usermanual-cloudrobo/public_sys-resources/caution_3.0-zh-cn.png)
既非V2.1数据集、其下也未发现V2.1子目录的输入路径会被跳过并告警。
#### 输出说明
根据输入数据集目录层级生成同目录结构的输出LeRobot V3格式数据集。根据环境变量flat控制输出是否带repo_id。"true"模式不带repo_id目录，"false"带repo_id目录
#### 输出目录结构
转换结果为 LeRobot V3格式数据集：
flat模式为false时
```
<repo_id>/
├── data/
│   └── chunk-000/
│       ├── file_000000.parquet       # 轨迹数据
│       ├── file_000001.parquet
│       └── ...
├── meta/
│   ├── info.json                        # 数据集基本信息（codebase_version 为 v3.0）
│   ├── stats.json                       # 数据统计信息
│   ├── tasks.parquet                    # 任务定义（parquet 格式，替代 V2.1 的 jsonl）
│   └── episodes/                        # Episode 元信息目录（替代 V2.1 的 episodes.jsonl）
└── videos/                              # 视频数据（由 V2.1 的 videos/ 视频文件重组）
    ├── observation.images.front/
    ├── observation.images.wrist_left/
    └── observation.images.wrist_right/
```
flat模式为true时
```
├── data/
│   └── chunk-000/
│       ├── file_000000.parquet       # 轨迹数据
│       ├── file_000001.parquet
│       └── ...
├── meta/
│   ├── info.json                        # 数据集基本信息（codebase_version 为 v3.0）
│   ├── stats.json                       # 数据统计信息
│   ├── tasks.parquet                    # 任务定义（parquet 格式，替代 V2.1 的 jsonl）
│   └── episodes/                        # Episode 元信息目录（替代 V2.1 的 episodes.jsonl）
└── videos/                              # 视频数据（由 V2.1 的 videos/ 视频文件重组）
    ├── observation.images.front/
    ├── observation.images.wrist_left/
    └── observation.images.wrist_right/
```
#### 输出文件大小限制
单个parquet文件最大100MB，单个视频文件最大200MB，超限自动切分为多个文件。
