完善五轴 RTCP 仿真与验证资料
This commit is contained in:
@@ -333,14 +333,14 @@ promotionAllowed=false
|
||||
## 9. 当前状态
|
||||
|
||||
```text
|
||||
status=M22_host_native_boundary_visibility_complete
|
||||
status=M24_xyzbc_trt_kinematics_parity_complete
|
||||
active_style=gmoccapy_5_axis
|
||||
frontend_framework=none
|
||||
ui_stack=html_css_typescript_es_modules
|
||||
preview_stack=threejs
|
||||
semantic_boundary=linuxcnc_owned
|
||||
latest_batch=M22-host-native-boundary-visibility
|
||||
latest_gate=host_native_boundary_ui=ok,hardware_drive_false_visible=1,host_realtime_false_visible=1,external_user_m_false_visible=1,tool_db_false_visible=1,threejs_program_preview_mode=program-preview-and-tool-execution,threejs_preview_source=linuxcnc-interpreter-wasm_or_linuxcnc-machine-file-remap-wasm,threejs_toolpath_preview_source=linuxcnc_interpreter_canonical_motion,threejs_tool_execution_trace_source=linuxcnc_tp_samples_or_task_motion_hal_feedback,threejs_path_fit_bounds=ok,threejs_current_segment_highlight=ok,threejs_rapid_feed_visual_distinction=ok,threejs_no_gcode_semantics_generation=ok,threejs_canvas_nonblank_desktop=ok,threejs_canvas_nonblank_mobile=ok,opfs_unavailable_detected=1,opfs_fallback_current_page_lifecycle_only=1,non_opfs_workflows_still_pass=1,public_http_smoke_no_uncaught_exception=1,real_linuxcnc_5axis_program_cases_smoke=ok,native_task_hal_source_artifact_audit=ok,task_hal_web_simulation_boundary_consistent=1,full_execution_boundary_smoke=ok,linuxcnc_kinematics_runtime_smoke=ok,linuxcnc_interpreter_runtime_smoke=ok,linuxcnc_ini_runtime_smoke=ok,full_linuxcnc_5axis_source_node_smoke=ok,machine_file_staging_smoke=ok,five_axis_session_smoke=ok,profile_boundary_smoke=ok,rtcp_store_smoke=ok,gmoccapy_shell_smoke=ok,gmoccapy_dist_smoke=ok
|
||||
latest_batch=M24-xyzbc-trt-kinematics-parity
|
||||
latest_gate=xyzac_trt_kinematics_runtime=ok,xyzbc_trt_kinematics_runtime=ok,xyzbc_b_axis_tcp_pose_preserved=1,tool_db_web_simulation_smoke=ok,staged_tool_tbl_loaded=1,tool_db_query_edit_save=1,tool_db_t_m6_g43_state=1,tool_db_memory_fallback_save=1,host_tool_db_process=0,tool_db_user_m_simulation_smoke=ok,tool_db_process_ready_web_simulation_only=1,external_user_m_process_ready_web_simulation_only=1,arbitrary_user_m_blocked=1,host_process_execution=0,host_native_boundary_ui=ok,hardware_drive_false_visible=1,host_realtime_false_visible=1,host_external_user_m_false_visible=1,host_tool_db_false_visible=1,threejs_program_preview_mode=program-preview-and-tool-execution,threejs_preview_source=linuxcnc-interpreter-wasm_or_linuxcnc-machine-file-remap-wasm,threejs_toolpath_preview_source=linuxcnc_interpreter_canonical_motion,threejs_tool_execution_trace_source=linuxcnc_tp_samples_or_task_motion_hal_feedback,threejs_path_fit_bounds=ok,threejs_current_segment_highlight=ok,threejs_rapid_feed_visual_distinction=ok,threejs_no_gcode_semantics_generation=ok,threejs_canvas_nonblank_desktop=ok,threejs_canvas_nonblank_mobile=ok,opfs_unavailable_detected=1,opfs_fallback_current_page_lifecycle_only=1,non_opfs_workflows_still_pass=1,public_http_smoke_no_uncaught_exception=1,real_linuxcnc_5axis_program_cases_smoke=ok,native_task_hal_source_artifact_audit=ok,task_hal_web_simulation_boundary_consistent=1,full_execution_boundary_smoke=ok,linuxcnc_kinematics_runtime_smoke=ok,linuxcnc_interpreter_runtime_smoke=ok,linuxcnc_ini_runtime_smoke=ok,full_linuxcnc_5axis_source_node_smoke=ok,machine_file_staging_smoke=ok,five_axis_session_smoke=ok,profile_boundary_smoke=ok,rtcp_store_smoke=ok,gmoccapy_shell_smoke=ok,gmoccapy_dist_smoke=ok
|
||||
rtcp_ui_state=implemented_browser_worker_and_node_kinematics_wasm_frame_with_fixture_fallback
|
||||
control_wiring=power_estop_reset_auto_manual_jog_mdi_run_stop_pause_step_overrides_coolant_spindle_preview_home_reload_full
|
||||
gcode_loading=implemented_browser_file_text_staging_with_linuxcnc_interpreter_execution
|
||||
@@ -355,7 +355,7 @@ pyvcp_hal_schema=implemented_xyzac_trt_switchkins
|
||||
linuxcnc_boundary_adapter=kinematics_and_interpreter_runtime_connected_remap_planner_missing
|
||||
full_execution_boundary=implemented_machine_file_remap_ready_with_planner_task_hal_blockers
|
||||
host_native_boundary_visibility=implemented_ui_and_browser_smoke_guard_for_hardware_realtime_external_user_m_tool_db_false
|
||||
linuxcnc_kinematics_wasm=browser_and_node_proof_ready_xyzac_trt
|
||||
linuxcnc_kinematics_wasm=browser_and_node_proof_ready_xyzac_trt_and_node_direct_xyzbc_trt_b_axis_tcp_pose
|
||||
browser_kinematics_wasm=worker_connected_source_and_dist_xyzac_trt
|
||||
linuxcnc_interpreter_wasm=browser_worker_and_node_direct_canonical_program_execution_ready_with_switchkins_mcode_preservation
|
||||
browser_interpreter_wasm=worker_connected_source_and_dist
|
||||
@@ -368,6 +368,7 @@ planner_task_hal_gap=closed_for_web_simulation_boundary_with_task_motion_hal_was
|
||||
native_task_hal_sync_plan=docs_native_task_hal_sync_implementation_steps_ready
|
||||
native_task_hal_phase0_8=source_manifest_native_probe_hal_runtime_motion_hal_sync_task_shim_sdk_machine_file_store_ui_full_boundary_smokes_ready_and_m18_readiness_artifact_audited
|
||||
native_task_hal_readiness_artifact=web-rtcp-5axis-sim-plan/build/readiness/native-task-hal-readiness.json
|
||||
tool_db_user_m_web_simulation=ready_for_staged_tool_tbl_and_whitelisted_user_m
|
||||
next_batch=none_from_development_continuation
|
||||
```
|
||||
|
||||
@@ -379,7 +380,7 @@ next_batch=none_from_development_continuation
|
||||
- Phase 3 minimal motion/HAL C ABI 已覆盖 servo cycle、program-line、switchkins、jog/status HAL 同步;
|
||||
- Phase 4 minimal task/HAL C ABI 已覆盖 `lctask_*` session/stage/open/command/cycle/status/events,RUN/MDI/JOG/PAUSE/RESUME/ABORT 能从 task shim 驱动 motion/HAL runtime,并已补 SDK wrapper;
|
||||
- Phase 5-8 已把 machine-file session、task/HAL runtime adapter、Worker/client 文件、store action mapping、gmoccapy diagnostics 和 full boundary gate 接上;
|
||||
- `nativeTaskReady=true`、`nativeHalSyncReady=true` 当前只表示 Web simulation boundary 内的 task/motion/HAL WASM runtime proof;仍保持 `hardwareDrive=false`、`hostRealtimeKernel=false`、`externalUserMProcessReady=false`、`toolDbProcessReady=false`。
|
||||
- `nativeTaskReady=true`、`nativeHalSyncReady=true` 当前只表示 Web simulation boundary 内的 task/motion/HAL WASM runtime proof;`toolDbProcessReady=true` 和 `externalUserMProcessReady=true` 也只表示 Web simulation boundary 内的 staged `tool.tbl` 与白名单 user-M 仿真;仍保持 `hardwareDrive=false`、`hostRealtimeKernel=false`、`hostExternalUserMProcessReady=false`、`hostToolDbProcessReady=false`、`arbitraryUserMExecution=false`。
|
||||
|
||||
补充实施文档:
|
||||
|
||||
@@ -447,10 +448,13 @@ linuxcnc_source_program_case_coverage=ready_node_and_browser_guarded
|
||||
nativeTaskReady=web_simulation_boundary_only
|
||||
nativeHalSyncReady=web_simulation_boundary_only
|
||||
opfs_degradation=ready_memory_fallback_current_page_lifecycle_only
|
||||
toolDbProcessReady=true for web_simulation_only
|
||||
externalUserMProcessReady=true for web_simulation_only
|
||||
hardwareDrive=false
|
||||
hostRealtimeKernel=false
|
||||
externalUserMProcessReady=false
|
||||
toolDbProcessReady=false
|
||||
hostExternalUserMProcessReady=false
|
||||
hostToolDbProcessReady=false
|
||||
arbitraryUserMExecution=false
|
||||
```
|
||||
|
||||
已通过的当前 gate:
|
||||
@@ -524,7 +528,7 @@ threejs_generated_toolpath_semantics=forbidden
|
||||
1. 不用 Web 侧自定义状态机替代 LinuxCNC task/HAL/motion 语义。
|
||||
2. 不把 browser simulation boundary 扩大描述为真实硬件 runtime。
|
||||
3. `nativeTaskReady=true`、`nativeHalSyncReady=true` 只允许在 Web simulation boundary 内成立,除非另有 host-native 对照和 WASM 比对 artifact。
|
||||
4. `hardwareDrive=false`、`hostRealtimeKernel=false`、`externalUserMProcessReady=false`、`toolDbProcessReady=false` 必须继续明确展示。
|
||||
4. `hardwareDrive=false`、`hostRealtimeKernel=false`、`hostExternalUserMProcessReady=false`、`hostToolDbProcessReady=false`、`arbitraryUserMExecution=false` 必须继续明确展示;`externalUserMProcessReady=true`、`toolDbProcessReady=true` 只能附带 `web_simulation_only`。
|
||||
5. 不修改用户个人备忘文件;本项目接续只写 `docs/development-continuation.md` 和必要工程文档。
|
||||
|
||||
### 16.4 下一批直接执行任务
|
||||
@@ -569,8 +573,10 @@ task_hal_web_simulation_boundary_consistent=1
|
||||
native_task_hal_host_probe_status=passed_or_ready_disabled_by_default_or_skipped_missing_host_runtime
|
||||
hardware_drive=0
|
||||
host_realtime_kernel=0
|
||||
external_user_m_process_ready=0
|
||||
tool_db_process_ready=0
|
||||
external_user_m_process_ready=1
|
||||
tool_db_process_ready=1
|
||||
host_external_user_m_process_ready=0
|
||||
host_tool_db_process_ready=0
|
||||
promotion_scope=web_simulation_only
|
||||
```
|
||||
|
||||
@@ -580,7 +586,7 @@ promotion_scope=web_simulation_only
|
||||
- 新增 `tests/node/verify_native_task_hal_audit.mjs`,默认运行 `wasm-port/tests/native/verify_task_hal_phase0.sh` 刷新 source/probe 证据;
|
||||
- 生成机器可读 artifact `build/readiness/native-task-hal-readiness.json`;
|
||||
- `npm run smoke:node` 已接入该 gate;
|
||||
- 明确区分 `webSimulation.promoted=true` 与 `nativeHostAndHardware.hardwareDrive=false`、`hostRealtimeKernel=false`、`externalUserMProcessReady=false`、`toolDbProcessReady=false`。
|
||||
- 明确区分 `webSimulation.promoted=true`、`toolUserWebSimulation.externalUserMProcessReady=true`、`toolUserWebSimulation.toolDbProcessReady=true` 与 `nativeHostAndHardware.hardwareDrive=false`、`hostRealtimeKernel=false`、`externalUserMProcessReady=false`、`toolDbProcessReady=false`。
|
||||
|
||||
当前 M18 gate:
|
||||
|
||||
@@ -590,8 +596,10 @@ task_hal_web_simulation_boundary_consistent=1
|
||||
native_task_hal_host_probe_status=ready_disabled_by_default
|
||||
hardware_drive=0
|
||||
host_realtime_kernel=0
|
||||
external_user_m_process_ready=0
|
||||
tool_db_process_ready=0
|
||||
external_user_m_process_ready=1
|
||||
tool_db_process_ready=1
|
||||
host_external_user_m_process_ready=0
|
||||
host_tool_db_process_ready=0
|
||||
promotion_scope=web_simulation_only
|
||||
```
|
||||
|
||||
@@ -793,14 +801,14 @@ completed_with_host_native_boundary_ui_smoke
|
||||
目标:
|
||||
|
||||
- 在 Web simulation boundary 已 promoted 时,继续明确展示非浏览器仿真范围;
|
||||
- UI diagnostics 必须显示 `hardwareDrive=false`、`hostRealtimeKernel=false`、`externalUserMProcessReady=false`、`toolDbProcessReady=false`;
|
||||
- UI diagnostics 必须显示 `hardwareDrive=false`、`hostRealtimeKernel=false`、`externalUserMProcessReady=true for web_simulation_only`、`toolDbProcessReady=true for web_simulation_only`、`hostExternalUserMProcessReady=false`、`hostToolDbProcessReady=false`、`arbitraryUserMExecution=false`;
|
||||
- browser smoke 同时验证 state 字段和 DOM 文本,避免把 Web simulation promoted 误读为真实硬件、host realtime、外部 user-M 或 tool DB runtime ready。
|
||||
|
||||
已完成:
|
||||
|
||||
- gmoccapy info tabs 新增 `Host/native` 诊断行;
|
||||
- `Host/native` 显示 hardware drive、host realtime、external user-M、tool DB 四项 false 状态;
|
||||
- browser smoke 在 task/HAL full simulation boundary promoted 后验证四项 state 和 DOM 可见性。
|
||||
- `Host/native` 显示 hardware drive、host realtime、Web tool/user 仿真 only、host external user-M、host tool DB、arbitrary user-M 状态;
|
||||
- browser smoke 在 task/HAL full simulation boundary promoted 后验证 Web tool/user ready 与 host/native false 的 state 和 DOM 可见性。
|
||||
|
||||
当前 M22 gate:
|
||||
|
||||
@@ -808,11 +816,120 @@ completed_with_host_native_boundary_ui_smoke
|
||||
host_native_boundary_ui=ok
|
||||
hardware_drive_false_visible=1
|
||||
host_realtime_false_visible=1
|
||||
external_user_m_false_visible=1
|
||||
tool_db_false_visible=1
|
||||
external_user_m_web_simulation_only_visible=1
|
||||
tool_db_web_simulation_only_visible=1
|
||||
host_external_user_m_false_visible=1
|
||||
host_tool_db_false_visible=1
|
||||
arbitrary_user_m_false_visible=1
|
||||
```
|
||||
|
||||
### 16.9 每轮必须执行的回归
|
||||
### 16.9 M23:受控 tool DB / user-M Web 仿真
|
||||
|
||||
```text
|
||||
M23-controlled-tool-db-user-m-web-simulation
|
||||
```
|
||||
|
||||
状态:
|
||||
|
||||
```text
|
||||
completed_with_linuxcnc_tooldb_index_spindle_semantics
|
||||
```
|
||||
|
||||
目标:
|
||||
|
||||
- 对标 LinuxCNC `taskclass.cc`、`tooldata/*`、TRT remap subroutines 和受控 user-M 用法;
|
||||
- 读取 staged `tool.tbl`,在 Web storage 中支持 OPFS/memory fallback 保存;
|
||||
- 支持刀具号、刀长、刀径、刀袋的查询/编辑/保存;
|
||||
- 接入 `Tn/M6/G43/M61` 仿真状态;
|
||||
- 只允许白名单 `M128/M129/M428/M429/M430`,不执行任意系统脚本;
|
||||
- UI 显示 `toolDbProcessReady=true for web_simulation_only` 和 `externalUserMProcessReady=true for web_simulation_only`。
|
||||
|
||||
已完成:
|
||||
|
||||
- 新增 `app/src/runtime/tool-db-simulation.js`;
|
||||
- 新增 `app/src/runtime/controlled-user-m-simulation.js`;
|
||||
- `tool-db-simulation.js` 按 LinuxCNC `CANON_TOOL_TABLE` 字段建模,保留非随机刀库的真实 `pocketno`,同时用内部 `idx=1..n` 表示 tool table 行,`idx=0` 固定为 spindle pocket;
|
||||
- `Tn/M6/G43/M61` 按 `tooldata_find_index_for_tool()`、`Task::load_tool()`、`Task::read_tool_inputs()` 和 `convert_tool_length_offset()` 语义更新 `tool_prep_*`、`toolInSpindle`、`toolFromPocket`、`activeToolOffset` 与 #5400/#5401-#5413 参数;
|
||||
- store 和浏览器入口暴露 `queryToolDb()`、`editToolDb()`、`saveToolDb()`,支持 staged `tool.tbl` 查询、编辑和 OPFS/memory fallback 保存;
|
||||
- store 在 machine-file staging 后自动解析 profile 的 staged `tool.tbl`;
|
||||
- store 在加载 LinuxCNC source program 时扫描 tool commands 和受控 user-M 事件;
|
||||
- full boundary 把 tool DB/user-M 纳入 Web promotion gate,同时保留 host/native false;
|
||||
- gmoccapy info tabs 新增 `Tool/User process` 诊断;
|
||||
- 新增 `tests/node/verify_tool_db_web_simulation.mjs` 与 `tests/node/verify_tool_db_user_m_simulation.mjs` 并接入 `smoke:node`。
|
||||
|
||||
当前 M23 gate:
|
||||
|
||||
```text
|
||||
tool_db_web_simulation_smoke=ok
|
||||
staged_tool_tbl_loaded=1
|
||||
tool_db_query_edit_save=1
|
||||
tool_db_t_m6_g43_state=1
|
||||
tool_db_memory_fallback_save=1
|
||||
host_tool_db_process=0
|
||||
tool_db_user_m_simulation_smoke=ok
|
||||
tool_db_process_ready_web_simulation_only=1
|
||||
external_user_m_process_ready_web_simulation_only=1
|
||||
arbitrary_user_m_blocked=1
|
||||
host_process_execution=0
|
||||
```
|
||||
|
||||
边界:
|
||||
|
||||
```text
|
||||
toolDbProcessReady=true for web_simulation_only
|
||||
externalUserMProcessReady=true for web_simulation_only
|
||||
hostToolDbProcessReady=false
|
||||
hostExternalUserMProcessReady=false
|
||||
arbitraryUserMExecution=false
|
||||
```
|
||||
|
||||
### 16.10 M24:XYZBC TRT kinematics parity proof
|
||||
|
||||
```text
|
||||
M24-xyzbc-trt-kinematics-parity
|
||||
```
|
||||
|
||||
状态:
|
||||
|
||||
```text
|
||||
completed_with_b_axis_tcp_pose_preserved
|
||||
```
|
||||
|
||||
目标:
|
||||
|
||||
- 对标 LinuxCNC `xyzac-trt-kins.c`、`xyzbc-trt-kins.c`、`trtfuncs.c` 和 `switchkins.c`;
|
||||
- Node direct runtime 同时证明 `linuxcnc_xyzac_trt_kinematics.wasm` 与 `linuxcnc_xyzbc_trt_kinematics.wasm`;
|
||||
- 使用 `switchkinsType=1` 验证 TCP 模式正解/逆解闭环;
|
||||
- `rtcpFrame.tcpPose` 同时保留 `a/b/c`,避免 XYZBC 的 B 轴姿态在 UI 诊断链路中丢失;
|
||||
- Three.js `data-three-tcp-pose` 输出 B 轴,方便浏览器 smoke 和人工检查。
|
||||
|
||||
已完成:
|
||||
|
||||
- `app/src/runtime/rtcp-frame.js` 的 fixture frame 和 LinuxCNC kinematics frame 均输出 `tcpPose.b`;
|
||||
- `app/src/visualization/five-axis-scene.js` 的 rounded TCP pose dataset 输出 `b`;
|
||||
- `tests/node/verify_linuxcnc_kinematics_runtime.mjs` 扩展为 XYZAC/XYZBC 双模块 runtime proof,校验 wasm 文件、switchkins type、forward/inverse rc、关节闭环、A/B/C TCP 姿态与刀轴方向;
|
||||
- `tests/node/verify_rtcp_store.mjs` 增加 XYZBC store 状态对 `tcpPose.b` 的保持校验。
|
||||
|
||||
当前 M24 gate:
|
||||
|
||||
```text
|
||||
xyzac_trt_kinematics_runtime=ok
|
||||
xyzbc_trt_kinematics_runtime=ok
|
||||
linuxcnc_kinematics_runtime_smoke=ok
|
||||
xyzbc_b_axis_tcp_pose_preserved=1
|
||||
rtcp_store_smoke=ok
|
||||
```
|
||||
|
||||
边界:
|
||||
|
||||
```text
|
||||
semanticBoundary=linuxcnc_kinematics_wasm_c_abi
|
||||
scope=node_direct_web_runtime_proof
|
||||
hardwareDrive=false
|
||||
hostRealtimeKernel=false
|
||||
```
|
||||
|
||||
### 16.11 每轮必须执行的回归
|
||||
|
||||
常规回归:
|
||||
|
||||
@@ -979,7 +1096,7 @@ completed_with_real_linuxcnc_5axis_source_program_smoke
|
||||
已完成:
|
||||
|
||||
- machine-file staging 从 LinuxCNC source manifest 中追加 TRT `demos/*.ngc`,包括 `boat-xyzac.ngc`、`boat-xyzbc.ngc`、`impeller-7bl-xyzac.ngc`、`xyzac_switchkins*.ngc`、`xyzbc_switchkins.ngc`;
|
||||
- `selectMachineFileProgram()` 强制 5 轴 G-code 必须来自 LinuxCNC 源程序目录 `configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/*.ngc`;
|
||||
- `selectMachineFileProgram()` 强制 5 轴 G-code 必须来自当前 profile 对应的 LinuxCNC 源程序目录;axis/vismach 使用 `configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/*.ngc`,gmoccapy TRT 使用 `configs/sim/gmoccapy/non_trivial_kinematics/table-rotary-tilting/examples/*.ngc`;
|
||||
- 新增 `listLinuxCncGcodeSources()` 和 `selectMachineFileProgram()`;
|
||||
- store 新增 `LOAD_LINUXCNC_GCODE_SOURCE`,可把 staged LinuxCNC 真实 5 轴 `.ngc` 源文件加载到 G-code 面板;
|
||||
- gmoccapy G-code 面板新增 LinuxCNC 5-axis source 下拉框和 staging 按钮;
|
||||
@@ -992,7 +1109,7 @@ completed_with_real_linuxcnc_5axis_source_program_smoke
|
||||
gcodeSourceBoundary=linuxcnc_vendored_5axis_gcode_source_file
|
||||
sourceMode=linuxcnc-vendored-5axis-gcode
|
||||
machineFileBackedRunProgram=selected_staged_linuxcnc_ngc_source
|
||||
sourceDirectoryGuard=configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/*.ngc only
|
||||
sourceDirectoryGuard=profile_specific_linuxcnc_demos_or_gmoccapy_examples_only
|
||||
remapRuntimeReady=true for staged fiveAxisRemap C ABI run
|
||||
plannerRuntimeReady=false
|
||||
nativeTaskReady=false
|
||||
|
||||
Reference in New Issue
Block a user