Implement WebAssembly runtime and kinematics coverage
This commit is contained in:
361
coverage/delta-kinematics.report.json
Normal file
361
coverage/delta-kinematics.report.json
Normal file
@@ -0,0 +1,361 @@
|
||||
{
|
||||
"configuration_candidate_count": 4,
|
||||
"configuration_candidates": {
|
||||
"linear_axis": {
|
||||
"hal_files": [
|
||||
"sim_ldelta.hal",
|
||||
"axis_manualtoolchange.hal"
|
||||
],
|
||||
"kinematics": "lineardeltakins",
|
||||
"missing_hal_files": [
|
||||
"linuxcnc/configs/sim/axis/axis_manualtoolchange.hal",
|
||||
"linuxcnc/configs/sim/axis/sim_ldelta.hal"
|
||||
],
|
||||
"path": "linuxcnc/configs/sim/axis/ldelta.ini",
|
||||
"sha256": "1567138c3d54b4d9712b5031f6a0b060edadd8d1442d1eff8d93c2beefbb5e0c"
|
||||
},
|
||||
"linear_demo": {
|
||||
"hal_files": [
|
||||
"sim_ldelta.hal",
|
||||
"axis_manualtoolchange.hal"
|
||||
],
|
||||
"kinematics": "lineardeltakins",
|
||||
"missing_hal_files": [
|
||||
"linuxcnc/configs/sim/axis/axis_manualtoolchange.hal",
|
||||
"linuxcnc/configs/sim/axis/sim_ldelta.hal"
|
||||
],
|
||||
"path": "linuxcnc/configs/sim/axis/ldelta_demo.ini",
|
||||
"sha256": "ab0645308abe903bf66f36a328b43303aa0e8ad2d19e69a45e2703d665956439"
|
||||
},
|
||||
"linear_tklinuxcnc": {
|
||||
"hal_files": [
|
||||
"sim_ldelta.hal",
|
||||
"axis_manualtoolchange.hal"
|
||||
],
|
||||
"kinematics": "lineardeltakins",
|
||||
"missing_hal_files": [
|
||||
"linuxcnc/configs/sim/tklinuxcnc/axis_manualtoolchange.hal",
|
||||
"linuxcnc/configs/sim/tklinuxcnc/sim_ldelta.hal"
|
||||
],
|
||||
"path": "linuxcnc/configs/sim/tklinuxcnc/ldelta.ini",
|
||||
"sha256": "0e23dee0f4df839c028f5bfba95c5941f2f8623ce502d6fdfc90dfdef63d8967"
|
||||
},
|
||||
"rotary_axis": {
|
||||
"hal_files": [
|
||||
"sim_rdelta.hal",
|
||||
"axis_manualtoolchange.hal"
|
||||
],
|
||||
"kinematics": "rotarydeltakins",
|
||||
"missing_hal_files": [
|
||||
"linuxcnc/configs/sim/axis/axis_manualtoolchange.hal",
|
||||
"linuxcnc/configs/sim/axis/sim_rdelta.hal"
|
||||
],
|
||||
"path": "linuxcnc/configs/sim/axis/rdelta.ini",
|
||||
"sha256": "53510733b8fd0230547f48f76ebd35dc5c98f58fe1dba1246777e227ef82c508"
|
||||
}
|
||||
},
|
||||
"families": {
|
||||
"linear_delta": {
|
||||
"configuration_candidates": [
|
||||
"linear_axis",
|
||||
"linear_demo",
|
||||
"linear_tklinuxcnc"
|
||||
],
|
||||
"forward": "three carriage spheres -> quadratic platform root",
|
||||
"inverse": "three carriage heights from sphere intersections",
|
||||
"module": "lineardeltakins"
|
||||
},
|
||||
"rotary_delta": {
|
||||
"configuration_candidates": [
|
||||
"rotary_axis"
|
||||
],
|
||||
"forward": "three rotary knee constraints -> quadratic platform root",
|
||||
"inverse": "three rotated leg intersections",
|
||||
"module": "rotarydeltakins"
|
||||
}
|
||||
},
|
||||
"geometry": {
|
||||
"linear": {
|
||||
"radius": 130.25,
|
||||
"rod_length": 269.0,
|
||||
"tower_layout": "120-degree equilateral",
|
||||
"units": "mm"
|
||||
},
|
||||
"rotary": {
|
||||
"foot_radius": 6.0,
|
||||
"joint_units": "degrees",
|
||||
"platform_radius": 10.0,
|
||||
"shin_length": 14.0,
|
||||
"thigh_length": 10.0
|
||||
}
|
||||
},
|
||||
"implementation_status": "verified",
|
||||
"mapping": {
|
||||
"coordinates": "XYZ",
|
||||
"extra_joint_policy": "prefix only; extra joints rejected by count",
|
||||
"kinematics_joint_count": 3,
|
||||
"optional_axes": "A/B/C/U/V/W pass through"
|
||||
},
|
||||
"native_wasm": {
|
||||
"native_command": "build-native/sim_kinematics_test",
|
||||
"status": "passed",
|
||||
"wasm_command": "node build-wasm/sim_kinematics_wasm_test.js"
|
||||
},
|
||||
"oracle": {
|
||||
"blocked_samples": [
|
||||
"linear nominal/root",
|
||||
"linear alternate root",
|
||||
"linear no-solution",
|
||||
"linear joint-limit",
|
||||
"rotary nominal/root",
|
||||
"rotary alternate root",
|
||||
"rotary z=0 singular"
|
||||
],
|
||||
"reason": "linuxcnc/unit_tests/kinematics is absent from the locked source",
|
||||
"status": "blocked"
|
||||
},
|
||||
"report_sha256": "a585edd0895eefb4add8753927a33b60cae806e814623830df39f396787cd2e3",
|
||||
"resource_gaps": {
|
||||
"missing_hal_files": [
|
||||
"linuxcnc/configs/sim/axis/axis_manualtoolchange.hal",
|
||||
"linuxcnc/configs/sim/axis/sim_ldelta.hal",
|
||||
"linuxcnc/configs/sim/axis/sim_rdelta.hal",
|
||||
"linuxcnc/configs/sim/tklinuxcnc/axis_manualtoolchange.hal",
|
||||
"linuxcnc/configs/sim/tklinuxcnc/sim_ldelta.hal"
|
||||
],
|
||||
"policy": "retained as missing inputs; no configuration smoke is promoted to numeric golden"
|
||||
},
|
||||
"samples": {
|
||||
"byte_identical_json": true,
|
||||
"native": {
|
||||
"delta_edges": {
|
||||
"lineardelta": {
|
||||
"alternate_branch": 1,
|
||||
"alternate_pose": [
|
||||
-0.0,
|
||||
-0.0,
|
||||
535.363415806
|
||||
],
|
||||
"alternate_status": 0,
|
||||
"branch": 0,
|
||||
"geometry_error": -703,
|
||||
"iterations": 0,
|
||||
"limit_error": -702,
|
||||
"no_solution": -702
|
||||
},
|
||||
"rotarydelta": {
|
||||
"alternate_branch": 1,
|
||||
"alternate_pose": [
|
||||
-0.0,
|
||||
-0.0,
|
||||
0.320396615
|
||||
],
|
||||
"alternate_status": 0,
|
||||
"branch": 0,
|
||||
"geometry_error": -703,
|
||||
"iterations": 0,
|
||||
"singular": -704
|
||||
},
|
||||
"tripod": {
|
||||
"alternate_branch": 1,
|
||||
"alternate_pose": [
|
||||
2.0,
|
||||
3.0,
|
||||
-4.0
|
||||
],
|
||||
"alternate_status": 0,
|
||||
"branch": 0,
|
||||
"geometry_error": -703,
|
||||
"iterations": 0,
|
||||
"limit_error": -702,
|
||||
"no_solution": -702,
|
||||
"singular": -704
|
||||
}
|
||||
},
|
||||
"lineardelta": {
|
||||
"inverse": [
|
||||
300.0,
|
||||
300.0,
|
||||
300.0
|
||||
],
|
||||
"pose": [
|
||||
0.0,
|
||||
0.0,
|
||||
64.636584194
|
||||
],
|
||||
"state_hash": 10022623683197000937
|
||||
},
|
||||
"rotarydelta": {
|
||||
"inverse": [
|
||||
10.0,
|
||||
10.0,
|
||||
10.0
|
||||
],
|
||||
"pose": [
|
||||
0.0,
|
||||
0.0,
|
||||
-3.793360169
|
||||
],
|
||||
"state_hash": 14346691006498560820
|
||||
}
|
||||
},
|
||||
"state_hash_identical": true,
|
||||
"wasm": {
|
||||
"delta_edges": {
|
||||
"lineardelta": {
|
||||
"alternate_branch": 1,
|
||||
"alternate_pose": [
|
||||
-0.0,
|
||||
-0.0,
|
||||
535.363415806
|
||||
],
|
||||
"alternate_status": 0,
|
||||
"branch": 0,
|
||||
"geometry_error": -703,
|
||||
"iterations": 0,
|
||||
"limit_error": -702,
|
||||
"no_solution": -702
|
||||
},
|
||||
"rotarydelta": {
|
||||
"alternate_branch": 1,
|
||||
"alternate_pose": [
|
||||
-0.0,
|
||||
-0.0,
|
||||
0.320396615
|
||||
],
|
||||
"alternate_status": 0,
|
||||
"branch": 0,
|
||||
"geometry_error": -703,
|
||||
"iterations": 0,
|
||||
"singular": -704
|
||||
},
|
||||
"tripod": {
|
||||
"alternate_branch": 1,
|
||||
"alternate_pose": [
|
||||
2.0,
|
||||
3.0,
|
||||
-4.0
|
||||
],
|
||||
"alternate_status": 0,
|
||||
"branch": 0,
|
||||
"geometry_error": -703,
|
||||
"iterations": 0,
|
||||
"limit_error": -702,
|
||||
"no_solution": -702,
|
||||
"singular": -704
|
||||
}
|
||||
},
|
||||
"lineardelta": {
|
||||
"inverse": [
|
||||
300.0,
|
||||
300.0,
|
||||
300.0
|
||||
],
|
||||
"pose": [
|
||||
0.0,
|
||||
0.0,
|
||||
64.636584194
|
||||
],
|
||||
"state_hash": 10022623683197000937
|
||||
},
|
||||
"rotarydelta": {
|
||||
"inverse": [
|
||||
10.0,
|
||||
10.0,
|
||||
10.0
|
||||
],
|
||||
"pose": [
|
||||
0.0,
|
||||
0.0,
|
||||
-3.793360169
|
||||
],
|
||||
"state_hash": 14346691006498560820
|
||||
}
|
||||
}
|
||||
},
|
||||
"schema": "delta-kinematics-report.v1",
|
||||
"solver": {
|
||||
"alternate_root_flag": "SIM_KIN_DELTA_ALTERNATE_ROOT bit 0",
|
||||
"convergence_tolerance": 0.0,
|
||||
"default_root": 0,
|
||||
"fixed_iteration_limit": 0,
|
||||
"forward": "analytic quadratic intersection",
|
||||
"inverse": "three independent leg intersections"
|
||||
},
|
||||
"source_records": {
|
||||
"header": {
|
||||
"path": "wasm-core/include/sim_kinematics.h",
|
||||
"sha256": "43e588f7c45c703970598e8e42ff5aae4b97a437eaff1d4cd6ad156bd204edc7"
|
||||
},
|
||||
"implementation": {
|
||||
"path": "wasm-core/src/sim_kinematics.c",
|
||||
"sha256": "f15842a1dbf0cb33f071ee1e70715a85a1f3dec44c4facc220edd924f6ca352c"
|
||||
},
|
||||
"linear_c": {
|
||||
"path": "linuxcnc/src/emc/kinematics/lineardeltakins.c",
|
||||
"sha256": "792caf5f3fb8bf06d97a4bb7262697ac22182d78d91fed19e7a9e537585aa748"
|
||||
},
|
||||
"linear_cc": {
|
||||
"path": "linuxcnc/src/emc/kinematics/lineardeltakins.cc",
|
||||
"sha256": "77634457a4dd3f5617f91a66651965c5b8326fc0d4dfc916d9cd63b89b0ec0f1"
|
||||
},
|
||||
"linear_common": {
|
||||
"path": "linuxcnc/src/emc/kinematics/lineardeltakins-common.h",
|
||||
"sha256": "7785bcd7d095b431169cdd0f753c177ece643ee825f7ff4b8cdb6f8cd4706df8"
|
||||
},
|
||||
"rotary_c": {
|
||||
"path": "linuxcnc/src/emc/kinematics/rotarydeltakins.c",
|
||||
"sha256": "64c8aeb6998a481f3c26743093dd157d2d22dc6769b258e3e6012b5c1f784773"
|
||||
},
|
||||
"rotary_cc": {
|
||||
"path": "linuxcnc/src/emc/kinematics/rotarydeltakins.cc",
|
||||
"sha256": "7e2fd63a2a7f5718d706faa21f903b36007226b065ad6d234631d2514f653618"
|
||||
},
|
||||
"rotary_common": {
|
||||
"path": "linuxcnc/src/emc/kinematics/rotarydeltakins-common.h",
|
||||
"sha256": "ba3e037fe2ad7eba29aa2b657492ac83f1979a38c9249fef52e598ba0d5c9136"
|
||||
},
|
||||
"test": {
|
||||
"path": "wasm-core/tests/sim_kinematics_test.c",
|
||||
"sha256": "00d9efc3c701ba2848535357f6027e6d9d4d19796a17be96e290ddc0babe2c5c"
|
||||
}
|
||||
},
|
||||
"status": "partial",
|
||||
"workspace_and_boundaries": {
|
||||
"linear": {
|
||||
"alternate_branch": 1,
|
||||
"alternate_root_pose": [
|
||||
-0.0,
|
||||
-0.0,
|
||||
535.363415806
|
||||
],
|
||||
"geometry_error": -703,
|
||||
"iterations": 0,
|
||||
"joint_limit_error": -702,
|
||||
"no_solution_error": -702,
|
||||
"nominal": [
|
||||
0.0,
|
||||
0.0,
|
||||
64.636584194
|
||||
],
|
||||
"root_branch": 0
|
||||
},
|
||||
"rotary": {
|
||||
"alternate_branch": 1,
|
||||
"alternate_root_pose": [
|
||||
-0.0,
|
||||
-0.0,
|
||||
0.320396615
|
||||
],
|
||||
"geometry_error": -703,
|
||||
"iterations": 0,
|
||||
"nominal": [
|
||||
0.0,
|
||||
0.0,
|
||||
-3.793360169
|
||||
],
|
||||
"root_branch": 0,
|
||||
"singular_error": -704
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user