数据上传
数据上传页面把本地文件或对象存储中的数据导入平台。平台内的数据集以 MCAP 为基准格式:视频与音频在浏览器内转换为 MCAP,BAG 由后台服务转换为 MCAP,MCAP 与 LeRobot 目录按原样入库。导入完成后的数据集在数据管理页面统一检索与预览。

使用前提
选择接入方式、项目与云存储后,页面才显示对应的上传表单。
| 项 | 内容 |
|---|---|
| 菜单入口 | 数据 → 上传 |
| 路由 | /upload |
| 必需权限 | 「数据上传」 |
| 接口校验 | 上传记录写入接口校验 「数据列表」 |
| 可见角色 | 管理员、项目经理、采集员 |
| 项目前置 | 未选择项目时提示「请先选择项目」 |
| 云存储前置 | 未选择云存储时提示「请选择云存储」;无可选项时由管理员在云存储页面配置 |
数据接入
接入方式
页面顶部的接入方式卡片决定上传入口与转换行为。
| 接入方式 | 支持格式 | 转换行为 | 约束 |
|---|---|---|---|
| MCAP 文件 | MCAP | 原文件入库,不做转换 | 无 |
| BAG 文件 | BAG | 后台识别 ROS1 或 ROS2 并转换为 MCAP | 转换在服务端执行 |
| 视频文件 | MP4、WebM(浏览器可解码的视频容器) | 浏览器内转码为 MCAP | 需 Chrome 94+ 或 Edge 94+ |
| 音频文件 | MP3、WAV、AAC、Ogg | 浏览器内转为 AudioData 消息 | 依赖浏览器的音频解码能力,无浏览器类型限制 |
| 图片文件 | JPG、PNG | 原文件入库,用于图像标注 | 无 |
| HDF5 文件 | HDF5 | 上传时选择机器人类型,入库后按预处理管道处理 | 需管理员配置预处理管道 |
| LeRobot 文件夹 | LeRobot v2、v3 | 校验 meta/info.json 后流式打包为 tar | 需选择整个数据集文件夹 |
| 美团文件夹 | 美团采集目录(data 与 video) | 打包上传后预处理为 MCAP | 需管理员配置预处理管道 |
| Lumos FastUMI 文件夹 | UMI、EGO | 按 session 打包为 .lumos | 需管理员配置预处理管道 |
| zc0touch 文件夹 | 含 data.json 的目录 | 每个目录打包为 .zc0touch | 需管理员配置预处理管道 |
| SenseXperience 文件夹 | 设备采集 episode 目录 | 按 episode 目录上传 | 仅在已配置 sensexperience 对象存储时显示 |
| BVH 文件 | BVH | 原文件入库,用于动作可视化标注 | 需管理员配置预处理管道 |
| 批量自动上传 | 取决于脚本数据类型 | 本地脚本监控目录并自动上传 | 见「批量上传脚本」 |
| 从云端导入 | MCAP、HDF5、LeRobot | 扫描对象存储后导入 | 需先选择项目 |
浏览器前置条件
视频转 MCAP 依赖浏览器的 MediaStreamTrackProcessor 与 HTMLVideoElement.captureStream(Firefox 前缀 mozCaptureStream 作为回退)。页面在进入视频接入方式时检测这两个接口是否存在,属运行时能力检测,不按浏览器版本白名单判断。
| 项目 | 取值 |
|---|---|
| 依赖接口 | MediaStreamTrackProcessor;HTMLVideoElement.captureStream |
| 检测方式 | 运行时检测上述接口是否存在 |
| 支持浏览器 | Chrome 94+、Edge 94+(同时提供两个接口) |
| 不支持浏览器 | Firefox 不提供 MediaStreamTrackProcessor;Safari 18+ 提供 MediaStreamTrackProcessor,但不提供 HTMLVideoElement.captureStream |
| 检测时机 | 进入视频接入方式时 |
| 不支持时表现 | 提示「浏览器不兼容」并阻止拖拽与选择文件 |
| 兼容处置 | 改用 Chrome 94+ 或 Edge 94+;或先将文件转换为 MCAP 后按 MCAP 文件上传 |
视频转换参数
选择视频接入方式后显示以下参数,转换在浏览器内执行。
| 参数 | 取值 | 默认值 | 约束 |
|---|---|---|---|
| 图像画质 | 20%、50%、70%、100% | 70% | 画质越高,文件越大、耗时越长 |
| 视频帧率 | 自动、10 FPS、15 FPS、30 FPS | 自动 | 自动按原视频帧率处理 |
| 包含音频 | 勾选、取消勾选 | 勾选 | 决定是否保留音轨 |
音频转换参数
音频文件转为 ROS 标准 AudioData 消息,无需配置。
| 项目 | 取值 |
|---|---|
| 输出消息 | ROS 消息类型 audio_common_msgs/msg/AudioData,写入 io_teleop/audio_data 话题,消息编码 CDR |
| 消息频率 | 固定 10 Hz |
| 采样格式 | 16 位有符号小端 PCM(s16le) |
| 元数据 | 通道记录采样率、声道数与编码格式(s16le) |
| 声道处理 | 按原声道数逐声道写入 |
上传与导入
上传队列与进度
同一批次的上传以列表逐条显示状态。文件大小决定上传方式与可用的操作。
| 项目 | 取值 | 说明 |
|---|---|---|
| 分片上传阈值 | 100 MB | 超过该值使用分片上传,分片大小 10 MB |
| 暂停与续传 | 仅分片上传支持 | 未达到阈值的文件只提供取消 |
| 进度显示 | 上传速度、已上传与总大小、预计剩余时间 | 逐文件刷新 |
| 离开确认 | 有文件处于上传或等待状态时 | 关闭或刷新页面时弹出确认 |
| 视频处理超时 | 10 分钟 | 超时后本次转换失败 |
上传状态
列表逐条显示状态,取值与后续动作如下。
| 状态 | 含义 | 后续动作 |
|---|---|---|
| pending | 文件已选择,等待开始 | 无 |
| uploading | 正在转换或上传 | 无 |
| paused | 分片上传已暂停 | 点击续传 |
| success | 上传成功,数据集已创建 | 点击「查看数据集」 |
| error | 处理或上传失败 | 查看原因后重试 |
| cancelled | 上传被取消 | 重新上传 |
重复 上传与同名校验
上传记录写入接口按来源地址判重;同项目同名记录按系统配置 DATASET_REUPLOAD_RECOVER 处理。
| 命中情况 | 处理 | 结果 |
|---|---|---|
| 来源地址与已有数据集一致 | 复用已有记录 | 合并上传信息,不新建,提示「文件已存在」 |
| 同项目存在同名未删除数据集 | 复用已有记录 | 不新建 |
| 同名数据集已删除,恢复开关为开启 | 恢复 | 保留原有标注、任务关联与数据标签 |
| 同名数据集已删除,恢复开关为关闭 | 拒绝 | 提示「同项目同名数据已删除,当前系统配置禁止恢复后重传」 |
| 无同名记录 | 新建 | 建立新数据集,必要时追加后缀名 |
批量上传脚本
「批量自动上传」提供在机器人终端运行的脚本,监控指定目录并自动上传新文件。脚本按当前项目与云存储生成。
| 项目 | 取值 |
|---|---|
| 数据类型 | 单文件(mcap、bag、hdf5)、文件夹(智元机器人数据格式)、文件夹(LeRobot 数据格式)、文件夹(美团采集格式)、文件夹(鹿明 FastUMI)、文件夹(zc0touch) |
| 父目录层级 | 0 层(默认)、1 层、2 层 |
| 脚本命令 | upload(前台运行)、install(安装为 systemd 服务)、uninstall(卸载 服务) |
| 权限要求 | upload 为普通用户;install 与 uninstall 需 root |
父目录层级用于避免同名文件冲突:0 层直接使用文件名,1 层加直接父目录前缀,2 层加两层父目录前缀。例如 episode_1.mcap 在 2 层模式下变为 2025-01-01_10-30_episode_1.mcap。
从云端导入
「从云端导入」扫描对象存储并导入既有数据。
| 项目 | 取值 |
|---|---|
| 数据类型 | MCAP、HDF5、LeRobot |
| 运行模式 | 测试(仅扫描并预览)、导入(扫描后入库) |
| 统计项 | 发现数量、待导入数量、已导入数量、导入数量 |
| 逐条状态 | to_import(待导入)、already_imported(已导入) |
约束与限制
| 项目 | 取值 | 适用范围 |
|---|---|---|
| 项目与云存储 | 均为必选 | 全部接入方式 |
| 分片上传阈值 | 100 MB | 单文件 |
| 分片大小 | 10 MB | 单文件 |
| 视频处理超时 | 10 分钟 | 视频接入方式 |
| 视频转换浏览器 | Chrome 94+、Edge 94+ | 视频接入方式 |
| 隐藏文件排除 | 打包上传时排除名称以「.」开头的文件 | 文件夹类接入方式 |
| 空文件拦截 | 大小为 0 的文件不 能上传 | 单文件 |
| HDF5 机器人类型 | 预处理管道配置了机器人类型时必选 | HDF5 接入方式 |
失败处理
| 现象 | 可能原因 | 处置 | 责任方 |
|---|---|---|---|
| 提示「请先选择项目」 | 未选择归属项目 | 在项目选择器中选择项目 | 上传人 |
| 提示「请选择云存储」 | 未选择目标云存储 | 选择云存储;无可选项时联系管理员配置 | 上传人、管理员 |
| 视频接入提示「浏览器不兼容」 | 浏览器缺少 MediaStreamTrackProcessor 或 HTMLVideoElement.captureStream | 改用 Chrome 94+ 或 Edge 94+;或先转换为 MCAP 后上传 | 上传人 |
| 视频处理超时 | 视频时长或分辨率过高 | 降低画质或帧率后重试 | 上传人 |
| 上传失败并显示原因 | 网络中断、文件损坏、存储空间不足 | 分片上传可续传;文件损坏先修复;空间不足联系管理员扩容 | 上传人、管理员 |
| 提示「不能上传空文件」 | 所选文件大小为 0 | 改用有效文件 | 上传人 |
| LeRobot 打包校验失败 | 缺少 meta/info.json 或目录结构不符 | 按 LeRobot 目录结构补齐后重新上传 | 上传人 |
| 提示「文件已存在」 | 来源地址与已有数据集重复 | 在数据管理页面确认既有记录 | 上传人 |
| 提示同项目同名数据已删除 | 系统配置禁止恢复后重传 | 联系管理员调整恢复配置,或改用其他 文件名 | 管理员 |
相关页面
| 页面 | 用途 |
|---|---|
| 数据管理 | 上传后数据集的检索、预览与批量操作 |
| 标注任务 | 为上传的数据创建标注任务 |
| 数据导出 | 导出标注结果用于训练 |
| 模块权限 | 配置 「数据上传」 等模块权限 |
| 数据格式 | MCAP 与 ROS 数据模型口径 |