重构 Autocal 采集页:单一队列与控制器驱动的主按钮

选点、对准、加载与录像分散在两个面板,状态靠隐藏相位判断。现改由不依赖 Qt 的采集控制器驱动,并加入录像选项、汇总平铺副本、保持到时自动结束、会话结束回到空闲,以及无设备时的模拟采集。已运行 Autocal 非 Qt 测试并通过范围内门禁;界面测试待 Windows 复核,未做实机验收。
This commit is contained in:
ykcheungab
2026-10-18 16:04:32 +08:00
parent 85d0b396e3
commit 06e06126ca
44 changed files with 7769 additions and 2218 deletions
+18 -1
View File
@@ -236,7 +236,8 @@ measured time per point.
**Gate:** the operator has seen the path and a dry run has completed without a
guard violation.
**The single-point dry run is built**, in the finger debug screen: 执行动作 sends the
**The single-point dry run is built**, in the geometry & mounting screen (几何与安装,
which no longer carries a point table): 执行动作 sends the
selected point's *solved pose* to the platform — the stages together with the table
X/Y, and the press axis only once its zero is calibrated (设备设置 → 压轴); until then
it is held, so the move cannot reach the sensor by accident. The order follows the
@@ -282,6 +283,22 @@ data stays valid.
**Existing code:** the motion layer has the guards and the poller; the step
machine, the contact detection and the acquisition binding are new.
**As built today** (manual, through the capture page): the operator keeps one
queue of points — a single point is a queue with one row. `Ready` must be all
green before the first point. The page shows one primary button whose label is
the next step (align → start → at the target → hold finished → confirm liftoff →
finish) and states the reason whenever it is disabled. Alignment only requests a
guarded pose move, and a capture may not start until that move has completed, so
a repeat can never be recorded on a pose nobody confirmed. Remeasure, skip and
stop are the secondary actions. What the button says is derived from the campaign
state by `capture_controller.py`, never by the widgets.
Changing the mounting offset, the tool XY or the travel limits re-solves every
queued pose: while the queue is still editable the new solution is stored, and a
point the stage can no longer reach is marked and refused for alignment. The
exported operation table comes from the same queue (queue → 导出测点操作表…), so
the table and the run cannot describe different points.
---
## P8 — Store raw