X86 ArUco 最小数采 - NUSNiuMu/insight-capture-dashboard GitHub Wiki

x86 ArUco 数采工作台

2026-09-08,功能分支 feat/x86-aruco-capture,最新提交 f8373b8(热插拔 f5c5578、无关故障保留修复);尚未合并 main。

面向个人采集的独立单页:Insight9 自身 VIO + RGB 观察夹爪 cube,直接生成统一参考系下的左右 TCP。沿用现有 cube 几何和 TCP 外参,允许单面标记,完全不需要 SuperPoint/SuperGlue 或夹爪 VIO。

保留采集、回看、手动划分片段/填写任务文本、质量评估和 LeRobot v3 导出。普通 RGB 配置列表可由两路扩到四路;串口暂定逐行 JSON 与线性开合度标定,实际设备协议待定。未连接编码器时宽度无效,不使用常数伪造训练数据。

3D 工作台

前端扩展为“实时采集、回放与标注、质量与导出”三个工作区,后端仍保持独立轻量入口。

  • 深色响应式布局,左手蓝色、右手橙色;输入频率、VIO/标定状态、cube 质量与串口开合度清晰显示。
  • 本地 Babylon.js 绘制双臂 3D 轨迹与 TCP 朝向;旋转、平移、缩放、常用视角和全屏可操作。实时历史有界,VIO 重置与新录制清空旧坐标系轨迹;无效观测断线。
  • 同步视频回放支持播放/暂停、逐帧、倍速和时间轴定位。视频帧解码完成后,同时更新对应的双臂位姿和开合度。
  • 动作片段可以编辑,标注任务及左手/右手/双手参与;重叠校验、撤销移除、未保存修改提示覆盖常用操作。
  • QC 展示各维度有效率与缺失时段,点击即可进入回放;导出预估与最终导出共用有效区间计算,参与手臂写入 episode 元数据。
  • 使用 Anthropic frontend-design 和 Vercel Web Interface Guidelines 作为设计与交互检查参考;网页运行不依赖这些技能或外部 CDN。

设备热插拔与扫描

实时采集页展开“设备连接与端口”,扫描后选择 RGB 视频端口、编码器串口/波特率/左右手通道,再应用选择。可以保留原来的 ROS 输入;录制期间允许扫描,停止录制后才能换绑。

  • 设备可在服务启动时缺席。USB 相机/串口断开或持续无数据时自动重试;收到有效数据后清除对应故障,不清除其他设备与录制错误。
  • 优先使用 by-id 稳定设备标识,没有时使用 by-path 插口标识,重连重新解析实际节点。没有稳定标识的设备变号后可重新扫描选择,不猜测左右设备。
  • 选择保存在 outputs/aruco-capture/_devices.json,重启后保留;不修改 Git 配置模板。普通 RGB 与串口缺失时段继续计入 QC,不补造数据。
  • Docker 已配置动态设备目录及视频/USB 串口/ACM 权限,无需为新设备重建容器。Insight9 仍依赖原 ROS/VIO 驱动;VIO 中断超过 2 秒后恢复会使当前录制的后续位姿无效,需要新建录制。

启动

在目标 Ubuntu 主机获取该分支后执行:

docker compose -f deploy/aruco/compose.yml up --build -d

浏览器访问 http://localhost:8770。唯一配置入口为 config/devices/x86-aruco/capture.json。不切换原 Dashboard 的 live profile。

完整部署、配置和数据语义说明

数据边界

  • 每次录制以第一帧可同步 RGB 对应的 Insight9 IMU 位姿为参考,双臂共用;VIO 自身仍可能累计漂移。
  • 图像时刻严格插值头部 VIO;单面多解使用重投影及时间先验选择,遮挡、跳变或缺少定位时标为无效。
  • 附加 RGB 与串口使用主机接收时间最近邻同步,硬件到位后须实测延迟;不是硬件同步保证。
  • 原始图像、VIO、TCP 和编码器数值保存在一个 SQLite 中。QC 分母包含缺失时段,图像和位姿不重复计数。
  • 仅导出人工标注范围内全部必需维度有效的连续片段;下一帧绝对状态作为 action,不跨缺失帧或任务边界。

验证与部署状态

  • 13 项针对性测试通过,包含移动头部补偿、单面定位、缺帧、重复采样、停录排空、色彩和磁盘失败。
  • 合成 ROS + 伪终端串口完成录制、标注、QC、导出和正常停机;Chromium 实际操作流程通过,无页面脚本错误。
  • 官方 LeRobot 0.4.4 逐帧读取两片段、三视频测试数据通过;最终镜像生成的 66 帧、两片段数据也完成跨片段读取。
  • 最终精简镜像 ARM64 构建约 507 MB,CycloneDDS 端到端合成测试整体有效率 96.3%;这不是物理定位精度或现场采集性能结论。
  • 已部署到 muniu(Ubuntu 22.04、x86_64),源码位于 ~/workspaces/insight-capture-dashboard-x86-aruco。主机没有 Compose/Buildx,使用文档中的 Docker 直接构建和运行方式;容器名 insight-aruco-capture,端口 8770,自动重启策略 unless-stopped。
  • x86 镜像约 553 MB;在目标主机完成合成 ROS + 伪终端串口全流程,导出 70 帧、1 个片段,完整有效帧占比 98.8%。局域网 Chromium 页面 HTTP 200,无脚本错误;服务无重启。
  • 正式服务检查时尚未收到相机、VIO 数据,内参/外参尚未就绪;普通 RGB 和编码器规格仍待确定。以上是合成链路和页面验证,尚未验证真实设备采集或物理定位精度。临时验证容器已清理。

2026-09-08 工作台验证

  • 9 项后端测试通过,覆盖既有采集导出和新增回放有效标志、缺失区间、导出预估、参与手臂、实时状态与轨迹参考系重置。
  • Chromium 完整操作:3D 几何与视角、无效帧隐藏 TCP、回放/逐帧、片段编辑、未保存离开保护、质量跳转、导出及手机宽度布局通过;合成录制导出 154 帧、3 个片段,与预估一致,无页面脚本错误。
  • muniu 已更新为 insight-aruco-capture:aad6c52,amd64 镜像约 554 MB;目标主机合成 ROS/串口链路导出 70 帧,完整有效率 98.8%。正式容器运行且无重启;当时未收到真实设备数据,物理定位与真实硬件采集尚未验收。
  • 最终 muniu 局域网 Chromium 验收通过:3D 引擎、全屏进入/退出、三工作区导航及 390 px 布局正常,无脚本错误,无外部资源请求。

2026-09-08 热插拔验证与部署

  • muniu x86 上 13 项测试通过:缺席启动、真实伪终端分片串口数据、断线与设备变号恢复、相机子进程恢复、故障隔离、绑定持久化与录制保护。相机拔插使用模拟视频源,未执行物理 USB 拔插。
  • 真正 ROS 消息与伪终端串口验证在线换绑后恢复,导出 70 帧;VIO 长中断保护通过。浏览器扫描、保留未应用选择、保存/恢复绑定、故障清除及手机布局通过。
  • muniu 正式镜像为 insight-aruco-capture:f8373b8。设备查询返回 4 个视频采集端口、0 个串口;内置摄像头成功读取 46,584 字节 JPEG。Insight USB 端口可枚举但单帧试读超时,不能把端口存在当作实际数据就绪。