- 开始日期: 2025-12-26
- 当前版本: v0.2.6
- 项目状态: 🔄 开发中
- 当前分支: main
状态: 已完成并测试验证 完成日期: 2025-12-26 测试日期: 2025-12-28
- 创建项目目录结构
- 配置
pixi.toml依赖文件 - 复制核心脚本 (
download.sh和convert.py) - 创建CLI工具骨架
- 编写
README.md - 编写
PROGRESS.md - 执行
pixi install验证环境 ✅ 已通过 - 测试CLI工具启动 ✅ 已通过
- 测试mc工具连接 ✅ 已通过 (v2025-08-13)
- 测试BOS文件下载 ✅ 已通过 (2.55MB/s)
✅ 通过的测试:
- pixi依赖安装成功
- download CLI工具正常启动,参数解析正确
- convert CLI工具正常启动,参数解析正确
- mc工具可用,可正常访问BOS存储
- 成功从BOS下载测试文件 (episode_0002.h5, 2.55MB)
- ✅
convert.py脚本与BOS数据格式不匹配(已解决)
关键文件:
- ✅
pixi.toml - ✅
scripts/download.sh - ✅
scripts/convert.py(已适配v1格式) - ✅
cli/download_cli.py - ✅
cli/convert_cli.py
状态: 已完成 开始日期: 2025-12-28 完成日期: 2025-12-28 实际耗时: <0.5天
- 实现
backend/models/task.py- 任务数据模型 - 实现
backend/services/database.py- SQLite数据库服务 - 任务状态机:pending → running → completed/failed
- 实现
backend/services/download_service.py - 复用
cli/utils/mc_executor.py - 异步任务执行和进度上报
- 实现
backend/services/convert_service.py - 复用
scripts/convert.py逻辑 - 批量任务队列和并发控制
- 实现
backend/main.py- FastAPI入口 - 实现
backend/routers/tasks.py- 任务管理API - 实现
backend/routers/download.py- 下载API - 实现
backend/routers/convert.py- 转换API
状态: 已完成 完成日期: 2025-12-28 实际耗时: <1天
- 创建
cli/download_cli.py骨架 - 实现完整下载功能(mc mirror封装)
- 集成mc_executor和进度跟踪
- BOS连接检查
- 错误处理和日志
- 测试验证(18个文件,235MB下载成功)
- 创建
cli/convert_cli.py骨架 - 实现批量转换功能
- 并发转换控制(ThreadPoolExecutor)
- 进度显示和统计信息
- 错误处理和超时控制(5分钟/文件)
- 测试验证(3文件并发转换,3.3秒完成)
- 创建
cli/upload_cli.py - 实现mc mirror上传功能
- LeRobot目录扫描和验证
- JSON输出解析和进度显示
- 并发上传控制
- 在pixi.toml中注册任务
- 创建
cli/utils/mc_executor.py骨架 - 实现mc命令执行和进度解析
- 实现实时输出捕获
- 实现BOS连接检查
- 创建
cli/utils/progress.py骨架 - 实现ProgressTracker进度跟踪器
状态: 已完成 完成日期: 2025-12-29 实际耗时: <0.5天
- 将
merge_lerobot.py整合到项目 - 移动核心脚本到
scripts/merge_lerobot.py - 创建
cli/merge_cli.pyCLI封装 - 在
pixi.toml中注册 merge 任务 - 支持多数据集合并为单个LeRobot数据集
- 自动处理维度对齐(state/action向量填充)
- 视频文件复制和重索引
- 元数据合并和统计信息计算
- 批量合并: 支持合并任意数量的独立LeRobot episode
- 维度自适应: 自动检测并统一state/action向量维度
- 数据完整性: 自动合并元数据、统计信息、任务列表
- 索引重排: 自动重新编号episode索引和帧索引
- 视频复制: 复制所有相机视频文件并重新命名
- ✅ 成功合并232个独立episode为单个数据集
- ✅ 总帧数: 365,518 帧
- ✅ 总视频数: 696 个(3相机 × 232 episodes)
- ✅ 数据集大小: 644 MB
- ✅ State/Action维度: 14 维(双臂机器人)
状态: 已完成 目标版本: v0.2.1 完成日期: 2026-01-07 实际耗时: <1天
将现有的 CLI merge 工具集成到 Web 前端 Pipeline 页面,并新增 QC 质检功能。
- 扩展
backend/models/task.py- 添加 MERGE 任务类型 - 创建
backend/services/merge_service.py- Merge 服务 - 创建
backend/routers/merge.py- Merge API 路由 - 扩展
backend/routers/upload.py- 添加视频流端点 - 添加 QC 结果保存/加载 API
- 创建
QCInspector.vue- 质检组件- 左侧: Episode 列表 (状态图标 + 点击选中)
- 右侧: 视频播放器 (
<video>标签) - 底部: 通过/不通过按钮
- 统计: 已通过/不通过/待检查数量
- 三相机切换支持 (环境/左腕/右腕)
- 键盘快捷键 (↑↓导航, P通过, F不通过, 1/2/3切换相机)
- QC 结果持久化 (保存到 qc_result.json)
- 恢复上次进度并自动定位
- 扩展
frontend/src/api/pipeline.ts- 添加 QC/Merge API - 修改
frontend/src/views/Pipeline.vue- 添加 QC 按钮 (在 Convert 和 Merge 之间)
- 添加 Merge 按钮 (显示通过数量)
- 添加 Upload 按钮 (上传 merged 目录)
- 引入 QCInspector 组件
- 操作确认对话框 (Download/Convert/Merge/Upload)
- 状态检查栏 (BOS下载前/数据转换前/数据上传前)
- 路径说明 (H5原始文件/LeRobot转换后/合并后数据集)
Download → Convert → QC 质检 → Merge → Upload
↓
视频播放器 → 标记通过/不通过
↓
只合并「通过」的 episode
local_dir/
├── raw/ # H5原始文件 (Download)
├── lerobot/ # LeRobot转换后 (Convert)
├── merged/ # 合并后数据集 (Merge)
└── qc_result.json # QC结果记录
状态: 已完成 目标版本: v0.2.2 完成日期: 2026-01-09 实际耗时: <0.5天
- 项目中存在大量硬编码路径(如
/home/maozan/mc) - 魔法数字分散在各个文件中(端口、超时、默认值)
- 不同文件中相同参数使用不同默认值(如 state_max_dim: 14 vs 32)
- 新环境部署需要手动修改多处代码
- 创建
backend/config/__init__.py- 配置模块入口 - 创建
backend/config/settings.py- 统一配置管理类- 使用
@property实现懒加载 - 支持环境变量覆盖默认值
- mc路径智能检测(MC_PATH → ~/bin/mc → PATH)
- 使用
- 创建
.env.example- 环境变量模板文件
- 重构
backend/models/task.py- 使用配置模块默认值 - 重构
backend/main.py- 端口和CORS配置 - 重构
backend/services/database.py- 数据库路径配置 - 重构
backend/services/download_service.py- mc路径和超时配置 - 重构
backend/services/upload_service.py- mc路径和BOS配置 - 重构
backend/services/convert_service.py- 超时和默认参数配置 - 重构
backend/services/merge_service.py- 维度和fps默认值配置
- 重构
cli/download_cli.py- 移除硬编码路径,改为必填参数 - 重构
cli/convert_cli.py- 使用环境变量默认值 - 重构
cli/upload_cli.py- 移除硬编码路径,改为必填参数
- 重构
frontend/vite.config.ts- 支持环境变量配置端口 - 重构
frontend/src/api/index.ts- API超时配置 - 重构
frontend/src/views/Pipeline.vue- 默认并发数配置 - 重构
frontend/src/views/Download.vue- 默认并发数配置 - 重构
frontend/src/views/Upload.vue- 默认并发数配置 - 创建
frontend/.env.example- 前端环境变量模板
- 更新
README.md- 添加配置说明章节 - 更新
USER_GUIDE.md- 添加环境变量配置章节 - 更新
PROGRESS.md- 添加配置重构里程碑 - 创建
INSTALL.md- 完整环境安装指南
后端配置项(19项):
- API服务器:
API_HOST,API_PORT,CORS_ORIGINS - mc工具:
MC_PATH,BOS_ALIAS,BOS_TEST_PATH - 默认参数:
DEFAULT_CONCURRENCY,DEFAULT_FPS,DEFAULT_ROBOT_TYPE,DEFAULT_TASK_NAME,DEFAULT_PARALLEL_JOBS,STATE_MAX_DIM,ACTION_MAX_DIM - 超时设置:
TIMEOUT_MC_CHECK,TIMEOUT_CONVERT_FILE - 存储路径:
DB_PATH
前端配置项(4项):
VITE_API_PORT,VITE_DEV_PORT,VITE_DEFAULT_CONCURRENCY,VITE_API_TIMEOUT
状态: 已完成 目标版本: v0.2.3 完成日期: 2026-01-09 实际耗时: <0.5天
- 前端默认值与后端配置不同步
- 后端未加载
.env文件 - 代码审查发现多处潜在 bug
- QC 视频查看器需要同时查看多相机
- 添加
/api/config/defaults端点返回后端配置 - 前端 Pipeline 页面启动时获取默认配置
- 添加
python-dotenv依赖到pixi.toml - 后端
settings.py自动加载.env文件 -
.env文件配置值正确生效
-
task.py: 添加exclude_episodes字段到 UploadConfig -
pipeline.ts: 修复ready: dirs.length > 0 || true逻辑错误 -
download_cli.py: 使用settings.BOS_ALIAS替代硬编码 "bos" -
mc_executor.py: 使用配置的 BOS 测试路径
-
convert_service.py: 使用sys.executable替代硬编码 Python 路径 -
convert.pyrouter: 添加输入目录验证 -
merge.pyrouter: 添加源目录验证 -
upload_service.py: 添加cancel_task异常处理 -
Pipeline.vue: 修复runAllChecks()竞态条件 -
pipeline.ts: 修复 upload 使用merged_dir而非lerobot_dir
-
convert_cli.py: 使用settings.TIMEOUT_CONVERT替代硬编码 300 -
merge_service.py: 添加shutil.rmtree()异常处理 -
download.pyrouter: 添加任务 None 检查 -
Pipeline.vue: 修复 QC 按钮加载状态使用qcLoading -
Pipeline.vue: 添加handleQCConfirm错误通知 -
Pipeline.vue: 修复handleMerge过滤器空安全检查
-
merge_cli.py: 修复文档注释默认值 32 → 14
- 修改
QCInspector.vue模板:三相机并排显示 - 添加 CSS 样式:
.video-grid,.video-cell,.camera-label,.video-player-small - 三个相机视频同步播放(环境/左腕/右腕)
- 每个视频带相机名称标签
- 前端默认值与
.env配置自动同步 - 用户可通过修改
.env自定义所有默认参数 - 修复 18 个潜在 bug,提高系统稳定性
- QC 质检可同时查看三个相机视角,提高效率
状态: 已完成 目标版本: v0.2.4 完成日期: 2026-01-12 实际耗时: <0.5天
- 代码审查发现多处潜在 bug 和不规范写法
- 详细问题记录在
docs/FRONTEND_BUGFIX.md
-
Dashboard.vue: 修复el-radio-button属性错误 (:value→:label) -
TaskTable.vue: 修复 Icon 组件用法错误 (:icon函数调用 → slot 插入)
-
Layout.vue: 整合分散的 import 语句到文件顶部 -
api/index.ts: 增大默认 API 超时时间 (30s → 120s)
-
Dashboard.vue: 移除冗余的双重stopPolling()调用
-
TaskPreviewBar.vue: 修复 stats 计算属性访问路径错误 (stats.running→stats.tasks.running)
-
QCInspector.vue: 添加数组访问空值检查 -
templates.ts: 添加splice()[0]和数组索引空值检查 -
pipeline.ts: 添加 API 响应类型定义和Array.isArray检查
-
pipeline.ts: 新增ScanBosResponse和ScanDirsResponse接口 -
pipeline.ts: 使用泛型api.get<T>()替代类型断言as T
-
style.css: 更新暗色主题配色为 GitHub 风格 -
style.css: 添加 Tailwind CSS v4@theme变量定义 -
style.css: 扩展 Element Plus 暗色主题组件样式
- 修复 6 处文档记录的 bug + 1 处隐藏 bug
- 增强代码健壮性,防止运行时空值错误
- 统一 API 响应类型管理,提高代码可维护性
- 优化暗色主题视觉效果
状态: 已完成 目标版本: v0.2.5 开始日期: 2026-01-15 完成日期: 2026-01-26
- 线性插值对齐方法 (
--alignment-method linear) - 自适应边界裁剪(自动计算头帧时延,裁剪超出范围的帧)
- 新增
scipy依赖 - 新增
DEFAULT_ALIGNMENT_METHOD配置项
- 支持 glob 模式(如
/path/to/episode_*) - 自动展开通配符路径
- 模块化重构: 将 1138 行单文件脚本重构为 8 个模块
scripts/alignment/__init__.py- 模块导出scripts/alignment/config.py- 集中配置管理scripts/alignment/data_loader.py- 数据集加载(支持 v2.0/v3.0)scripts/alignment/video_tracker.py- 策略模式视频追踪器scripts/alignment/signal_processing.py- 信号处理与去噪scripts/alignment/visualization.py- 可视化生成scripts/alignment/analyzer.py- 核心分析逻辑scripts/alignment/cli.py- 命令行接口
- 新增黑色区域检测: 针对 ALOHA 等黑色夹爪机器人优化
- 相比 ROI 模式提升 21% 相关性(0.460 vs 0.379)
- 新增状态引导去噪: 利用 State 波形指导 Video 信号去噪
- 相关性提升 34.1%(0.617 vs 0.460)
- 删除废弃代码: 移除
scripts/filter_lerobot/目录及相关文件 - CLI 参数扩展:
--black-detection: 启用黑色区域检测模式--color-detection: 启用颜色检测模式(橙色夹爪)--denoise: 启用状态引导去噪--denoise-method: 去噪方法选择(state_guided/weighted/adaptive)
| 数据集 | 平均偏移(帧) | 平均偏移(ms) | 评估 |
|---|---|---|---|
| 0115_qz2_plant/merged | +0.41 | 16ms | ✅ 优秀 |
| 1226_qz2/merged | +1.23 | 49ms | |
| 1226_qz2/merged_nearest | +1.93 | 77ms | |
| aloha_mobile_cabinet | +1.55 | 31ms |
状态: 已完成 目标版本: v0.2.6 开始日期: 2026-02-08 完成日期: 2026-02-11
- 新增
detect_gap_segments()函数- 检测所有相机的严重跳帧(帧间隔 > 中位数 × gap_factor)
- 合并重叠跳帧区间,切割 reference_timestamps 为有效片段
- 过滤帧数不足的片段(min_segment_frames=30)
- 重写
load_episode_v1_format()返回List[Dict]- 每个片段独立对齐(图像 + 关节数据)
- 一次解码图像,按片段时间范围分配
- 更新
convert_hdf5_to_lerobot_v21()支持多片段输出- 每个片段作为独立 episode 输出
- 更新 info.json、episodes.jsonl 生成逻辑
- CLI 新增参数:
--gap-factor,--min-segment-frames
- 新增
scripts/visualize_video_sync.py- 将 convert 后的三个相机 MP4 并排拼接为合成视频
- 每帧标注帧号和相机名称(bitmap 字体,无 GUI 依赖)
- 支持单 episode 和全量 episode 模式
- 自动识别 per-episode 和 merged 两种目录结构
- 适配无头服务器环境(无 tkinter/matplotlib 依赖)
- 更新 CLI 工具默认路径适配
0203_qz2_pants数据集 - 默认对齐方法从
nearest改为linear - 更新 robot_config 配置
- 更新对齐分析文档
-
detect_gap_segments()额外返回 gap 详情(camera, frame_index, gap_ms, skipped_reference_indices) -
load_episode_v1_format()返回 quality metadata(相机帧数/中位帧间隔、裁剪帧数、跳帧详情) - 每个 episode 转换后输出
quality_report.json - 批量转换结束后汇总
quality_summary.json到输出目录顶层 - CLI 透传
--gap-factor/--min-segment-frames,支持环境变量 -
gap_factor默认值从 5.0 调整为 4.5(容忍最多 3 帧丢失) - Merge 时持久化
meta/episode_mapping.json(merged_index → source_dir,支持完整溯源)
- 跳帧分析: 157/158 episodes 无跳帧,仅 episode_0060 有 1 处 gap(168ms,损失 1 帧)
- 相机帧率: cam_env ~31fps (32.02ms), 腕部相机 ~25fps (40.00ms)
- 时间戳偏移: 三相机无系统性偏移
状态: 暂缓(合并到阶段9) 说明: 原计划内容已合并到阶段9,优先进行UI/UX优化
状态: 已完成 开始日期: 2025-12-28 完成日期: 2025-12-28 实际耗时: <0.5天
- 初始化Vite + Vue3 + TypeScript项目
- 安装Element Plus、Tailwind CSS、Axios
- 配置Vue Router和Pinia状态管理
- 配置vite.config.ts代理后端API
- 实现
Dashboard.vue- 统计卡片和任务列表 - 实现
TaskTable.vue- 任务表格组件 - 实现
TaskDetail.vue- 任务详情抽屉 - 实现
StatCard.vue- 统计卡片组件 - 状态筛选和自动刷新(3秒轮询)
- 实现
Download.vue - BOS路径和本地路径配置
- 并发数滑块
- BOS连接检查
- 实现
Convert.vue - 文件扫描预览
- 转换参数配置(robot_type, fps, task)
- 并发数设置
- 实现
Upload.vue - 目录扫描预览
- 上传选项(包含视频、上传后删除)
- 后端
upload_service.py和upload.py路由
- 实现
Status.vue - 健康检查卡片
- 任务统计图表
- Vue 3 + TypeScript + Vite
- Element Plus UI组件库
- Tailwind CSS 样式
- Pinia 状态管理
- Axios HTTP客户端
- @iconify/vue 图标库
- ✅ 前端编译成功
- ✅ 开发服务器启动正常 (http://localhost:5173)
- ✅ API代理配置正确
- ✅ 暗色主题生效
- ✅ 下载功能: BOS文件下载测试通过
- ✅ 转换功能: HDF5批量转换测试通过
- ✅ 上传功能: LeRobot目录上传测试通过
- 修复BOS路径前缀问题 (
bos/前缀) - 修复mc mirror并发参数 (
--max-workers)
- 修复BOS路径前缀问题 (
状态: 已完成(CLI工具测试通过) 完成日期: 2025-12-28
- 完整流程测试(下载18个HDF5 → 批量转换)✅ 通过
- 并发任务测试(4并发转换)✅ 通过
- 异常处理测试(left/right时间戳不一致处理)✅ 通过
- 性能测试(待Web界面完成后进行压力测试)
测试结果:
- 下载:18个文件,246MB,16秒,15.22 MB/s
- 转换:18个文件全部成功,17秒,平均1.0秒/文件
状态: 已完成 完成日期: 2025-12-28 实际耗时: <0.5天
- 完善README.md
- 聚焦CLI工具功能
- 更新命令示例和参数说明
- 添加数据格式详细说明
- 添加测试结果和性能数据
- 编写USER_GUIDE.md
- 快速入门指南
- CLI完整参数说明
- 数据格式详解
- 故障排除指南
- 更新PROGRESS.md
- 发布v0.1.0
状态: 待开始 预计时间: 1-2天 目标版本: v0.3.0
- 实现
stores/settings.ts- 配置状态管理 - localStorage 保存用户输入的路径参数
- 页面加载时自动恢复上次配置
- 支持清除保存的配置
- 路径存在性检查(调用后端API验证)
- 参数范围验证(并发数、fps等)
- 实时错误提示和表单状态反馈
- 提交前完整性校验
- 实时进度条组件
- 显示已完成/总数
- 预计剩余时间计算
- 任务速度统计
- 一键复制路径按钮
- 常用配置模板(预设场景)
- 智能默认值(基于历史记录)
- 快速操作按钮(重试、取消等)
- 侧边栏折叠功能
- 页面结构调整
- 响应式适配(移动端)
- 暗色/亮色主题切换
状态: 待开始 预计时间: 2-3天 目标版本: v0.3.1
- 设计任务链数据模型
- 实现 下载→转换→上传 一键流水线
- 任务链进度展示
- 链中任务失败处理策略
- 任务多选功能
- 批量启动任务
- 批量取消任务
- 批量删除历史记录
- 失败任务一键重试
- 任务克隆(复制配置创建新任务)
- 任务优先级设置
- 任务标签和分类
- 保存当前配置为模板
- 模板管理(列表、删除、重命名)
- 快速应用模板
- 导入/导出模板
状态: 待开始 预计时间: 2天 目标版本: v0.3.2
- 实现
backend/services/log_streamer.py - WebSocket 日志推送
- 前端日志查看组件
- 日志级别过滤(info/warning/error)
- 任务执行完整日志存储
- 历史日志查看
- 日志搜索和过滤
- 日志导出功能
- 实现
backend/routers/monitor.py - CPU/内存使用率监控
- 磁盘空间监控
- 网络状态监控
- 实时图表展示
- 任务失败告警
- 磁盘空间不足告警
- 系统资源告警阈值配置
状态: 待开始 预计时间: 2-3天 目标版本: v0.4.0
- 下载断点记录和恢复
- 上传断点记录和恢复
- 进度持久化存储
- 自动重试策略(指数退避)
- 可配置重试次数
- 网络异常自动恢复
- 部分失败继续执行
- 文件完整性校验(MD5/SHA256)
- 下载后自动验证
- 上传前后校验对比
- 校验失败自动重传
- 优雅降级策略
- 服务健康自检
- 异常自动恢复
- 详细错误报告
- v0.1.0: CLI工具版本发布(download + convert)
- v0.2.0: Web管理界面 + 后端API服务 + CLI工具链完整(download + convert + upload + merge)
- v0.2.1: Pipeline QC质检 + Merge功能(QC组件、结果持久化、三相机预览、快捷键)
- v0.2.2: 配置重构(统一配置模块、环境变量支持、移除硬编码)
- v0.2.3: Bug修复与QC优化(配置同步、python-dotenv、18处bug修复、三相机并排布局)
- v0.2.4: 前端代码质量优化(7处bug修复、防御性编程、类型优化、暗色主题改进)
- v0.2.5: 数据质量与转换优化(转换工具增强、对齐分析重构、QC实时同步、robot_config多机器人支持)
- v0.2.6: 转换管线健壮性增强(跳帧检测与片段切割、三相机视频对比工具、新数据集适配、质量报告JSON、episode溯源映射)
- 阶段7: UI/UX优化 → v0.3.0
- 阶段8: 功能增强 → v0.3.1
- 阶段9: 日志和监控 → v0.3.2
- 阶段10: 稳定性增强 → v0.4.0
- HDF5数据格式不匹配 (发现日期: 2025-12-28,解决日期: 2025-12-28)
- 问题:
scripts/convert.py脚本期望的数据结构与BOS上的实际数据格式不一致 - 影响: 无法转换
online_test_hdf5_v1目录下的HDF5文件 - 原因:
- 脚本期望:
observations/images_color/head,observations/jointstate/q等 - 实际格式:
images/cam_env/frames_jpeg,joints/left_master/joint1_pos等 - 图像存储: 脚本期望数组,实际为JPEG压缩格式
- 多相机帧数不一致(52/44/44帧)
- Master/Slave数据使用各自时间戳
- 脚本期望:
- 解决方案:
- 实现
load_episode_v1_format()函数适配v1格式 - 使用PIL解码JPEG图像
- 实现多相机时间对齐(以最少帧数相机为基准)
- 关节数据从250Hz对齐到~26fps图像
- 分别处理 left_master 和 right_master 时间戳
- 实现
- 测试结果: ✅ 通过
- 44帧数据正确生成(State/Action各14维)
- 时间对齐精度优秀(平均误差1-9ms)
- 输出符合LeRobot v2.1标准
- 状态: ✅ 已完成
- 问题:
- 无
- 无
- ✅ 2025-12-26: 项目初始化完成,骨架搭建完成
- ✅ 2025-12-28 上午: HDF5格式适配完成,转换功能测试通过
- 实现v1格式加载器(JPEG解码、多相机对齐、时间同步)
- 修复master时间戳bug和元数据维度不匹配
- 测试结果:44帧,时间对齐误差<30ms,符合LeRobot v2.1标准
- ✅ 2025-12-28 下午: CLI工具开发完成(阶段2.5完成) 🎉
- 转换CLI工具: 批量转换、并发控制、进度显示、错误处理
- 下载CLI工具: mc封装、BOS连接检查、进度跟踪
- Bug修复: left/right slave时间戳对齐bug
- 测试结果:
- 下载:18个HDF5文件,246MB,16秒
- 转换:18个文件全部成功,17秒
- ✅ 2025-12-28: Git版本控制初始化
- 首次提交:c5b9ce4
- 主分支:main
- ✅ 2025-12-28: 🎉 v0.1.0发布!
- 完善README.md和USER_GUIDE.md
- CLI工具版本正式发布
- ✅ 2025-12-28: 后端API服务完成(阶段2完成)🎉
- 数据模型和SQLite存储
- 下载/转换服务(异步执行、进度跟踪)
- RESTful API(任务管理、下载、转换)
- 开发分支:feature/backend-api(已合并到main)
- ✅ 2025-12-28: Web前端开发完成(阶段4完成)🎉
- Vue 3 + TypeScript + Vite + Element Plus
- 任务看板、下载管理、转换管理、上传管理、系统状态
- 暗色主题、响应式设计
- 后端上传服务(upload_service.py)
- ✅ 2025-12-29: 阶段4功能测试通过 🎉
- 下载、转换、上传三大功能全部测试通过
- 修复上传服务BOS路径和并发参数问题
- ✅ 2025-12-29: CLI upload工具完成 🎉
- 实现
cli/upload_cli.py上传命令行工具 - 支持LeRobot目录扫描、进度显示、并发上传
- 修复上传服务logger未导入导致进度不更新的bug
- 实现
- ✅ 2025-12-29: v0.2.0 版本发布 🎉
- Web管理界面 + 后端API服务
- 完整CLI工具链(download + convert + upload)
- ✅ 2025-12-29: 数据集合并工具完成(阶段2.6完成)🎉
- 实现
cli/merge_cli.py和scripts/merge_lerobot.py - 支持多个独立LeRobot episode合并为单个数据集
- 自动维度对齐、索引重排、元数据合并
- 测试结果:成功合并232个episode(365k帧,696个视频,644MB)
- 集成到CLI工具链:
pixi run merge
- 实现
- ✅ 2025-12-29: v0.2.0最终版本发布 🎉🎉🎉
- 完整的数据处理流水线:下载 → 转换 → 合并 → 上传
- 4个CLI工具:download / convert / merge / upload
- Web管理界面支持下载/转换/上传
- ✅ 2026-01-07: CLI工具完善
- 调整 merge 默认维度参数 (32→14)
- 完善 CLI 使用文档
- 新增 visualize_parquet.py 数据验证工具
- ✅ 2026-01-07: v0.2.1 发布 - Pipeline QC质检 + Merge 功能 🎉🎉
- QCInspector 组件: 三相机视频预览、通过/不通过标记
- QC 结果持久化: 保存到 qc_result.json,支持断点续检
- Merge 服务集成: 后端 API + 服务层,仅合并通过质检的 episode
- Pipeline 页面优化: 完整工作流 Download → Convert → QC → Merge → Upload
- 操作确认对话框: 防止误操作
- 快捷键支持: ↑↓导航、P通过、F不通过、1/2/3切换相机
- ✅ 2026-01-09: v0.2.2 发布 - 配置重构 🎉
- 统一配置模块:
backend/config/settings.py集中管理所有配置 - 环境变量支持: 所有参数可通过
.env文件配置 - 移除硬编码: 删除所有开发者特定路径和魔法数字
- CLI工具重构: 关键路径参数改为必填,避免误用默认值
- 文档完善: 新增 INSTALL.md,更新配置说明
- 统一配置模块:
- ✅ 2026-01-09: v0.2.3 发布 - Bug修复与QC优化 🎉
- 配置同步机制: 添加
/api/config/defaults端点,前端启动时获取后端配置 - python-dotenv集成: 后端自动加载
.env文件,配置值正确生效 - Bug修复: 修复 18 处 Critical/High/Medium/Low 级别问题
- QC视频布局: 三相机并排显示,提高质检效率
- 配置同步机制: 添加
- ✅ 2026-01-12: v0.2.4 发布 - 前端代码质量优化 🎉
- P0 严重问题: 修复 Dashboard 筛选按钮和 TaskTable Icon 用法错误
- P1 中等问题: 整合 Layout.vue import、增大 API 超时时间
- P2 轻微问题: 移除冗余代码
- 隐藏 bug: 修复 TaskPreviewBar.vue stats 属性访问路径错误
- 防御性编程: 添加多处空值检查,增强代码健壮性
- 类型优化: 新增 API 响应接口,使用泛型替代类型断言
- UI 优化: 更新暗色主题为 GitHub 风格配色
- ✅ 2026-01-15: v0.2.5 开发启动 - 数据质量与转换优化
- ✅ 转换工具增强: 线性插值对齐、自适应边界裁剪
- ✅ Merge工具增强: 支持 glob 模式
- ✅ 2026-01-22: v0.2.5 - QC结果实时同步及视频加载优化 (PR #1) 🎉
- WebSocket 实时同步: 多客户端 QC 结果实时广播(
/api/upload/qc/ws) - 乐观锁机制: 按 episode 粒度更新,防止并发冲突
- 视频缓存优化: 304 Not Modified + 缩略图 LRU 缓存
- 前端集成: WebSocket 重连、心跳、防抖
- WebSocket 实时同步: 多客户端 QC 结果实时广播(
- ✅ 2026-01-26: v0.2.5 - Frame-State 对齐分析工具重构完成 🎉
- 模块化重构: 1138行 → 8个模块(config, data_loader, video_tracker, signal_processing, visualization, analyzer, cli)
- 新增检测模式: 黑色区域检测(ALOHA优化,+21%相关性)
- 新增去噪功能: 状态引导去噪(+34.1%相关性提升)
- robot_config 系统: 多机器人配置(airbot_play/aloha/galaxea_r1_lite)自动检测
- 代码清理: 删除废弃的 filter_lerobot 模块
- ⏳ 规划中: 阶段7-10(UI优化、功能增强、日志监控、稳定性)
- ✅ 2026-02-11: v0.2.6 发布 - 转换管线健壮性增强 🎉
- 跳帧检测与片段切割:
detect_gap_segments()自动检测严重跳帧,切割为有效片段 - 三相机视频对比:
visualize_video_sync.py并排拼接合成视频,帧号/相机名标注 - 质量报告: 每个 episode 输出
quality_report.json,批量汇总quality_summary.json - Episode 溯源: Merge 时持久化
episode_mapping.json,支持 merged → lerobot → raw 反查 - 新数据集适配: 0203_qz2_pants 158 episodes(157 无跳帧,默认 linear 对齐)
- 数据分析: 确认三相机无系统性时间戳偏移
- 跳帧检测与片段切割:
更新频率: 每完成一个子任务更新一次 最后更新: 2026-02-11 (v0.2.6 质量报告JSON + episode溯源映射)