完善 Autocal 多测点标定流程及会话复核

统一测点坐标、保持窗口和试验目录,补齐逐点初步分析。定向测试与真实视频闭环通过;两项轮询失败在修改前版本同样复现。
This commit is contained in:
ykcheungab
2026-10-11 17:43:16 +08:00
parent 7828bc1fe9
commit 04adf17f60
17 changed files with 1347 additions and 403 deletions
+72 -20
View File
@@ -271,25 +271,24 @@
"uv": "U / V (px)",
"position": "Mesh position",
"levels": "Load levels (N)",
"hold": "Planned hold",
"hold_tip": "The planned hold time is saved; levels and recording do not advance automatically.",
"hold": "Hold per level",
"hold_tip": "Count down after arrival confirmation. End the hold window and prompt the next level; video continues. Time alone does not verify stability.",
"reference": "Manual reference force (N)",
"start": "Record this site",
"start_tip": "Create one trial folder for this site and continuously record images and sensor output. This does not move the platform. One load-unload cycle uses this folder.",
"confirm": "Mark load reached",
"confirm_tip": "After reaching the target and entering the manual reference force, mark this level's start and begin its hold timer. Images are already recording.",
"finish": "Stop and complete",
"finish_tip": "After all levels are marked, stop recording, flush the files, and check this trial.",
"abort": "Abort this recording",
"abort_tip": "Stop recording, keep this folder, and mark it incomplete. Starting again creates a new folder; it does not resume this one.",
"start": "Start this trial",
"start_tip": "Create a trial in this calibration session. Record initial zero, loading, unloading and recovery continuously; no platform motion is issued.",
"confirm": "Target reached: start hold",
"confirm_tip": "Reach the current target and enter the actual reference load. Keep the load unchanged until the countdown ends.",
"finish": "Complete this trial",
"finish_tip": "After initial zero and every loading/unloading hold, stop recording, check and save the trial.",
"abort": "End early (keep incomplete data)",
"abort_tip": "End this trial immediately and keep its incomplete data. A retry creates a new trial in the same calibration session.",
"load": "Load",
"unload": "Unload",
"next_step": "Next: {branch} to {load:g} N",
"before_start": "Select a site and start the input, then begin recording",
"ready_to_finish": "All levels marked; recording can be stopped",
"next_step": "{branch} to {load:g} N; enter actual reference load and start hold",
"before_start": "Select a site and start input, then start the trial with initial zero",
"ready_to_finish": "All hold windows complete; complete this trial",
"no_step": "No step pending",
"progress": "Progress {done}/{total} · {status}",
"held": " · Current level held {seconds:.1f} s",
"source_state": "Input: {status} · frame {frame} · capture drops {dropped}",
"replay_note": "Video replay is for debugging; manual reference loads cannot be synced to the original experiment.",
"idle": "Idle",
@@ -303,7 +302,17 @@
"invalid_site": "Select a valid UV site first",
"start_input": "Start camera or video input first",
"reference_required": "Enter the actual reference load",
"output_required": "Choose an output directory"
"output_required": "Choose an output directory",
"zero": "Initial zero",
"holding": "Hold {branch} {load:g} N · {seconds:.1f} s remaining; do not change load",
"close_session": "Finish calibration session",
"close_session_tip": "Close the session containing multiple sites and trial attempts. Incomplete trials keep the session incomplete. The next trial creates a new session.",
"session_none": "No calibration session yet; the first trial creates it.",
"session_active": "Calibration session: {sites} sites · {trials} attempts\n{path}",
"session_closed": "Calibration session closed ({status}): {path}",
"close_before_mapping": "Finish the calibration session before changing UV mapping or bundle",
"path": "Trial path (N): {path}",
"invalid_levels": "Enter strictly increasing levels greater than 0 and at most 30 N"
},
"finger": {
"title": "Finger calibration-point debug",
@@ -362,13 +371,28 @@
"preview_no_gl": "No OpenGL context: {error}",
"preview_draw_failed": "Drawing failed: {error}",
"preview_solve_failed": "Solve failed: {error}",
"col_x": "x", "col_y": "y", "col_z": "z",
"col_nx": "nx", "col_ny": "ny", "col_nz": "nz",
"col_X": "X", "col_Y": "Y", "col_Z": "Z",
"col_yaw": "yaw", "col_pitch": "pitch", "col_residual": "residual(°)",
"col_x": "x",
"col_y": "y",
"col_z": "z",
"col_nx": "nx",
"col_ny": "ny",
"col_nz": "nz",
"col_X": "X",
"col_Y": "Y",
"col_Z": "Z",
"col_yaw": "yaw",
"col_pitch": "pitch",
"col_residual": "residual(°)",
"loaded": "Bundle loaded: {vertices} vertices · {triangles} triangles · {extent} mm · {scale} mm per unit",
"load_failed": "Load failed: {error}",
"picked": "Picked: residual {residual}° · yaw {yaw}° · pitch {pitch}°"
"picked": "Picked: residual {residual}° · yaw {yaw}° · pitch {pitch}°",
"export_sites": "Export operator site list…",
"export_sites_tip": "Export all points in displayed order, with UV pixels and sensor/platform millimetres. UV origin matches calibration.",
"export_no_points": "Pick UV sites first",
"export_edited_point": "Point {order} was edited in 3D and no longer matches its UV pixel; pick it again before exporting",
"sites_exported": "Operator site list exported: {path}",
"col_u_px": "U (px)",
"col_v_px": "V (px)"
},
"sequence": {
"title": "Test sequence design",
@@ -446,5 +470,33 @@
"bas_loaded": "BAS loaded",
"yes": "Yes",
"no": "No"
},
"review": {
"open": "Review calibration data…",
"title": "Exploratory calibration review",
"notice": "Inspection only: manual hold windows have not been verified stable. Replay does not establish original experiment timing. Fits are exploratory and never written to sensor configuration.",
"save": "Save new review",
"no_sites": "No sites in this session",
"candidate": "Candidate window",
"insufficient_samples": "Insufficient valid samples",
"replay": "Replay debug",
"unverified": "Stability unverified",
"fit": "Exploratory loading fit: sensitivity {sensitivity_raw_per_n:.6g} raw/N; gain {gain_n_per_raw:.6g} N/raw; offset {offset_n:.6g} N; fit RMSE {rmse_n:.4g} N (not independent validation error)",
"no_fit": "Insufficient load levels or raw-signal variation for a fit.",
"fit_line": "Exploratory loading fit",
"raw_axis": "Raw normal signal (raw)",
"force_axis": "Manual reference force (N)",
"chart_title": "Hold-window means: loading vs unloading",
"uv_title": "Site sensitivity: blue→red {low:.4g}→{high:.4g} raw/N; grey has no fit",
"issues": "Skipped {count} incomplete trials; complete holds still require stability review.",
"saved": "Saved new review: {path}",
"col_trial": "Trial",
"col_branch": "Phase",
"col_load": "Reference (N)",
"col_samples": "Valid samples",
"col_mean": "Raw mean",
"col_std": "Raw std",
"col_duration": "Hold (s)",
"col_quality": "Quality"
}
}