Files
orisys-app/apps/autocal/docs/implementation-plan.zh.md
T
ykcheungab dc7e290489 实现 finger 单测点手动试验采集
将精确 UV 选点、实时预览与逐档人工确认接入同一页面,并保存每次试验的视频、事件和帧采集时间。通过离线视频、页面及记录回归测试。
2026-10-11 15:55:45 +08:00

53 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Autocal finger 标定实施计划
状态:2026-10-11 修订。用途:方案。阶段一的交付为操作员手动控制完成整条标定流程;M1 已接通视频与相机编号输入,并把主机采集时间绑定到 finger 帧。单测点手动 trial 已能记录;相机实机、跨点会话与灵敏度页面尚未验收。操作与目标文件字段以[数据格式草稿](calibration-data-format.zh.md)为准。
## 阶段一目标
操作员选择 finger 测点,设定法向加载范围和档位,在已有平台手动控制界面逐步移动或人工加砝码,标记实际到档时间。系统从加载前到卸载恢复持续记录图像、参考载荷、平台反馈和事件;结束后按测点计算灵敏度,展示曲线与空间分布,并能重新打开会话复核。阶段一不自动遍历测点或按载荷闭环运动。“自动执行”只作为以后可替换的动作来源,不改变记录和分析链。
| 边界 | 阶段一选择 |
|---|---|
| 传感器与坐标 | 仅 finger;UV pixel 与 mesh mm 同存,保存几何版本和测点姿态 |
| 加载 | 目标范围暂定 0–30 N;操作员确认档位并手动控制,加载与卸载保持同一 trial;不把范围当设备动作许可 |
| 参考 | 先用人工砝码/人工确认的有效时段跑通;ECAT 或 FT 有可用接口时接入同一时间与参考数据契约 |
| 视频 | 先用已有视频调试 `FingerAcquisitionWorker`;正式采集由相机进入同一 `SdkPacket`、记录和分析路径;每 trial 保存独立视频 |
| 结果 | 每个测点的参考力—原始法向信号曲线、拟合系数、有效点数、误差和加载/卸载差异;在 UV 测点图上着色,可切换测点看曲线 |
## 时间与来源契约
实时相机在电脑收到新帧时记录高精度单调时钟,时间戳须与**该帧身份**一起传递;`frames.csv` 记录采集时间,不用处理完成时间或配置帧率推算时间。另存 UTC 墙钟供外部追溯,时长和同进程流对齐用单调时钟。ECAT/FT 采样在电脑收到对应样本时使用相同时间基准,记录来源、采样序号、有效性及可测得的通信延迟。低延迟是待验证条件,不能省略时间戳或默认各流无偏移。
`orisys-sdk` 0.5.4 的 `CaptureSource.read_raw_stamped`/`read_latest_stamped` 现将图像、源帧编号、主机单调与 UTC 时钟一并返回;shared finger worker 将这些字段写入 `SdkPacket`,并区分 `host_camera` 与 `host_replay`。自定义运行时若没有带时间的读取接口则仅标 `host_fallback`,不能把该时间当成已验证的采集时刻。文件视频的主机时间是**本次解码时间**;媒体时间另存,不能凭配置帧率伪造原实验时间,也不能与原实验的 FT/运动流做物理同步。相机输入只经过模拟验证,仍需实机检查驱动延迟、丢帧与时钟对应。
## 复用边界与实施顺序
| 包 | 交付与验收 | 主要所有者 | 人时 |
|---|---|---|---:|
| M1 采集与时钟 | 视频/相机同一 finger worker;帧身份与电脑采集时间配对,来源和掉帧可见;针对两种输入测试 | SDK capture、shared acquisition | 8–12 |
| M2 会话记录 | `session/site/trial/step`、基准、每 trial 视频、帧/参考/事件索引;失败保留 incomplete,可重新打开 | Autocal 控制;shared record 仅提取真正共用的写入能力 | 12–18 |
| M3 手动操作 | 选点、设范围/档位、预览、开始、到档确认、卸载、结束/中止;沿用已有手动运动入口 | Autocal UI 与 motion | 10–14 |
| M4 灵敏度与图表 | 从有效保持窗口取原始法向信号和参考力,逐测点拟合;展示曲线、空间图、误差和滞后 | Autocal analysis/UI;优先复用 shared 的标定准备及拟合逻辑 | 8–12 |
| M5 集成验收 | 合成会话、旧消费者回归、视频重放、真实设备手动试验及操作指南核对 | 主代理集成 | 6–10 |
| 合计 | 可手动完成一次多点标定并复核结果 | 见下文 | 44–66 |
M1 的视频与相机输入现共用带时间的数据包;M2 记录器与 M3 手动 UI 可在接口固定后并行。M4 可先用合成 session 开发,但阶段一只有在真实记录上重新打开并计算逐测点结果才算完成。Studio 的 `SessionController`、widget 和 `RecordingCoordinator` 保留在 Studio;Autocal 直接复用 shared `FingerAcquisitionWorker`、`SdkPacket` 和 sink,不跨应用导入私有模块。只有出现两端实际共用的逻辑时才移到 shared;SDK 不依赖 UI。
界面复核:原先测点、计划和输入分散在“手指调试”“测试序列”“传感器”页。现在“标定采集”页串起单次 trial;全局“运行”按钮尚未负责标定,页面内有独立的“开始记录”。
已实现的最小闭环在“标定采集”页:点击 UV 图粗选、以 U/V 整数像素精确修改、切换到实时二维 UV 图像,逐档填写实际参考力并确认。每个 trial 单独使用 shared `ExperimentRecorder` 生成目录、视频、帧索引、力数据和事件;`frames.csv` 附加主机采集时间及来源帧编号。当前人工参考只记录到档事件,尚无可自动判定的稳定窗口;未实现 FT 同步、跨点 session 汇总、灵敏度拟合和实体相机验收。手动 Z 控制仍使用既有设备界面,专用弹窗需先确定操作边界。
主代理负责接口、M3 和集成;一名子代理负责 M1/M2,另一名负责 M4 与合成会话验证。建议总计主代理加两名子代理,约 4–6 个工程工作日并留设备联调时间;单人约 6–9 日。估算不包括设备、FT 协议或硬件等待。当前计划不启动子代理。
## 阶段一验收和后续
| 检查 | 通过条件 |
|---|---|
| 操作闭环 | 操作员对至少两个 finger 测点完成选择、设档、手动加载/卸载、记录、结束;每点至少两个 trial |
| 时间与数据 | 每帧、参考样本和事件可按电脑采集时间关联;原始输入与 trial 输出可区分;缺失或失同步显式标记 |
| 分析与呈现 | 每点可见参考力—原始信号曲线、灵敏度和有效性;加载/卸载分别展示,跨点差异在 UV 图可见 |
| 恢复与故障 | 全新进程重开会话可复核结果;中断、写盘失败及无效参考不显示成有效系数 |
| 硬件 | 实际运动只在确认设备、行程/载荷边界及停机条件后执行,软件离线通过不等于实机通过 |
阶段二再增加自动测点遍历或自动加载:它们复用阶段一的 trial、事件、采集和分析接口,只替换人工动作及到档确认来源。FT/ECAT 自动参考接入可按设备可用性单独排期;测量延迟与钟偏通过实测确认。剪切、复杂空间模型和实时部署不属于阶段一。