{ "configuration_candidate": { "coordinates": "XYZAB", "hal_geometry": { "base": [ -418.0, 500.0, -140.0, 418.0, 500.0, -140.0, 0.0, 500.0, -310.0, 418.0, 500.0, 510.0, -418.0, 500.0, 510.0 ], "effector_radius": [ 80.3, 80.3, 80.3, 80.3, 80.3 ], "effector_z": [ 87.0, 114.5, 140.5, 232.5, 258.5 ] }, "hal_pins": [ "last-iterations", "max-iterations", "limit-iterations", "max-error", "convergence-criterion", "tool-offset" ], "joints": 5, "kinematics": "pentakins", "path": "linuxcnc/configs/sim/axis/pentapod/pentapod.ini", "provenance": "shipped LinuxCNC simulation", "scan": true }, "configuration_candidates": [ { "coordinates": "XYZAB", "id": "shipped-pentapod", "joints": 5, "kind": "real", "path": "linuxcnc/configs/sim/axis/pentapod/pentapod.ini" }, { "coordinates": "XYZAB", "id": "offset-seed-regression", "initial_pose": [ 0.0, 500.0, 300.0, 0.0, 0.0 ], "joints": 5, "kind": "derived", "path": "wasm-core/tests/sim_kinematics_test.c", "purpose": "non-zero roll/pitch Newton convergence and native/WASM comparison", "target_pose": [ 0.0, 500.0, 300.0, 0.01, -0.01 ] } ], "geometry": { "orientation": "roll/pitch only; yaw is constrained to zero in the forward result", "struts": 5, "tool_offset": "applied to both base and effector HAL z coordinates", "units": "configuration units; XYZ linear and AB degrees" }, "implementation_status": "verified", "mapping": { "coordinates": "XYZAB", "extra_joint_policy": "rejected", "joint_semantics": [ "strut-0", "strut-1", "strut-2", "strut-3", "strut-4" ], "kinematics_joint_count": 5 }, "native_wasm": { "native_command": "build-native/sim_kinematics_test", "status": "passed", "wasm_command": "node build-wasm/sim_kinematics_wasm_test.js" }, "oracle": { "blocked_samples": [ "nominal five-strut pose", "negative-z seed", "nonpositive strut", "iteration limit", "maximum error", "singular Jacobian", "joint limit" ], "reason": "linuxcnc/unit_tests/kinematics is absent from the locked source", "status": "blocked" }, "report_sha256": "d8863549ead6486889c8473134f9e2ce1c2835024c9ea67494c4c7e0a13a6b75", "samples": { "byte_identical_json": true, "native": { "boundaries": { "alternate_branch": 1, "alternate_iterations": 1, "alternate_pose": [ 0.0, 0.0, 0.0 ], "alternate_status": -702, "branch": 0, "iteration_limit": -702, "iteration_limit_iterations": 1, "iterations": 12, "limit_error": -702, "max_error": -702, "max_error_iterations": 1, "nonpositive": -702, "nonpositive_iterations": 0, "residual": 1e-09, "singular": -704, "singular_iterations": 0 }, "pentapod": { "inverse": [ 625.895566556, 649.261562588, 754.767615986, 338.490149644, 341.118326622 ], "iterations": 12, "pose": [ 0.0, 500.0, 300.0, 0.01, -0.01 ], "residual": 1e-09, "state_hash": 13978136356142463125 } }, "state_hash_identical": true, "wasm": { "boundaries": { "alternate_branch": 1, "alternate_iterations": 1, "alternate_pose": [ 0.0, 0.0, 0.0 ], "alternate_status": -702, "branch": 0, "iteration_limit": -702, "iteration_limit_iterations": 1, "iterations": 12, "limit_error": -702, "max_error": -702, "max_error_iterations": 1, "nonpositive": -702, "nonpositive_iterations": 0, "residual": 1e-09, "singular": -704, "singular_iterations": 0 }, "pentapod": { "inverse": [ 625.895566556, 649.261562588, 754.767615986, 338.490149644, 341.118326622 ], "iterations": 12, "pose": [ 0.0, 500.0, 300.0, 0.01, -0.01 ], "residual": 1e-09, "state_hash": 13978136356142463125 } } }, "schema": "pentapod-kinematics-report.v1", "solver": { "alternate_seed_flag": "SIM_KIN_GENHEX_ALTERNATE_SEED bit 1; negative-z seed is explicitly bounded", "default_convergence_tolerance": 1e-09, "default_iteration_limit": 120, "default_max_error": 1000.0, "forward": "Newton-Raphson 5x5 numerical Jacobian", "inverse": "closed-form radial/z strut lengths", "seed": [ 0.0, 500.0, 300.0, 0.0, 0.0 ], "seed_units": "XYZ in configuration units; A/B in radians internally" }, "source_records": { "config": { "path": "linuxcnc/configs/sim/axis/pentapod/pentapod.ini", "sha256": "0fb210122ab482087d3a95e5e7487baecb84c3260dca1769970f4c19b2ad0618" }, "hal": { "path": "linuxcnc/configs/sim/axis/pentapod/kinematics.hal", "sha256": "cf56ea1c1fe2b49d1af6a771bd73ea43ecc7a37991717b68a1e017c101bc6ae2" }, "header": { "path": "linuxcnc/src/emc/kinematics/pentakins.h", "sha256": "af8551454177bbcc85e4e17377e059573ab8c15dc022de2a4be9b70dead74e2d" }, "implementation": { "path": "wasm-core/src/sim_kinematics.c", "sha256": "316fe74604180b6e9ae7f66369f084278f1b54b7c4545ec9efa870186adc9600" }, "kinematics_header": { "path": "wasm-core/include/sim_kinematics.h", "sha256": "34b08db612056432e08705951032418bf6f6cd2c285bde5743515588fbe484ec" }, "source": { "path": "linuxcnc/src/emc/kinematics/pentakins.c", "sha256": "1b385c2ab3a1bcb106d1d22a2dfe14519dba9c4a5df4cb31071a180845cda4c6" }, "test": { "path": "wasm-core/tests/sim_kinematics_test.c", "sha256": "715882c28ec242be652357d330a4b56d60f8e93f2e821193133911576e400aac" } }, "status": "partial", "workspace_and_boundaries": { "alternate_seed": [ 0.0, 0.0, 0.0 ], "alternate_seed_error": -702, "alternate_seed_iterations": 1, "iteration_limit_error": -702, "iteration_limit_iterations": 1, "iterations": 12, "joint_limit_error": -702, "max_error_boundary": -702, "max_error_iterations": 1, "nominal": { "inverse": [ 625.895566556, 649.261562588, 754.767615986, 338.490149644, 341.118326622 ], "iterations": 12, "pose": [ 0.0, 500.0, 300.0, 0.01, -0.01 ], "residual": 1e-09, "state_hash": 13978136356142463125 }, "nonpositive_joint_error": -702, "nonpositive_joint_iterations": 0, "posture_constraint": "C/yaw is not a configured joint and forward output is exactly zero", "residual": 1e-09, "singular_jacobian_error": -704, "singular_jacobian_iterations": 0 } }