Add AC/BC RTCP programs and 3D machine manager
@@ -1,5 +1,11 @@
|
|||||||
# LinuxCNC Web/WASM
|
# LinuxCNC Web/WASM
|
||||||
|
|
||||||
|
五轴 GLB / URDF 机床导入(AC / BC、底座双分支)的工作入口:
|
||||||
|
[`子项目文档、任务矩阵与模型交付`](docs/glb-machine/README.md)。
|
||||||
|
|
||||||
|
机床预览区的部件级三维机床管理器(GLB 部件、层级、原点、姿态、RTCP 标定和物理零点)入口:
|
||||||
|
[`三维机床管理器文档、任务矩阵与验收证据`](docs/glb-machine-manager/README.md)。
|
||||||
|
|
||||||
当前配置驱动改造的重启接续入口:[`nextTask-hardcoding.md`](nextTask-hardcoding.md)。
|
当前配置驱动改造的重启接续入口:[`nextTask-hardcoding.md`](nextTask-hardcoding.md)。
|
||||||
|
|
||||||
五轴机床 INI 参数化设计(XYZAC / XYZBC)的当前工作入口:
|
五轴机床 INI 参数化设计(XYZAC / XYZBC)的当前工作入口:
|
||||||
|
|||||||
21
coverage/glb-machine-manager/browser-production.report.json
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"schema": "machine-manager-browser.v1",
|
||||||
|
"report_id": "GLB-MGR-E02",
|
||||||
|
"mode": "production-preview",
|
||||||
|
"status": "verified",
|
||||||
|
"checks": [
|
||||||
|
"eight GLB parts imported and rendered in the Three.js editor",
|
||||||
|
"origin visibility, numeric translation/rotation and TransformControls mode update",
|
||||||
|
"validated assembly exports a self-contained managed GLB",
|
||||||
|
"validated hierarchy applied through LOAD_WORKSPACE with geometry and physical zero in userData",
|
||||||
|
"same component assembly switches to BC hierarchy and applies BC geometry",
|
||||||
|
"BC five-axis program drives managed model from authoritative WASM joints",
|
||||||
|
"production bundle exercised through AC/BC UI apply and WASM program motion"
|
||||||
|
],
|
||||||
|
"browser_errors": [],
|
||||||
|
"final": {
|
||||||
|
"program": "aborted",
|
||||||
|
"machine": "ON",
|
||||||
|
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzbc.ngc"
|
||||||
|
}
|
||||||
|
}
|
||||||
21
coverage/glb-machine-manager/browser.report.json
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"schema": "machine-manager-browser.v1",
|
||||||
|
"report_id": "GLB-MGR-E01",
|
||||||
|
"mode": "development-source",
|
||||||
|
"status": "verified",
|
||||||
|
"checks": [
|
||||||
|
"eight GLB parts imported and rendered in the Three.js editor",
|
||||||
|
"origin visibility, numeric translation/rotation and TransformControls mode update",
|
||||||
|
"validated assembly exports a self-contained managed GLB",
|
||||||
|
"validated hierarchy applied through LOAD_WORKSPACE with geometry and physical zero in userData",
|
||||||
|
"same component assembly switches to BC hierarchy and applies BC geometry",
|
||||||
|
"BC five-axis program drives managed model from authoritative WASM joints",
|
||||||
|
"AC/BC WASM joint projection subtracts physical zero, preserves userData and rejects invalid hierarchy"
|
||||||
|
],
|
||||||
|
"browser_errors": [],
|
||||||
|
"final": {
|
||||||
|
"program": "aborted",
|
||||||
|
"machine": "ON",
|
||||||
|
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzbc.ngc"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
coverage/glb-machine-manager/managed-bc-running.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
coverage/glb-machine-manager/manager-ac-config.png
Normal file
|
After Width: | Height: | Size: 88 KiB |
2544
coverage/glb-machine-manager/regression-motion/motion.report.json
Normal file
BIN
coverage/glb-machine/ac-imported.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
212
coverage/glb-machine/acceptance.report.json
Normal file
@@ -0,0 +1,212 @@
|
|||||||
|
{
|
||||||
|
"report_id": "glb-machine-acceptance-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"tasks": [
|
||||||
|
"GLB-01",
|
||||||
|
"GLB-02",
|
||||||
|
"GLB-03",
|
||||||
|
"GLB-04",
|
||||||
|
"GLB-05",
|
||||||
|
"GLB-06"
|
||||||
|
],
|
||||||
|
"wasm_sha256": "aa0f5d551e42859eef3b37aee9079f09ae04e668819da4e62aee2b74522e8bc6",
|
||||||
|
"reports": [
|
||||||
|
{
|
||||||
|
"report_id": "glb-machine-browser-v1",
|
||||||
|
"path": "coverage/glb-machine/browser.report.json",
|
||||||
|
"sha256": "5386309453c8b595b70a3f7c4285a57caa5affc986272915bd083a0b8a920308"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"report_id": "glb-machine-five-axis-motion-v1",
|
||||||
|
"path": "coverage/glb-machine/motion.report.json",
|
||||||
|
"sha256": "91c3fa8ed8037aac8e71b8c76d54c38db9dc011ae25f63553966860b624aa626"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"report_id": "glb-machine-khronos-validation-v1",
|
||||||
|
"path": "coverage/glb-machine/gltf-validation.report.json",
|
||||||
|
"sha256": "4eba70b5ab5597d36bd0ade01920e80ad41453c0f34a29ad0bd8e2b199825adc"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"report_id": "glb-machine-reproducibility-v1",
|
||||||
|
"path": "coverage/glb-machine/reproducibility.report.json",
|
||||||
|
"sha256": "bce59c1ac891da57a417a99a2e5350e659aeb2cecdf8f29e30af1f83bb6cf5a2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"report_id": "trt-parametric-browser-v1",
|
||||||
|
"path": "coverage/glb-machine/regression-parametric/browser.report.json",
|
||||||
|
"sha256": "3a61994a249419528692a23a9a73d3af8c47477eaad9d5e3134f7e365d2279e8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"report_id": "trt-rtcp-jog-browser-v1",
|
||||||
|
"path": "coverage/glb-machine/regression-jog/rtcp-jog-browser.report.json",
|
||||||
|
"sha256": "f79f137e061d33e665817170c52eb33189608e2bbed8d182854a8b39d9353e47"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"models": [
|
||||||
|
{
|
||||||
|
"id": "ac",
|
||||||
|
"filename": "demo-ac-xyz-head.glb",
|
||||||
|
"urdf": "demo-ac-xyz-head.urdf",
|
||||||
|
"bytes": 530848,
|
||||||
|
"sha256": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1",
|
||||||
|
"coordinates": "XYZAC",
|
||||||
|
"rotation_point_mm": [
|
||||||
|
24,
|
||||||
|
-12,
|
||||||
|
8
|
||||||
|
],
|
||||||
|
"offsets_mm": [
|
||||||
|
0,
|
||||||
|
18,
|
||||||
|
-45
|
||||||
|
],
|
||||||
|
"links": [
|
||||||
|
"base",
|
||||||
|
"x_slide",
|
||||||
|
"y_slide",
|
||||||
|
"z_slide",
|
||||||
|
"spindle_head",
|
||||||
|
"tilt_table",
|
||||||
|
"c_table",
|
||||||
|
"work_frame"
|
||||||
|
],
|
||||||
|
"meshes": 71
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bc",
|
||||||
|
"filename": "demo-bc-xyz-head.glb",
|
||||||
|
"urdf": "demo-bc-xyz-head.urdf",
|
||||||
|
"bytes": 530532,
|
||||||
|
"sha256": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b",
|
||||||
|
"coordinates": "XYZBC",
|
||||||
|
"rotation_point_mm": [
|
||||||
|
-18,
|
||||||
|
14,
|
||||||
|
12
|
||||||
|
],
|
||||||
|
"offsets_mm": [
|
||||||
|
22,
|
||||||
|
0,
|
||||||
|
-40
|
||||||
|
],
|
||||||
|
"links": [
|
||||||
|
"base",
|
||||||
|
"x_slide",
|
||||||
|
"y_slide",
|
||||||
|
"z_slide",
|
||||||
|
"spindle_head",
|
||||||
|
"tilt_table",
|
||||||
|
"c_table",
|
||||||
|
"work_frame"
|
||||||
|
],
|
||||||
|
"meshes": 71
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"rejected_inputs": 42,
|
||||||
|
"static_pose_and_tool_length_samples": 36,
|
||||||
|
"imported_rotary_jogs": 8,
|
||||||
|
"simultaneous_five_axis_intervals": 82,
|
||||||
|
"executed_program_projection_samples": 84,
|
||||||
|
"max_program_projection_error_view_units": 2.482534153247273e-16,
|
||||||
|
"boundaries": [
|
||||||
|
"Only the versioned orthogonal XYZ-head / AC-or-BC table TRT profile is supported",
|
||||||
|
"Runtime INI supplies homing, acceleration, periods and validated travel/speed settings",
|
||||||
|
"Imported GLB assets are kept in page memory; reload requires importing again",
|
||||||
|
"Original illustrative assets; no manufacturer calibration, collision or generic URDF solver claim",
|
||||||
|
"No native/WASM source modification; no whole-repository or release parity claim"
|
||||||
|
],
|
||||||
|
"evidence": [
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/ac-imported.png",
|
||||||
|
"sha256": "8e1e67a7ad7275d8697944b74f77bb111be9ef22d5cccab5961a0d472225dc96"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/bc-imported.png",
|
||||||
|
"sha256": "b7257f6aba3b513bb6c1494aaf9a1879f977884094fdc55cdf46150c25c65470"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/browser.log",
|
||||||
|
"sha256": "f8308922ef1d78fc82ab21081a16b8c369808e662c1ac85ceef03558c2706410"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/browser.report.json",
|
||||||
|
"sha256": "5386309453c8b595b70a3f7c4285a57caa5affc986272915bd083a0b8a920308"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/build.log",
|
||||||
|
"sha256": "61535b778ec1ab991507ca2454c1e11ddadedbe3f921b530ddc6f13bd7207073"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/generation.log",
|
||||||
|
"sha256": "a9222f10610e68cfda0e59a759c1fffa5a743e01f079f086bc743b260796afdd"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gltf-validation.log",
|
||||||
|
"sha256": "5bc225291eb5fceeface7225db1ef98833c3bcc258ce03e16dbe32d1170d9649"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gltf-validation.report.json",
|
||||||
|
"sha256": "4eba70b5ab5597d36bd0ade01920e80ad41453c0f34a29ad0bd8e2b199825adc"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/motion.log",
|
||||||
|
"sha256": "57ed59ba66d43ff00784733a3ddb7a0c3936c33aae0e03ab3c4fd4c2eacca361"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/motion.report.json",
|
||||||
|
"sha256": "91c3fa8ed8037aac8e71b8c76d54c38db9dc011ae25f63553966860b624aa626"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/regression-jog/rtcp-jog-browser.report.json",
|
||||||
|
"sha256": "f79f137e061d33e665817170c52eb33189608e2bbed8d182854a8b39d9353e47"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/regression-jog/rtcp-jog-xyzac.png",
|
||||||
|
"sha256": "d528ae818b88650b0786273c8a57e7997d4a1a0484bf2dd13597cc2de3807f9f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/regression-jog/rtcp-jog-xyzbc.png",
|
||||||
|
"sha256": "6be23d67f0a92259b717feb828f3c63bac4fa725e2a852c51ba83918b5aeee1a"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/regression-jog.log",
|
||||||
|
"sha256": "b12b994ebfd6a7dac5b079ec4781af0559f6ec623cd1548b3b9d78b50ef4f962"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/regression-parametric/browser.report.json",
|
||||||
|
"sha256": "3a61994a249419528692a23a9a73d3af8c47477eaad9d5e3134f7e365d2279e8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/regression-parametric/layout-1440.png",
|
||||||
|
"sha256": "12f92632fa3c367e4a64a963e2246f10b58f574468b2429a5c1dd51e303ac6a3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/regression-parametric/layout-390.png",
|
||||||
|
"sha256": "e17530ed4a069b06820f11036c20a1643f064fa8d3f48de7ddd1cd6fdecfc939"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/regression-parametric/xyzac-trt-model.png",
|
||||||
|
"sha256": "170a4c61a183cc0bf589a361d3b14a0c0f11d401eec85e8d0ec0e0c8174b0072"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/regression-parametric/xyzbc-trt-model.png",
|
||||||
|
"sha256": "9ef3b87c169568ecd47ff2ad76209017f41f2c84deca45e421168c42cc6efb8d"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/regression-parametric.log",
|
||||||
|
"sha256": "5a2d232459aeb6c054fe255d3354cdf5a71268e81dea50a0602ee761445823fa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/reproducibility.report.json",
|
||||||
|
"sha256": "bce59c1ac891da57a417a99a2e5350e659aeb2cecdf8f29e30af1f83bb6cf5a2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/viewport-1440.png",
|
||||||
|
"sha256": "89814a506f727b45d80e7109c6370e86d784d16e2a5c9e69f3a3681eb3590c06"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/viewport-390.png",
|
||||||
|
"sha256": "7ef7acd38fc1e383c8dc32bb606b8b91e91449e5c05fc9d5b5c489a9fe7eeb74"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
coverage/glb-machine/bc-imported.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
972
coverage/glb-machine/browser.report.json
Normal file
@@ -0,0 +1,972 @@
|
|||||||
|
{
|
||||||
|
"report_id": "glb-machine-browser-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"wasm_sha256": "aa0f5d551e42859eef3b37aee9079f09ae04e668819da4e62aee2b74522e8bc6",
|
||||||
|
"parser": [
|
||||||
|
{
|
||||||
|
"id": "ac",
|
||||||
|
"rejected": [
|
||||||
|
{
|
||||||
|
"name": "truncated",
|
||||||
|
"error": "机床模型无效:GLB 头部或长度错误"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "missing-schema",
|
||||||
|
"error": "机床模型无效:缺少 linuxcnc.machine/1 内嵌 URDF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "external-buffer",
|
||||||
|
"error": "机床模型无效:GLB 必须自包含,禁止外部 buffer/图片"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "external-texture",
|
||||||
|
"error": "机床模型无效:GLB 必须自包含,禁止外部 buffer/图片"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "animation",
|
||||||
|
"error": "机床模型无效:运动节点不能由动画、蒙皮或压缩扩展驱动"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "node-cycle",
|
||||||
|
"error": "机床模型无效:GLB 节点环、重复父节点或索引无效"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "wrong-hierarchy",
|
||||||
|
"error": "机床模型无效:GLB 层级与 URDF 不同:c_table"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "node-offset-mismatch",
|
||||||
|
"error": "机床模型无效:GLB 节点 c_table 零位与 URDF 不同"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "duplicate-link",
|
||||||
|
"error": "机床模型无效:GLB link base 缺失或重名"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "matrix-origin-mismatch",
|
||||||
|
"error": "机床模型无效:GLB 节点 c_table 矩阵与 URDF 不同"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "xml-syntax",
|
||||||
|
"error": "机床模型无效:URDF XML 语法错误"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "doctype",
|
||||||
|
"error": "机床模型无效:URDF 长度或 XML 声明不支持"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "duplicate-coordinate",
|
||||||
|
"error": "机床模型无效:需要 XYZAC 或 XYZBC 五个唯一运动轴"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "negative-axis",
|
||||||
|
"error": "机床模型无效:要求底座 → X → Y → Z 正交刀具链,零位 origin=0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nonzero-rpy",
|
||||||
|
"error": "机床模型无效:v1 不支持旋转的关节零位 rpy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nan-limit",
|
||||||
|
"error": "机床模型无效:需要有限数值"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mimic",
|
||||||
|
"error": "机床模型无效:不支持 mimic"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "unknown-profile",
|
||||||
|
"error": "机床模型无效:不支持的运动学 profile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "broken-tree",
|
||||||
|
"error": "机床模型无效:存在断开的结构或环"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "runtime-range-outside-model",
|
||||||
|
"error": "X:INI 行程超出 URDF,先调整运行配置"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "runtime-speed-outside-model",
|
||||||
|
"error": "X:INI 速度超出 URDF"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bc",
|
||||||
|
"rejected": [
|
||||||
|
{
|
||||||
|
"name": "truncated",
|
||||||
|
"error": "机床模型无效:GLB 头部或长度错误"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "missing-schema",
|
||||||
|
"error": "机床模型无效:缺少 linuxcnc.machine/1 内嵌 URDF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "external-buffer",
|
||||||
|
"error": "机床模型无效:GLB 必须自包含,禁止外部 buffer/图片"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "external-texture",
|
||||||
|
"error": "机床模型无效:GLB 必须自包含,禁止外部 buffer/图片"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "animation",
|
||||||
|
"error": "机床模型无效:运动节点不能由动画、蒙皮或压缩扩展驱动"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "node-cycle",
|
||||||
|
"error": "机床模型无效:GLB 节点环、重复父节点或索引无效"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "wrong-hierarchy",
|
||||||
|
"error": "机床模型无效:GLB 层级与 URDF 不同:c_table"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "node-offset-mismatch",
|
||||||
|
"error": "机床模型无效:GLB 节点 c_table 零位与 URDF 不同"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "duplicate-link",
|
||||||
|
"error": "机床模型无效:GLB link base 缺失或重名"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "matrix-origin-mismatch",
|
||||||
|
"error": "机床模型无效:GLB 节点 c_table 矩阵与 URDF 不同"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "xml-syntax",
|
||||||
|
"error": "机床模型无效:URDF XML 语法错误"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "doctype",
|
||||||
|
"error": "机床模型无效:URDF 长度或 XML 声明不支持"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "duplicate-coordinate",
|
||||||
|
"error": "机床模型无效:需要 XYZAC 或 XYZBC 五个唯一运动轴"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "negative-axis",
|
||||||
|
"error": "机床模型无效:要求底座 → X → Y → Z 正交刀具链,零位 origin=0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nonzero-rpy",
|
||||||
|
"error": "机床模型无效:v1 不支持旋转的关节零位 rpy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nan-limit",
|
||||||
|
"error": "机床模型无效:需要有限数值"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mimic",
|
||||||
|
"error": "机床模型无效:不支持 mimic"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "unknown-profile",
|
||||||
|
"error": "机床模型无效:不支持的运动学 profile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "broken-tree",
|
||||||
|
"error": "机床模型无效:存在断开的结构或环"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "runtime-range-outside-model",
|
||||||
|
"error": "X:INI 行程超出 URDF,先调整运行配置"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "runtime-speed-outside-model",
|
||||||
|
"error": "X:INI 速度超出 URDF"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"machines": [
|
||||||
|
{
|
||||||
|
"id": "ac",
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1",
|
||||||
|
"coordinates": "XYZAC",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"z_offset": -45
|
||||||
|
},
|
||||||
|
"program_preserved": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
|
||||||
|
"geometry": [
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 6.206335383118183e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 25,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.2412670766236366e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 65,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.1933397187179203e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -35,
|
||||||
|
"c": 125,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 2.1599919653272043e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 42,
|
||||||
|
"c": -80,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 2.486410087150353e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -80,
|
||||||
|
"c": 270,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.709648974837069e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 6.206335383118183e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 25,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.3472894910096233e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 65,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.1354490689426183e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -35,
|
||||||
|
"c": 125,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 2.036065864674698e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 42,
|
||||||
|
"c": -80,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 2.482534153247273e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -80,
|
||||||
|
"c": 270,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.3877787807814457e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 6.206335383118183e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 25,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 1.2412670766236366e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 65,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 9.508199615517185e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -35,
|
||||||
|
"c": 125,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 1.9141791241147513e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 42,
|
||||||
|
"c": -80,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 2.2591401799415137e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -80,
|
||||||
|
"c": 270,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 1.1857187100668868e-16
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"jogs": [
|
||||||
|
{
|
||||||
|
"axis": "a",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
4.066650000000003,
|
||||||
|
3.0666500000000028,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.04066650000000002,
|
||||||
|
6.809330876933479e-18,
|
||||||
|
0.030666500000000027
|
||||||
|
],
|
||||||
|
"tick": 54,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
4.066650000000003,
|
||||||
|
-0.019142531975200328,
|
||||||
|
-0.3752206095071884,
|
||||||
|
4.799999999999997,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.04066650000000002,
|
||||||
|
-0.0037522060950718836,
|
||||||
|
-0.00019142531975200244
|
||||||
|
],
|
||||||
|
"tick": 85,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"tcp_error": 7.567484573835504e-17,
|
||||||
|
"render_error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
4.066650000000003,
|
||||||
|
-0.019142531975200328,
|
||||||
|
-0.3752206095071884,
|
||||||
|
4.799999999999997,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.04066650000000002,
|
||||||
|
-0.0037522060950718836,
|
||||||
|
-0.00019142531975200244
|
||||||
|
],
|
||||||
|
"tick": 85,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
3.0167271826648197,
|
||||||
|
-1.514225061260488,
|
||||||
|
-0.5007661972082786,
|
||||||
|
4.799999999999997,
|
||||||
|
4.199999999999992
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.030167271826648197,
|
||||||
|
-0.005007661972082789,
|
||||||
|
-0.015142250612604878
|
||||||
|
],
|
||||||
|
"tick": 114,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"tcp_error": 1.0507972009713376e-16,
|
||||||
|
"render_error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "a",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
3.0167271826648197,
|
||||||
|
-1.514225061260488,
|
||||||
|
-0.5007661972082786,
|
||||||
|
4.799999999999997,
|
||||||
|
4.199999999999992
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.030167271826648197,
|
||||||
|
-0.005007661972082789,
|
||||||
|
-0.015142250612604878
|
||||||
|
],
|
||||||
|
"tick": 114,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
3.0167271826648197,
|
||||||
|
-4.3547580920686855,
|
||||||
|
-1.2028404574208267,
|
||||||
|
9.299999999999992,
|
||||||
|
4.199999999999992
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.030167271826648197,
|
||||||
|
-0.012028404574208278,
|
||||||
|
-0.043547580920686856
|
||||||
|
],
|
||||||
|
"tick": 144,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"tcp_error": 1.602813148773208e-16,
|
||||||
|
"render_error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
3.0167271826648197,
|
||||||
|
-4.3547580920686855,
|
||||||
|
-1.2028404574208267,
|
||||||
|
9.299999999999992,
|
||||||
|
4.199999999999992
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.030167271826648197,
|
||||||
|
-0.012028404574208278,
|
||||||
|
-0.043547580920686856
|
||||||
|
],
|
||||||
|
"tick": 144,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
1.773075434767975,
|
||||||
|
-6.477614069157218,
|
||||||
|
-1.550471455393577,
|
||||||
|
9.299999999999992,
|
||||||
|
9.899999999999997
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.017730754347679747,
|
||||||
|
-0.015504714553935782,
|
||||||
|
-0.06477614069157217
|
||||||
|
],
|
||||||
|
"tick": 178,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"tcp_error": 1.193812447098184e-16,
|
||||||
|
"render_error": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"pixels": {
|
||||||
|
"colors": 855,
|
||||||
|
"width": 472,
|
||||||
|
"height": 353
|
||||||
|
},
|
||||||
|
"worker_derived_offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bc",
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b",
|
||||||
|
"coordinates": "XYZBC",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"z_offset": -40
|
||||||
|
},
|
||||||
|
"program_preserved": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
|
||||||
|
"geometry": [
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 7.850462293418876e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 25,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.1188630228279524e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 65,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.3672438525262642e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -35,
|
||||||
|
"c": 125,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 2.3714374201337736e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 42,
|
||||||
|
"c": -80,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.0007415106216802e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -80,
|
||||||
|
"c": 270,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.3597399555105182e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 6.206335383118183e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 25,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.1443916996305594e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 65,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.3951318755036565e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -35,
|
||||||
|
"c": 125,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.5700924586837752e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 42,
|
||||||
|
"c": -80,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.3597399555105182e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -80,
|
||||||
|
"c": 270,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.3597399555105182e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 7.850462293418876e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 25,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 65,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 1.4756369957997185e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -35,
|
||||||
|
"c": 125,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 2.7755575615628914e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 42,
|
||||||
|
"c": -80,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 1.3597399555105182e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -80,
|
||||||
|
"c": 270,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 1.1102230246251565e-16
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"jogs": [
|
||||||
|
{
|
||||||
|
"axis": "b",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
4.066650000000003,
|
||||||
|
3.0666500000000028,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.04066650000000002,
|
||||||
|
6.809330876933479e-18,
|
||||||
|
0.030666500000000027
|
||||||
|
],
|
||||||
|
"tick": 232,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
6.117140529480697,
|
||||||
|
3.0666500000000028,
|
||||||
|
-0.08007596355373181,
|
||||||
|
4.199999999999992,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.06117140529480696,
|
||||||
|
-0.0008007596355373112,
|
||||||
|
0.030666500000000027
|
||||||
|
],
|
||||||
|
"tick": 261,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"tcp_error": 1.571008573810619e-17,
|
||||||
|
"render_error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
6.117140529480697,
|
||||||
|
3.0666500000000028,
|
||||||
|
-0.08007596355373181,
|
||||||
|
4.199999999999992,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.06117140529480696,
|
||||||
|
-0.0008007596355373112,
|
||||||
|
0.030666500000000027
|
||||||
|
],
|
||||||
|
"tick": 261,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
7.1363588812500645,
|
||||||
|
5.433137049240459,
|
||||||
|
-0.15492268068023662,
|
||||||
|
4.199999999999992,
|
||||||
|
6.000000000000007
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.07136358881250066,
|
||||||
|
-0.001549226806802354,
|
||||||
|
0.05433137049240459
|
||||||
|
],
|
||||||
|
"tick": 296,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"tcp_error": 5.575456304969596e-17,
|
||||||
|
"render_error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "b",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
7.1363588812500645,
|
||||||
|
5.433137049240459,
|
||||||
|
-0.15492268068023662,
|
||||||
|
4.199999999999992,
|
||||||
|
6.000000000000007
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.07136358881250066,
|
||||||
|
-0.001549226806802354,
|
||||||
|
0.05433137049240459
|
||||||
|
],
|
||||||
|
"tick": 296,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
9.167259379788678,
|
||||||
|
5.433137049240459,
|
||||||
|
-0.4594025400159829,
|
||||||
|
8.399999999999984,
|
||||||
|
6.000000000000007
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.09167259379788678,
|
||||||
|
-0.004594025400159817,
|
||||||
|
0.05433137049240459
|
||||||
|
],
|
||||||
|
"tick": 325,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"tcp_error": 5.91080137522821e-17,
|
||||||
|
"render_error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
9.167259379788678,
|
||||||
|
5.433137049240459,
|
||||||
|
-0.4594025400159829,
|
||||||
|
8.399999999999984,
|
||||||
|
6.000000000000007
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.09167259379788678,
|
||||||
|
-0.004594025400159817,
|
||||||
|
0.05433137049240459
|
||||||
|
],
|
||||||
|
"tick": 325,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
9.506048116603463,
|
||||||
|
6.419769843383257,
|
||||||
|
-0.5094305081170489,
|
||||||
|
8.399999999999984,
|
||||||
|
8.430000000000007
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.09506048116603463,
|
||||||
|
-0.005094305081170475,
|
||||||
|
0.06419769843383256
|
||||||
|
],
|
||||||
|
"tick": 348,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"tcp_error": 5.56803001126317e-17,
|
||||||
|
"render_error": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"pixels": {
|
||||||
|
"colors": 829,
|
||||||
|
"width": 472,
|
||||||
|
"height": 353
|
||||||
|
},
|
||||||
|
"worker_derived_offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"viewports": [
|
||||||
|
{
|
||||||
|
"width": 1440,
|
||||||
|
"height": 1100,
|
||||||
|
"bounds": [
|
||||||
|
{
|
||||||
|
"x": 964.671875,
|
||||||
|
"right": 1021,
|
||||||
|
"width": 56.328125
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1028.796875,
|
||||||
|
"right": 1078.953125,
|
||||||
|
"width": 50.15625
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1083.5,
|
||||||
|
"right": 1120.65625,
|
||||||
|
"width": 37.15625
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1128.453125,
|
||||||
|
"right": 1178.609375,
|
||||||
|
"width": 50.15625
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1183.15625,
|
||||||
|
"right": 1220.3125,
|
||||||
|
"width": 37.15625
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"width": 390,
|
||||||
|
"height": 844,
|
||||||
|
"bounds": [
|
||||||
|
{
|
||||||
|
"x": 19.09375,
|
||||||
|
"right": 75.421875,
|
||||||
|
"width": 56.328125
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 83.21875,
|
||||||
|
"right": 133.375,
|
||||||
|
"width": 50.15625
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 137.921875,
|
||||||
|
"right": 175.078125,
|
||||||
|
"width": 37.15625
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 182.875,
|
||||||
|
"right": 233.03125,
|
||||||
|
"width": 50.15625
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 237.578125,
|
||||||
|
"right": 274.734375,
|
||||||
|
"width": 37.15625
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"browser_errors": []
|
||||||
|
}
|
||||||
106
coverage/glb-machine/dialogs/acceptance.report.json
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
{
|
||||||
|
"report_id": "glb-machine-dialog-acceptance-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"tasks": [
|
||||||
|
"GLB-UI01"
|
||||||
|
],
|
||||||
|
"reports": [
|
||||||
|
"machine-dialog-browser-v1",
|
||||||
|
"trt-parametric-browser-v1",
|
||||||
|
"glb-machine-browser-v1"
|
||||||
|
],
|
||||||
|
"evidence": [
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/build.log",
|
||||||
|
"sha256": "5883edc912a8ceb1e0608166a4b6ec16cfb158eafaeee0d284dce3467699f142"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/dialog.log",
|
||||||
|
"sha256": "9c2ab6a4f4152d3e0c440420ee3477509f4d843a70d126e7972220df1c01107b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/dialog.report.json",
|
||||||
|
"sha256": "811f5cb6bed5a05bd823f77b27c1901f74246a1e078884936962f0adee1b190b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/geometry-settings-dragged.png",
|
||||||
|
"sha256": "f82d790dd2ac4bb7da6b3979e2c5a346e5ae63d13bb4c258283f3b1faa50a809"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/import/ac-imported.png",
|
||||||
|
"sha256": "2a5a8bb90b04f4f851cb34384f20a46447e7143e76f9f55d043d0ad114e0c892"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/import/bc-imported.png",
|
||||||
|
"sha256": "cb5af89c38368ca852a4631e9f6c0b0bdfb752974097ac66eaa730bf7eb150ef"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/import/browser.report.json",
|
||||||
|
"sha256": "9309b944fca8ac81e816cf8e5494348db0ca2dd12417763479d78ce5d29df71e"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/import/viewport-1440.png",
|
||||||
|
"sha256": "41a5ac98442141dd498d2c4a50a089d9742d6c3860f48ac609312f0e255d72d9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/import/viewport-390.png",
|
||||||
|
"sha256": "3522159e686804af938e9f41ffde6bb47ef88444f20a21699bd259db3ce05b0d"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/import.log",
|
||||||
|
"sha256": "f8308922ef1d78fc82ab21081a16b8c369808e662c1ac85ceef03558c2706410"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/machine-glb-settings-dragged.png",
|
||||||
|
"sha256": "22647b7ef24b08d3a3f740b5676c46b00b2bbd4cfa4ec1c035fea0d0c5aaa638"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/parameters-1440.png",
|
||||||
|
"sha256": "d25dbeaf8c77be2227760b9380ea07b4f5f6602cd31e390023a81594e7f97af8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/parameters-2048.png",
|
||||||
|
"sha256": "12c790e77602658ffa6c9958c3b20aa5fd11b4836026854637e5d883cbfce7e8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/parameters-390.png",
|
||||||
|
"sha256": "96059425dec8ca423506edff4f88698a9c1579118f8f873626557b9b13d56a0a"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/parametric/browser.report.json",
|
||||||
|
"sha256": "28eb780b7bcbfc94a43226c267868444287069f4a3c4c6ffab256759d439b00b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/parametric/layout-1440.png",
|
||||||
|
"sha256": "484c683de962a67a3816653568b1abe15930ad060b7778435d8a8c178e7c88d2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/parametric/layout-390.png",
|
||||||
|
"sha256": "a8e4f79db95aeae82c08d7bbd41db017d96eb863fac20b0de6df455a7ee07a25"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/parametric/xyzac-trt-model.png",
|
||||||
|
"sha256": "6b0f89a3d9f7345a2ac12ff1beb82115e6f957b9b3f0f61766d62f47b8f072fb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/parametric/xyzbc-trt-model.png",
|
||||||
|
"sha256": "38ed4ba88c7e72d6f30705ef48732ca3d0d9152ee6f17ce8cb8bc86ad3dcfce6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/parametric.log",
|
||||||
|
"sha256": "6aa0af350b31f8b04e220da964cc0eb62357ef0dddb51390152d5ca0b93a7cf7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/preview-1440.png",
|
||||||
|
"sha256": "09cdf18a7348a045e153ff7c741ed98cc7eb8a0b492f7c4b4d5953ac3c92b8cb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/preview-2048.png",
|
||||||
|
"sha256": "ca653f12dafb7b198c58ad3d42bb9531d921adf00fa0fc9dd73cb51d18e42a6e"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/dialogs/preview-390.png",
|
||||||
|
"sha256": "cf4c4565feaf947cb84dad0d5e3c229d069c5301fed374011cfaf8f388ac72b3"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
125
coverage/glb-machine/dialogs/dialog.report.json
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
{
|
||||||
|
"report_id": "machine-dialog-browser-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"layouts": [
|
||||||
|
{
|
||||||
|
"width": 2048,
|
||||||
|
"height": 859,
|
||||||
|
"machine": {
|
||||||
|
"x": 1358.171875,
|
||||||
|
"y": 489.5,
|
||||||
|
"width": 679.828125,
|
||||||
|
"height": 351.5
|
||||||
|
},
|
||||||
|
"path": {
|
||||||
|
"x": 674.34375,
|
||||||
|
"y": 449.5,
|
||||||
|
"width": 679.828125,
|
||||||
|
"height": 391.5
|
||||||
|
},
|
||||||
|
"pane": {
|
||||||
|
"x": 1358.171875,
|
||||||
|
"y": 449.5,
|
||||||
|
"width": 679.828125,
|
||||||
|
"height": 391.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"width": 1440,
|
||||||
|
"height": 900,
|
||||||
|
"machine": {
|
||||||
|
"x": 955.578125,
|
||||||
|
"y": 489.5,
|
||||||
|
"width": 474.421875,
|
||||||
|
"height": 392.5
|
||||||
|
},
|
||||||
|
"path": {
|
||||||
|
"x": 477.15625,
|
||||||
|
"y": 449.5,
|
||||||
|
"width": 474.421875,
|
||||||
|
"height": 432.5
|
||||||
|
},
|
||||||
|
"pane": {
|
||||||
|
"x": 955.578125,
|
||||||
|
"y": 449.5,
|
||||||
|
"width": 474.421875,
|
||||||
|
"height": 432.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"width": 390,
|
||||||
|
"height": 844,
|
||||||
|
"machine": {
|
||||||
|
"x": 10,
|
||||||
|
"y": 231.5,
|
||||||
|
"width": 370,
|
||||||
|
"height": 380
|
||||||
|
},
|
||||||
|
"path": {
|
||||||
|
"x": 10,
|
||||||
|
"y": -172.5,
|
||||||
|
"width": 370,
|
||||||
|
"height": 360
|
||||||
|
},
|
||||||
|
"pane": {
|
||||||
|
"x": 10,
|
||||||
|
"y": 191.5,
|
||||||
|
"width": 370,
|
||||||
|
"height": 420
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dialogs": [
|
||||||
|
{
|
||||||
|
"button": "machine-glb-settings",
|
||||||
|
"before": {
|
||||||
|
"x": 430,
|
||||||
|
"y": 357.296875,
|
||||||
|
"width": 580,
|
||||||
|
"height": 185.40625
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"x": 540,
|
||||||
|
"y": 417.296875,
|
||||||
|
"width": 580,
|
||||||
|
"height": 185.40625
|
||||||
|
},
|
||||||
|
"focus_contained": true,
|
||||||
|
"keyboard_ignored": true,
|
||||||
|
"edge_clamped": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"button": "geometry-settings",
|
||||||
|
"before": {
|
||||||
|
"x": 430,
|
||||||
|
"y": 300.25,
|
||||||
|
"width": 580,
|
||||||
|
"height": 299.5
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"x": 540,
|
||||||
|
"y": 360.25,
|
||||||
|
"width": 580,
|
||||||
|
"height": 299.5
|
||||||
|
},
|
||||||
|
"focus_contained": true,
|
||||||
|
"keyboard_ignored": true,
|
||||||
|
"edge_clamped": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"touch_drag": {
|
||||||
|
"before": {
|
||||||
|
"x": 8,
|
||||||
|
"y": 329.296875,
|
||||||
|
"width": 374,
|
||||||
|
"height": 185.40625
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"x": 8,
|
||||||
|
"y": 379.296875,
|
||||||
|
"width": 374,
|
||||||
|
"height": 185.40625
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"browser_errors": []
|
||||||
|
}
|
||||||
BIN
coverage/glb-machine/dialogs/geometry-settings-dragged.png
Normal file
|
After Width: | Height: | Size: 198 KiB |
BIN
coverage/glb-machine/dialogs/import/ac-imported.png
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
coverage/glb-machine/dialogs/import/bc-imported.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
982
coverage/glb-machine/dialogs/import/browser.report.json
Normal file
@@ -0,0 +1,982 @@
|
|||||||
|
{
|
||||||
|
"report_id": "glb-machine-browser-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"wasm_sha256": "aa0f5d551e42859eef3b37aee9079f09ae04e668819da4e62aee2b74522e8bc6",
|
||||||
|
"parser": [
|
||||||
|
{
|
||||||
|
"id": "ac",
|
||||||
|
"rejected": [
|
||||||
|
{
|
||||||
|
"name": "truncated",
|
||||||
|
"error": "机床模型无效:GLB 头部或长度错误"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "missing-schema",
|
||||||
|
"error": "机床模型无效:缺少 linuxcnc.machine/1 内嵌 URDF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "external-buffer",
|
||||||
|
"error": "机床模型无效:GLB 必须自包含,禁止外部 buffer/图片"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "external-texture",
|
||||||
|
"error": "机床模型无效:GLB 必须自包含,禁止外部 buffer/图片"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "animation",
|
||||||
|
"error": "机床模型无效:运动节点不能由动画、蒙皮或压缩扩展驱动"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "node-cycle",
|
||||||
|
"error": "机床模型无效:GLB 节点环、重复父节点或索引无效"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "wrong-hierarchy",
|
||||||
|
"error": "机床模型无效:GLB 层级与 URDF 不同:c_table"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "node-offset-mismatch",
|
||||||
|
"error": "机床模型无效:GLB 节点 c_table 零位与 URDF 不同"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "duplicate-link",
|
||||||
|
"error": "机床模型无效:GLB link base 缺失或重名"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "matrix-origin-mismatch",
|
||||||
|
"error": "机床模型无效:GLB 节点 c_table 矩阵与 URDF 不同"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "xml-syntax",
|
||||||
|
"error": "机床模型无效:URDF XML 语法错误"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "doctype",
|
||||||
|
"error": "机床模型无效:URDF 长度或 XML 声明不支持"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "duplicate-coordinate",
|
||||||
|
"error": "机床模型无效:需要 XYZAC 或 XYZBC 五个唯一运动轴"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "negative-axis",
|
||||||
|
"error": "机床模型无效:要求底座 → X → Y → Z 正交刀具链,零位 origin=0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nonzero-rpy",
|
||||||
|
"error": "机床模型无效:v1 不支持旋转的关节零位 rpy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nan-limit",
|
||||||
|
"error": "机床模型无效:需要有限数值"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mimic",
|
||||||
|
"error": "机床模型无效:不支持 mimic"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "unknown-profile",
|
||||||
|
"error": "机床模型无效:不支持的运动学 profile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "broken-tree",
|
||||||
|
"error": "机床模型无效:存在断开的结构或环"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "runtime-range-outside-model",
|
||||||
|
"error": "X:INI 行程超出 URDF,先调整运行配置"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "runtime-speed-outside-model",
|
||||||
|
"error": "X:INI 速度超出 URDF"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bc",
|
||||||
|
"rejected": [
|
||||||
|
{
|
||||||
|
"name": "truncated",
|
||||||
|
"error": "机床模型无效:GLB 头部或长度错误"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "missing-schema",
|
||||||
|
"error": "机床模型无效:缺少 linuxcnc.machine/1 内嵌 URDF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "external-buffer",
|
||||||
|
"error": "机床模型无效:GLB 必须自包含,禁止外部 buffer/图片"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "external-texture",
|
||||||
|
"error": "机床模型无效:GLB 必须自包含,禁止外部 buffer/图片"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "animation",
|
||||||
|
"error": "机床模型无效:运动节点不能由动画、蒙皮或压缩扩展驱动"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "node-cycle",
|
||||||
|
"error": "机床模型无效:GLB 节点环、重复父节点或索引无效"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "wrong-hierarchy",
|
||||||
|
"error": "机床模型无效:GLB 层级与 URDF 不同:c_table"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "node-offset-mismatch",
|
||||||
|
"error": "机床模型无效:GLB 节点 c_table 零位与 URDF 不同"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "duplicate-link",
|
||||||
|
"error": "机床模型无效:GLB link base 缺失或重名"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "matrix-origin-mismatch",
|
||||||
|
"error": "机床模型无效:GLB 节点 c_table 矩阵与 URDF 不同"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "xml-syntax",
|
||||||
|
"error": "机床模型无效:URDF XML 语法错误"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "doctype",
|
||||||
|
"error": "机床模型无效:URDF 长度或 XML 声明不支持"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "duplicate-coordinate",
|
||||||
|
"error": "机床模型无效:需要 XYZAC 或 XYZBC 五个唯一运动轴"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "negative-axis",
|
||||||
|
"error": "机床模型无效:要求底座 → X → Y → Z 正交刀具链,零位 origin=0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nonzero-rpy",
|
||||||
|
"error": "机床模型无效:v1 不支持旋转的关节零位 rpy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nan-limit",
|
||||||
|
"error": "机床模型无效:需要有限数值"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mimic",
|
||||||
|
"error": "机床模型无效:不支持 mimic"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "unknown-profile",
|
||||||
|
"error": "机床模型无效:不支持的运动学 profile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "broken-tree",
|
||||||
|
"error": "机床模型无效:存在断开的结构或环"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "runtime-range-outside-model",
|
||||||
|
"error": "X:INI 行程超出 URDF,先调整运行配置"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "runtime-speed-outside-model",
|
||||||
|
"error": "X:INI 速度超出 URDF"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"machines": [
|
||||||
|
{
|
||||||
|
"id": "ac",
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1",
|
||||||
|
"coordinates": "XYZAC",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"z_offset": -45
|
||||||
|
},
|
||||||
|
"program_preserved": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
|
||||||
|
"geometry": [
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 6.206335383118183e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 25,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.2412670766236366e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 65,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.1933397187179203e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -35,
|
||||||
|
"c": 125,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 2.1599919653272043e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 42,
|
||||||
|
"c": -80,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 2.486410087150353e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -80,
|
||||||
|
"c": 270,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.709648974837069e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 6.206335383118183e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 25,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.3472894910096233e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 65,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.1354490689426183e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -35,
|
||||||
|
"c": 125,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 2.036065864674698e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 42,
|
||||||
|
"c": -80,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 2.482534153247273e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -80,
|
||||||
|
"c": 270,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.3877787807814457e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 6.206335383118183e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 25,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 1.2412670766236366e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 65,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 9.508199615517185e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -35,
|
||||||
|
"c": 125,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 1.9141791241147513e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 42,
|
||||||
|
"c": -80,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 2.2591401799415137e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -80,
|
||||||
|
"c": 270,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 1.1857187100668868e-16
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"jogs": [
|
||||||
|
{
|
||||||
|
"axis": "a",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
4.466649999999994,
|
||||||
|
4.066650000000003,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.04466649999999994,
|
||||||
|
9.02977692618379e-18,
|
||||||
|
0.04066650000000002
|
||||||
|
],
|
||||||
|
"tick": 61,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
4.466649999999994,
|
||||||
|
0.20968795268657026,
|
||||||
|
-0.40477997583241176,
|
||||||
|
6.000000000000007,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.04466649999999994,
|
||||||
|
-0.0040477997583241165,
|
||||||
|
0.0020968795268657033
|
||||||
|
],
|
||||||
|
"tick": 96,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"tcp_error": 1.0148132334464322e-16,
|
||||||
|
"render_error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
4.466649999999994,
|
||||||
|
0.20968795268657026,
|
||||||
|
-0.40477997583241176,
|
||||||
|
6.000000000000007,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.04466649999999994,
|
||||||
|
-0.0040477997583241165,
|
||||||
|
0.0020968795268657033
|
||||||
|
],
|
||||||
|
"tick": 96,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
2.7494471200932686,
|
||||||
|
-2.1290148625374243,
|
||||||
|
-0.650587546740212,
|
||||||
|
6.000000000000007,
|
||||||
|
6.600000000000012
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.027494471200932687,
|
||||||
|
-0.006505875467402124,
|
||||||
|
-0.021290148625374247
|
||||||
|
],
|
||||||
|
"tick": 133,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"tcp_error": 7.666221752544845e-17,
|
||||||
|
"render_error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "a",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
2.7494471200932686,
|
||||||
|
-2.1290148625374243,
|
||||||
|
-0.650587546740212,
|
||||||
|
6.000000000000007,
|
||||||
|
6.600000000000012
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.027494471200932687,
|
||||||
|
-0.006505875467402124,
|
||||||
|
-0.021290148625374247
|
||||||
|
],
|
||||||
|
"tick": 133,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
2.7494471200932686,
|
||||||
|
-4.955897853959007,
|
||||||
|
-1.4004358096033798,
|
||||||
|
10.500000000000002,
|
||||||
|
6.600000000000012
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.027494471200932687,
|
||||||
|
-0.014004358096033807,
|
||||||
|
-0.04955897853959007
|
||||||
|
],
|
||||||
|
"tick": 163,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"tcp_error": 6.938893903907228e-18,
|
||||||
|
"render_error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
2.7494471200932686,
|
||||||
|
-4.955897853959007,
|
||||||
|
-1.4004358096033798,
|
||||||
|
10.500000000000002,
|
||||||
|
6.600000000000012
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.027494471200932687,
|
||||||
|
-0.014004358096033807,
|
||||||
|
-0.04955897853959007
|
||||||
|
],
|
||||||
|
"tick": 163,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
1.3727669510375335,
|
||||||
|
-7.330203467035044,
|
||||||
|
-1.8404873443064815,
|
||||||
|
10.500000000000002,
|
||||||
|
12.900000000000022
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.013727669510375335,
|
||||||
|
-0.018404873443064833,
|
||||||
|
-0.07330203467035044
|
||||||
|
],
|
||||||
|
"tick": 199,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"tcp_error": 8.464668479171608e-17,
|
||||||
|
"render_error": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"pixels": {
|
||||||
|
"colors": 1415,
|
||||||
|
"width": 472,
|
||||||
|
"height": 586
|
||||||
|
},
|
||||||
|
"worker_derived_offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bc",
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b",
|
||||||
|
"coordinates": "XYZBC",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"z_offset": -40
|
||||||
|
},
|
||||||
|
"program_preserved": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
|
||||||
|
"geometry": [
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 7.850462293418876e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 25,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.1188630228279524e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 65,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.3672438525262642e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -35,
|
||||||
|
"c": 125,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 2.3714374201337736e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 42,
|
||||||
|
"c": -80,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.0007415106216802e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -80,
|
||||||
|
"c": 270,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.3597399555105182e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 6.206335383118183e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 25,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.1443916996305594e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 65,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.3951318755036565e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -35,
|
||||||
|
"c": 125,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.5700924586837752e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 42,
|
||||||
|
"c": -80,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.3597399555105182e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -80,
|
||||||
|
"c": 270,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.3597399555105182e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 7.850462293418876e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 25,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 65,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 1.4756369957997185e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -35,
|
||||||
|
"c": 125,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 2.7755575615628914e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 42,
|
||||||
|
"c": -80,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 1.3597399555105182e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -80,
|
||||||
|
"c": 270,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 1.1102230246251565e-16
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"jogs": [
|
||||||
|
{
|
||||||
|
"axis": "b",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
4.2666499999999985,
|
||||||
|
3.0666500000000028,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.04266649999999998,
|
||||||
|
6.809330876933479e-18,
|
||||||
|
0.030666500000000027
|
||||||
|
],
|
||||||
|
"tick": 254,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
6.316603424925585,
|
||||||
|
3.0666500000000028,
|
||||||
|
-0.09472360297925775,
|
||||||
|
4.199999999999992,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.06316603424925585,
|
||||||
|
-0.0009472360297925706,
|
||||||
|
0.030666500000000027
|
||||||
|
],
|
||||||
|
"tick": 283,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"tcp_error": 1.909704485889413e-17,
|
||||||
|
"render_error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
6.316603424925585,
|
||||||
|
3.0666500000000028,
|
||||||
|
-0.09472360297925775,
|
||||||
|
4.199999999999992,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.06316603424925585,
|
||||||
|
-0.0009472360297925706,
|
||||||
|
0.030666500000000027
|
||||||
|
],
|
||||||
|
"tick": 283,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
7.151143087525739,
|
||||||
|
4.968220047559935,
|
||||||
|
-0.15600836492358994,
|
||||||
|
4.199999999999992,
|
||||||
|
4.799999999999997
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.07151143087525738,
|
||||||
|
-0.0015600836492358884,
|
||||||
|
0.04968220047559935
|
||||||
|
],
|
||||||
|
"tick": 314,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"tcp_error": 4.4565853017184997e-17,
|
||||||
|
"render_error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "b",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
7.151143087525739,
|
||||||
|
4.968220047559935,
|
||||||
|
-0.15600836492358994,
|
||||||
|
4.199999999999992,
|
||||||
|
4.799999999999997
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.07151143087525738,
|
||||||
|
-0.0015600836492358884,
|
||||||
|
0.04968220047559935
|
||||||
|
],
|
||||||
|
"tick": 314,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
9.32604357016951,
|
||||||
|
4.968220047559935,
|
||||||
|
-0.4890779358284192,
|
||||||
|
8.699999999999987,
|
||||||
|
4.799999999999997
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.0932604357016951,
|
||||||
|
-0.004890779358284181,
|
||||||
|
0.04968220047559935
|
||||||
|
],
|
||||||
|
"tick": 344,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"tcp_error": 1.187272171697316e-16,
|
||||||
|
"render_error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
9.32604357016951,
|
||||||
|
4.968220047559935,
|
||||||
|
-0.4890779358284192,
|
||||||
|
8.699999999999987,
|
||||||
|
4.799999999999997
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.0932604357016951,
|
||||||
|
-0.004890779358284181,
|
||||||
|
0.04968220047559935
|
||||||
|
],
|
||||||
|
"tick": 344,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
9.993012880413737,
|
||||||
|
6.933141542161293,
|
||||||
|
-0.5911385821243442,
|
||||||
|
8.699999999999987,
|
||||||
|
9.599999999999994
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.09993012880413737,
|
||||||
|
-0.0059113858212434265,
|
||||||
|
0.06933141542161293
|
||||||
|
],
|
||||||
|
"tick": 380,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"tcp_error": 1.0318688768540417e-16,
|
||||||
|
"render_error": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"pixels": {
|
||||||
|
"colors": 1365,
|
||||||
|
"width": 472,
|
||||||
|
"height": 586
|
||||||
|
},
|
||||||
|
"worker_derived_offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"viewports": [
|
||||||
|
{
|
||||||
|
"width": 1440,
|
||||||
|
"height": 1100,
|
||||||
|
"bounds": [
|
||||||
|
{
|
||||||
|
"x": 969,
|
||||||
|
"right": 999,
|
||||||
|
"width": 30
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 445,
|
||||||
|
"right": 513.625,
|
||||||
|
"width": 68.625
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 521.421875,
|
||||||
|
"right": 582.109375,
|
||||||
|
"width": 60.6875
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 586.65625,
|
||||||
|
"right": 634.34375,
|
||||||
|
"width": 47.6875
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 642.140625,
|
||||||
|
"right": 702.828125,
|
||||||
|
"width": 60.6875
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 707.375,
|
||||||
|
"right": 755.0625,
|
||||||
|
"width": 47.6875
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"width": 390,
|
||||||
|
"height": 844,
|
||||||
|
"bounds": [
|
||||||
|
{
|
||||||
|
"x": 341,
|
||||||
|
"right": 371,
|
||||||
|
"width": 30
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 23,
|
||||||
|
"right": 91.625,
|
||||||
|
"width": 68.625
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 99.421875,
|
||||||
|
"right": 160.109375,
|
||||||
|
"width": 60.6875
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 164.65625,
|
||||||
|
"right": 212.34375,
|
||||||
|
"width": 47.6875
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 220.140625,
|
||||||
|
"right": 280.828125,
|
||||||
|
"width": 60.6875
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 285.375,
|
||||||
|
"right": 333.0625,
|
||||||
|
"width": 47.6875
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"browser_errors": []
|
||||||
|
}
|
||||||
BIN
coverage/glb-machine/dialogs/import/viewport-1440.png
Normal file
|
After Width: | Height: | Size: 342 KiB |
BIN
coverage/glb-machine/dialogs/import/viewport-390.png
Normal file
|
After Width: | Height: | Size: 223 KiB |
BIN
coverage/glb-machine/dialogs/machine-glb-settings-dragged.png
Normal file
|
After Width: | Height: | Size: 212 KiB |
BIN
coverage/glb-machine/dialogs/parameters-1440.png
Normal file
|
After Width: | Height: | Size: 217 KiB |
BIN
coverage/glb-machine/dialogs/parameters-2048.png
Normal file
|
After Width: | Height: | Size: 222 KiB |
BIN
coverage/glb-machine/dialogs/parameters-390.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
73
coverage/glb-machine/dialogs/parametric/browser.report.json
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
{
|
||||||
|
"report_id": "trt-parametric-browser-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"machines": [
|
||||||
|
{
|
||||||
|
"id": "xyzac-trt",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"export_bytes": 4867,
|
||||||
|
"preserved_program": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
|
||||||
|
"canvas": {
|
||||||
|
"hash": 3797953256,
|
||||||
|
"colors": 2383,
|
||||||
|
"width": 472,
|
||||||
|
"height": 491
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "xyzbc-trt",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"export_bytes": 4875,
|
||||||
|
"preserved_program": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzbc.ngc",
|
||||||
|
"canvas": {
|
||||||
|
"hash": 1876807854,
|
||||||
|
"colors": 2446,
|
||||||
|
"width": 472,
|
||||||
|
"height": 491
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"viewports": [
|
||||||
|
{
|
||||||
|
"width": 1440,
|
||||||
|
"height": 1000,
|
||||||
|
"canvas": {
|
||||||
|
"hash": 518020959,
|
||||||
|
"colors": 2516,
|
||||||
|
"width": 472,
|
||||||
|
"height": 491
|
||||||
|
},
|
||||||
|
"controls_fit": true,
|
||||||
|
"interactive": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"width": 390,
|
||||||
|
"height": 844,
|
||||||
|
"canvas": {
|
||||||
|
"hash": 287810572,
|
||||||
|
"colors": 1808,
|
||||||
|
"width": 368,
|
||||||
|
"height": 378
|
||||||
|
},
|
||||||
|
"controls_fit": true,
|
||||||
|
"interactive": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"browser_errors": []
|
||||||
|
}
|
||||||
BIN
coverage/glb-machine/dialogs/parametric/layout-1440.png
Normal file
|
After Width: | Height: | Size: 309 KiB |
BIN
coverage/glb-machine/dialogs/parametric/layout-390.png
Normal file
|
After Width: | Height: | Size: 202 KiB |
BIN
coverage/glb-machine/dialogs/parametric/xyzac-trt-model.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
coverage/glb-machine/dialogs/parametric/xyzbc-trt-model.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
coverage/glb-machine/dialogs/preview-1440.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
coverage/glb-machine/dialogs/preview-2048.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
coverage/glb-machine/dialogs/preview-390.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
coverage/glb-machine/gantry/ac-gantry.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
coverage/glb-machine/gantry/ac.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
210
coverage/glb-machine/gantry/acceptance.report.json
Normal file
@@ -0,0 +1,210 @@
|
|||||||
|
{
|
||||||
|
"report_id": "gantry-machine-acceptance-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"tasks": [
|
||||||
|
"GLB-GAN01"
|
||||||
|
],
|
||||||
|
"models": [
|
||||||
|
{
|
||||||
|
"id": "ac",
|
||||||
|
"label": "AC 示例",
|
||||||
|
"profile": "trt-xyz-head/1",
|
||||||
|
"filename": "demo-ac-xyz-head.glb",
|
||||||
|
"urdf": "demo-ac-xyz-head.urdf",
|
||||||
|
"bytes": 530848,
|
||||||
|
"sha256": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1",
|
||||||
|
"coordinates": "XYZAC",
|
||||||
|
"rotation_point_mm": [
|
||||||
|
24,
|
||||||
|
-12,
|
||||||
|
8
|
||||||
|
],
|
||||||
|
"offsets_mm": [
|
||||||
|
0,
|
||||||
|
18,
|
||||||
|
-45
|
||||||
|
],
|
||||||
|
"links": [
|
||||||
|
"base",
|
||||||
|
"x_slide",
|
||||||
|
"y_slide",
|
||||||
|
"z_slide",
|
||||||
|
"spindle_head",
|
||||||
|
"tilt_table",
|
||||||
|
"c_table",
|
||||||
|
"work_frame"
|
||||||
|
],
|
||||||
|
"meshes": 71
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bc",
|
||||||
|
"label": "BC 示例",
|
||||||
|
"profile": "trt-xyz-head/1",
|
||||||
|
"filename": "demo-bc-xyz-head.glb",
|
||||||
|
"urdf": "demo-bc-xyz-head.urdf",
|
||||||
|
"bytes": 530532,
|
||||||
|
"sha256": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b",
|
||||||
|
"coordinates": "XYZBC",
|
||||||
|
"rotation_point_mm": [
|
||||||
|
-18,
|
||||||
|
14,
|
||||||
|
12
|
||||||
|
],
|
||||||
|
"offsets_mm": [
|
||||||
|
22,
|
||||||
|
0,
|
||||||
|
-40
|
||||||
|
],
|
||||||
|
"links": [
|
||||||
|
"base",
|
||||||
|
"x_slide",
|
||||||
|
"y_slide",
|
||||||
|
"z_slide",
|
||||||
|
"spindle_head",
|
||||||
|
"tilt_table",
|
||||||
|
"c_table",
|
||||||
|
"work_frame"
|
||||||
|
],
|
||||||
|
"meshes": 71
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "ac-gantry",
|
||||||
|
"label": "AC 示例桁架型",
|
||||||
|
"profile": "trt-xyz-gantry/1",
|
||||||
|
"filename": "demo-ac-gantry.glb",
|
||||||
|
"urdf": "demo-ac-gantry.urdf",
|
||||||
|
"bytes": 526004,
|
||||||
|
"sha256": "cee9fe5080fac3f87f8daca5d0f89ddb0c3c3eb7657fbdc81a7664ba9c4e4995",
|
||||||
|
"coordinates": "XYZAC",
|
||||||
|
"rotation_point_mm": [
|
||||||
|
24,
|
||||||
|
-12,
|
||||||
|
8
|
||||||
|
],
|
||||||
|
"offsets_mm": [
|
||||||
|
0,
|
||||||
|
18,
|
||||||
|
-45
|
||||||
|
],
|
||||||
|
"links": [
|
||||||
|
"base",
|
||||||
|
"x_slide",
|
||||||
|
"y_slide",
|
||||||
|
"z_slide",
|
||||||
|
"tilt_table",
|
||||||
|
"c_table",
|
||||||
|
"work_frame"
|
||||||
|
],
|
||||||
|
"meshes": 89
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bc-gantry",
|
||||||
|
"label": "BC 示例桁架型",
|
||||||
|
"profile": "trt-xyz-gantry/1",
|
||||||
|
"filename": "demo-bc-gantry.glb",
|
||||||
|
"urdf": "demo-bc-gantry.urdf",
|
||||||
|
"bytes": 525688,
|
||||||
|
"sha256": "d7188520ef1e79576d99861294e9dbdf24deb6fe14697ad5106fe605fa1766b5",
|
||||||
|
"coordinates": "XYZBC",
|
||||||
|
"rotation_point_mm": [
|
||||||
|
-18,
|
||||||
|
14,
|
||||||
|
12
|
||||||
|
],
|
||||||
|
"offsets_mm": [
|
||||||
|
22,
|
||||||
|
0,
|
||||||
|
-40
|
||||||
|
],
|
||||||
|
"links": [
|
||||||
|
"base",
|
||||||
|
"x_slide",
|
||||||
|
"y_slide",
|
||||||
|
"z_slide",
|
||||||
|
"tilt_table",
|
||||||
|
"c_table",
|
||||||
|
"work_frame"
|
||||||
|
],
|
||||||
|
"meshes": 89
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"wasm_sha256": "aa0f5d551e42859eef3b37aee9079f09ae04e668819da4e62aee2b74522e8bc6",
|
||||||
|
"evidence": [
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gantry/ac-gantry.png",
|
||||||
|
"sha256": "0c424b5b09d312a58146f5da9c6b75a307e9e680dcff873bf3757b677c923526"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gantry/ac.png",
|
||||||
|
"sha256": "2267e76cde1bb9db038cfee59992d0c06cedb8a9879b0b6b04b66c5c56d576c7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gantry/bc-gantry.png",
|
||||||
|
"sha256": "90235681b06b7c647c3a2b85c564f5ce2218e2d74ae14429de16d3f07a9b6fee"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gantry/bc.png",
|
||||||
|
"sha256": "f8c60fb173f8cc22dcb1f44da3c214a00ee2c401100e5536fabccc8d0d1904c3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gantry/build.log",
|
||||||
|
"sha256": "efaa9a77221bdf4dd1a94be96cf9095a5e92ae9d0da7c1644888bd4d2b8a35aa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gantry/catalog.log",
|
||||||
|
"sha256": "0381047251d0782a32175f9498e8a2c8edaf3697f3b6ae3c50585a4fd79df0ba"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gantry/catalog.report.json",
|
||||||
|
"sha256": "1af2d3449aaff6e62d452f7a8b1b81fde664175d4102ab0119709aeec9fd8124"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gantry/dialog-1440.png",
|
||||||
|
"sha256": "579704e84be183da2b6086ec706dbcbbb27bff7075b25730c1932e4aa84d40a5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gantry/dialog-390.png",
|
||||||
|
"sha256": "6b95d18157a075e7b2cb17f167c9900df0cf1a09715ba15ec8de30a1b160a36b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gantry/generation.log",
|
||||||
|
"sha256": "7d18176ee974965d1fbe0a3c27f57e340d996eb476b8b5d81e5378b7ff5709e9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gantry/geometry/ac-edited.png",
|
||||||
|
"sha256": "ccaca95b9a9074011a06177e87ca1aaff5b49385f3851873e3d218126cf5d532"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gantry/geometry/bc-edited.png",
|
||||||
|
"sha256": "9393dde053559491535f43338de29eac2eb0b6379395f491fc4ef027537dd808"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gantry/geometry/browser.report.json",
|
||||||
|
"sha256": "fd68f0041ad8ed904be3cb85ca2f9b5a01c0928043c9d3104012c109193ba50d"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gantry/geometry.log",
|
||||||
|
"sha256": "cae26be9c602ce9e81837e59f73aa7d42cafdd7dbfc10c3c1fff567ee0df607b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gantry/gltf-validation.report.json",
|
||||||
|
"sha256": "d0ac233f7aafe1f92073410fa6744a8640fbbbd9a8d9c8875edf37b5b4cf0772"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gantry/motion.log",
|
||||||
|
"sha256": "57ed59ba66d43ff00784733a3ddb7a0c3936c33aae0e03ab3c4fd4c2eacca361"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gantry/motion.report.json",
|
||||||
|
"sha256": "91c3fa8ed8037aac8e71b8c76d54c38db9dc011ae25f63553966860b624aa626"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gantry/reproducibility.report.json",
|
||||||
|
"sha256": "02d19f1ac767467e1f6871c40d2ed1ba1ee54bcee6781b5b984b1fbfcc9084e9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/gantry/validation.log",
|
||||||
|
"sha256": "e50555ddaccc33857eefa72a06cd3846f92fb00a9e05170d457169e4201e3852"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
coverage/glb-machine/gantry/bc-gantry.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
coverage/glb-machine/gantry/bc.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
507
coverage/glb-machine/gantry/catalog.report.json
Normal file
@@ -0,0 +1,507 @@
|
|||||||
|
{
|
||||||
|
"report_id": "gantry-machine-browser-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"examples": [
|
||||||
|
{
|
||||||
|
"entry": {
|
||||||
|
"id": "ac",
|
||||||
|
"label": "AC 示例",
|
||||||
|
"profile": "trt-xyz-head/1",
|
||||||
|
"filename": "demo-ac-xyz-head.glb",
|
||||||
|
"urdf": "demo-ac-xyz-head.urdf",
|
||||||
|
"bytes": 530848,
|
||||||
|
"sha256": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1",
|
||||||
|
"coordinates": "XYZAC",
|
||||||
|
"rotation_point_mm": [
|
||||||
|
24,
|
||||||
|
-12,
|
||||||
|
8
|
||||||
|
],
|
||||||
|
"offsets_mm": [
|
||||||
|
0,
|
||||||
|
18,
|
||||||
|
-45
|
||||||
|
],
|
||||||
|
"links": [
|
||||||
|
"base",
|
||||||
|
"x_slide",
|
||||||
|
"y_slide",
|
||||||
|
"z_slide",
|
||||||
|
"spindle_head",
|
||||||
|
"tilt_table",
|
||||||
|
"c_table",
|
||||||
|
"work_frame"
|
||||||
|
],
|
||||||
|
"meshes": 71
|
||||||
|
},
|
||||||
|
"profile": "trt-xyz-head/1",
|
||||||
|
"links": [
|
||||||
|
"base",
|
||||||
|
"x_slide",
|
||||||
|
"y_slide",
|
||||||
|
"z_slide",
|
||||||
|
"spindle_head",
|
||||||
|
"tilt_table",
|
||||||
|
"c_table",
|
||||||
|
"work_frame"
|
||||||
|
],
|
||||||
|
"tool": "spindle_head",
|
||||||
|
"initial": [],
|
||||||
|
"moved": [],
|
||||||
|
"rejections": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entry": {
|
||||||
|
"id": "bc",
|
||||||
|
"label": "BC 示例",
|
||||||
|
"profile": "trt-xyz-head/1",
|
||||||
|
"filename": "demo-bc-xyz-head.glb",
|
||||||
|
"urdf": "demo-bc-xyz-head.urdf",
|
||||||
|
"bytes": 530532,
|
||||||
|
"sha256": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b",
|
||||||
|
"coordinates": "XYZBC",
|
||||||
|
"rotation_point_mm": [
|
||||||
|
-18,
|
||||||
|
14,
|
||||||
|
12
|
||||||
|
],
|
||||||
|
"offsets_mm": [
|
||||||
|
22,
|
||||||
|
0,
|
||||||
|
-40
|
||||||
|
],
|
||||||
|
"links": [
|
||||||
|
"base",
|
||||||
|
"x_slide",
|
||||||
|
"y_slide",
|
||||||
|
"z_slide",
|
||||||
|
"spindle_head",
|
||||||
|
"tilt_table",
|
||||||
|
"c_table",
|
||||||
|
"work_frame"
|
||||||
|
],
|
||||||
|
"meshes": 71
|
||||||
|
},
|
||||||
|
"profile": "trt-xyz-head/1",
|
||||||
|
"links": [
|
||||||
|
"base",
|
||||||
|
"x_slide",
|
||||||
|
"y_slide",
|
||||||
|
"z_slide",
|
||||||
|
"spindle_head",
|
||||||
|
"tilt_table",
|
||||||
|
"c_table",
|
||||||
|
"work_frame"
|
||||||
|
],
|
||||||
|
"tool": "spindle_head",
|
||||||
|
"initial": [],
|
||||||
|
"moved": [],
|
||||||
|
"rejections": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entry": {
|
||||||
|
"id": "ac-gantry",
|
||||||
|
"label": "AC 示例桁架型",
|
||||||
|
"profile": "trt-xyz-gantry/1",
|
||||||
|
"filename": "demo-ac-gantry.glb",
|
||||||
|
"urdf": "demo-ac-gantry.urdf",
|
||||||
|
"bytes": 526004,
|
||||||
|
"sha256": "cee9fe5080fac3f87f8daca5d0f89ddb0c3c3eb7657fbdc81a7664ba9c4e4995",
|
||||||
|
"coordinates": "XYZAC",
|
||||||
|
"rotation_point_mm": [
|
||||||
|
24,
|
||||||
|
-12,
|
||||||
|
8
|
||||||
|
],
|
||||||
|
"offsets_mm": [
|
||||||
|
0,
|
||||||
|
18,
|
||||||
|
-45
|
||||||
|
],
|
||||||
|
"links": [
|
||||||
|
"base",
|
||||||
|
"x_slide",
|
||||||
|
"y_slide",
|
||||||
|
"z_slide",
|
||||||
|
"tilt_table",
|
||||||
|
"c_table",
|
||||||
|
"work_frame"
|
||||||
|
],
|
||||||
|
"meshes": 89
|
||||||
|
},
|
||||||
|
"profile": "trt-xyz-gantry/1",
|
||||||
|
"links": [
|
||||||
|
"base",
|
||||||
|
"x_slide",
|
||||||
|
"y_slide",
|
||||||
|
"z_slide",
|
||||||
|
"tilt_table",
|
||||||
|
"c_table",
|
||||||
|
"work_frame"
|
||||||
|
],
|
||||||
|
"tool": "z_slide",
|
||||||
|
"initial": [
|
||||||
|
{
|
||||||
|
"name": "gantry_z_ram_59",
|
||||||
|
"parent": "z_slide",
|
||||||
|
"position": [
|
||||||
|
0,
|
||||||
|
3.65,
|
||||||
|
0.1999999999999992
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_y_carriage_55",
|
||||||
|
"parent": "y_slide",
|
||||||
|
"position": [
|
||||||
|
0,
|
||||||
|
5,
|
||||||
|
-1.1102230246251565e-15
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "moving_bridge_chord_45",
|
||||||
|
"parent": "x_slide",
|
||||||
|
"position": [
|
||||||
|
0,
|
||||||
|
5.5,
|
||||||
|
-1.2212453270876722e-15
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "moving_bridge_chord_46",
|
||||||
|
"parent": "x_slide",
|
||||||
|
"position": [
|
||||||
|
0,
|
||||||
|
6.5,
|
||||||
|
-1.4432899320127035e-15
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_post_11",
|
||||||
|
"parent": "base",
|
||||||
|
"position": [
|
||||||
|
-3.8,
|
||||||
|
0.4999999999999993,
|
||||||
|
-3.2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_post_13",
|
||||||
|
"parent": "base",
|
||||||
|
"position": [
|
||||||
|
-3.8,
|
||||||
|
0.5000000000000007,
|
||||||
|
3.2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_post_15",
|
||||||
|
"parent": "base",
|
||||||
|
"position": [
|
||||||
|
3.8,
|
||||||
|
0.4999999999999993,
|
||||||
|
-3.2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_post_17",
|
||||||
|
"parent": "base",
|
||||||
|
"position": [
|
||||||
|
3.8,
|
||||||
|
0.5000000000000007,
|
||||||
|
3.2
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"moved": [
|
||||||
|
{
|
||||||
|
"name": "gantry_z_ram_59",
|
||||||
|
"parent": "z_slide",
|
||||||
|
"position": [
|
||||||
|
0.2,
|
||||||
|
3.6999999999999997,
|
||||||
|
0.2999999999999992
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_y_carriage_55",
|
||||||
|
"parent": "y_slide",
|
||||||
|
"position": [
|
||||||
|
0.2,
|
||||||
|
5,
|
||||||
|
0.0999999999999989
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "moving_bridge_chord_45",
|
||||||
|
"parent": "x_slide",
|
||||||
|
"position": [
|
||||||
|
0.2,
|
||||||
|
5.5,
|
||||||
|
-1.2212453270876722e-15
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "moving_bridge_chord_46",
|
||||||
|
"parent": "x_slide",
|
||||||
|
"position": [
|
||||||
|
0.2,
|
||||||
|
6.5,
|
||||||
|
-1.4432899320127035e-15
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_post_11",
|
||||||
|
"parent": "base",
|
||||||
|
"position": [
|
||||||
|
-3.8,
|
||||||
|
0.4999999999999993,
|
||||||
|
-3.2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_post_13",
|
||||||
|
"parent": "base",
|
||||||
|
"position": [
|
||||||
|
-3.8,
|
||||||
|
0.5000000000000007,
|
||||||
|
3.2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_post_15",
|
||||||
|
"parent": "base",
|
||||||
|
"position": [
|
||||||
|
3.8,
|
||||||
|
0.4999999999999993,
|
||||||
|
-3.2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_post_17",
|
||||||
|
"parent": "base",
|
||||||
|
"position": [
|
||||||
|
3.8,
|
||||||
|
0.5000000000000007,
|
||||||
|
3.2
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"rejections": [
|
||||||
|
"wrong-tool",
|
||||||
|
"wrong-profile",
|
||||||
|
"rotary-on-xyz"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entry": {
|
||||||
|
"id": "bc-gantry",
|
||||||
|
"label": "BC 示例桁架型",
|
||||||
|
"profile": "trt-xyz-gantry/1",
|
||||||
|
"filename": "demo-bc-gantry.glb",
|
||||||
|
"urdf": "demo-bc-gantry.urdf",
|
||||||
|
"bytes": 525688,
|
||||||
|
"sha256": "d7188520ef1e79576d99861294e9dbdf24deb6fe14697ad5106fe605fa1766b5",
|
||||||
|
"coordinates": "XYZBC",
|
||||||
|
"rotation_point_mm": [
|
||||||
|
-18,
|
||||||
|
14,
|
||||||
|
12
|
||||||
|
],
|
||||||
|
"offsets_mm": [
|
||||||
|
22,
|
||||||
|
0,
|
||||||
|
-40
|
||||||
|
],
|
||||||
|
"links": [
|
||||||
|
"base",
|
||||||
|
"x_slide",
|
||||||
|
"y_slide",
|
||||||
|
"z_slide",
|
||||||
|
"tilt_table",
|
||||||
|
"c_table",
|
||||||
|
"work_frame"
|
||||||
|
],
|
||||||
|
"meshes": 89
|
||||||
|
},
|
||||||
|
"profile": "trt-xyz-gantry/1",
|
||||||
|
"links": [
|
||||||
|
"base",
|
||||||
|
"x_slide",
|
||||||
|
"y_slide",
|
||||||
|
"z_slide",
|
||||||
|
"tilt_table",
|
||||||
|
"c_table",
|
||||||
|
"work_frame"
|
||||||
|
],
|
||||||
|
"tool": "z_slide",
|
||||||
|
"initial": [
|
||||||
|
{
|
||||||
|
"name": "gantry_z_ram_59",
|
||||||
|
"parent": "z_slide",
|
||||||
|
"position": [
|
||||||
|
0,
|
||||||
|
3.65,
|
||||||
|
0.1999999999999992
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_y_carriage_55",
|
||||||
|
"parent": "y_slide",
|
||||||
|
"position": [
|
||||||
|
0,
|
||||||
|
5,
|
||||||
|
-1.1102230246251565e-15
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "moving_bridge_chord_45",
|
||||||
|
"parent": "x_slide",
|
||||||
|
"position": [
|
||||||
|
0,
|
||||||
|
5.5,
|
||||||
|
-1.2212453270876722e-15
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "moving_bridge_chord_46",
|
||||||
|
"parent": "x_slide",
|
||||||
|
"position": [
|
||||||
|
0,
|
||||||
|
6.5,
|
||||||
|
-1.4432899320127035e-15
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_post_11",
|
||||||
|
"parent": "base",
|
||||||
|
"position": [
|
||||||
|
-3.8,
|
||||||
|
0.4999999999999993,
|
||||||
|
-3.2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_post_13",
|
||||||
|
"parent": "base",
|
||||||
|
"position": [
|
||||||
|
-3.8,
|
||||||
|
0.5000000000000007,
|
||||||
|
3.2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_post_15",
|
||||||
|
"parent": "base",
|
||||||
|
"position": [
|
||||||
|
3.8,
|
||||||
|
0.4999999999999993,
|
||||||
|
-3.2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_post_17",
|
||||||
|
"parent": "base",
|
||||||
|
"position": [
|
||||||
|
3.8,
|
||||||
|
0.5000000000000007,
|
||||||
|
3.2
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"moved": [
|
||||||
|
{
|
||||||
|
"name": "gantry_z_ram_59",
|
||||||
|
"parent": "z_slide",
|
||||||
|
"position": [
|
||||||
|
0.2,
|
||||||
|
3.6999999999999997,
|
||||||
|
0.2999999999999992
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_y_carriage_55",
|
||||||
|
"parent": "y_slide",
|
||||||
|
"position": [
|
||||||
|
0.2,
|
||||||
|
5,
|
||||||
|
0.0999999999999989
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "moving_bridge_chord_45",
|
||||||
|
"parent": "x_slide",
|
||||||
|
"position": [
|
||||||
|
0.2,
|
||||||
|
5.5,
|
||||||
|
-1.2212453270876722e-15
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "moving_bridge_chord_46",
|
||||||
|
"parent": "x_slide",
|
||||||
|
"position": [
|
||||||
|
0.2,
|
||||||
|
6.5,
|
||||||
|
-1.4432899320127035e-15
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_post_11",
|
||||||
|
"parent": "base",
|
||||||
|
"position": [
|
||||||
|
-3.8,
|
||||||
|
0.4999999999999993,
|
||||||
|
-3.2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_post_13",
|
||||||
|
"parent": "base",
|
||||||
|
"position": [
|
||||||
|
-3.8,
|
||||||
|
0.5000000000000007,
|
||||||
|
3.2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_post_15",
|
||||||
|
"parent": "base",
|
||||||
|
"position": [
|
||||||
|
3.8,
|
||||||
|
0.4999999999999993,
|
||||||
|
-3.2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gantry_post_17",
|
||||||
|
"parent": "base",
|
||||||
|
"position": [
|
||||||
|
3.8,
|
||||||
|
0.5000000000000007,
|
||||||
|
3.2
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"rejections": [
|
||||||
|
"wrong-tool",
|
||||||
|
"wrong-profile",
|
||||||
|
"rotary-on-xyz"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"layouts": [
|
||||||
|
{
|
||||||
|
"width": 1440,
|
||||||
|
"height": 1000,
|
||||||
|
"controls": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"width": 390,
|
||||||
|
"height": 844,
|
||||||
|
"controls": 10
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"browser_errors": []
|
||||||
|
}
|
||||||
BIN
coverage/glb-machine/gantry/dialog-1440.png
Normal file
|
After Width: | Height: | Size: 265 KiB |
BIN
coverage/glb-machine/gantry/dialog-390.png
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
coverage/glb-machine/gantry/geometry/ac-edited.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
coverage/glb-machine/gantry/geometry/bc-edited.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
191
coverage/glb-machine/gantry/geometry/browser.report.json
Normal file
@@ -0,0 +1,191 @@
|
|||||||
|
{
|
||||||
|
"report_id": "imported-geometry-browser-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"machines": [
|
||||||
|
{
|
||||||
|
"id": "ac",
|
||||||
|
"original": {
|
||||||
|
"hash": "cee9fe5080fac3f87f8daca5d0f89ddb0c3c3eb7657fbdc81a7664ba9c4e4995",
|
||||||
|
"filename": "demo-ac-gantry.glb",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"applied": {
|
||||||
|
"hash": "cee9fe5080fac3f87f8daca5d0f89ddb0c3c3eb7657fbdc81a7664ba9c4e4995",
|
||||||
|
"filename": "demo-ac-gantry.glb",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 31,
|
||||||
|
"y_rot_point": -9,
|
||||||
|
"z_rot_point": 15,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 23,
|
||||||
|
"z_offset": -34,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"edits": {
|
||||||
|
"x_rot_point": 31,
|
||||||
|
"y_rot_point": -9,
|
||||||
|
"z_rot_point": 15,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 23,
|
||||||
|
"z_offset": -34
|
||||||
|
},
|
||||||
|
"projection": {
|
||||||
|
"checks": [
|
||||||
|
2.7755575615628914e-17,
|
||||||
|
3.2959746043559335e-17,
|
||||||
|
2.1942709178604383e-17,
|
||||||
|
2.3263411494723067e-16,
|
||||||
|
1.716587549445839e-16,
|
||||||
|
1.3877787807814457e-16,
|
||||||
|
3.925231146709438e-17,
|
||||||
|
7.473417450352271e-17,
|
||||||
|
3.7367087251761353e-17,
|
||||||
|
1.979582157258511e-16,
|
||||||
|
1.6711069443220838e-16,
|
||||||
|
6.206335383118183e-17,
|
||||||
|
2.7755575615628914e-17,
|
||||||
|
6.369057972232327e-17,
|
||||||
|
2.0816681711721685e-17,
|
||||||
|
3.194906681775283e-16,
|
||||||
|
6.206335383118183e-17,
|
||||||
|
5.551115123125783e-17
|
||||||
|
],
|
||||||
|
"mesh_count": 90,
|
||||||
|
"source_preserved": true,
|
||||||
|
"renamed_joint_supported": true,
|
||||||
|
"incompatible_rejected": true
|
||||||
|
},
|
||||||
|
"tcpError": {
|
||||||
|
"error": 1.939479807224432e-17,
|
||||||
|
"rendered": 0
|
||||||
|
},
|
||||||
|
"model_retained_on_reload_and_ini_import": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bc",
|
||||||
|
"original": {
|
||||||
|
"hash": "d7188520ef1e79576d99861294e9dbdf24deb6fe14697ad5106fe605fa1766b5",
|
||||||
|
"filename": "demo-bc-gantry.glb",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"applied": {
|
||||||
|
"hash": "d7188520ef1e79576d99861294e9dbdf24deb6fe14697ad5106fe605fa1766b5",
|
||||||
|
"filename": "demo-bc-gantry.glb",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 31,
|
||||||
|
"y_rot_point": -9,
|
||||||
|
"z_rot_point": 15,
|
||||||
|
"x_offset": 27,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -34,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"edits": {
|
||||||
|
"x_rot_point": 31,
|
||||||
|
"y_rot_point": -9,
|
||||||
|
"z_rot_point": 15,
|
||||||
|
"x_offset": 27,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -34
|
||||||
|
},
|
||||||
|
"projection": {
|
||||||
|
"checks": [
|
||||||
|
5.551115123125783e-17,
|
||||||
|
0,
|
||||||
|
1.1123893155135927e-16,
|
||||||
|
9.205483015737869e-17,
|
||||||
|
1.2118257228641695e-16,
|
||||||
|
1.2719202621569003e-16,
|
||||||
|
6.798699777552591e-17,
|
||||||
|
1.1443916996305594e-16,
|
||||||
|
1.2177709378935645e-16,
|
||||||
|
1.55941895632402e-16,
|
||||||
|
3.469446951953614e-17,
|
||||||
|
5.551115123125783e-17,
|
||||||
|
5.551115123125783e-17,
|
||||||
|
0,
|
||||||
|
1.1102230246251565e-16,
|
||||||
|
1.4703252574089423e-16,
|
||||||
|
1.1857187100668868e-16,
|
||||||
|
5.003707553108401e-17
|
||||||
|
],
|
||||||
|
"mesh_count": 90,
|
||||||
|
"source_preserved": true,
|
||||||
|
"renamed_joint_supported": true,
|
||||||
|
"incompatible_rejected": true
|
||||||
|
},
|
||||||
|
"tcpError": {
|
||||||
|
"error": 6.636893469679434e-17,
|
||||||
|
"rendered": 0
|
||||||
|
},
|
||||||
|
"model_retained_on_reload_and_ini_import": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"browser_errors": []
|
||||||
|
}
|
||||||
2091
coverage/glb-machine/gantry/gltf-validation.report.json
Normal file
2544
coverage/glb-machine/gantry/motion.report.json
Normal file
19
coverage/glb-machine/gantry/reproducibility.report.json
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"report_id": "gantry-machine-reproducibility-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"source_matches_production": true,
|
||||||
|
"standard_glbs_unchanged": true,
|
||||||
|
"generated_files_identical": true,
|
||||||
|
"sha256": {
|
||||||
|
"demo-ac-xyz-head.urdf": "558ce184a083a9ad5070ac2555bd05f18bdbdd8e537882c0a0443ebdb30abce6",
|
||||||
|
"demo-ac-xyz-head.glb": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1",
|
||||||
|
"demo-ac-gantry.glb": "cee9fe5080fac3f87f8daca5d0f89ddb0c3c3eb7657fbdc81a7664ba9c4e4995",
|
||||||
|
"demo-bc-gantry.glb": "d7188520ef1e79576d99861294e9dbdf24deb6fe14697ad5106fe605fa1766b5",
|
||||||
|
"LICENSE.txt": "e08dd9a67a260e10205ed953751b46cc9fb4b764fa9b87ee2a239654aaabb4b0",
|
||||||
|
"demo-bc-xyz-head.glb": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b",
|
||||||
|
"manifest.json": "7d18176ee974965d1fbe0a3c27f57e340d996eb476b8b5d81e5378b7ff5709e9",
|
||||||
|
"demo-ac-gantry.urdf": "af71651b0c475fa6d8b09c9e9ed507a78c593d6f2d7d64bccc0642a63f354089",
|
||||||
|
"demo-bc-gantry.urdf": "b3cca14fa0230283c6eed28b8c28fa1867b80c158a7d896d90a44c96cf420c21",
|
||||||
|
"demo-bc-xyz-head.urdf": "6f08b6d3f534b6930d50b73b38a4db103246929f59ccdc09d4423bc1e6632f5b"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
coverage/glb-machine/geometry-edit/ac-edited.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
82
coverage/glb-machine/geometry-edit/acceptance.report.json
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
{
|
||||||
|
"report_id": "imported-geometry-acceptance-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"tasks": [
|
||||||
|
"GLB-GEO01"
|
||||||
|
],
|
||||||
|
"wasm_sha256": "aa0f5d551e42859eef3b37aee9079f09ae04e668819da4e62aee2b74522e8bc6",
|
||||||
|
"evidence": [
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/geometry-edit/ac-edited.png",
|
||||||
|
"sha256": "8e7e7c679d3ba7a910a12b86f3451561474d16d6d16301d1ffca05ddb1a69c52"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/geometry-edit/bc-edited.png",
|
||||||
|
"sha256": "ad7a24ddbe3f00bd707826016f2daf96a8fa9993a9b1d7a1cffbe403851bc135"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/geometry-edit/before.log",
|
||||||
|
"sha256": "5d5ac459a427184211b31bd6548a9527c5aa5beb3b26a24fb41c8cd34f29249a"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/geometry-edit/browser.log",
|
||||||
|
"sha256": "3500e18f74431e094d35b115cd6cd0144447a3312374cd04a1ddac7b2bd1a210"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/geometry-edit/browser.report.json",
|
||||||
|
"sha256": "3d246fe3a2e7da6dcab0d7903d0d5cffbc1ce84d4e4ce2db061598c1a139dfad"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/geometry-edit/build.log",
|
||||||
|
"sha256": "3b11fb8e419c158beeb9614650f31020cc87b2a482d01a3db99f0f8948517901"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/geometry-edit/import/ac-imported.png",
|
||||||
|
"sha256": "697c2aed197333bda523d44173798723c245a1f35002644992ee8b727ed22a8f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/geometry-edit/import/bc-imported.png",
|
||||||
|
"sha256": "6869be7b19fe844aaf50b202912f275f497b979452e0532f65c317175abdf73f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/geometry-edit/import/browser.report.json",
|
||||||
|
"sha256": "4bdbba0522cfe0c42624841da88b1c57e649a1261bae6711011c406128c74118"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/geometry-edit/import/viewport-1440.png",
|
||||||
|
"sha256": "d8be53a6e5e6cf1d5359b6aba94fe6319ff33decdb0af4a0b3307ede6f60ab33"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/geometry-edit/import/viewport-390.png",
|
||||||
|
"sha256": "7d0f0ccaf187b62573ebb38d5bb033c79dd81e9b06eb32bf935457a6c8e82e91"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/geometry-edit/import.log",
|
||||||
|
"sha256": "f8308922ef1d78fc82ab21081a16b8c369808e662c1ac85ceef03558c2706410"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/geometry-edit/parametric/browser.report.json",
|
||||||
|
"sha256": "28eb780b7bcbfc94a43226c267868444287069f4a3c4c6ffab256759d439b00b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/geometry-edit/parametric/layout-1440.png",
|
||||||
|
"sha256": "aba2d351796a2c04ba8d49cd164509502ebbe2e8aa4bfbd17288b2931dfd497e"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/geometry-edit/parametric/layout-390.png",
|
||||||
|
"sha256": "23b7804ccfefdb3bcc05b754d5fedb76db52da4d2e840ce25b2f0c7487a86fba"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/geometry-edit/parametric/xyzac-trt-model.png",
|
||||||
|
"sha256": "6b0f89a3d9f7345a2ac12ff1beb82115e6f957b9b3f0f61766d62f47b8f072fb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/geometry-edit/parametric/xyzbc-trt-model.png",
|
||||||
|
"sha256": "38ed4ba88c7e72d6f30705ef48732ca3d0d9152ee6f17ce8cb8bc86ad3dcfce6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/geometry-edit/parametric.log",
|
||||||
|
"sha256": "6aa0af350b31f8b04e220da964cc0eb62357ef0dddb51390152d5ca0b93a7cf7"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
coverage/glb-machine/geometry-edit/bc-edited.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
191
coverage/glb-machine/geometry-edit/browser.report.json
Normal file
@@ -0,0 +1,191 @@
|
|||||||
|
{
|
||||||
|
"report_id": "imported-geometry-browser-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"machines": [
|
||||||
|
{
|
||||||
|
"id": "ac",
|
||||||
|
"original": {
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1",
|
||||||
|
"filename": "demo-ac-xyz-head.glb",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"applied": {
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1",
|
||||||
|
"filename": "demo-ac-xyz-head.glb",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 31,
|
||||||
|
"y_rot_point": -9,
|
||||||
|
"z_rot_point": 15,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 23,
|
||||||
|
"z_offset": -34,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"edits": {
|
||||||
|
"x_rot_point": 31,
|
||||||
|
"y_rot_point": -9,
|
||||||
|
"z_rot_point": 15,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 23,
|
||||||
|
"z_offset": -34
|
||||||
|
},
|
||||||
|
"projection": {
|
||||||
|
"checks": [
|
||||||
|
2.7755575615628914e-17,
|
||||||
|
3.2959746043559335e-17,
|
||||||
|
2.1942709178604383e-17,
|
||||||
|
2.3263411494723067e-16,
|
||||||
|
1.716587549445839e-16,
|
||||||
|
1.3877787807814457e-16,
|
||||||
|
3.925231146709438e-17,
|
||||||
|
7.473417450352271e-17,
|
||||||
|
3.7367087251761353e-17,
|
||||||
|
1.979582157258511e-16,
|
||||||
|
1.6711069443220838e-16,
|
||||||
|
6.206335383118183e-17,
|
||||||
|
2.7755575615628914e-17,
|
||||||
|
6.369057972232327e-17,
|
||||||
|
2.0816681711721685e-17,
|
||||||
|
3.194906681775283e-16,
|
||||||
|
6.206335383118183e-17,
|
||||||
|
5.551115123125783e-17
|
||||||
|
],
|
||||||
|
"mesh_count": 72,
|
||||||
|
"source_preserved": true,
|
||||||
|
"renamed_joint_supported": true,
|
||||||
|
"incompatible_rejected": true
|
||||||
|
},
|
||||||
|
"tcpError": {
|
||||||
|
"error": 1.9778890766513102e-17,
|
||||||
|
"rendered": 0
|
||||||
|
},
|
||||||
|
"model_retained_on_reload_and_ini_import": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bc",
|
||||||
|
"original": {
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b",
|
||||||
|
"filename": "demo-bc-xyz-head.glb",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"applied": {
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b",
|
||||||
|
"filename": "demo-bc-xyz-head.glb",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 31,
|
||||||
|
"y_rot_point": -9,
|
||||||
|
"z_rot_point": 15,
|
||||||
|
"x_offset": 27,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -34,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"edits": {
|
||||||
|
"x_rot_point": 31,
|
||||||
|
"y_rot_point": -9,
|
||||||
|
"z_rot_point": 15,
|
||||||
|
"x_offset": 27,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -34
|
||||||
|
},
|
||||||
|
"projection": {
|
||||||
|
"checks": [
|
||||||
|
5.551115123125783e-17,
|
||||||
|
0,
|
||||||
|
1.1123893155135927e-16,
|
||||||
|
9.205483015737869e-17,
|
||||||
|
1.2118257228641695e-16,
|
||||||
|
1.2719202621569003e-16,
|
||||||
|
6.798699777552591e-17,
|
||||||
|
1.1443916996305594e-16,
|
||||||
|
1.2177709378935645e-16,
|
||||||
|
1.55941895632402e-16,
|
||||||
|
3.469446951953614e-17,
|
||||||
|
5.551115123125783e-17,
|
||||||
|
5.551115123125783e-17,
|
||||||
|
0,
|
||||||
|
1.1102230246251565e-16,
|
||||||
|
1.4703252574089423e-16,
|
||||||
|
1.1857187100668868e-16,
|
||||||
|
5.003707553108401e-17
|
||||||
|
],
|
||||||
|
"mesh_count": 72,
|
||||||
|
"source_preserved": true,
|
||||||
|
"renamed_joint_supported": true,
|
||||||
|
"incompatible_rejected": true
|
||||||
|
},
|
||||||
|
"tcpError": {
|
||||||
|
"error": 6.636893469679434e-17,
|
||||||
|
"rendered": 0
|
||||||
|
},
|
||||||
|
"model_retained_on_reload_and_ini_import": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"browser_errors": []
|
||||||
|
}
|
||||||
BIN
coverage/glb-machine/geometry-edit/import/ac-imported.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
coverage/glb-machine/geometry-edit/import/bc-imported.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
982
coverage/glb-machine/geometry-edit/import/browser.report.json
Normal file
@@ -0,0 +1,982 @@
|
|||||||
|
{
|
||||||
|
"report_id": "glb-machine-browser-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"wasm_sha256": "aa0f5d551e42859eef3b37aee9079f09ae04e668819da4e62aee2b74522e8bc6",
|
||||||
|
"parser": [
|
||||||
|
{
|
||||||
|
"id": "ac",
|
||||||
|
"rejected": [
|
||||||
|
{
|
||||||
|
"name": "truncated",
|
||||||
|
"error": "机床模型无效:GLB 头部或长度错误"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "missing-schema",
|
||||||
|
"error": "机床模型无效:缺少 linuxcnc.machine/1 内嵌 URDF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "external-buffer",
|
||||||
|
"error": "机床模型无效:GLB 必须自包含,禁止外部 buffer/图片"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "external-texture",
|
||||||
|
"error": "机床模型无效:GLB 必须自包含,禁止外部 buffer/图片"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "animation",
|
||||||
|
"error": "机床模型无效:运动节点不能由动画、蒙皮或压缩扩展驱动"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "node-cycle",
|
||||||
|
"error": "机床模型无效:GLB 节点环、重复父节点或索引无效"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "wrong-hierarchy",
|
||||||
|
"error": "机床模型无效:GLB 层级与 URDF 不同:c_table"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "node-offset-mismatch",
|
||||||
|
"error": "机床模型无效:GLB 节点 c_table 零位与 URDF 不同"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "duplicate-link",
|
||||||
|
"error": "机床模型无效:GLB link base 缺失或重名"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "matrix-origin-mismatch",
|
||||||
|
"error": "机床模型无效:GLB 节点 c_table 矩阵与 URDF 不同"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "xml-syntax",
|
||||||
|
"error": "机床模型无效:URDF XML 语法错误"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "doctype",
|
||||||
|
"error": "机床模型无效:URDF 长度或 XML 声明不支持"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "duplicate-coordinate",
|
||||||
|
"error": "机床模型无效:需要 XYZAC 或 XYZBC 五个唯一运动轴"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "negative-axis",
|
||||||
|
"error": "机床模型无效:要求底座 → X → Y → Z 正交刀具链,零位 origin=0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nonzero-rpy",
|
||||||
|
"error": "机床模型无效:v1 不支持旋转的关节零位 rpy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nan-limit",
|
||||||
|
"error": "机床模型无效:需要有限数值"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mimic",
|
||||||
|
"error": "机床模型无效:不支持 mimic"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "unknown-profile",
|
||||||
|
"error": "机床模型无效:不支持的运动学 profile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "broken-tree",
|
||||||
|
"error": "机床模型无效:存在断开的结构或环"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "runtime-range-outside-model",
|
||||||
|
"error": "X:INI 行程超出 URDF,先调整运行配置"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "runtime-speed-outside-model",
|
||||||
|
"error": "X:INI 速度超出 URDF"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bc",
|
||||||
|
"rejected": [
|
||||||
|
{
|
||||||
|
"name": "truncated",
|
||||||
|
"error": "机床模型无效:GLB 头部或长度错误"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "missing-schema",
|
||||||
|
"error": "机床模型无效:缺少 linuxcnc.machine/1 内嵌 URDF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "external-buffer",
|
||||||
|
"error": "机床模型无效:GLB 必须自包含,禁止外部 buffer/图片"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "external-texture",
|
||||||
|
"error": "机床模型无效:GLB 必须自包含,禁止外部 buffer/图片"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "animation",
|
||||||
|
"error": "机床模型无效:运动节点不能由动画、蒙皮或压缩扩展驱动"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "node-cycle",
|
||||||
|
"error": "机床模型无效:GLB 节点环、重复父节点或索引无效"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "wrong-hierarchy",
|
||||||
|
"error": "机床模型无效:GLB 层级与 URDF 不同:c_table"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "node-offset-mismatch",
|
||||||
|
"error": "机床模型无效:GLB 节点 c_table 零位与 URDF 不同"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "duplicate-link",
|
||||||
|
"error": "机床模型无效:GLB link base 缺失或重名"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "matrix-origin-mismatch",
|
||||||
|
"error": "机床模型无效:GLB 节点 c_table 矩阵与 URDF 不同"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "xml-syntax",
|
||||||
|
"error": "机床模型无效:URDF XML 语法错误"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "doctype",
|
||||||
|
"error": "机床模型无效:URDF 长度或 XML 声明不支持"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "duplicate-coordinate",
|
||||||
|
"error": "机床模型无效:需要 XYZAC 或 XYZBC 五个唯一运动轴"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "negative-axis",
|
||||||
|
"error": "机床模型无效:要求底座 → X → Y → Z 正交刀具链,零位 origin=0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nonzero-rpy",
|
||||||
|
"error": "机床模型无效:v1 不支持旋转的关节零位 rpy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nan-limit",
|
||||||
|
"error": "机床模型无效:需要有限数值"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mimic",
|
||||||
|
"error": "机床模型无效:不支持 mimic"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "unknown-profile",
|
||||||
|
"error": "机床模型无效:不支持的运动学 profile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "broken-tree",
|
||||||
|
"error": "机床模型无效:存在断开的结构或环"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "runtime-range-outside-model",
|
||||||
|
"error": "X:INI 行程超出 URDF,先调整运行配置"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "runtime-speed-outside-model",
|
||||||
|
"error": "X:INI 速度超出 URDF"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"machines": [
|
||||||
|
{
|
||||||
|
"id": "ac",
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1",
|
||||||
|
"coordinates": "XYZAC",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"z_offset": -45
|
||||||
|
},
|
||||||
|
"program_preserved": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
|
||||||
|
"geometry": [
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 6.206335383118183e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 25,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.2412670766236366e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 65,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.1933397187179203e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -35,
|
||||||
|
"c": 125,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 2.1599919653272043e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 42,
|
||||||
|
"c": -80,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 2.486410087150353e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -80,
|
||||||
|
"c": 270,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.709648974837069e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 6.206335383118183e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 25,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.3472894910096233e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 65,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.1354490689426183e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -35,
|
||||||
|
"c": 125,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 2.036065864674698e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 42,
|
||||||
|
"c": -80,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 2.482534153247273e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -80,
|
||||||
|
"c": 270,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.3877787807814457e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 6.206335383118183e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 25,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 1.2412670766236366e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 65,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 9.508199615517185e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -35,
|
||||||
|
"c": 125,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 1.9141791241147513e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 42,
|
||||||
|
"c": -80,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 2.2591401799415137e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -80,
|
||||||
|
"c": 270,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 1.1857187100668868e-16
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"jogs": [
|
||||||
|
{
|
||||||
|
"axis": "a",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
4.66664999999999,
|
||||||
|
3.466650000000003,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.0466664999999999,
|
||||||
|
7.697509296633605e-18,
|
||||||
|
0.03466650000000003
|
||||||
|
],
|
||||||
|
"tick": 59,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
4.66664999999999,
|
||||||
|
-0.578220496871058,
|
||||||
|
-0.5014400651608497,
|
||||||
|
6.300000000000009,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.0466664999999999,
|
||||||
|
-0.005014400651608498,
|
||||||
|
-0.00578220496871058
|
||||||
|
],
|
||||||
|
"tick": 95,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"tcp_error": 4.192148702340308e-17,
|
||||||
|
"render_error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
4.66664999999999,
|
||||||
|
-0.578220496871058,
|
||||||
|
-0.5014400651608497,
|
||||||
|
6.300000000000009,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.0466664999999999,
|
||||||
|
-0.005014400651608498,
|
||||||
|
-0.00578220496871058
|
||||||
|
],
|
||||||
|
"tick": 95,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
3.5127488929315476,
|
||||||
|
-2.1333277540415505,
|
||||||
|
-0.6731255047163103,
|
||||||
|
6.300000000000009,
|
||||||
|
4.499999999999995
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.03512748892931548,
|
||||||
|
-0.006731255047163108,
|
||||||
|
-0.021333277540415505
|
||||||
|
],
|
||||||
|
"tick": 125,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"tcp_error": 4.772854504744019e-17,
|
||||||
|
"render_error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "a",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
3.5127488929315476,
|
||||||
|
-2.1333277540415505,
|
||||||
|
-0.6731255047163103,
|
||||||
|
6.300000000000009,
|
||||||
|
4.499999999999995
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.03512748892931548,
|
||||||
|
-0.006731255047163108,
|
||||||
|
-0.021333277540415505
|
||||||
|
],
|
||||||
|
"tick": 125,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
3.5127488929315476,
|
||||||
|
-4.772000312433438,
|
||||||
|
-1.3663524148917787,
|
||||||
|
10.5,
|
||||||
|
4.499999999999995
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.03512748892931548,
|
||||||
|
-0.013663524148917796,
|
||||||
|
-0.04772000312433438
|
||||||
|
],
|
||||||
|
"tick": 154,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"tcp_error": 5.006713685883697e-17,
|
||||||
|
"render_error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
3.5127488929315476,
|
||||||
|
-4.772000312433438,
|
||||||
|
-1.3663524148917787,
|
||||||
|
10.5,
|
||||||
|
4.499999999999995
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.03512748892931548,
|
||||||
|
-0.013663524148917796,
|
||||||
|
-0.04772000312433438
|
||||||
|
],
|
||||||
|
"tick": 154,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
2.4851585016404982,
|
||||||
|
-6.394633156793212,
|
||||||
|
-1.6670896365399557,
|
||||||
|
10.5,
|
||||||
|
8.99999999999999
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.02485158501640498,
|
||||||
|
-0.01667089636539957,
|
||||||
|
-0.06394633156793213
|
||||||
|
],
|
||||||
|
"tick": 184,
|
||||||
|
"hash": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1"
|
||||||
|
},
|
||||||
|
"tcp_error": 4.415885040048117e-17,
|
||||||
|
"render_error": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"pixels": {
|
||||||
|
"colors": 1405,
|
||||||
|
"width": 472,
|
||||||
|
"height": 586
|
||||||
|
},
|
||||||
|
"worker_derived_offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 18,
|
||||||
|
"z_offset": -45,
|
||||||
|
"tool_offset": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bc",
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b",
|
||||||
|
"coordinates": "XYZBC",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"z_offset": -40
|
||||||
|
},
|
||||||
|
"program_preserved": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
|
||||||
|
"geometry": [
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 7.850462293418876e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 25,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.1188630228279524e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 65,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.3672438525262642e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -35,
|
||||||
|
"c": 125,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 2.3714374201337736e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 42,
|
||||||
|
"c": -80,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.0007415106216802e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -80,
|
||||||
|
"c": 270,
|
||||||
|
"tool_offset": 0,
|
||||||
|
"error": 1.3597399555105182e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 6.206335383118183e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 25,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.1443916996305594e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 65,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.3951318755036565e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -35,
|
||||||
|
"c": 125,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.5700924586837752e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 42,
|
||||||
|
"c": -80,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.3597399555105182e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -80,
|
||||||
|
"c": 270,
|
||||||
|
"tool_offset": 17,
|
||||||
|
"error": 1.3597399555105182e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 7.850462293418876e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 25,
|
||||||
|
"c": 0,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 0,
|
||||||
|
"c": 65,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 1.4756369957997185e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -35,
|
||||||
|
"c": 125,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 2.7755575615628914e-17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": 42,
|
||||||
|
"c": -80,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 1.3597399555105182e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tilt": -80,
|
||||||
|
"c": 270,
|
||||||
|
"tool_offset": -4,
|
||||||
|
"error": 1.1102230246251565e-16
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"jogs": [
|
||||||
|
{
|
||||||
|
"axis": "b",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
4.66664999999999,
|
||||||
|
3.266650000000002,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.0466664999999999,
|
||||||
|
7.25342008678354e-18,
|
||||||
|
0.03266650000000002
|
||||||
|
],
|
||||||
|
"tick": 242,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
5.988547549895522,
|
||||||
|
3.266650000000002,
|
||||||
|
-0.06274707734662499,
|
||||||
|
2.7074999999999982,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.05988547549895522,
|
||||||
|
-0.0006274707734662427,
|
||||||
|
0.03266650000000002
|
||||||
|
],
|
||||||
|
"tick": 266,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"tcp_error": 5.2237508757293676e-17,
|
||||||
|
"render_error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
5.988547549895522,
|
||||||
|
3.266650000000002,
|
||||||
|
-0.06274707734662499,
|
||||||
|
2.7074999999999982,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.05988547549895522,
|
||||||
|
-0.0006274707734662427,
|
||||||
|
0.03266650000000002
|
||||||
|
],
|
||||||
|
"tick": 266,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
6.806282140622642,
|
||||||
|
5.2009897567427625,
|
||||||
|
-0.10141774164188178,
|
||||||
|
2.7074999999999982,
|
||||||
|
4.799999999999997
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.06806282140622642,
|
||||||
|
-0.0010141774164188061,
|
||||||
|
0.052009897567427625
|
||||||
|
],
|
||||||
|
"tick": 302,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"tcp_error": 7.251197301982682e-17,
|
||||||
|
"render_error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "b",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
6.806282140622642,
|
||||||
|
5.2009897567427625,
|
||||||
|
-0.10141774164188178,
|
||||||
|
2.7074999999999982,
|
||||||
|
4.799999999999997
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.06806282140622642,
|
||||||
|
-0.0010141774164188061,
|
||||||
|
0.052009897567427625
|
||||||
|
],
|
||||||
|
"tick": 302,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
9.850766582307877,
|
||||||
|
5.2009897567427625,
|
||||||
|
-0.577843960065767,
|
||||||
|
9.007500000000007,
|
||||||
|
4.799999999999997
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.09850766582307877,
|
||||||
|
-0.005778439600657659,
|
||||||
|
0.052009897567427625
|
||||||
|
],
|
||||||
|
"tick": 338,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"tcp_error": 4.5534426050565124e-17,
|
||||||
|
"render_error": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
9.850766582307877,
|
||||||
|
5.2009897567427625,
|
||||||
|
-0.577843960065767,
|
||||||
|
9.007500000000007,
|
||||||
|
4.799999999999997
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.09850766582307877,
|
||||||
|
-0.005778439600657659,
|
||||||
|
0.052009897567427625
|
||||||
|
],
|
||||||
|
"tick": 338,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
10.273803322125342,
|
||||||
|
6.4421740463938555,
|
||||||
|
-0.6449031630217803,
|
||||||
|
9.007500000000007,
|
||||||
|
7.7999999999999945
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tip": [
|
||||||
|
0.10273803322125341,
|
||||||
|
-0.006449031630217789,
|
||||||
|
0.06442174046393855
|
||||||
|
],
|
||||||
|
"tick": 363,
|
||||||
|
"hash": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b"
|
||||||
|
},
|
||||||
|
"tcp_error": 7.523581911015265e-17,
|
||||||
|
"render_error": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"pixels": {
|
||||||
|
"colors": 1360,
|
||||||
|
"width": 472,
|
||||||
|
"height": 586
|
||||||
|
},
|
||||||
|
"worker_derived_offsets": {
|
||||||
|
"x_rot_point": -18,
|
||||||
|
"y_rot_point": 14,
|
||||||
|
"z_rot_point": 12,
|
||||||
|
"x_offset": 22,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -40,
|
||||||
|
"tool_offset": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"viewports": [
|
||||||
|
{
|
||||||
|
"width": 1440,
|
||||||
|
"height": 1100,
|
||||||
|
"bounds": [
|
||||||
|
{
|
||||||
|
"x": 969,
|
||||||
|
"right": 999,
|
||||||
|
"width": 30
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 445,
|
||||||
|
"right": 513.625,
|
||||||
|
"width": 68.625
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 521.421875,
|
||||||
|
"right": 582.109375,
|
||||||
|
"width": 60.6875
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 586.65625,
|
||||||
|
"right": 634.34375,
|
||||||
|
"width": 47.6875
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 642.140625,
|
||||||
|
"right": 702.828125,
|
||||||
|
"width": 60.6875
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 707.375,
|
||||||
|
"right": 755.0625,
|
||||||
|
"width": 47.6875
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"width": 390,
|
||||||
|
"height": 844,
|
||||||
|
"bounds": [
|
||||||
|
{
|
||||||
|
"x": 341,
|
||||||
|
"right": 371,
|
||||||
|
"width": 30
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 23,
|
||||||
|
"right": 91.625,
|
||||||
|
"width": 68.625
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 99.421875,
|
||||||
|
"right": 160.109375,
|
||||||
|
"width": 60.6875
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 164.65625,
|
||||||
|
"right": 212.34375,
|
||||||
|
"width": 47.6875
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 220.140625,
|
||||||
|
"right": 280.828125,
|
||||||
|
"width": 60.6875
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 285.375,
|
||||||
|
"right": 333.0625,
|
||||||
|
"width": 47.6875
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"browser_errors": []
|
||||||
|
}
|
||||||
BIN
coverage/glb-machine/geometry-edit/import/viewport-1440.png
Normal file
|
After Width: | Height: | Size: 342 KiB |
BIN
coverage/glb-machine/geometry-edit/import/viewport-390.png
Normal file
|
After Width: | Height: | Size: 225 KiB |
@@ -0,0 +1,73 @@
|
|||||||
|
{
|
||||||
|
"report_id": "trt-parametric-browser-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"machines": [
|
||||||
|
{
|
||||||
|
"id": "xyzac-trt",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"export_bytes": 4867,
|
||||||
|
"preserved_program": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
|
||||||
|
"canvas": {
|
||||||
|
"hash": 3797953256,
|
||||||
|
"colors": 2383,
|
||||||
|
"width": 472,
|
||||||
|
"height": 491
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "xyzbc-trt",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"export_bytes": 4875,
|
||||||
|
"preserved_program": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzbc.ngc",
|
||||||
|
"canvas": {
|
||||||
|
"hash": 1876807854,
|
||||||
|
"colors": 2446,
|
||||||
|
"width": 472,
|
||||||
|
"height": 491
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"viewports": [
|
||||||
|
{
|
||||||
|
"width": 1440,
|
||||||
|
"height": 1000,
|
||||||
|
"canvas": {
|
||||||
|
"hash": 518020959,
|
||||||
|
"colors": 2516,
|
||||||
|
"width": 472,
|
||||||
|
"height": 491
|
||||||
|
},
|
||||||
|
"controls_fit": true,
|
||||||
|
"interactive": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"width": 390,
|
||||||
|
"height": 844,
|
||||||
|
"canvas": {
|
||||||
|
"hash": 287810572,
|
||||||
|
"colors": 1808,
|
||||||
|
"width": 368,
|
||||||
|
"height": 378
|
||||||
|
},
|
||||||
|
"controls_fit": true,
|
||||||
|
"interactive": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"browser_errors": []
|
||||||
|
}
|
||||||
BIN
coverage/glb-machine/geometry-edit/parametric/layout-1440.png
Normal file
|
After Width: | Height: | Size: 309 KiB |
BIN
coverage/glb-machine/geometry-edit/parametric/layout-390.png
Normal file
|
After Width: | Height: | Size: 202 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 53 KiB |
941
coverage/glb-machine/gltf-validation.report.json
Normal file
@@ -0,0 +1,941 @@
|
|||||||
|
{
|
||||||
|
"report_id": "glb-machine-khronos-validation-v1",
|
||||||
|
"validator": "2.0.0-dev.3.10",
|
||||||
|
"status": "verified",
|
||||||
|
"reports": [
|
||||||
|
{
|
||||||
|
"id": "ac",
|
||||||
|
"sha256": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1",
|
||||||
|
"uri": "demo-ac-xyz-head.glb",
|
||||||
|
"mimeType": "model/gltf-binary",
|
||||||
|
"validatorVersion": "2.0.0-dev.3.10",
|
||||||
|
"validatedAt": "2026-09-18T02:12:47.525Z",
|
||||||
|
"issues": {
|
||||||
|
"numErrors": 0,
|
||||||
|
"numWarnings": 0,
|
||||||
|
"numInfos": 71,
|
||||||
|
"numHints": 0,
|
||||||
|
"messages": [
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/0/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/1/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/2/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/3/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/4/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/5/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/6/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/7/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/8/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/9/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/10/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/11/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/12/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/13/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/14/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/15/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/16/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/17/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/18/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/19/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/20/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/21/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/22/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/23/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/24/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/25/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/26/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/27/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/28/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/29/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/30/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/31/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/32/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/33/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/34/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/35/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/36/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/37/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/38/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/39/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/40/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/41/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/42/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/43/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/44/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/45/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/46/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/47/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/48/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/49/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/50/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/51/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/52/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/53/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/54/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/55/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/56/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/57/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/58/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/59/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/60/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/61/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/62/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/63/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/64/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/65/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/66/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/67/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/68/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/69/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/70/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"truncated": false
|
||||||
|
},
|
||||||
|
"info": {
|
||||||
|
"version": "2.0",
|
||||||
|
"generator": "THREE.GLTFExporter r185",
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"pointer": "/buffers/0",
|
||||||
|
"mimeType": "application/gltf-buffer",
|
||||||
|
"storage": "glb",
|
||||||
|
"byteLength": 455536
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"animationCount": 0,
|
||||||
|
"materialCount": 7,
|
||||||
|
"hasMorphTargets": false,
|
||||||
|
"hasSkins": false,
|
||||||
|
"hasTextures": false,
|
||||||
|
"hasDefaultScene": true,
|
||||||
|
"drawCallCount": 71,
|
||||||
|
"totalVertexCount": 12692,
|
||||||
|
"totalTriangleCount": 8232,
|
||||||
|
"maxUVs": 1,
|
||||||
|
"maxInfluences": 0,
|
||||||
|
"maxAttributes": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bc",
|
||||||
|
"sha256": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b",
|
||||||
|
"uri": "demo-bc-xyz-head.glb",
|
||||||
|
"mimeType": "model/gltf-binary",
|
||||||
|
"validatorVersion": "2.0.0-dev.3.10",
|
||||||
|
"validatedAt": "2026-09-18T02:12:47.543Z",
|
||||||
|
"issues": {
|
||||||
|
"numErrors": 0,
|
||||||
|
"numWarnings": 0,
|
||||||
|
"numInfos": 71,
|
||||||
|
"numHints": 0,
|
||||||
|
"messages": [
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/0/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/1/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/2/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/3/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/4/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/5/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/6/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/7/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/8/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/9/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/10/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/11/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/12/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/13/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/14/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/15/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/16/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/17/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/18/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/19/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/20/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/21/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/22/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/23/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/24/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/25/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/26/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/27/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/28/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/29/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/30/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/31/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/32/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/33/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/34/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/35/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/36/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/37/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/38/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/39/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/40/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/41/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/42/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/43/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/44/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/45/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/46/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/47/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/48/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/49/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/50/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/51/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/52/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/53/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/54/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/55/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/56/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/57/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/58/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/59/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/60/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/61/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/62/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/63/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/64/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/65/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/66/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/67/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/68/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/69/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "UNUSED_OBJECT",
|
||||||
|
"message": "This object may be unused.",
|
||||||
|
"severity": 2,
|
||||||
|
"pointer": "/meshes/70/primitives/0/attributes/TEXCOORD_0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"truncated": false
|
||||||
|
},
|
||||||
|
"info": {
|
||||||
|
"version": "2.0",
|
||||||
|
"generator": "THREE.GLTFExporter r185",
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"pointer": "/buffers/0",
|
||||||
|
"mimeType": "application/gltf-buffer",
|
||||||
|
"storage": "glb",
|
||||||
|
"byteLength": 455536
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"animationCount": 0,
|
||||||
|
"materialCount": 7,
|
||||||
|
"hasMorphTargets": false,
|
||||||
|
"hasSkins": false,
|
||||||
|
"hasTextures": false,
|
||||||
|
"hasDefaultScene": true,
|
||||||
|
"drawCallCount": 71,
|
||||||
|
"totalVertexCount": 12692,
|
||||||
|
"totalTriangleCount": 8232,
|
||||||
|
"maxUVs": 1,
|
||||||
|
"maxInfluences": 0,
|
||||||
|
"maxAttributes": 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
coverage/glb-machine/jog-limits/ac-recovered.png
Normal file
|
After Width: | Height: | Size: 245 KiB |
105
coverage/glb-machine/jog-limits/acceptance.report.json
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
{
|
||||||
|
"report_id": "jog-limit-acceptance-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"tasks": [
|
||||||
|
"TRT-JOG02",
|
||||||
|
"GLB-UI02"
|
||||||
|
],
|
||||||
|
"wasm_sha256": "aa0f5d551e42859eef3b37aee9079f09ae04e668819da4e62aee2b74522e8bc6",
|
||||||
|
"known_baseline_failures": [
|
||||||
|
{
|
||||||
|
"test": "test_xyzac_manual_control.mjs",
|
||||||
|
"failure": "synchronous homing mask 0 != 1; identical with HEAD modules"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"test": "test_xyzac_button_constraints.mjs",
|
||||||
|
"failure": "unhomed versus machine-off gate priority; identical with HEAD modules"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"boundaries": [
|
||||||
|
"RTCP limit stops at last valid servo sample; no predictive hardware deceleration claim",
|
||||||
|
"Previously broken transport sessions require page reload"
|
||||||
|
],
|
||||||
|
"evidence": [
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/ac-recovered.png",
|
||||||
|
"sha256": "c02719451fdb3a7ba9d83235e81310c4897cb469f42911cd7ec14af5f6688dc7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/bc-recovered.png",
|
||||||
|
"sha256": "6bbaa58ccdcab209c8ce354d3fec9b9bc83f437be5386c0aff0fc02136a366f8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/before.log",
|
||||||
|
"sha256": "bdb05ff556524c0780412115b3d3798107eb2ac79b54477a59fd93004704524a"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/browser.log",
|
||||||
|
"sha256": "25151979cfb56821cf2e6f82b128745f348cca6ac5ae7214b611d5204eb856d8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/browser.report.json",
|
||||||
|
"sha256": "305fd429b308099c209da8c460932521d009909ede89c019247ee2c794c322da"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/build.log",
|
||||||
|
"sha256": "e53b7da801576efd224cc73eee896ca46b050fc6ed73b32645f9bb86adc517fe"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/buttons-baseline.log",
|
||||||
|
"sha256": "445f0d3ab7af7c51457c735be03e474e7b8cf1315caf0df5601fc8c67d211386"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/buttons.log",
|
||||||
|
"sha256": "b126107f6f7b0b468934cac4f4778df4cfd6f99ea50670668e54b15945085bca"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/checkpoint.log",
|
||||||
|
"sha256": "c92e75901b4f8a2a6ec54f8fddf5c41fafdbf8729e76c2f9d22d2a68fbd8ea3c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/exact-checkpoint.report.json",
|
||||||
|
"sha256": "bda234634bcfbaef24dfa7291cf8650c67d33805a3ceefe96e251fdb2a64059e"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/manual-baseline.log",
|
||||||
|
"sha256": "1bbaa532fe461967f677a8c045a3af0c84e9052aeaa6ab5d143e90ae89928af5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/manual.log",
|
||||||
|
"sha256": "1a3e27bdf66ef7c6f020da595181282b99bd74ea1c058583ba929c3466e80ada"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/motion.log",
|
||||||
|
"sha256": "57ed59ba66d43ff00784733a3ddb7a0c3936c33aae0e03ab3c4fd4c2eacca361"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/motion.report.json",
|
||||||
|
"sha256": "91c3fa8ed8037aac8e71b8c76d54c38db9dc011ae25f63553966860b624aa626"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/recovery.log",
|
||||||
|
"sha256": "12b7792cd312e327154d4b66a13d869906a4c53a9143dd0d04493f687452da3b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/shadow.png",
|
||||||
|
"sha256": "f8c60fb173f8cc22dcb1f44da3c214a00ee2c401100e5536fabccc8d0d1904c3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/shadow.report.json",
|
||||||
|
"sha256": "b33cc89335b8cc32e2493b0199d5690eafaa14d84a7bdf4a5e19d71b05f22237"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/step.log",
|
||||||
|
"sha256": "897d2f0bbd0c40e64ae9fc311206cf89bb4fa220b2662bf33bf4b87aac406321"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/worker.log",
|
||||||
|
"sha256": "2f71069076125e38f1b313f5c4b397df1bf324879e8492fdb8599655a7772893"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/jog-limits/worker.report.json",
|
||||||
|
"sha256": "e599aa05ca175ccd59dc36c783b9aa0a62e149e91b37aa065580b2ec58d88d6c"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
coverage/glb-machine/jog-limits/bc-recovered.png
Normal file
|
After Width: | Height: | Size: 244 KiB |
143
coverage/glb-machine/jog-limits/browser.report.json
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
{
|
||||||
|
"report_id": "jog-limit-browser-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"machines": [
|
||||||
|
{
|
||||||
|
"id": "ac",
|
||||||
|
"atLimit": {
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
30,
|
||||||
|
50,
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0.3,
|
||||||
|
-6.661338147750939e-17
|
||||||
|
],
|
||||||
|
"tick": 207
|
||||||
|
},
|
||||||
|
"retreat": {
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
30,
|
||||||
|
48.7325,
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0.3,
|
||||||
|
-6.661338147750939e-17
|
||||||
|
],
|
||||||
|
"tick": 220
|
||||||
|
},
|
||||||
|
"stopped": {
|
||||||
|
"joints": [
|
||||||
|
147.16819064437152,
|
||||||
|
99.93568159167009,
|
||||||
|
30,
|
||||||
|
0,
|
||||||
|
38.13000000000069
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
1.4716819064437154,
|
||||||
|
0.3000000000000002,
|
||||||
|
0.9993568159167008
|
||||||
|
],
|
||||||
|
"tick": 1329
|
||||||
|
},
|
||||||
|
"resumed": {
|
||||||
|
"joints": [
|
||||||
|
152.31822671868903,
|
||||||
|
93.99260677882737,
|
||||||
|
30,
|
||||||
|
0,
|
||||||
|
35.422500000000696
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
1.5231822671868902,
|
||||||
|
0.3000000000000002,
|
||||||
|
0.9399260677882736
|
||||||
|
],
|
||||||
|
"tick": 1353
|
||||||
|
},
|
||||||
|
"fault": {
|
||||||
|
"code": "motion_limit",
|
||||||
|
"reason": "motion_joint_limit"
|
||||||
|
},
|
||||||
|
"pixels": 1135
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bc",
|
||||||
|
"atLimit": {
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
30,
|
||||||
|
50,
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0.3,
|
||||||
|
-6.661338147750939e-17
|
||||||
|
],
|
||||||
|
"tick": 1640
|
||||||
|
},
|
||||||
|
"retreat": {
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
30,
|
||||||
|
48.92,
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0.3,
|
||||||
|
-6.661338147750939e-17
|
||||||
|
],
|
||||||
|
"tick": 1652
|
||||||
|
},
|
||||||
|
"stopped": {
|
||||||
|
"joints": [
|
||||||
|
171.92682873768467,
|
||||||
|
99.95231076385438,
|
||||||
|
30,
|
||||||
|
-7.105427357601002e-15,
|
||||||
|
28.200000000000312
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
1.7192682873768468,
|
||||||
|
0.3000000000000002,
|
||||||
|
0.9995231076385437
|
||||||
|
],
|
||||||
|
"tick": 2727
|
||||||
|
},
|
||||||
|
"resumed": {
|
||||||
|
"joints": [
|
||||||
|
174.0693024962762,
|
||||||
|
95.05173063293552,
|
||||||
|
30,
|
||||||
|
-7.105427357601002e-15,
|
||||||
|
26.73000000000031
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
1.740693024962762,
|
||||||
|
0.3000000000000002,
|
||||||
|
0.9505173063293549
|
||||||
|
],
|
||||||
|
"tick": 2746
|
||||||
|
},
|
||||||
|
"fault": {
|
||||||
|
"code": "motion_limit",
|
||||||
|
"reason": "motion_joint_limit"
|
||||||
|
},
|
||||||
|
"pixels": 1109
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"page_errors": []
|
||||||
|
}
|
||||||
131
coverage/glb-machine/jog-limits/exact-checkpoint.report.json
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
{
|
||||||
|
"report_id": "trt-checkpoint-exact-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"safeguards": {
|
||||||
|
"corrupt_native_rejected": true,
|
||||||
|
"foreign_build_rejected": true,
|
||||||
|
"frozen_subroutines": true,
|
||||||
|
"heap_relocation_checked": true,
|
||||||
|
"receipts_nonrecursive": true,
|
||||||
|
"backward_transport_restore_rejected": true
|
||||||
|
},
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"machine": "xyzac-trt",
|
||||||
|
"phase": "subroutine",
|
||||||
|
"checkpoint_tick": 6,
|
||||||
|
"continuation_tick": 18,
|
||||||
|
"state_hash": "fnv1a64:113cda82a07e692a",
|
||||||
|
"samples": 12,
|
||||||
|
"first_divergent_tick": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"machine": "xyzac-trt",
|
||||||
|
"phase": "paused-resumed",
|
||||||
|
"checkpoint_tick": 18,
|
||||||
|
"continuation_tick": 30,
|
||||||
|
"state_hash": "fnv1a64:e380c733d2e27194",
|
||||||
|
"samples": 12,
|
||||||
|
"new_transport_recovery": true,
|
||||||
|
"first_divergent_tick": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"machine": "xyzac-trt",
|
||||||
|
"phase": "line",
|
||||||
|
"checkpoint_tick": 35,
|
||||||
|
"continuation_tick": 47,
|
||||||
|
"state_hash": "fnv1a64:8e128e04aca13b45",
|
||||||
|
"samples": 12,
|
||||||
|
"first_divergent_tick": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"machine": "xyzac-trt",
|
||||||
|
"phase": "arc",
|
||||||
|
"checkpoint_tick": 72,
|
||||||
|
"continuation_tick": 84,
|
||||||
|
"state_hash": "fnv1a64:16fef8e7095d1cc7",
|
||||||
|
"samples": 12,
|
||||||
|
"first_divergent_tick": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"machine": "xyzac-trt",
|
||||||
|
"phase": "completed",
|
||||||
|
"checkpoint_tick": 684,
|
||||||
|
"continuation_tick": 696,
|
||||||
|
"state_hash": "fnv1a64:571fff3045139a9b",
|
||||||
|
"samples": 12,
|
||||||
|
"first_divergent_tick": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"machine": "xyzac-trt",
|
||||||
|
"phase": "trace-and-transport",
|
||||||
|
"state_hash": "fnv1a64:50c207f5409d5062",
|
||||||
|
"first_divergent_tick": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"machine": "xyzac-trt",
|
||||||
|
"phase": "post-recovery-jog",
|
||||||
|
"samples": 6,
|
||||||
|
"first_divergent_tick": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"machine": "xyzbc-trt",
|
||||||
|
"phase": "subroutine",
|
||||||
|
"checkpoint_tick": 6,
|
||||||
|
"continuation_tick": 18,
|
||||||
|
"state_hash": "fnv1a64:94587fdc5ce1e3b1",
|
||||||
|
"samples": 12,
|
||||||
|
"first_divergent_tick": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"machine": "xyzbc-trt",
|
||||||
|
"phase": "paused-resumed",
|
||||||
|
"checkpoint_tick": 18,
|
||||||
|
"continuation_tick": 30,
|
||||||
|
"state_hash": "fnv1a64:5f0adc4aa9f2a037",
|
||||||
|
"samples": 12,
|
||||||
|
"new_transport_recovery": true,
|
||||||
|
"first_divergent_tick": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"machine": "xyzbc-trt",
|
||||||
|
"phase": "line",
|
||||||
|
"checkpoint_tick": 35,
|
||||||
|
"continuation_tick": 47,
|
||||||
|
"state_hash": "fnv1a64:74b83ca0c127a6c1",
|
||||||
|
"samples": 12,
|
||||||
|
"first_divergent_tick": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"machine": "xyzbc-trt",
|
||||||
|
"phase": "arc",
|
||||||
|
"checkpoint_tick": 72,
|
||||||
|
"continuation_tick": 84,
|
||||||
|
"state_hash": "fnv1a64:89a768be32ed9eda",
|
||||||
|
"samples": 12,
|
||||||
|
"first_divergent_tick": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"machine": "xyzbc-trt",
|
||||||
|
"phase": "completed",
|
||||||
|
"checkpoint_tick": 704,
|
||||||
|
"continuation_tick": 716,
|
||||||
|
"state_hash": "fnv1a64:d0cf609cae7c894b",
|
||||||
|
"samples": 12,
|
||||||
|
"first_divergent_tick": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"machine": "xyzbc-trt",
|
||||||
|
"phase": "trace-and-transport",
|
||||||
|
"state_hash": "fnv1a64:4e6307e65d801db6",
|
||||||
|
"first_divergent_tick": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"machine": "xyzbc-trt",
|
||||||
|
"phase": "post-recovery-jog",
|
||||||
|
"samples": 6,
|
||||||
|
"first_divergent_tick": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"state_hash": "fnv1a64:d7f8b093cb3e4510"
|
||||||
|
}
|
||||||
2544
coverage/glb-machine/jog-limits/motion.report.json
Normal file
BIN
coverage/glb-machine/jog-limits/shadow.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
5
coverage/glb-machine/jog-limits/shadow.report.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"report_id": "shadow-warning-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"warnings": []
|
||||||
|
}
|
||||||
60
coverage/glb-machine/jog-limits/worker.report.json
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
{
|
||||||
|
"report_id": "jog-limit-recovery-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"machines": [
|
||||||
|
{
|
||||||
|
"coordinates": "XYZAC",
|
||||||
|
"limit": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
30,
|
||||||
|
50,
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"recovered": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
30,
|
||||||
|
49,
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"rtcp_limit": [
|
||||||
|
161.584370202784,
|
||||||
|
99.95244522356447,
|
||||||
|
30,
|
||||||
|
0,
|
||||||
|
31.740000000000453
|
||||||
|
],
|
||||||
|
"stopped_tick": 1307,
|
||||||
|
"completed_cycles": 1,
|
||||||
|
"seq": 291
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": "XYZBC",
|
||||||
|
"limit": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
30,
|
||||||
|
50,
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"recovered": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
30,
|
||||||
|
49,
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"rtcp_limit": [
|
||||||
|
161.584370202784,
|
||||||
|
99.95244522356447,
|
||||||
|
30,
|
||||||
|
0,
|
||||||
|
31.740000000000453
|
||||||
|
],
|
||||||
|
"stopped_tick": 1307,
|
||||||
|
"completed_cycles": 1,
|
||||||
|
"seq": 291
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
2544
coverage/glb-machine/motion.report.json
Normal file
657
coverage/glb-machine/regression-jog/rtcp-jog-browser.report.json
Normal file
@@ -0,0 +1,657 @@
|
|||||||
|
{
|
||||||
|
"report_id": "trt-rtcp-jog-browser-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"machines": [
|
||||||
|
{
|
||||||
|
"coordinates": "XYZAC",
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"axis": "a",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
4.666649999999989,
|
||||||
|
4.466649999999994,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 64,
|
||||||
|
"rendered_tick": 64,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"moving": {
|
||||||
|
"joints": [
|
||||||
|
4.666649999999989,
|
||||||
|
6.351865924731886,
|
||||||
|
-2.4504376825076157,
|
||||||
|
9.599999999999989,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 106,
|
||||||
|
"rendered_tick": 100,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 0
|
||||||
|
},
|
||||||
|
"stopped": {
|
||||||
|
"joints": [
|
||||||
|
4.666649999999989,
|
||||||
|
6.749678153480922,
|
||||||
|
-2.8729923943953075,
|
||||||
|
11.39999999999995,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 117,
|
||||||
|
"rendered_tick": 117,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 3.469446951953614e-17
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
4.666649999999989,
|
||||||
|
6.749678153480922,
|
||||||
|
-2.8729923943953075,
|
||||||
|
11.39999999999995,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 117,
|
||||||
|
"rendered_tick": 117,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"moving": {
|
||||||
|
"joints": [
|
||||||
|
4.3018149555329135,
|
||||||
|
7.095098216652044,
|
||||||
|
-2.803343492369457,
|
||||||
|
11.39999999999995,
|
||||||
|
4.499999999999995
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 142,
|
||||||
|
"rendered_tick": 142,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 1.962615573354719e-17
|
||||||
|
},
|
||||||
|
"stopped": {
|
||||||
|
"joints": [
|
||||||
|
4.148323132140086,
|
||||||
|
7.22522468303406,
|
||||||
|
-2.7771053942555053,
|
||||||
|
11.39999999999995,
|
||||||
|
6.30000000000001
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 148,
|
||||||
|
"rendered_tick": 148,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 2.237726045655905e-16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "a",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
4.148323132140086,
|
||||||
|
7.22522468303406,
|
||||||
|
-2.7771053942555053,
|
||||||
|
11.39999999999995,
|
||||||
|
6.30000000000001
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 148,
|
||||||
|
"rendered_tick": 148,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"moving": {
|
||||||
|
"joints": [
|
||||||
|
4.148323132140086,
|
||||||
|
9.152980104837122,
|
||||||
|
-4.449618197337122,
|
||||||
|
19.49999999999997,
|
||||||
|
6.30000000000001
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 185,
|
||||||
|
"rendered_tick": 173,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 2.7755575615628914e-17
|
||||||
|
},
|
||||||
|
"stopped": {
|
||||||
|
"joints": [
|
||||||
|
4.148323132140086,
|
||||||
|
9.612205930334579,
|
||||||
|
-4.783201311661127,
|
||||||
|
21.299999999999933,
|
||||||
|
6.30000000000001
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 196,
|
||||||
|
"rendered_tick": 196,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 2.2473876566261383e-16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
4.148323132140086,
|
||||||
|
9.612205930334579,
|
||||||
|
-4.783201311661127,
|
||||||
|
21.299999999999933,
|
||||||
|
6.30000000000001
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 196,
|
||||||
|
"rendered_tick": 196,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"moving": {
|
||||||
|
"joints": [
|
||||||
|
3.551689196192138,
|
||||||
|
10.025858124581516,
|
||||||
|
-4.621925060367616,
|
||||||
|
21.299999999999933,
|
||||||
|
12.900000000000022
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 228,
|
||||||
|
"rendered_tick": 222,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 2.8609792490763984e-17
|
||||||
|
},
|
||||||
|
"stopped": {
|
||||||
|
"joints": [
|
||||||
|
3.3804521353118124,
|
||||||
|
10.127318160847281,
|
||||||
|
-4.582367445219857,
|
||||||
|
21.299999999999933,
|
||||||
|
14.700000000000024
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 239,
|
||||||
|
"rendered_tick": 239,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 3.469446951953614e-17
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": "XYZBC",
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"axis": "b",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
4.66664999999999,
|
||||||
|
3.266650000000003,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 297,
|
||||||
|
"rendered_tick": 297,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.5,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"moving": {
|
||||||
|
"joints": [
|
||||||
|
5.767497386045921,
|
||||||
|
3.266650000000003,
|
||||||
|
-1.981563047638323,
|
||||||
|
4.499999999999995,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 322,
|
||||||
|
"rendered_tick": 322,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.4801843695236168,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 2.2215299868541707e-16
|
||||||
|
},
|
||||||
|
"stopped": {
|
||||||
|
"joints": [
|
||||||
|
6.16370166824418,
|
||||||
|
3.266650000000003,
|
||||||
|
-2.797363512846239,
|
||||||
|
6.30000000000001,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 333,
|
||||||
|
"rendered_tick": 328,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.4720263648715377,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 2.0816681711721685e-17
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
6.16370166824418,
|
||||||
|
3.266650000000003,
|
||||||
|
-2.797363512846239,
|
||||||
|
6.30000000000001,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 333,
|
||||||
|
"rendered_tick": 333,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.4720263648715377,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"moving": {
|
||||||
|
"joints": [
|
||||||
|
5.536391282129575,
|
||||||
|
4.0203403161023985,
|
||||||
|
-2.7281078014596485,
|
||||||
|
6.30000000000001,
|
||||||
|
9.899999999999983
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 376,
|
||||||
|
"rendered_tick": 369,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.4725602353149239,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 6.938893903907228e-18
|
||||||
|
},
|
||||||
|
"stopped": {
|
||||||
|
"joints": [
|
||||||
|
5.408892699222715,
|
||||||
|
4.145115526193058,
|
||||||
|
-2.714031826861671,
|
||||||
|
6.30000000000001,
|
||||||
|
11.699999999999944
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 387,
|
||||||
|
"rendered_tick": 387,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.4728596817313833,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 9.813077866773595e-18
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "b",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
5.408892699222715,
|
||||||
|
4.145115526193058,
|
||||||
|
-2.714031826861671,
|
||||||
|
6.30000000000001,
|
||||||
|
11.699999999999944
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 387,
|
||||||
|
"rendered_tick": 387,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.4728596817313833,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"moving": {
|
||||||
|
"joints": [
|
||||||
|
6.294511515825764,
|
||||||
|
4.145115526193058,
|
||||||
|
-4.745464111131721,
|
||||||
|
10.800000000000004,
|
||||||
|
11.699999999999944
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 412,
|
||||||
|
"rendered_tick": 412,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.4525453588886827,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 2.260205560892005e-16
|
||||||
|
},
|
||||||
|
"stopped": {
|
||||||
|
"joints": [
|
||||||
|
6.603639517943392,
|
||||||
|
4.145115526193058,
|
||||||
|
-5.576454671870996,
|
||||||
|
12.60000000000002,
|
||||||
|
11.699999999999944
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 423,
|
||||||
|
"rendered_tick": 418,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.44423545328129,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 2.225860458774576e-16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
6.603639517943392,
|
||||||
|
4.145115526193058,
|
||||||
|
-5.576454671870996,
|
||||||
|
12.60000000000002,
|
||||||
|
11.699999999999944
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 423,
|
||||||
|
"rendered_tick": 423,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.44423545328129,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"moving": {
|
||||||
|
"joints": [
|
||||||
|
5.553928059363571,
|
||||||
|
4.94271622192026,
|
||||||
|
-5.341816361477811,
|
||||||
|
12.60000000000002,
|
||||||
|
25.19999999999985
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 478,
|
||||||
|
"rendered_tick": 477,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.4465254658419693,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 1.3877787807814457e-17
|
||||||
|
},
|
||||||
|
"stopped": {
|
||||||
|
"joints": [
|
||||||
|
5.401049028353562,
|
||||||
|
5.029221227849476,
|
||||||
|
-5.30764384936742,
|
||||||
|
12.60000000000002,
|
||||||
|
26.999999999999808
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 489,
|
||||||
|
"rendered_tick": 489,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.4469235615063258,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 6.938893903907228e-18
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"browser_errors": []
|
||||||
|
}
|
||||||
BIN
coverage/glb-machine/regression-jog/rtcp-jog-xyzac.png
Normal file
|
After Width: | Height: | Size: 314 KiB |
BIN
coverage/glb-machine/regression-jog/rtcp-jog-xyzbc.png
Normal file
|
After Width: | Height: | Size: 308 KiB |
@@ -0,0 +1,73 @@
|
|||||||
|
{
|
||||||
|
"report_id": "trt-parametric-browser-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"machines": [
|
||||||
|
{
|
||||||
|
"id": "xyzac-trt",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"export_bytes": 4867,
|
||||||
|
"preserved_program": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
|
||||||
|
"canvas": {
|
||||||
|
"hash": 785034247,
|
||||||
|
"colors": 1181,
|
||||||
|
"width": 472,
|
||||||
|
"height": 281
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "xyzbc-trt",
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 24,
|
||||||
|
"y_rot_point": -12,
|
||||||
|
"z_rot_point": 8,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"export_bytes": 4875,
|
||||||
|
"preserved_program": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzbc.ngc",
|
||||||
|
"canvas": {
|
||||||
|
"hash": 3432713434,
|
||||||
|
"colors": 1259,
|
||||||
|
"width": 472,
|
||||||
|
"height": 281
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"viewports": [
|
||||||
|
{
|
||||||
|
"width": 1440,
|
||||||
|
"height": 1000,
|
||||||
|
"canvas": {
|
||||||
|
"hash": 430737702,
|
||||||
|
"colors": 1278,
|
||||||
|
"width": 472,
|
||||||
|
"height": 281
|
||||||
|
},
|
||||||
|
"controls_fit": true,
|
||||||
|
"interactive": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"width": 390,
|
||||||
|
"height": 844,
|
||||||
|
"canvas": {
|
||||||
|
"hash": 1968984145,
|
||||||
|
"colors": 1421,
|
||||||
|
"width": 368,
|
||||||
|
"height": 299
|
||||||
|
},
|
||||||
|
"controls_fit": true,
|
||||||
|
"interactive": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"browser_errors": []
|
||||||
|
}
|
||||||
BIN
coverage/glb-machine/regression-parametric/layout-1440.png
Normal file
|
After Width: | Height: | Size: 305 KiB |
BIN
coverage/glb-machine/regression-parametric/layout-390.png
Normal file
|
After Width: | Height: | Size: 219 KiB |
BIN
coverage/glb-machine/regression-parametric/xyzac-trt-model.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
coverage/glb-machine/regression-parametric/xyzbc-trt-model.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
14
coverage/glb-machine/reproducibility.report.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"report_id": "glb-machine-reproducibility-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"generated_files_identical": true,
|
||||||
|
"production_glb_identical": true,
|
||||||
|
"sha256": {
|
||||||
|
"LICENSE.txt": "e08dd9a67a260e10205ed953751b46cc9fb4b764fa9b87ee2a239654aaabb4b0",
|
||||||
|
"demo-ac-xyz-head.glb": "93698435206864ae42cdd2121be570538e977e32c6a3a99095a93dd1518f8da1",
|
||||||
|
"demo-ac-xyz-head.urdf": "558ce184a083a9ad5070ac2555bd05f18bdbdd8e537882c0a0443ebdb30abce6",
|
||||||
|
"demo-bc-xyz-head.glb": "394c7cf3c8b246e1fc88e74301d9447f4e0892381ffa4fe1f86653a678efe95b",
|
||||||
|
"demo-bc-xyz-head.urdf": "6f08b6d3f534b6930d50b73b38a4db103246929f59ccdc09d4423bc1e6632f5b",
|
||||||
|
"manifest.json": "a9222f10610e68cfda0e59a759c1fffa5a743e01f079f086bc743b260796afdd"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
coverage/glb-machine/switching/ac-identity.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
coverage/glb-machine/switching/ac-tcp.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
80
coverage/glb-machine/switching/acceptance.report.json
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
{
|
||||||
|
"report_id": "trt-stationary-switch-acceptance-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"tasks": [
|
||||||
|
"TRT-SW01"
|
||||||
|
],
|
||||||
|
"worker_switches": 64,
|
||||||
|
"browser_switches": 22,
|
||||||
|
"wasm_sha256": "aa0f5d551e42859eef3b37aee9079f09ae04e668819da4e62aee2b74522e8bc6",
|
||||||
|
"evidence": [
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/switching/ac-identity.png",
|
||||||
|
"sha256": "25fa37dbd4f797632c90e389e5623125d9ca7d4ca798bd8685fe62c0b0a43a8c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/switching/ac-tcp.png",
|
||||||
|
"sha256": "25fa37dbd4f797632c90e389e5623125d9ca7d4ca798bd8685fe62c0b0a43a8c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/switching/bc-identity.png",
|
||||||
|
"sha256": "19b4bc52305dd95da2eaade3e020e3aed95dcbfe25717f4d3b8d25f71e7738d6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/switching/bc-tcp.png",
|
||||||
|
"sha256": "19b4bc52305dd95da2eaade3e020e3aed95dcbfe25717f4d3b8d25f71e7738d6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/switching/before.log",
|
||||||
|
"sha256": "60f5c62ca3ca2ace4a835ca050991e2816ffb246f2c8019ae600818690201571"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/switching/browser.log",
|
||||||
|
"sha256": "22ca4ed02fdba98a5db00d0c03ae811275c75d12398794317704c3d249a3e0b4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/switching/browser.report.json",
|
||||||
|
"sha256": "c8d11754aae53c5f925566a408a083aa385fe2f772e7a05d793846385466f2d5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/switching/build.log",
|
||||||
|
"sha256": "c613842ac193eeaab2e62ad8f4c577850c4f253a5a02811a191c2fe462165364"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/switching/rtcp-jog/rtcp-jog-browser.report.json",
|
||||||
|
"sha256": "50f9b2eb75fcbf9c5e32798fb6f4acaa31bd6a6e0925372f7deb965515c1dbf3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/switching/rtcp-jog/rtcp-jog-xyzac.png",
|
||||||
|
"sha256": "341085263c16dfc8a34519d0ea196f3ee3a753d6f817aa5f598d0ba61372c9cc"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/switching/rtcp-jog/rtcp-jog-xyzbc.png",
|
||||||
|
"sha256": "f58186f1a905837ba3b74043e9f8f677c2bfdde849faa651e269f9943f5932fe"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/switching/rtcp-jog.log",
|
||||||
|
"sha256": "ba3a14b05c5192abf55f59e8f054df5cc53e3845180d90b009596c3af0533bd1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/switching/runtime-followups.log",
|
||||||
|
"sha256": "d0f18fbe4749d2a89fac242e99596c125ad8aa056067d18b59589519d83c6b46"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/switching/step-flow.log",
|
||||||
|
"sha256": "897d2f0bbd0c40e64ae9fc311206cf89bb4fa220b2662bf33bf4b87aac406321"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/switching/trt-case.log",
|
||||||
|
"sha256": "801631666fa3854d136b8931b345ec2d929978b7b71ba9cbf4ea1f6a472934c1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/switching/worker.log",
|
||||||
|
"sha256": "900bae7be8a9bf9d1a77b2e6255adceb0c054fe29224f13c96d02e1f2b36ee1c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "coverage/glb-machine/switching/worker.report.json",
|
||||||
|
"sha256": "c1afd5ea8d12774b4cf2a241ccf5fb81ade2969ff219d71b57584715ec9944ef"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
coverage/glb-machine/switching/bc-identity.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
coverage/glb-machine/switching/bc-tcp.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
445
coverage/glb-machine/switching/browser.report.json
Normal file
@@ -0,0 +1,445 @@
|
|||||||
|
{
|
||||||
|
"report_id": "trt-stationary-switch-browser-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"machines": [
|
||||||
|
{
|
||||||
|
"id": "ac",
|
||||||
|
"initial": {
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
44.5858,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0.44585800000000003,
|
||||||
|
-9.900036346266462e-17
|
||||||
|
],
|
||||||
|
"tick": 625
|
||||||
|
},
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"type": 1,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
-3.552713678800501e-15,
|
||||||
|
-3.552713678800501e-15,
|
||||||
|
44.585800000000035,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
-3.552713678800501e-17,
|
||||||
|
0.44585800000000037,
|
||||||
|
-1.345275002506697e-16
|
||||||
|
],
|
||||||
|
"tick": 625
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": 0,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
-3.552713678800501e-15,
|
||||||
|
-3.552713678800501e-15,
|
||||||
|
44.585800000000035,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
-3.552713678800501e-17,
|
||||||
|
0.44585800000000037,
|
||||||
|
-1.345275002506697e-16
|
||||||
|
],
|
||||||
|
"tick": 625
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": 1,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
-1.0658141036401503e-14,
|
||||||
|
-7.105427357601002e-15,
|
||||||
|
44.58580000000006,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
-1.0658141036401502e-16,
|
||||||
|
0.44585800000000064,
|
||||||
|
-1.7005463703867476e-16
|
||||||
|
],
|
||||||
|
"tick": 625
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": 0,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
-1.0658141036401503e-14,
|
||||||
|
-7.105427357601002e-15,
|
||||||
|
44.58580000000006,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
-1.0658141036401502e-16,
|
||||||
|
0.44585800000000064,
|
||||||
|
-1.7005463703867476e-16
|
||||||
|
],
|
||||||
|
"tick": 625
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": 2,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
-1.0658141036401503e-14,
|
||||||
|
-7.105427357601002e-15,
|
||||||
|
44.58580000000006,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
-1.0658141036401502e-16,
|
||||||
|
0.44585800000000064,
|
||||||
|
-1.7005463703867476e-16
|
||||||
|
],
|
||||||
|
"tick": 625
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": 1,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
-1.0658141036401503e-14,
|
||||||
|
-1.2434497875801753e-14,
|
||||||
|
44.58580000000009,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
-1.0658141036401502e-16,
|
||||||
|
0.4458580000000009,
|
||||||
|
-2.2334534222068237e-16
|
||||||
|
],
|
||||||
|
"tick": 625
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": 0,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
-1.0658141036401503e-14,
|
||||||
|
-1.2434497875801753e-14,
|
||||||
|
44.58580000000009,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
-1.0658141036401502e-16,
|
||||||
|
0.4458580000000009,
|
||||||
|
-2.2334534222068237e-16
|
||||||
|
],
|
||||||
|
"tick": 625
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mdi": true,
|
||||||
|
"type": 1,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
-1.0658141036401503e-14,
|
||||||
|
-1.7763568394002505e-14,
|
||||||
|
44.58580000000012,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
-1.0658141036401502e-16,
|
||||||
|
0.4458580000000012,
|
||||||
|
-2.7663604740268993e-16
|
||||||
|
],
|
||||||
|
"tick": 625
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mdi": true,
|
||||||
|
"type": 0,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
-1.0658141036401503e-14,
|
||||||
|
-1.7763568394002505e-14,
|
||||||
|
44.58580000000012,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
-1.0658141036401502e-16,
|
||||||
|
0.4458580000000012,
|
||||||
|
-2.7663604740268993e-16
|
||||||
|
],
|
||||||
|
"tick": 625
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mdi": true,
|
||||||
|
"type": 1,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
-1.0658141036401503e-14,
|
||||||
|
-2.1316282072803006e-14,
|
||||||
|
44.58580000000015,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
-1.0658141036401502e-16,
|
||||||
|
0.4458580000000015,
|
||||||
|
-3.1216318419069497e-16
|
||||||
|
],
|
||||||
|
"tick": 625
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"afterJog": {
|
||||||
|
"joints": [
|
||||||
|
-1.0658141036401503e-14,
|
||||||
|
-1.8032297033992322,
|
||||||
|
44.43311591629053,
|
||||||
|
6.135000000000001,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
-1.0658141036401502e-16,
|
||||||
|
0.44433115916290533,
|
||||||
|
-0.01803229703399242
|
||||||
|
],
|
||||||
|
"tick": 638
|
||||||
|
},
|
||||||
|
"tcp_jog_error": 1.8215615495386383e-16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bc",
|
||||||
|
"initial": {
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
44.5858,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0.44585800000000003,
|
||||||
|
-9.900036346266462e-17
|
||||||
|
],
|
||||||
|
"tick": 1263
|
||||||
|
},
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"type": 1,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
-1.7763568394002505e-15,
|
||||||
|
44.585800000000006,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0.4458580000000001,
|
||||||
|
-1.1676393185666712e-16
|
||||||
|
],
|
||||||
|
"tick": 1263
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": 0,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
-1.7763568394002505e-15,
|
||||||
|
44.585800000000006,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0.4458580000000001,
|
||||||
|
-1.1676393185666712e-16
|
||||||
|
],
|
||||||
|
"tick": 1263
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": 1,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
-1.7763568394002505e-15,
|
||||||
|
44.585800000000006,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0.4458580000000001,
|
||||||
|
-1.1676393185666712e-16
|
||||||
|
],
|
||||||
|
"tick": 1263
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": 0,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
-1.7763568394002505e-15,
|
||||||
|
44.585800000000006,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0.4458580000000001,
|
||||||
|
-1.1676393185666712e-16
|
||||||
|
],
|
||||||
|
"tick": 1263
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": 2,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
-1.7763568394002505e-15,
|
||||||
|
44.585800000000006,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0.4458580000000001,
|
||||||
|
-1.1676393185666712e-16
|
||||||
|
],
|
||||||
|
"tick": 1263
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": 1,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
-1.7763568394002505e-15,
|
||||||
|
44.585800000000006,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0.4458580000000001,
|
||||||
|
-1.1676393185666712e-16
|
||||||
|
],
|
||||||
|
"tick": 1263
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": 0,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
-1.7763568394002505e-15,
|
||||||
|
44.585800000000006,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0.4458580000000001,
|
||||||
|
-1.1676393185666712e-16
|
||||||
|
],
|
||||||
|
"tick": 1263
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mdi": true,
|
||||||
|
"type": 1,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
-1.7763568394002505e-15,
|
||||||
|
44.585800000000006,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0.4458580000000001,
|
||||||
|
-1.1676393185666712e-16
|
||||||
|
],
|
||||||
|
"tick": 1263
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mdi": true,
|
||||||
|
"type": 0,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
-1.7763568394002505e-15,
|
||||||
|
44.585800000000006,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0.4458580000000001,
|
||||||
|
-1.1676393185666712e-16
|
||||||
|
],
|
||||||
|
"tick": 1263
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mdi": true,
|
||||||
|
"type": 1,
|
||||||
|
"after": {
|
||||||
|
"joints": [
|
||||||
|
0,
|
||||||
|
-1.7763568394002505e-15,
|
||||||
|
44.585800000000006,
|
||||||
|
4.8675,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0,
|
||||||
|
0.4458580000000001,
|
||||||
|
-1.1676393185666712e-16
|
||||||
|
],
|
||||||
|
"tick": 1263
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"afterJog": {
|
||||||
|
"joints": [
|
||||||
|
1.606594333188152,
|
||||||
|
-1.7763568394002505e-15,
|
||||||
|
44.65652049853526,
|
||||||
|
6.135000000000001,
|
||||||
|
179.88
|
||||||
|
],
|
||||||
|
"tip": [
|
||||||
|
0.01606594333188152,
|
||||||
|
0.44656520498535257,
|
||||||
|
-1.1692096290824073e-16
|
||||||
|
],
|
||||||
|
"tick": 1276
|
||||||
|
},
|
||||||
|
"tcp_jog_error": 9.692650329883268e-17
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"browser_errors": []
|
||||||
|
}
|
||||||
@@ -0,0 +1,657 @@
|
|||||||
|
{
|
||||||
|
"report_id": "trt-rtcp-jog-browser-v1",
|
||||||
|
"status": "verified",
|
||||||
|
"machines": [
|
||||||
|
{
|
||||||
|
"coordinates": "XYZAC",
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"axis": "a",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
4.266649999999998,
|
||||||
|
3.8666500000000035,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 59,
|
||||||
|
"rendered_tick": 59,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"moving": {
|
||||||
|
"joints": [
|
||||||
|
4.266649999999998,
|
||||||
|
5.373074052273088,
|
||||||
|
-2.0970252352474255,
|
||||||
|
7.800000000000022,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 95,
|
||||||
|
"rendered_tick": 95,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 2.2247786310271853e-16
|
||||||
|
},
|
||||||
|
"stopped": {
|
||||||
|
"joints": [
|
||||||
|
4.266649999999998,
|
||||||
|
5.760268302489592,
|
||||||
|
-2.550498930537275,
|
||||||
|
9.599999999999989,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 106,
|
||||||
|
"rendered_tick": 106,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 6.938893903907228e-18
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
4.266649999999998,
|
||||||
|
5.760268302489592,
|
||||||
|
-2.550498930537275,
|
||||||
|
9.599999999999989,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 106,
|
||||||
|
"rendered_tick": 106,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"moving": {
|
||||||
|
"joints": [
|
||||||
|
3.6792686907248924,
|
||||||
|
6.314990873253862,
|
||||||
|
-2.456674630617826,
|
||||||
|
9.599999999999989,
|
||||||
|
8.100000000000021
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 143,
|
||||||
|
"rendered_tick": 142,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 3.1031676915590914e-17
|
||||||
|
},
|
||||||
|
"stopped": {
|
||||||
|
"joints": [
|
||||||
|
3.5383270508428857,
|
||||||
|
6.426786115491513,
|
||||||
|
-2.4377658807488203,
|
||||||
|
9.599999999999989,
|
||||||
|
9.899999999999983
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 154,
|
||||||
|
"rendered_tick": 154,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 4.449557262054371e-16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "a",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
3.5383270508428857,
|
||||||
|
6.426786115491513,
|
||||||
|
-2.4377658807488203,
|
||||||
|
9.599999999999989,
|
||||||
|
9.899999999999983
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 154,
|
||||||
|
"rendered_tick": 154,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"moving": {
|
||||||
|
"joints": [
|
||||||
|
3.5383270508428857,
|
||||||
|
8.7673143138403,
|
||||||
|
-4.586189616718839,
|
||||||
|
19.49999999999997,
|
||||||
|
9.899999999999983
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 197,
|
||||||
|
"rendered_tick": 192,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 3.469446951953614e-17
|
||||||
|
},
|
||||||
|
"stopped": {
|
||||||
|
"joints": [
|
||||||
|
3.5383270508428857,
|
||||||
|
8.843841049987784,
|
||||||
|
-4.644803608823022,
|
||||||
|
19.799999999999965,
|
||||||
|
9.899999999999983
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 203,
|
||||||
|
"rendered_tick": 203,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 4.449557262054371e-16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
3.5383270508428857,
|
||||||
|
8.843841049987784,
|
||||||
|
-4.644803608823022,
|
||||||
|
19.799999999999965,
|
||||||
|
9.899999999999983
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 203,
|
||||||
|
"rendered_tick": 203,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"moving": {
|
||||||
|
"joints": [
|
||||||
|
2.5165393432010794,
|
||||||
|
9.442610140256845,
|
||||||
|
-4.429233471737167,
|
||||||
|
19.799999999999965,
|
||||||
|
21.89999999999992
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 253,
|
||||||
|
"rendered_tick": 253,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 4.220764384040162e-17
|
||||||
|
},
|
||||||
|
"stopped": {
|
||||||
|
"joints": [
|
||||||
|
2.352620433265477,
|
||||||
|
9.514578932735887,
|
||||||
|
-4.403323112113162,
|
||||||
|
19.799999999999965,
|
||||||
|
23.699999999999882
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": 0,
|
||||||
|
"y_offset": 20,
|
||||||
|
"z_offset": 10,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 264,
|
||||||
|
"rendered_tick": 264,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 4.4565853017185e-16
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": "XYZBC",
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"axis": "b",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
4.66664999999999,
|
||||||
|
3.466650000000003,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 323,
|
||||||
|
"rendered_tick": 323,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.5,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"moving": {
|
||||||
|
"joints": [
|
||||||
|
7.440193096216049,
|
||||||
|
3.466650000000003,
|
||||||
|
-6.028967447117559,
|
||||||
|
13.199999999999912,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 377,
|
||||||
|
"rendered_tick": 377,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.4397103255288244,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 2.0816681711721685e-17
|
||||||
|
},
|
||||||
|
"stopped": {
|
||||||
|
"joints": [
|
||||||
|
7.708439959571031,
|
||||||
|
3.466650000000003,
|
||||||
|
-6.8953114045420065,
|
||||||
|
14.999999999999874,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 388,
|
||||||
|
"rendered_tick": 388,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.43104688595458,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 2.7755575615628914e-17
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
7.708439959571031,
|
||||||
|
3.466650000000003,
|
||||||
|
-6.8953114045420065,
|
||||||
|
14.999999999999874,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 388,
|
||||||
|
"rendered_tick": 388,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.43104688595458,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"moving": {
|
||||||
|
"joints": [
|
||||||
|
7.065609001826186,
|
||||||
|
4.217362181333353,
|
||||||
|
-6.72306536854455,
|
||||||
|
14.999999999999874,
|
||||||
|
9.899999999999983
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 431,
|
||||||
|
"rendered_tick": 431,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.4327693463145545,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 1.3877787807814457e-17
|
||||||
|
},
|
||||||
|
"stopped": {
|
||||||
|
"joints": [
|
||||||
|
6.935745229993923,
|
||||||
|
4.340960088317411,
|
||||||
|
-6.688268475756038,
|
||||||
|
14.999999999999874,
|
||||||
|
11.699999999999944
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 442,
|
||||||
|
"rendered_tick": 442,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.4331173152424395,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 2.2484586062492886e-16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "b",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
6.935745229993923,
|
||||||
|
4.340960088317411,
|
||||||
|
-6.688268475756038,
|
||||||
|
14.999999999999874,
|
||||||
|
11.699999999999944
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 442,
|
||||||
|
"rendered_tick": 442,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.4331173152424395,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"moving": {
|
||||||
|
"joints": [
|
||||||
|
7.5048422561251655,
|
||||||
|
4.340960088317411,
|
||||||
|
-8.827244983646052,
|
||||||
|
19.49999999999987,
|
||||||
|
11.699999999999944
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 467,
|
||||||
|
"rendered_tick": 461,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.4203008382911364,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 1.5515838457795457e-17
|
||||||
|
},
|
||||||
|
"stopped": {
|
||||||
|
"joints": [
|
||||||
|
7.685161197488696,
|
||||||
|
4.340960088317411,
|
||||||
|
-9.694238839212831,
|
||||||
|
21.299999999999883,
|
||||||
|
11.699999999999944
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 478,
|
||||||
|
"rendered_tick": 478,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.4030576116078717,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 2.1942709178604383e-17
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"axis": "c",
|
||||||
|
"before": {
|
||||||
|
"joints": [
|
||||||
|
7.685161197488696,
|
||||||
|
4.340960088317411,
|
||||||
|
-9.694238839212831,
|
||||||
|
21.299999999999883,
|
||||||
|
11.699999999999944
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 478,
|
||||||
|
"rendered_tick": 478,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.4030576116078717,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"moving": {
|
||||||
|
"joints": [
|
||||||
|
6.765551237557826,
|
||||||
|
5.050031321132119,
|
||||||
|
-9.335697898169764,
|
||||||
|
21.299999999999883,
|
||||||
|
23.699999999999882
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 528,
|
||||||
|
"rendered_tick": 522,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.4060719741862095,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 2.237726045655905e-16
|
||||||
|
},
|
||||||
|
"stopped": {
|
||||||
|
"joints": [
|
||||||
|
6.641467483723151,
|
||||||
|
5.123681632413464,
|
||||||
|
-9.287319664128686,
|
||||||
|
21.299999999999883,
|
||||||
|
25.19999999999985
|
||||||
|
],
|
||||||
|
"offsets": {
|
||||||
|
"x_rot_point": 0,
|
||||||
|
"y_rot_point": 0,
|
||||||
|
"z_rot_point": 0,
|
||||||
|
"x_offset": -20,
|
||||||
|
"y_offset": 0,
|
||||||
|
"z_offset": -15,
|
||||||
|
"tool_offset": 0
|
||||||
|
},
|
||||||
|
"tick": 538,
|
||||||
|
"rendered_tick": 538,
|
||||||
|
"tool_tip": [
|
||||||
|
0,
|
||||||
|
1.4071268033587132,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tcp_error": 4.163336342344337e-17
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"browser_errors": []
|
||||||
|
}
|
||||||
BIN
coverage/glb-machine/switching/rtcp-jog/rtcp-jog-xyzac.png
Normal file
|
After Width: | Height: | Size: 321 KiB |
BIN
coverage/glb-machine/switching/rtcp-jog/rtcp-jog-xyzbc.png
Normal file
|
After Width: | Height: | Size: 316 KiB |
2622
coverage/glb-machine/switching/worker.report.json
Normal file
BIN
coverage/glb-machine/viewport-1440.png
Normal file
|
After Width: | Height: | Size: 334 KiB |
BIN
coverage/glb-machine/viewport-390.png
Normal file
|
After Width: | Height: | Size: 222 KiB |
45
docs/glb-machine-manager/01-项目功能内容.md
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# 项目功能内容
|
||||||
|
|
||||||
|
## 目标
|
||||||
|
|
||||||
|
在 Web LinuxCNC 控制面板的机床预览区增加“三维机床管理”按钮。对话框内完成机床部件装配和坐标标定,最终生成可由现有 XYZAC/XYZBC TRT 运行链使用的机床模型。
|
||||||
|
|
||||||
|
## 功能范围
|
||||||
|
|
||||||
|
1. 对话框包含独立的 Three.js 三维预览,实时显示正在配置的机床。
|
||||||
|
2. 支持逐个导入自包含 `.glb` 机床部件,不允许依赖外部纹理或网格文件。
|
||||||
|
3. 每个部件可绑定 `底座、X、Y、Z、刀具、A/B、C、工件` 角色,并编辑父级关系。可运行结构必须满足:
|
||||||
|
- 刀具链:底座 → X → Y → Z → 刀具。
|
||||||
|
- 转台链:底座 → A/B → C → 工件。
|
||||||
|
4. 每个部件可定义局部坐标原点。模型网格相对该原点偏移,运动关节围绕该原点运动。
|
||||||
|
5. 每个部件可独立显示或隐藏原点坐标轴辅助线。
|
||||||
|
6. 每个部件可用数值和 Three.js 操纵器平移、旋转;变换只修改装配配置,不修改原 GLB 字节。
|
||||||
|
7. 可定义 C 轴原点位置和 A/B 到 C 的运动学偏置。应用时写入底座场景节点及整机场景的 `userData.linuxcncMachineGeometry`,同时生成 URDF:
|
||||||
|
- `C 原点 P = (x-rot-point, y-rot-point, z-rot-point)`。
|
||||||
|
- `A/B 偏置 D = (x-offset, y-offset, z-offset)`。
|
||||||
|
- 倾转关节原点 `T=P+D`,C 关节原点 `U=-D`,工件固定原点 `-P`。
|
||||||
|
8. 可定义 X/Y/Z/A或B/C 的物理零点。模型运动量为 LinuxCNC 实际关节值减去配置的物理零点。
|
||||||
|
9. 应用后,控制面板程序执行、Jog、RTCP 切换和刀长变化继续以 Worker/WASM 快照为唯一运动输入;模型不得在 React 中重新计算刀尖逆解。
|
||||||
|
|
||||||
|
## 数据和单位
|
||||||
|
|
||||||
|
- UI 中平移、局部原点、C 原点和偏置使用毫米;旋转和物理旋转轴零点使用度。
|
||||||
|
- GLB 遵循 glTF 米制、Y-up;生成的 URDF 使用米和弧度、Z-up。
|
||||||
|
- 部件源文件、哈希和原始场景保持不变;运行装配使用深复制后的几何与材质。显式“导出组合 GLB”会生成新文件,并将标定数据同时写入整机场景和底座节点 `userData`。
|
||||||
|
- 底座 `userData` 至少保存 schema、机型、C 原点、A/B 偏置、物理零点和部件装配摘要。
|
||||||
|
|
||||||
|
## 安全边界
|
||||||
|
|
||||||
|
- 当前只生成项目已有求解器支持的 XYZAC 或 XYZBC 双分支 TRT 结构。
|
||||||
|
- 层级编辑器允许建立关系,但“应用到控制器”前必须严格验证两条受支持机械链、角色唯一性和无环结构。
|
||||||
|
- 未完成八个角色时允许预览和保存草稿,不允许应用到控制器。
|
||||||
|
- 模型外观变换不能代替 INI/运动学参数;C 原点和 A/B 偏置必须通过现有配置重载进入 WASM。
|
||||||
|
- 不做碰撞、质量、刚体动力学或任意 URDF 求解。
|
||||||
|
|
||||||
|
## 验收结果
|
||||||
|
|
||||||
|
- AC 与 BC 均能由八个独立部件建立结构并应用。
|
||||||
|
- 对话框预览、原点辅助、平移/旋转和层级变化实时可见。
|
||||||
|
- 底座 `userData` 含完整几何及物理零点字段。
|
||||||
|
- 运行控制面板后,X/Y/Z/A或B/C Jog 和五轴程序驱动对应部件;工件路径继续附着 C 轴,刀具长度来自 WASM。
|
||||||
|
- 非法层级、重复角色、缺失部件、错误机型和外部资源 GLB 明确拒绝,已生效模型不改变。
|
||||||
13
docs/glb-machine-manager/02-项目程序开发详细步骤.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# 项目程序开发详细步骤
|
||||||
|
|
||||||
|
1. `MGR-01`:建立本专项 01–06 与 README,冻结数据字段、坐标单位、机械链和验收边界。
|
||||||
|
2. `MGR-02`:实现部件 GLB 加载、哈希、外部资源拒绝、装配草稿类型和生命周期清理。
|
||||||
|
3. `MGR-03`:实现角色/父级编辑、唯一性和无环校验,生成 XYZAC/XYZBC 严格 URDF 与运行场景。
|
||||||
|
4. `MGR-04`:实现对话框 Three.js 预览、部件选择、显示/隐藏和原点坐标轴辅助。
|
||||||
|
5. `MGR-05`:实现部件局部原点、数值平移/旋转和 Three.js TransformControls 操纵器。
|
||||||
|
6. `MGR-06`:实现 C 原点、A/B 偏置、物理零点,写入底座及整机 `userData`,并映射到 URDF/INI。
|
||||||
|
7. `MGR-07`:接入控制面板“应用机床”,复用现有 `LOAD_WORKSPACE`、`PROGRAM_LOAD`、回零失效和 GLB 资源清理事务。
|
||||||
|
8. `MGR-08`:验证 WASM 关节值到部件链的映射、刀具/工件/路径坐标一致性及 AC/BC 五轴程序。
|
||||||
|
9. `MGR-09`:浏览器交互、错误边界、类型检查、生产构建、截图和报告收口。
|
||||||
|
|
||||||
|
每轮只推进任务矩阵中依赖已满足的任务。代码完成后必须同步更新 03、04、05;若改变数据契约或坐标定义,先更新 06。
|
||||||
22
docs/glb-machine-manager/03-推进台账.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# 推进台账
|
||||||
|
|
||||||
|
## R02 / 2026-09-20 / 部件装配、标定、应用与验收完成
|
||||||
|
|
||||||
|
- 新增 `machine-manager.ts`:通用自包含 GLB 部件加载、SHA-256、深复制、八角色和两条机械链校验、AC/BC URDF 生成、组合场景、底座/整机 userData、组合哈希。
|
||||||
|
- 新增 `MachineManagerPanel.tsx`:机床预览区“三维机床管理”按钮、可拖动大对话框、独立 Three.js 预览、批量部件导入、角色/父级、显隐、原点辅助、数值平移/旋转、TransformControls、C 原点、A/B 偏置和物理零点编辑。
|
||||||
|
- 新增“导出组合 GLB”;导出的新文件包含 `linuxcnc.machine/1` URDF,以及整机场景和底座节点上的 `linuxcnc.machine-manager/1` 标定 userData。
|
||||||
|
- 接入 App 原有 `LOAD_WORKSPACE` + `PROGRAM_LOAD` 事务。配置和程序应用成功后替换机床;失败候选被释放。关机且空闲门控、程序重解析和回零要求保持。
|
||||||
|
- `buildImportedMachine` 按 `WASM joint - physicalZero` 驱动 X/Y/Z/A或B/C,刀长、路径和 RTCP 仍来自 Worker/WASM;有效 INI 参数同步回运行克隆的底座 userData。
|
||||||
|
- 浏览器 E01/E02 覆盖 8 个独立 GLB、原点/变换、导出、AC 应用、同一部件切 BC、BC 五轴程序、物理零点、非法层级和生产包。无浏览器错误。
|
||||||
|
- 旧五轴整机回归重新通过:AC/BC 各 41 个五轴同时变化 tick、42 个样本,坐标误差低于 `2.5e-16` 视图单位。
|
||||||
|
- `gltf-validator` 当前未安装,因此没有重跑旧 Khronos 校验器;旧四个示例 GLB 未修改,历史 `coverage/glb-machine/gltf-validation.report.json` 仍为 verified。本专项生成并下载的组合 GLB 已由浏览器 GLTFExporter 完成往返导出。
|
||||||
|
- MGR-01 至 MGR-09 全部完成。下一步按用户体验反馈扩展草稿持久化、部件库或任意新运动学 profile;不自动扩大到碰撞/动力学。
|
||||||
|
|
||||||
|
## R01 / 2026-09-20 / 专项建立与实现启动
|
||||||
|
|
||||||
|
- 用户要求在机床预览区新增“三维机床管理”对话框,覆盖部件级 GLB 导入、层级、原点、姿态、RTCP 几何参数、物理零点和控制坐标对应。
|
||||||
|
- 核对现有 `docs/glb-machine`、`MachineImportPanel`、严格 URDF 解析、`buildImportedMachine` 和 WASM 关节投影。现有能力只支持已经包含完整层级与 URDF 的整机 GLB,本轮扩展为部件装配编辑器。
|
||||||
|
- 建立本目录 01–06 和 README;新增 MGR-01 至 MGR-09 任务链。
|
||||||
|
- 决定复用 `linuxcnc.machine/1` 结构:管理器生成合法场景和 URDF,现有 INI/Worker/WASM 继续作为运动和 RTCP 权威。
|
||||||
|
- 当前任务:已完成。
|
||||||
|
- 下一步:按新需求继续;本专项不重复执行。
|
||||||
13
docs/glb-machine-manager/04-任务矩阵.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# 任务矩阵
|
||||||
|
|
||||||
|
|任务|状态|依赖|交付与验收标准|
|
||||||
|
|---|---|---|---|
|
||||||
|
|MGR-01 文档与契约|verified|-|01–06 与 README 存在;字段、单位、机械链、权威边界明确|
|
||||||
|
|MGR-02 部件 GLB 加载|verified|MGR-01|多文件导入、SHA-256、外部资源拒绝、资源释放测试通过|
|
||||||
|
|MGR-03 层级与 URDF|verified|MGR-02|八角色、父级编辑、无环/唯一性、AC/BC URDF 生成与严格解析通过|
|
||||||
|
|MGR-04 管理器预览|verified|MGR-03|对话框 Three.js 预览、选择、显隐和相机控制可用|
|
||||||
|
|MGR-05 原点与部件变换|verified|MGR-04|原点辅助显示;数值和操纵器平移/旋转同步|
|
||||||
|
|MGR-06 RTCP 几何与物理零点|verified|MGR-03|C 原点、A/B 偏置、物理零点写入底座 userData,并正确生成 URDF|
|
||||||
|
|MGR-07 控制面板接入|verified|MGR-03,MGR-06|“三维机床管理”入口;应用复用 LOAD_WORKSPACE/PROGRAM_LOAD,失败不改旧模型|
|
||||||
|
|MGR-08 坐标一致性|verified|MGR-07|AC/BC 的 X/Y/Z/A或B/C、刀长、工件和路径由 WASM 状态正确驱动|
|
||||||
|
|MGR-09 浏览器验收收口|verified|MGR-04,MGR-05,MGR-08|交互/错误/构建/浏览器截图报告通过,03–05 完整更新|
|
||||||
39
docs/glb-machine-manager/05-验收证据.md
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# 验收证据
|
||||||
|
|
||||||
|
## E01 / R01 / 文档与基线
|
||||||
|
|
||||||
|
- 状态:verified。
|
||||||
|
- 文档目录:`docs/glb-machine-manager/`。
|
||||||
|
- 基线能力:现有整机 GLB 导入、严格 URDF、几何参数重载和 WASM 关节投影保留。
|
||||||
|
- 实现和运行证据见 E02–E04。
|
||||||
|
|
||||||
|
## E02 / R02 / 开发源浏览器闭环
|
||||||
|
|
||||||
|
- 命令:`PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_machine_manager_browser.mjs`
|
||||||
|
- report_id:`GLB-MGR-E01`
|
||||||
|
- 报告:`coverage/glb-machine-manager/browser.report.json`
|
||||||
|
- SHA-256:`d3d15da19d3e8a8c958935a0e9c3840b70fb646d5bc8ffb72805dc744df078a3`
|
||||||
|
- 状态:verified;浏览器错误 0。
|
||||||
|
- 覆盖:8 部件导入和预览、原点显隐、数值/TransformControls 变换、组合 GLB 导出、AC/BC 应用、底座 userData、物理零点、非法层级拒绝、BC 五轴程序。
|
||||||
|
- 截图:
|
||||||
|
- `coverage/glb-machine-manager/manager-ac-config.png`,SHA-256 `5ca01d26cb83da726319be107aa90069ce96c3197f4297a26e1f836d171a1501`
|
||||||
|
- `coverage/glb-machine-manager/managed-bc-running.png`,SHA-256 `6e14ff6bc4e493f57e55bb601ded84319ce86f064f7a811595c1e4498b1827a0`
|
||||||
|
|
||||||
|
## E03 / R02 / 生产构建浏览器闭环
|
||||||
|
|
||||||
|
- 构建:`npm --prefix web/react run build`,通过;只有既有大 chunk 提示。
|
||||||
|
- 命令:`MACHINE_MANAGER_SOURCE_MODULES=0 ... node scripts/test_machine_manager_browser.mjs`
|
||||||
|
- report_id:`GLB-MGR-E02`
|
||||||
|
- 报告:`coverage/glb-machine-manager/browser-production.report.json`
|
||||||
|
- SHA-256:`5ba840aa92c37a06e2f19bce7c57234871b085e27951fb44623af74253215388`
|
||||||
|
- 状态:verified;生产资产执行 AC/BC UI 应用和 BC WASM 程序运动,浏览器错误 0。
|
||||||
|
|
||||||
|
## E04 / R02 / 回归与静态契约
|
||||||
|
|
||||||
|
- `node scripts/test_axis_control_inventory.mjs`:verified,99 个文档化控件。
|
||||||
|
- `node web/react/src/test_dual_canvas_contract.mjs`:verified。
|
||||||
|
- `node web/react/src/test_xyzac_threejs.mjs`:verified。
|
||||||
|
- `npm --prefix web/react run typecheck`:通过。
|
||||||
|
- `node scripts/test_glb_machine_motion.mjs`:verified;报告 `coverage/glb-machine-manager/regression-motion/motion.report.json`,SHA-256 `91c3fa8ed8037aac8e71b8c76d54c38db9dc011ae25f63553966860b624aa626`。AC/BC 各 41 个同时五轴变化 tick、42 个样本,最大误差分别约 `2.26e-16`、`2.48e-16`。
|
||||||
|
- `git diff --check`:通过。
|
||||||
|
- `scripts/validate_glb_machines.mjs` 未重跑:本地缺少 `gltf-validator` 包;旧示例 GLB 未修改,历史 Khronos 校验报告仍为 verified。该依赖边界不影响新管理器的浏览器导入、导出和运行证据。
|
||||||
29
docs/glb-machine-manager/06-决策记录.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# 决策记录
|
||||||
|
|
||||||
|
## D01 / 继续使用 LinuxCNC WASM 作为运动权威
|
||||||
|
|
||||||
|
部件编辑器只生成模型结构和标定参数。程序执行、Jog、刀长、运动学类型和关节位置仍来自 Worker/WASM 快照。Three.js 不实现第二套 RTCP 或逆运动学。
|
||||||
|
|
||||||
|
## D02 / 运行结构保持 `linuxcnc.machine/1`
|
||||||
|
|
||||||
|
现有严格 URDF 校验、配置写入和运行投影已经验收。部件管理器输出同一结构,可复用所有运行能力并避免引入并行格式。编辑草稿使用独立 schema,只有验证成功后才转换成运行结构。
|
||||||
|
|
||||||
|
## D03 / 编辑层级自由,应用层级受求解器限制
|
||||||
|
|
||||||
|
UI 允许用户选择父级以建立层级和发现错误;应用时只接受底座→X→Y→Z→刀具及底座→A/B→C→工件。当前 WASM 只支持这两类 TRT,不能把任意树伪装成可执行机床。
|
||||||
|
|
||||||
|
## D04 / 原 GLB 不原地改写
|
||||||
|
|
||||||
|
导入部件的源字节和场景保持不变。局部原点和平移/旋转存在装配配置中,应用时创建深复制运行场景。标定数据写入运行装配中底座节点及整机场景的 userData;“导出组合 GLB”将该装配序列化为新的自包含 GLB,原部件文件不被覆盖。
|
||||||
|
|
||||||
|
## D05 / C 原点与 A/B 偏置的唯一映射
|
||||||
|
|
||||||
|
沿用 `trtfuncs.c` 和既有参数契约:C 原点 P 对应 rot-point,A/B 偏置 D 对应 offset;URDF 使用 T=P+D、U=-D、work=-P。该公式是控制模型坐标对应的唯一来源。
|
||||||
|
|
||||||
|
## D06 / 物理零点是模型校准,不改控制器关节值
|
||||||
|
|
||||||
|
物理零点保存为每轴的模型零姿态标定值。渲染位移/转角使用 `WASM joint - physicalZero`,但不修改 Worker、INI 的回零位置或程序坐标。改变真实回零参数仍应通过机床配置完成。
|
||||||
|
|
||||||
|
## D07 / 组合 GLB 只通过显式导出生成
|
||||||
|
|
||||||
|
普通编辑和“应用到 Web LinuxCNC”不触碰用户原文件。只有用户点击“导出组合 GLB”时才用 GLTFExporter 生成新文件。导出包含部件层级、URDF、底座标定 userData 和整机场景标定 userData。
|
||||||
25
docs/glb-machine-manager/README.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# Web LinuxCNC 三维机床管理器
|
||||||
|
|
||||||
|
本目录是“三维机床管理器”专项的唯一接续入口。工作顺序固定为:
|
||||||
|
|
||||||
|
1. 阅读 [04-任务矩阵](04-任务矩阵.md),选择首个未完成且依赖满足的任务。
|
||||||
|
2. 阅读 [03-推进台账](03-推进台账.md) 最新一轮和 [06-决策记录](06-决策记录.md)。
|
||||||
|
3. 按 [02-项目程序开发详细步骤](02-项目程序开发详细步骤.md) 实施。
|
||||||
|
4. 验收后把命令、报告、截图写入 [05-验收证据](05-验收证据.md),同步任务状态和推进台账。
|
||||||
|
|
||||||
|
专项目标是在 Web LinuxCNC 机床预览区提供“三维机床管理”对话框,支持 GLB 部件导入、AC/BC 两条机械链装配、部件原点和姿态编辑、原点辅助显示、RTCP 几何参数及物理零点定义,并保证模型运动与 LinuxCNC WASM 的实际关节坐标一致。
|
||||||
|
|
||||||
|
现有整机 GLB + 内嵌 URDF 导入能力继续保留。新管理器生成与现有 `linuxcnc.machine/1` 相同的严格结构,再通过已有配置、Worker、WASM 和 Three.js 投影链运行。
|
||||||
|
|
||||||
|
当前状态:MGR-01 至 MGR-09 全部 verified。最新台账 R02,浏览器证据 `GLB-MGR-E01/E02`,截图和报告位于 `coverage/glb-machine-manager/`。
|
||||||
|
|
||||||
|
文档:
|
||||||
|
|
||||||
|
- [01-项目功能内容](01-项目功能内容.md)
|
||||||
|
- [02-项目程序开发详细步骤](02-项目程序开发详细步骤.md)
|
||||||
|
- [03-推进台账](03-推进台账.md)
|
||||||
|
- [04-任务矩阵](04-任务矩阵.md)
|
||||||
|
- [05-验收证据](05-验收证据.md)
|
||||||
|
- [06-决策记录](06-决策记录.md)
|
||||||
|
|
||||||
|
相关旧专项:[GLB / URDF 五轴机床子项目](../glb-machine/README.md)。旧专项已完成整机导入、AC/BC 识别、几何参数同步和实际关节驱动,本专项不重复这些底层能力。
|
||||||
103
docs/glb-machine/01-子项目功能内容.md
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
# 子项目功能内容
|
||||||
|
|
||||||
|
## 需求与边界
|
||||||
|
|
||||||
|
用户指定两条机械链:底座 → X → Y → Z → 主轴箱;底座 → A → C。BC 将 A 替换为 B。线性轴移动刀具侧,转台固定在底座的另一分支。提供原创 AC 和 BC 标准型、AC 和 BC 桁架型四个完整 GLB,均包含几何、材质、节点和 URDF,不依赖外部模型文件。
|
||||||
|
|
||||||
|
预览区提供 GLB 导入、AC/BC 示例加载及下载,显示识别的机型、层级、摇篮中心和 RTCP 参数。关机且空闲时应用;验证完成才重载配置;保留程序并重新解析、失效原回零/不兼容恢复记录。普通 GLB 缺少结构描述时不能猜测机床参数。
|
||||||
|
|
||||||
|
## URDF 数据契约 v1
|
||||||
|
|
||||||
|
GLB 默认场景 `extras.linuxcncMachine = { schema: "linuxcnc.machine/1", urdf: "<robot ...>...</robot>" }`,Three.js 加载后位于 `scene.userData.linuxcncMachine`。XML 使用标准 URDF link/joint/origin/axis/limit,增加命名空间 `xmlns:cnc="urn:linuxcnc:web:machine:1"` 的 `cnc:machine` 和 `cnc:axis`,标准 URDF 与应用绑定分开。
|
||||||
|
|
||||||
|
- SI:origin.xyz 米,rpy/关节角弧度;机床坐标右手 Z 向上。GLB 最外层 `urdf_frame` 绕 X -π/2,将 Z-up 转到 glTF Y-up;不得将毫米直接作为 glTF 米。
|
||||||
|
- 每个 link 对应唯一 GLB 节点同名,节点局部静止位姿必须与父 joint.origin 相同,视觉网格放在 link 的子节点,不能把轴心烘焙进顶点后伪造节点层级。
|
||||||
|
- `cnc:machine` 显式绑定 base/tool/work 三个 link;每个运动 joint 的 `cnc:axis coordinate="X|Y|Z|A|B|C"` 绑定 LinuxCNC 坐标。不相信机型字符串:根据拓扑、joint.type 和 axis 推断 AC/BC。
|
||||||
|
- v1 接受正交 XYZ 刀具链、正向 X(A) 或 Y(B) 倾转轴以及其子 Z(C) 轴;局部 rpy=0。任意斜轴、头头/头台结构、mimic 或额外运动轴明确拒绝,后续扩展需新增求解器。
|
||||||
|
- 限位、速度和 effort 必须有限且合法;URDF limit 用作导入运动范围校验,运行加速度、回零、伺服周期仍由对应 INI 提供,结构模型不能推断这些参数。
|
||||||
|
- 摇篮 joint.origin 为 T,C joint.origin 为 U;零位 C 原点 P=T+U。映射 `rot_point=P*1000`,`offset=-U*1000`。AC 要求 U.x=0;BC 要求 U.y=0。work 固定 joint.origin=-P,保证零角下程序坐标原点与机床原点相同。
|
||||||
|
- 主轴箱零基准位于线性链原点;刀长来自 LinuxCNC 工具状态,不从外观网格猜测。遵循 trtfuncs.c 的 master-tool 约定处理工具长度与程序路径参考。
|
||||||
|
|
||||||
|
## 验收
|
||||||
|
|
||||||
|
两文件可独立导入;AC/BC 自动识别;结构与 GLB 节点一致;非零中心/偏置进入 WASM;多姿态与非零刀长时刀尖和工件程序点吻合;错误文件不更改已生效配置;浏览器导入、切换、门控、渲染及相关回归通过。
|
||||||
|
|
||||||
|
## 字段示例与制模约定
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"extras": {
|
||||||
|
"linuxcncMachine": {
|
||||||
|
"schema": "linuxcnc.machine/1",
|
||||||
|
"urdf": "<?xml version=\"1.0\"?><robot ...>...</robot>"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<robot name="demo_ac_xyz_head" xmlns:cnc="urn:linuxcnc:web:machine:1">
|
||||||
|
<cnc:machine profile="trt-xyz-head/1"
|
||||||
|
base="base" tool="spindle_head" work="work_frame"/>
|
||||||
|
<!-- 标准 link 定义省略;完整可用 XML 见交付的 .urdf -->
|
||||||
|
<joint name="tilt_joint" type="revolute">
|
||||||
|
<parent link="base"/><child link="tilt_table"/>
|
||||||
|
<origin xyz="0.024 0.006 -0.037" rpy="0 0 0"/>
|
||||||
|
<axis xyz="1 0 0"/><cnc:axis coordinate="A"/>
|
||||||
|
<limit lower="-1.7453292519943295" upper="0.8726646259971648"
|
||||||
|
velocity="0.5235987755982988" effort="1000"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="c_joint" type="revolute">
|
||||||
|
<parent link="tilt_table"/><child link="c_table"/>
|
||||||
|
<origin xyz="0 -0.018 0.045" rpy="0 0 0"/>
|
||||||
|
<axis xyz="0 0 1"/><cnc:axis coordinate="C"/>
|
||||||
|
<limit lower="-628.3185307179587" upper="628.3185307179587"
|
||||||
|
velocity="0.5235987755982988" effort="1000"/>
|
||||||
|
</joint>
|
||||||
|
</robot>
|
||||||
|
```
|
||||||
|
|
||||||
|
|数据|AC 示例(mm)|BC 示例(mm)|提取方法|
|
||||||
|
|---|---|---|---|
|
||||||
|
|倾转轴中心 T|24, 6, -37|4, 14, -28|A/B joint.origin|
|
||||||
|
|C 相对倾转轴 U|0, -18, 45|-22, 0, 40|C joint.origin|
|
||||||
|
|原生 rot-point P|24, -12, 8|-18, 14, 12|T + U|
|
||||||
|
|原生 offset D|0, 18, -45|22, 0, -40|-U|
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
root[urdf_frame: Z-up → glTF Y-up] --> base[base 底座]
|
||||||
|
base --> x[x_slide / X]
|
||||||
|
x --> y[y_slide / Y]
|
||||||
|
y --> z[z_slide / Z]
|
||||||
|
z --> tool[spindle_head 主轴箱/刀具基准]
|
||||||
|
base --> tilt[tilt_table / A 或 B]
|
||||||
|
tilt --> c[c_table / C]
|
||||||
|
c --> work[work_frame 程序参考]
|
||||||
|
```
|
||||||
|
|
||||||
|
八个 link 名可以自定义,但必须唯一并通过 URDF 引用;link 节点直接父子关系保持上述两条链,网格作为 link 的子节点。不依赖网格的名称或数量。关节静止变换可以写 glTF TRS 或等价 matrix,禁止额外缩放/旋转而不反映到结构数据。外观尺寸、颜色不进入 RTCP 参数。
|
||||||
|
|
||||||
|
完整示例:[AC URDF](../../web/react/public/machines/demo-ac-xyz-head.urdf)、[BC URDF](../../web/react/public/machines/demo-bc-xyz-head.urdf)。GLB 是唯一必需输入;旁边的 XML 和 manifest 只用于阅读与核验。
|
||||||
|
|
||||||
|
## 当前实现边界
|
||||||
|
|
||||||
|
导入资产保存在当前页面内存;刷新后须重新导入。不会向原 INI 或宿主磁盘自动写入,仍可通过现有“保存 INI”导出。修改/重新读取同机型 INI 时保留导入 GLB,同步更新有效 URDF 的轴心、偏置和工件参考系;手工切换机型才回到内置模型。跨 AC/BC 保留原程序,若原程序无法在新机型解析,明确提示“机床已应用,但程序解析失败”。
|
||||||
|
|
||||||
|
GLB 不提供完整工业机床控制配置、不做碰撞检测、质量/动力学仿真或任意 URDF 求解。示例 effort 为 URDF 结构字段,本仿真不据此宣称力矩控制。URDF 角度行程以匹配已有 LinuxCNC 示例配置为目的,不代表实际摇篮无碰撞范围。
|
||||||
|
|
||||||
|
2026-09-18 界面更新:导入/示例/结构信息和几何参数均在按钮打开的可拖动对话框中,预览顶部只保留“导入机床模型”“机床参数”两个入口,详见 D09 / GLB-UI01 / E07。
|
||||||
|
|
||||||
|
|
||||||
|
## 参数化桁架型(2026-09-18 新增)
|
||||||
|
|
||||||
|
|示例|URDF profile|刀具侧|工作台侧|结构节点|
|
||||||
|
|---|---|---|---|---|
|
||||||
|
|AC / BC 示例|trt-xyz-head/1|底座→X→Y→Z→主轴箱|底座→A或B→C|8 link / 7 joint|
|
||||||
|
|AC / BC 示例桁架型|trt-xyz-gantry/1|底座→X→Y→Z|底座→A或B→C|7 link / 6 joint|
|
||||||
|
|
||||||
|
两类均为五个运动轴。桁架型的 `cnc:machine tool="z_slide"` 直接绑定 Z;另有固定 work_frame 挂 C,作为程序参考坐标,并非第六运动轴。四柱/纵向轨道固定在底座,移动横梁属于 X,横梁滑座属于 Y,滑枕及主轴网格属于 Z。
|
||||||
|
|
||||||
|
参数修改继续使用旋转中心与轴间偏置入口;实际导入模型保留,当前有效 URDF 和 WASM 同步。桁架与标准型共用相同的 AC/BC 原生参数含义,SI 单位、根坐标转换、刀长和几何编辑规则不变。示例外观尺寸在生成器中定义,不由编辑旋转中心自动重建 CAD 网格。
|
||||||
|
|
||||||
|
交付:[AC 桁架 GLB](../../web/react/public/machines/demo-ac-gantry.glb)、[AC 桁架 URDF](../../web/react/public/machines/demo-ac-gantry.urdf)、[BC 桁架 GLB](../../web/react/public/machines/demo-bc-gantry.glb)、[BC 桁架 URDF](../../web/react/public/machines/demo-bc-gantry.urdf)。
|
||||||
16
docs/glb-machine/02-子项目程序开发详细步骤.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# 子项目程序开发详细步骤
|
||||||
|
|
||||||
|
1. GLB-01:记录规范、网络资源与方案;明确节点关系、单位和原生参数映射。
|
||||||
|
2. GLB-02:实现 GLB 容器预检与 URDF 严格解析、拓扑/绑定/位姿校验;生成独立结构描述。
|
||||||
|
3. GLB-03:可复现生成 AC/BC 模型、内嵌 URDF、单独导出可阅读 XML 和资源清单;节点名与 XML 一致。
|
||||||
|
4. GLB-04:预览区导入及示例;先完成验证再重载匹配 INI,写入解析参数,Worker 仍二次解析 INI;显示成功或失败与参数来源。同机型配置改动后保留 GLB,更新有效 URDF 和运行参数;显式更换机型才卸载。
|
||||||
|
5. GLB-05:URDF link 按真实 WASM 关节做刚体位姿投影,路径附着 C 轴,刀长取运行状态;不在 JS 重写逆解。
|
||||||
|
6. GLB-06:解析拒绝用例、非零参数/刀长与 WASM 几何交叉验证、浏览器导入/门控/截图、类型检查及构建;整理 SHA 和证据、任务状态、接续入口。
|
||||||
|
|
||||||
|
原有本地改动不加入本专项。只运行相关测试,不重跑全仓验收、不修改上游或历史 release gate。
|
||||||
|
|
||||||
|
7. GLB-UI01(后续需求):共享可拖动对话框、预览布局和快捷键隔离,适配导入/参数原流程;验证鼠标/触摸、视口边界、焦点和画布尺寸,证据独立保存在 dialogs 子目录。
|
||||||
|
|
||||||
|
8. GLB-GEO01:几何参数写入有效 URDF,源 GLB/共享网格保留;校验应用、INI 重读/导入、重复编辑、失败和机型切换边界,以及改参数后的 WASM/模型和真实 RTCP Jog。
|
||||||
|
|
||||||
|
9. GLB-GAN01:独立桁架 profile、参数化生成两模型、四例注册入口;验证正确分支运动、导入/下载/几何编辑、真实 WASM/五轴程序及原 profile 兼容,证据 gantry 子目录。
|
||||||
103
docs/glb-machine/03-推进台账.md
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
# 推进台账
|
||||||
|
|
||||||
|
## R09 / 2026-09-18 / 初学者工件坐标与 G 代码完整讲义
|
||||||
|
|
||||||
|
- 用户要求在RTCP课件基础上系统扩充工件坐标:坐标含义、原点和方向确定、G代码逐值解析与运动,整个讲义面向初学者。
|
||||||
|
- 新增 `docs/teaching/rtcp-beginners/`,72页A4完整教材,约2.6万正文字符;保留原31页投影概要。新书以坐标尺子入门,区分M/W/J/K/T,再讲工件原点测量、初始方向、G54配准和动态RTCP,最后进入完整程序与实验/答案。
|
||||||
|
- 核心细化:物理固连工件架与G54偏置表不同;本课G54是零位配准输入,动态方向与原点由运动学继续变换。解释G10 L2/L20、G90/G91、单位、F与其他字的上下文,明确普通坐标旋转和完整刀补不等于自动RTCP。
|
||||||
|
- 新增六个生成/验证脚本:`generate_rtcp_beginner_data.mjs`、`generate_rtcp_beginner_figures.py`、`generate_rtcp_beginner_html.py`、`subset_rtcp_beginner_fonts.py`、`render_rtcp_beginner_pdf.mjs`、`verify_rtcp_beginner_pdf.py`。
|
||||||
|
- 数值实测:o=(40,20,10)、BC、P=D=L=0。11个主段、11个额外单位/G54-G55/L20段核对;N10–N90加M2通过实际解释器/TP/WASM执行完成,53个采样,终点与逐行结果一致。M429/M428另按保持物理关节接口核对。
|
||||||
|
- 图像:9张新增原创坐标图,复用11张旧原创图;72页逐页边界/图片/标题检查和Poppler独立渲染检查。字体同形部首导致复制字符不符的问题,通过按实际字符制作Noto SC子集解决;保留字体许可,严格检查所有72页标题可正确提取。
|
||||||
|
- 记录能力边界:本项目解释器是功能切片,完整G43/H刀表、G52/G92、任意方向和所有进给模式不在本次全面验收范围;以官方语义讲解时明确区分,未把“解析接受”当成完整实现。
|
||||||
|
- 验证见E13,文件含目录/书签、HTML源稿、测试数据、教学NGC与复现步骤。未修改运行功能,原本地改动、旧PDF和历史证据保留;未提交/推送。
|
||||||
|
- 下一步:教材已完整交付,按后续教学内容修订需求推进。
|
||||||
|
|
||||||
|
## R08 / 2026-09-18 / 五轴与 RTCP 教学 PDF
|
||||||
|
|
||||||
|
- 用户要求完善“非RTCP各轴独立”和“RTCP坐标随转台变换、刀尖跟随”的理解,提供图文教学课件。
|
||||||
|
- 新增 `docs/teaching/rtcp-five-axis/`:31页16:9中文PDF、可编辑HTML、9张原创原理图、2张无界面控件的桁架模型图、数值报告、目录与逐页验证。
|
||||||
|
- 明确范围:XYZ加AC或BC;独立驱动不等于不能协调插补;程序坐标须经过单位/增量/零点/刀补;RTCP不仅改变方向,还处理中心/偏置/刀长;模式切换应固定物理关节。加入非RTCP后置计算、TCP/倾斜平面差异、限位与版本化M码说明。
|
||||||
|
- 生成脚本:`generate_rtcp_teaching_data.mjs`、`generate_rtcp_teaching_figures.py`、`capture_rtcp_teaching_models.mjs`、`generate_rtcp_teaching_html.py`、`render_rtcp_teaching_pdf.mjs`、`verify_rtcp_teaching_pdf.py`。
|
||||||
|
- 验证 E12:真实WASM十二个姿态正逆解、方向增量/切换算例;31页DOM边界和图片加载检查;Poppler独立渲染所有PDF页并目视检查;PyPDF核验31页、16:9、中文文本、字体自包含、39个书签。
|
||||||
|
- 中间排版修正:两页接近/越过页脚,调整公式和图形间距后严格边界检查通过;字体检查增加对Chrome嵌入Type3字形程序的正确识别,pdffonts也确认emb=yes。没有改应用功能或覆盖前轮证据。
|
||||||
|
- 下一步:课件可直接教学,按后续内容修订需求更新。原有本地改动保留,本轮未提交/推送。
|
||||||
|
|
||||||
|
## R07 / 2026-09-18 / Jog 限位与序列恢复、阴影警告
|
||||||
|
|
||||||
|
- 用户截图:XYZBC B=50.2275°,Connection: ERROR / event_sequence_gap。配置 AXIS_B 范围大,但 JOINT_3 上限=50°;连续 Jog 只以坐标限位作为目标,越过关节限位后原生 FK 返回 -702。首次 Worker 复现得到 `SIM_STEP: wasm_xyzac_forward_-702`。
|
||||||
|
- 第二层根因:SIM_STEP 执行前把请求的未来 tick 写入事件日志,实际在较早 tick 失败;下一命令发生 tick 回退,未写事件而协议已消费序号,再下一命令出现 sequence_gap。
|
||||||
|
- `wasm-linuxcnc-tp.mjs`:对于能直接映射关节的坐标,Jog 临时采用 AXIS/JOINT 限位交集,原生 TP 计算目标和减速,随后恢复正常坐标限位。RTCP 耦合的 XYZ 关节由真实 WASM IK/FK 在每个伺服样本检查;越界则取消剩余轨迹并回到上一个有效样本,发布限位停止而不是继续越界。
|
||||||
|
- `sim-session.mjs`:SIM_STEP 完成/失败后写入实际 tick;成功时仍在 checkpoint 前完成事件记录。调度异常时停止运动,并同步协议/任务时钟。`sim-scheduler.mjs` 中异常保留已尝试 tick,同步 native scheduler,未执行的未来周期不再占用时钟。
|
||||||
|
- UI 将限位拒绝标为 blocked,与 Worker 连接故障区分;Jog 采样出错显示具体原因。到限位后 JOG_STOP、反向 Jog、SNAPSHOT_REQUEST、checkpoint/恢复均可继续。
|
||||||
|
- 用户补充控制台截图仅为 PCFSoftShadowMap 弃用提示,与事件故障无关;XyzacMachineView 改为 PCFShadowMap,Chrome 再测 warnings=[]。
|
||||||
|
- 验证 E11:两机型直接旋转轴50°限位/反向退出、RTCP引发Y接近100mm限位/反向退出、失败后序号及原生事件游标一致、部分tick、无效cycles、checkpoint恢复通过。真实浏览器两机型反复Jog、松开停止、限位后再次运动/画面非空通过;120个精确恢复续跑样本、五轴程序、单步、基础session/scheduler/replay及生产构建通过。
|
||||||
|
- 旧 `test_xyzac_manual_control.mjs` 在回零尚未完成时期待 homed_mask=1,旧 `test_xyzac_button_constraints.mjs` 期待关机优先而得到 not_all_homed;使用只读 HEAD 模块加载器复核也在相同断言失败,保留日志,未修改门控或放宽断言。
|
||||||
|
- 证据归入 coverage/glb-machine/jog-limits/,不改此前证据、上游、本地trace/图片/临时文件。无 C/WASM 变更,无需重建原生核心。本轮及前轮变更仍未提交/推送。
|
||||||
|
- 下一步:专项收口;已进入旧序号错误的浏览器会话需刷新,重新导入模型并回零,不能伪造缺失事件来修补旧会话。
|
||||||
|
|
||||||
|
## R06 / 2026-09-18 / AC、BC 参数化桁架示例
|
||||||
|
|
||||||
|
- 用户要求保留 AC/BC 示例,新增 AC/BC 桁架型,结构为底座→X→Y→Z、底座→A/B→C。
|
||||||
|
- 原 AC/BC 导入示例已经采用双链,但存在 Z→主轴箱固定 link。本轮桁架型独立 profile `trt-xyz-gantry/1`,七 link、六 joint、五运动轴,tool 直接绑定 Z。原 profile `trt-xyz-head/1` 与原模型保持。
|
||||||
|
- `generate_glb_machines.mjs` 新增四柱桁架、固定纵向 X 轨、属于 X 的整根桁架横梁、属于 Y 的横梁滑座、属于 Z 的滑枕/主轴外形。转台仍独立挂到底座;生成两个新单文件 GLB 及 XML。
|
||||||
|
- `machine-urdf.ts` 只对新 profile 放行对应 link/joint 数量和 Z 工具绑定;保留树/单位/轴向/运动学校验。MachineImportPanel 从 manifest 读取四个例子的按钮名和路径,结构文字根据 profile 显示。
|
||||||
|
- 新增 `test_gantry_machine_browser.mjs`;原参数编辑测试和五轴程序测试增加可选 GLB_MACHINE_VARIANT/GLB_EVIDENCE_DIR,复用完整原断言。标准校验脚本支持独立证据目录。
|
||||||
|
- 验证 E10:四个入口和下载、标准 profile 兼容;新模型各分支父子关系、X/Y/Z 分别带动对应外形、底座/转台独立;三类错误新 profile 拒绝;参数应用/INI 保存导入重读保持模型、各18个WASM姿态/刀长、实际 RTCP Jog;每机型41个五轴同时变化采样间隔、42个轨迹投影。四个 GLB 均0错误/警告;重复生成和生产资产一致,原AC/BC字节SHA未变。桌面/手机与类型检查/构建通过。
|
||||||
|
- 原有本地改动及此前证据保留;本轮独立 `coverage/glb-machine/gantry/`。无 native C/WASM 变更、无外部模型资产。
|
||||||
|
- 下一步:任务已验收,无待办;按新目标继续。所有功能改动仍未提交/推送。
|
||||||
|
|
||||||
|
## R05 / 2026-09-18 / 几何编辑保留导入机床
|
||||||
|
|
||||||
|
- 用户发现导入 GLB 后“应用参数”会切回内置机床。根因是 App.applyGeometry 在非导入调用时执行 setImportedMachine(null),属于 R02 为防止参数脱节制定的旧策略。用户新需求覆盖此策略,新增 GLB-GEO01。
|
||||||
|
- 修复前 `scripts/test_imported_geometry_browser.mjs` 明确复现:应用后 GLB hash 从源文件 SHA 变成空串;before.log 保留。
|
||||||
|
- `imported-machine.ts` 新增 updateImportedMachineGeometry:验证机型、运行限位/速度及 INI 参数,按节点绑定更新当前有效 URDF 的 A/B、C、work origin,并重新解析校验;支持用户自定义 joint 名称。源 scene、网格、材质、文件名与 SHA 不变。
|
||||||
|
- buildImportedMachine 的运行克隆使用有效 URDF 设置所有 link 的零位,包括固定 work frame;运动继续采用真实 WASM 关节。App 在 Worker 成功加载配置后提交候选结构;参数预检失败保持旧模型,程序重解析失败则明确报告已应用配置。
|
||||||
|
- App 资源清理依赖 source scene 是否更换,避免几何对象变更时误释放共享网格。导入详情显示当前参数,并说明源 GLB 未改写。显式机型选择仍卸载旧 GLB。
|
||||||
|
- 同机型“应用参数”“重新读取 INI”“导入 INI 后应用”均保留模型;重复相同参数不累加位移。对应更新原 GLB 浏览器脚本的 INI 重载预期,保留所有其他断言。
|
||||||
|
- 验证 E09:AC/BC 的真实 UI 原路径复现、保存/导入/重读、非法输入保留状态、开机门控、机型切换,以及各 18 个不同角度/刀长的 WASM 交叉验证和改参数后实际 RTCP Jog 均通过。原 GLB 全专项、内置参数编辑回归及类型检查/构建通过。
|
||||||
|
- 测试修正:details 展开状态在 AC→BC 切换时会保留,最初无条件点击反而折叠导致文本断言失败;改为仅在折叠时点击,未放宽内容断言。
|
||||||
|
- 证据独立在 coverage/glb-machine/geometry-edit/;旧报告保持,不修改源 GLB 或上游/原有本地改动。
|
||||||
|
- 下一步:本专项已验收,按新需求推进。当前所有本地功能变更仍未提交/推送。
|
||||||
|
|
||||||
|
## R04 / 2026-09-18 / 空闲 M429/M428 切换刀尖跳动
|
||||||
|
|
||||||
|
- 用户截图中 XYZ 坐标保持不变,而 J0/J1/J2 随按钮切换改变,模型真实反映了错误关节值,并非 GLB 层级或显示坐标 bug。新增 TRT-SW01。
|
||||||
|
- 复现:新增 `web/worker/test_trt_switch_stationary.mjs`,修复前在 AC、A=4.8675° / C=179.88° 下 M428 将 J0 从 0 改为 47.97481463927447 mm,强断言失败;保留 before.log。
|
||||||
|
- 根因:`SimSession.switchXyzacKinematics()` 使用保持旧 pose 并逆解的 select()。改为已有 WASM selectPhysical(),输入当前规划器关节,计算新模式下坐标。随后同步 TP 和解释器。
|
||||||
|
- `wasm-linuxcnc-tp.mjs` 的 setPosition 增加可选模式参数,坐标和模式一起更新后才 read,避免中间态把旧坐标交给新模式逆解,尤其接近行程边界时错误越限。默认调用行为保持。
|
||||||
|
- `test_xyzac_trt_case.mjs` 保留原坐标同步断言并补充关节不变断言;新增实际浏览器按钮/MDI/后续 Jog 专项。
|
||||||
|
- 验证 E08:两机型 64 次 Worker 切换、22 次浏览器切换;截图姿态、非零中心/偏置、接近边界、重复模式、M430、空闲 tick、增量/坐标偏置、运行中/非法模式拒绝;实际渲染刀尖不动。原 RTCP Jog、TRT case、单步流程、运行后续和生产构建通过。
|
||||||
|
- 浏览器测试先等待 MDI 到位,再切回 Manual 刷新控件状态后选择切换按钮;第一次直接等待按钮门控刷新超时,未作为通过证据。
|
||||||
|
- 证据独立保存 `coverage/glb-machine/switching/`,未覆盖前轮验收;未修改 native C/WASM 或上游 LinuxCNC。
|
||||||
|
- 下一步:任务已验收,刷新页面载入新 Worker 后重新导入 GLB 即可体验;本轮及前轮改动均未提交/推送,原有本地保留项不变。
|
||||||
|
|
||||||
|
## R03 / 2026-09-18 / 预览放大与可拖动设置对话框
|
||||||
|
|
||||||
|
- 用户截图显示导入说明和参数表占据预览高度,机床仅剩很小显示区域;新增 GLB-UI01。
|
||||||
|
- `App.tsx` 把两个入口合为机床预览顶部紧凑工具条;`MachineImportPanel.tsx` 与 `TrtGeometryPanel.tsx` 的表单移入共享 `DraggableDialog.tsx`。模型画布占据其余高度,不改变左右预览比例。
|
||||||
|
- 原生 dialog 提供模态隔离;标题栏支持鼠标和触摸拖动、视口边界限制、窗口缩小后回到屏幕内;Esc 关闭、Tab/Shift-Tab 循环、焦点返回。关闭保留参数草稿;应用过程中保留结果显示。开机可打开查看,实际导入/参数编辑仍受原门控限制。
|
||||||
|
- App 快捷键在对话框打开时跳过机床操作,F1 急停保留,防止 Esc 误触 PROGRAM_ABORT 或 F2 误开机。
|
||||||
|
- 原有 GLB/参数浏览器脚本只适配打开/关闭对话框步骤;新增 `scripts/test_machine_dialog_browser.mjs`。证据独立写入 `coverage/glb-machine/dialogs/`,保留 E02–E06 原报告。
|
||||||
|
- 验证 E07:2048×859、1440×900、390×844 下机床画布高度分别 351.5、392.5、380 px;占机床面板高度超过 85%;打开对话框画布尺寸不变。拖动、极端边界、触摸、缩屏、焦点、快捷键、草稿、运行门控通过;原参数保存/导入、两机型 GLB 导入和 RTCP Jog 回归通过;类型检查/生产构建通过。
|
||||||
|
- 中间问题:浏览器原生 Tab 可转到浏览器工具栏,专项断言捕获;补充弹窗内 Tab/Shift-Tab 循环后通过,没有放宽断言。
|
||||||
|
- 下一步:当前专项所有任务已验收,按新需求推进。所有改动仍未提交/推送,原有本地改动继续保留。
|
||||||
|
|
||||||
|
## R02 / 2026-09-18 / 实现与验收收口
|
||||||
|
|
||||||
|
- 完成解析器 `web/react/src/machine-urdf.ts`:XML 命名空间、两分支拓扑、正交轴、单位/限位、GLB 自包含/节点绑定/位姿、版本和异常输入校验;推导 AC/BC、rot-point 和 offset。
|
||||||
|
- 完成模型 `scripts/generate_glb_machines.mjs` 及 `web/react/public/machines/` 的 AC/BC GLB、XML、manifest、许可;底座-XYZ-主轴箱、底座-A/B-C,与原移动工作台模型区分。
|
||||||
|
- 完成 `imported-machine.ts`、`MachineImportPanel.tsx` 和 App/Viewer/styles 接入:文件导入、示例与下载,应用前验证,参数通过 INI/Worker 进入 WASM;真实关节驱动、刀长与程序路径参考、旧资产卸载和资源释放。
|
||||||
|
- 新增 `test_glb_machine_browser.mjs`、`test_glb_machine_motion.mjs`、`validate_glb_machines.mjs`;原两个浏览器测试只增加可选证据输出目录,不删除断言。
|
||||||
|
- 验证 E02–E06:42 项拒绝用例、36 个姿态/刀长样本、8 次导入模型 RTCP Jog、两机型各 41 个五轴同时变化的执行间隔、84 个程序执行投影采样;两 GLB 标准校验 0 错误/警告;旧参数编辑与 Jog 回归、桌面/手机、类型检查及构建通过。
|
||||||
|
- 中间问题:生成器默认导出 matrix,首次被 TRS 校验拒绝;改为导出 TRS,同时解析器接受与 URDF 等价的 matrix。运动程序抽样过疏导致样本数断言失败,改为全量采样,未放宽断言。测试损坏文件时模型保持不变,后续重新加载成功示例后截图。重复生成 public 资产触发 Vite 自动刷新,曾打断一次进行中的浏览器测试;停止资产写入后独立重跑。
|
||||||
|
- 证据统一在 `coverage/glb-machine/`;旧 `coverage/trt-parametric/` 未改。原有 trace、子模块、临时文件和图片完整保留。
|
||||||
|
- 边界:本轮 v1 仅支持已声明的 AC/BC TRT 正交双链;运行 INI 仍负责回零/周期等;GLB 当前页面内存保存,刷新重新导入;不宣称任意机床 URDF、碰撞检测或制造商尺寸标定。
|
||||||
|
- 下一步:本专项矩阵无待办,按新目标扩展或按用户要求保存;未提交/推送本轮新功能。
|
||||||
|
|
||||||
|
## R01 / 2026-09-18 / 需求与契约
|
||||||
|
|
||||||
|
- 按用户最新指令确定两分支结构,建立本目录七份文档。
|
||||||
|
- 已读取原专项索引/矩阵、现有预览、参数写入和 WASM 运动学链路;保留原有工作区改动。
|
||||||
|
- 已查阅 glTF、URDF、Three.js 和 LinuxCNC 官方资料,检索网络模型资源;尚未找到可确认满足本契约的可再分发完整 GLB。
|
||||||
|
- 验证:此阶段仅源码和规范核对,未运行新功能测试。
|
||||||
|
- 下一步:GLB-02 严格结构解析,随后生成两种模型并接入 UI。
|
||||||