补齐 xyzbc-trt Web 路径证据
This commit is contained in:
@@ -1,18 +1,16 @@
|
||||
{
|
||||
"apiName": "xyzbc-trt-native-web-evidence-comparison",
|
||||
"status": "fail",
|
||||
"comparedAt": "2026-07-02T07:41:51.598Z",
|
||||
"comparedAt": "2026-07-02T12:48:11.244Z",
|
||||
"nativePath": "/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/native-xyzbc-trt-evidence.json",
|
||||
"webPath": "/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/web-xyzbc-trt-evidence.json",
|
||||
"summary": {
|
||||
"checkCount": 12,
|
||||
"passCount": 11,
|
||||
"failCount": 1,
|
||||
"blockers": [
|
||||
"missing-wasm-artifacts"
|
||||
],
|
||||
"checkCount": 23,
|
||||
"passCount": 18,
|
||||
"failCount": 5,
|
||||
"blockers": [],
|
||||
"nativeStatus": "ok",
|
||||
"webStatus": "blocked"
|
||||
"webStatus": "ready-for-wasm-runtime"
|
||||
},
|
||||
"checks": [
|
||||
{
|
||||
@@ -134,18 +132,9 @@
|
||||
{
|
||||
"category": "wasm",
|
||||
"requirement": "required WASM artifacts available",
|
||||
"status": "fail",
|
||||
"status": "pass",
|
||||
"evidence": {
|
||||
"missing": [
|
||||
"wasm-port/build/wasm/kinematics/linuxcnc_xyzbc_trt_kinematics.js",
|
||||
"wasm-port/build/wasm/kinematics/linuxcnc_xyzbc_trt_kinematics.wasm",
|
||||
"wasm-port/build/wasm/core/linuxcnc_interp.js",
|
||||
"wasm-port/build/wasm/core/linuxcnc_interp.wasm",
|
||||
"wasm-port/build/wasm/tp/linuxcnc_tp.js",
|
||||
"wasm-port/build/wasm/tp/linuxcnc_tp.wasm",
|
||||
"wasm-port/build/wasm/task-hal/linuxcnc_task_hal.js",
|
||||
"wasm-port/build/wasm/task-hal/linuxcnc_task_hal.wasm"
|
||||
]
|
||||
"missing": []
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -155,22 +144,525 @@
|
||||
"evidence": {
|
||||
"parameterFile": "xyzbc.var"
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "program",
|
||||
"requirement": "web boat-xyzbc demo program staged",
|
||||
"status": "pass",
|
||||
"evidence": {
|
||||
"demoPrograms": [
|
||||
{
|
||||
"filename": "xyzbc_switchkins.ngc",
|
||||
"default": true,
|
||||
"staged": true,
|
||||
"sourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc"
|
||||
},
|
||||
{
|
||||
"filename": "boat-xyzbc.ngc",
|
||||
"default": false,
|
||||
"staged": true,
|
||||
"sourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzbc.ngc"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "ngcgui",
|
||||
"requirement": "web Ngcgui/remap subroutines staged",
|
||||
"status": "pass",
|
||||
"evidence": {
|
||||
"ngcguiSubroutines": [
|
||||
{
|
||||
"filename": "xyzbc_switchkins_sub.ngc",
|
||||
"staged": true,
|
||||
"sourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/xyzbc_switchkins_sub.ngc"
|
||||
},
|
||||
{
|
||||
"filename": "centering.ngc",
|
||||
"staged": true,
|
||||
"sourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/centering.ngc"
|
||||
},
|
||||
{
|
||||
"filename": "helix_bc.ngc",
|
||||
"staged": true,
|
||||
"sourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/helix_bc.ngc"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "postgui-hal",
|
||||
"requirement": "web PyVCP to HALUI POSTGUI nets represented",
|
||||
"status": "pass",
|
||||
"evidence": {
|
||||
"halNets": [
|
||||
{
|
||||
"signal": "kinstype-select",
|
||||
"source": "motion.analog-out-03",
|
||||
"target": "motion.switchkins-type",
|
||||
"boundary": "ini-halcmd"
|
||||
},
|
||||
{
|
||||
"signal": "table-x",
|
||||
"source": "joint.0.pos-fb",
|
||||
"target": "xyzbc-trt-gui.table-x",
|
||||
"boundary": "ini-halcmd"
|
||||
},
|
||||
{
|
||||
"signal": "saddle-y",
|
||||
"source": "joint.1.pos-fb",
|
||||
"target": "xyzbc-trt-gui.saddle-y",
|
||||
"boundary": "ini-halcmd"
|
||||
},
|
||||
{
|
||||
"signal": "spindle-z",
|
||||
"source": "joint.2.pos-fb",
|
||||
"target": "xyzbc-trt-gui.spindle-z",
|
||||
"boundary": "ini-halcmd"
|
||||
},
|
||||
{
|
||||
"signal": "tilt-b",
|
||||
"source": "joint.3.pos-fb",
|
||||
"target": "xyzbc-trt-gui.tilt-b",
|
||||
"boundary": "ini-halcmd"
|
||||
},
|
||||
{
|
||||
"signal": "rotate-c",
|
||||
"source": "joint.4.pos-fb",
|
||||
"target": "xyzbc-trt-gui.rotate-c",
|
||||
"boundary": "ini-halcmd"
|
||||
},
|
||||
{
|
||||
"signal": "tool-offset",
|
||||
"source": "motion.tooloffset.z",
|
||||
"target": "xyzbc-trt-kins.tool-offset",
|
||||
"boundary": "ini-halcmd"
|
||||
},
|
||||
{
|
||||
"signal": "tool-offset",
|
||||
"source": "xyzbc-trt-kins.tool-offset",
|
||||
"target": "xyzbc-trt-gui.tool-offset",
|
||||
"boundary": "ini-halcmd"
|
||||
},
|
||||
{
|
||||
"signal": "x-offset",
|
||||
"source": "xyzbc-trt-kins.x-offset",
|
||||
"target": "xyzbc-trt-gui.x-offset",
|
||||
"boundary": "ini-halcmd"
|
||||
},
|
||||
{
|
||||
"signal": "z-offset",
|
||||
"source": "xyzbc-trt-kins.z-offset",
|
||||
"target": "xyzbc-trt-gui.z-offset",
|
||||
"boundary": "ini-halcmd"
|
||||
},
|
||||
{
|
||||
"signal": "kinstype.is-0",
|
||||
"source": "kinstype.is-0",
|
||||
"target": "pyvcp.multilabel.0.legend0",
|
||||
"boundary": "postgui-hal"
|
||||
},
|
||||
{
|
||||
"signal": "kinstype.is-1",
|
||||
"source": "kinstype.is-1",
|
||||
"target": "pyvcp.multilabel.0.legend1",
|
||||
"boundary": "postgui-hal"
|
||||
},
|
||||
{
|
||||
"signal": "kinstype.is-2",
|
||||
"source": "kinstype.is-2",
|
||||
"target": "pyvcp.multilabel.0.legend2",
|
||||
"boundary": "postgui-hal"
|
||||
},
|
||||
{
|
||||
"signal": "vismach-clear",
|
||||
"source": "pyvcp.vismach-clear",
|
||||
"target": "vismach.plotclear",
|
||||
"boundary": "postgui-hal"
|
||||
},
|
||||
{
|
||||
"signal": "type0-button",
|
||||
"source": "pyvcp.type0-button",
|
||||
"target": "halui.mdi-command-00",
|
||||
"command": "M429",
|
||||
"boundary": "postgui-hal"
|
||||
},
|
||||
{
|
||||
"signal": "type1-button",
|
||||
"source": "pyvcp.type1-button",
|
||||
"target": "halui.mdi-command-01",
|
||||
"command": "M428",
|
||||
"boundary": "postgui-hal"
|
||||
},
|
||||
{
|
||||
"signal": "type2-button",
|
||||
"source": "pyvcp.type2-button",
|
||||
"target": "halui.mdi-command-02",
|
||||
"command": "M430",
|
||||
"boundary": "postgui-hal"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "kinematics",
|
||||
"requirement": "web kinematics HAL pins represented",
|
||||
"status": "pass",
|
||||
"evidence": {
|
||||
"kinematicsPins": {
|
||||
"xOffset": -20,
|
||||
"zOffset": -15,
|
||||
"xRotPoint": 0,
|
||||
"yRotPoint": 0,
|
||||
"zRotPoint": 0,
|
||||
"conventionalDirections": 0,
|
||||
"toolOffsetSource": "motion.tooloffset.z",
|
||||
"pins": [
|
||||
"motion.switchkins-type",
|
||||
"motion.analog-out-03",
|
||||
"motion.tooloffset.z",
|
||||
"xyzbc-trt-kins.tool-offset",
|
||||
"xyzbc-trt-kins.x-offset",
|
||||
"xyzbc-trt-kins.z-offset",
|
||||
"xyzbc-trt-kins.x-rot-point",
|
||||
"xyzbc-trt-kins.y-rot-point",
|
||||
"xyzbc-trt-kins.z-rot-point",
|
||||
"xyzbc-trt-kins.conventional-directions",
|
||||
"halui.mdi-command-00",
|
||||
"halui.mdi-command-01",
|
||||
"halui.mdi-command-02"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "limits",
|
||||
"requirement": "web TRAJ/AXIS/JOINT limits represented",
|
||||
"status": "pass",
|
||||
"evidence": {
|
||||
"axisJointLimits": {
|
||||
"coordinates": "XYZBC",
|
||||
"linearUnits": "mm",
|
||||
"angularUnits": "deg",
|
||||
"jogAxes": [
|
||||
"X",
|
||||
"Y",
|
||||
"Z",
|
||||
"C"
|
||||
],
|
||||
"geometry": "XYZB",
|
||||
"traj": {
|
||||
"coordinates": "XYZBC",
|
||||
"linearUnits": "mm",
|
||||
"angularUnits": "deg",
|
||||
"defaultLinearVelocity": 20,
|
||||
"maxLinearVelocity": 35,
|
||||
"defaultLinearAcceleration": 300,
|
||||
"maxLinearAcceleration": 400
|
||||
},
|
||||
"axisLimits": {
|
||||
"X": {
|
||||
"min": -200,
|
||||
"max": 200,
|
||||
"maxVelocity": 20,
|
||||
"maxAcceleration": 300
|
||||
},
|
||||
"Y": {
|
||||
"min": -100,
|
||||
"max": 100,
|
||||
"maxVelocity": 20,
|
||||
"maxAcceleration": 300
|
||||
},
|
||||
"Z": {
|
||||
"min": -120,
|
||||
"max": 120,
|
||||
"maxVelocity": 20,
|
||||
"maxAcceleration": 300
|
||||
},
|
||||
"B": {
|
||||
"min": -36000,
|
||||
"max": 36000,
|
||||
"maxVelocity": 30,
|
||||
"maxAcceleration": 300
|
||||
},
|
||||
"C": {
|
||||
"min": -36000,
|
||||
"max": 36000,
|
||||
"maxVelocity": 30,
|
||||
"maxAcceleration": 300
|
||||
}
|
||||
},
|
||||
"jointCount": 5,
|
||||
"jointConfig": [
|
||||
{
|
||||
"id": 0,
|
||||
"axis": "X",
|
||||
"type": "LINEAR",
|
||||
"home": 0,
|
||||
"min": -200,
|
||||
"max": 200,
|
||||
"maxVelocity": 20,
|
||||
"maxAcceleration": 300,
|
||||
"homeSearchVelocity": 0,
|
||||
"homeSequence": 0
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"axis": "Y",
|
||||
"type": "LINEAR",
|
||||
"home": 0,
|
||||
"min": -100,
|
||||
"max": 100,
|
||||
"maxVelocity": 20,
|
||||
"maxAcceleration": 300,
|
||||
"homeSearchVelocity": 0,
|
||||
"homeSequence": 0
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"axis": "Z",
|
||||
"type": "LINEAR",
|
||||
"home": 0,
|
||||
"min": -120,
|
||||
"max": 120,
|
||||
"maxVelocity": 20,
|
||||
"maxAcceleration": 300,
|
||||
"homeSearchVelocity": 0,
|
||||
"homeSequence": 0
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"axis": "B",
|
||||
"type": "ANGULAR",
|
||||
"home": 0,
|
||||
"min": -100,
|
||||
"max": 50,
|
||||
"maxVelocity": 30,
|
||||
"maxAcceleration": 300,
|
||||
"homeSearchVelocity": 0,
|
||||
"homeSequence": 0
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"axis": "C",
|
||||
"type": "ANGULAR",
|
||||
"home": 0,
|
||||
"min": -36000,
|
||||
"max": 36000,
|
||||
"maxVelocity": 30,
|
||||
"maxAcceleration": 300,
|
||||
"homeSearchVelocity": 0,
|
||||
"homeSequence": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "path-preview",
|
||||
"requirement": "native and web preview path sample period is 20ms",
|
||||
"status": "fail",
|
||||
"evidence": {
|
||||
"nativeSamplePeriodMs": null,
|
||||
"webSamplePeriodMs": 20
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "path-preview",
|
||||
"requirement": "native and web preview paths have samples",
|
||||
"status": "fail",
|
||||
"evidence": {
|
||||
"nativeSampleCount": 0,
|
||||
"webSampleCount": 3074,
|
||||
"unavailable": [
|
||||
"native: missing samples",
|
||||
"sample period mismatch null/20"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "path-execution",
|
||||
"requirement": "native and web execution path sample period is 20ms",
|
||||
"status": "fail",
|
||||
"evidence": {
|
||||
"nativeSamplePeriodMs": null,
|
||||
"webSamplePeriodMs": 20
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "path-execution",
|
||||
"requirement": "native and web execution paths have samples",
|
||||
"status": "fail",
|
||||
"evidence": {
|
||||
"nativeSampleCount": 0,
|
||||
"webSampleCount": 569,
|
||||
"unavailable": [
|
||||
"native: missing samples",
|
||||
"sample period mismatch null/20"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "path-preview-execution-consistency",
|
||||
"requirement": "native preview and execution paths are comparable",
|
||||
"status": "fail",
|
||||
"evidence": {
|
||||
"nativePreviewSampleCount": 0,
|
||||
"nativeExecutionSampleCount": 0,
|
||||
"unavailable": [
|
||||
"nativePreview: missing samples",
|
||||
"nativeExecution: missing samples",
|
||||
"sample period mismatch null/null"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "path-preview-execution-consistency",
|
||||
"requirement": "web preview and execution paths are comparable",
|
||||
"status": "pass",
|
||||
"evidence": {
|
||||
"webPreviewSampleCount": 3074,
|
||||
"webExecutionSampleCount": 569,
|
||||
"unavailable": []
|
||||
}
|
||||
}
|
||||
],
|
||||
"pathComparison": {
|
||||
"samplePeriodMs": 20,
|
||||
"previewVsPreview": {
|
||||
"status": "fail",
|
||||
"comparable": false,
|
||||
"periodsMatch": false,
|
||||
"nativeSamplePeriodMs": null,
|
||||
"webSamplePeriodMs": 20,
|
||||
"leftSampleCount": 0,
|
||||
"rightSampleCount": 3074,
|
||||
"nativeSampleCount": 0,
|
||||
"webSampleCount": 3074,
|
||||
"unavailable": [
|
||||
"native: missing samples",
|
||||
"sample period mismatch null/20"
|
||||
],
|
||||
"maxTcpErrorMm": null,
|
||||
"rmsTcpErrorMm": null,
|
||||
"maxJointError": null,
|
||||
"rmsJointError": null,
|
||||
"maxToolAxisAngleDeg": null,
|
||||
"sampleCountDelta": 3074,
|
||||
"missingSamples": []
|
||||
},
|
||||
"executionVsExecution": {
|
||||
"status": "fail",
|
||||
"comparable": false,
|
||||
"periodsMatch": false,
|
||||
"nativeSamplePeriodMs": null,
|
||||
"webSamplePeriodMs": 20,
|
||||
"leftSampleCount": 0,
|
||||
"rightSampleCount": 569,
|
||||
"nativeSampleCount": 0,
|
||||
"webSampleCount": 569,
|
||||
"unavailable": [
|
||||
"native: missing samples",
|
||||
"sample period mismatch null/20"
|
||||
],
|
||||
"maxTcpErrorMm": null,
|
||||
"rmsTcpErrorMm": null,
|
||||
"maxJointError": null,
|
||||
"rmsJointError": null,
|
||||
"maxToolAxisAngleDeg": null,
|
||||
"sampleCountDelta": 569,
|
||||
"missingSamples": []
|
||||
},
|
||||
"previewVsExecutionNative": {
|
||||
"status": "fail",
|
||||
"comparable": false,
|
||||
"periodsMatch": false,
|
||||
"nativePreviewSamplePeriodMs": null,
|
||||
"nativeExecutionSamplePeriodMs": null,
|
||||
"leftSampleCount": 0,
|
||||
"rightSampleCount": 0,
|
||||
"unavailable": [
|
||||
"nativePreview: missing samples",
|
||||
"nativeExecution: missing samples",
|
||||
"sample period mismatch null/null"
|
||||
],
|
||||
"maxTcpErrorMm": null,
|
||||
"rmsTcpErrorMm": null,
|
||||
"maxJointError": null,
|
||||
"rmsJointError": null,
|
||||
"maxToolAxisAngleDeg": null,
|
||||
"sampleCountDelta": 0,
|
||||
"missingSamples": []
|
||||
},
|
||||
"previewVsExecutionWeb": {
|
||||
"status": "pass",
|
||||
"comparable": true,
|
||||
"periodsMatch": true,
|
||||
"webPreviewSamplePeriodMs": 20,
|
||||
"webExecutionSamplePeriodMs": 20,
|
||||
"leftSampleCount": 3074,
|
||||
"rightSampleCount": 569,
|
||||
"unavailable": [],
|
||||
"maxTcpErrorMm": 31.575968660550437,
|
||||
"rmsTcpErrorMm": 14.55884964854259,
|
||||
"maxJointError": 58.498220458848685,
|
||||
"rmsJointError": 20.762740311288844,
|
||||
"maxToolAxisAngleDeg": 19.999999999999993,
|
||||
"sampleCountDelta": 2505,
|
||||
"missingSamples": []
|
||||
}
|
||||
},
|
||||
"requiredImprovements": [
|
||||
{
|
||||
"category": "wasm",
|
||||
"requirement": "required WASM artifacts available",
|
||||
"category": "path-preview",
|
||||
"requirement": "native and web preview path sample period is 20ms",
|
||||
"evidence": {
|
||||
"missing": [
|
||||
"wasm-port/build/wasm/kinematics/linuxcnc_xyzbc_trt_kinematics.js",
|
||||
"wasm-port/build/wasm/kinematics/linuxcnc_xyzbc_trt_kinematics.wasm",
|
||||
"wasm-port/build/wasm/core/linuxcnc_interp.js",
|
||||
"wasm-port/build/wasm/core/linuxcnc_interp.wasm",
|
||||
"wasm-port/build/wasm/tp/linuxcnc_tp.js",
|
||||
"wasm-port/build/wasm/tp/linuxcnc_tp.wasm",
|
||||
"wasm-port/build/wasm/task-hal/linuxcnc_task_hal.js",
|
||||
"wasm-port/build/wasm/task-hal/linuxcnc_task_hal.wasm"
|
||||
"nativeSamplePeriodMs": null,
|
||||
"webSamplePeriodMs": 20
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "path-preview",
|
||||
"requirement": "native and web preview paths have samples",
|
||||
"evidence": {
|
||||
"nativeSampleCount": 0,
|
||||
"webSampleCount": 3074,
|
||||
"unavailable": [
|
||||
"native: missing samples",
|
||||
"sample period mismatch null/20"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "path-execution",
|
||||
"requirement": "native and web execution path sample period is 20ms",
|
||||
"evidence": {
|
||||
"nativeSamplePeriodMs": null,
|
||||
"webSamplePeriodMs": 20
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "path-execution",
|
||||
"requirement": "native and web execution paths have samples",
|
||||
"evidence": {
|
||||
"nativeSampleCount": 0,
|
||||
"webSampleCount": 569,
|
||||
"unavailable": [
|
||||
"native: missing samples",
|
||||
"sample period mismatch null/20"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "path-preview-execution-consistency",
|
||||
"requirement": "native preview and execution paths are comparable",
|
||||
"evidence": {
|
||||
"nativePreviewSampleCount": 0,
|
||||
"nativeExecutionSampleCount": 0,
|
||||
"unavailable": [
|
||||
"nativePreview: missing samples",
|
||||
"nativeExecution: missing samples",
|
||||
"sample period mismatch null/null"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user