Implement AXIS parity UI and execution baseline

This commit is contained in:
2026-08-23 07:28:37 +08:00
parent 1325504544
commit 06f96f85e5
463 changed files with 84893 additions and 692 deletions

View File

@@ -0,0 +1,94 @@
{
"checks": [
"forward_inverse_roundtrip",
"coordinates_case_fold",
"duplicate_axis_mapping",
"extra_joint_mapping",
"limits",
"unknown_type",
"unknown_name",
"capability_mask",
"parameter_mask"
],
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"families": [
"trivkins",
"corexykins",
"gantry mapping"
],
"known_boundaries": [
"5/6-axis, robot, parallel, switchkins and userk are P3-07",
"official kinematics oracle remains release blocker"
],
"native_motion": {
"command": "/home/mes006/linuxcncWebWASM/build-native/sim_kinematics_test",
"returncode": 0,
"status": "verified",
"stderr": "",
"stdout": "47296355,7.000000000],\"inverse\":[2.000000000,7.000000000,190.000000000],\"branch\":1,\"state_hash\":2438572543122669123},\"maxkins\":{\"pose\":[-4.000000000,3.000000000,5.000000000],\"inverse\":[3.000000000,4.000000000,5.000000000,0.000000000,30.000000000,90.000000000],\"state_hash\":9619955171041365392},\"rotatekins\":{\"pose\":[4.000000000,-3.000000000,5.000000000],\"inverse\":[3.000000000,4.000000000,5.000000000,0.000000000,0.000000000,90.000000000],\"state_hash\":4875770340631299468},\"fiveaxiskins\":{\"pose\":[118.967490359,111.434580971,76.850293016],\"inverse\":[10.000000000,20.000000000,30.000000000,35.000000000,40.000000000,-2.000000000,20.000000000],\"state_hash\":7748142909372720337},\"xyzac_trt\":{\"pose\":[142.826706376,9.689621386,163.102540378],\"inverse\":[100.000000000,50.000000000,200.000000000,30.000000000,45.000000000],\"state_hash\":13756563895642799233},\"xyzbc_trt\":{\"pose\":[44.740352549,25.970325570,227.671759760],\"inverse\":[100.000000000,50.000000000,200.000000000,30.000000000,45.000000000],\"state_hash\":16201786080257949760},\"scara\":{\"pose\":[590.460310444,130.945742721,465.000000000],\"inverse\":[-3.644300703,40.000000000,25.000000000,-31.355699297,5.000000000,-3.000000000],\"state_hash\":16144366080292311245},\"puma\":{\"pose\":[450.112320486,207.114833215,-612.180622409],\"inverse\":[10.000000000,20.000000000,-30.000000000,40.000000000,25.000000000,-15.000000000],\"state_hash\":3358632253473456540},\"scorbot\":{\"pose\":[366.786994761,171.035584569,191.173940759],\"inverse\":[25.000000000,35.000000000,-20.000000000,10.000000000,-5.000000000],\"state_hash\":7814353589808450675},\"genser\":{\"pose\":[619.051467462,30.411237800,-349.855537721],\"inverse\":[0.000000000,10.000000000,-20.000000000,29.999999999,15.000000000,-9.999999999],\"state_hash\":7456282805679296496,\"iterations\":0,\"residual\":0.000000000000},\"lineardelta\":{\"pose\":[0.000000000,0.000000000,64.636584194],\"inverse\":[300.000000000,300.000000000,300.000000000],\"state_hash\":5975346607623231017},\"rotarydelta\":{\"pose\":[0.000000000,0.000000000,-3.793360169],\"inverse\":[10.000000000,10.000000000,10.000000000],\"state_hash\":2370894419412951220},\"tripod\":{\"pose\":[2.000000000,3.000000000,4.000000000],\"inverse\":[5.385164807,9.433981132,6.447715952],\"state_hash\":15608486964708188096},\"genhex\":{\"pose\":[10.000000000,-5.000000000,60.000000000,4.999999999,-3.000000001,10.000000000],\"inverse\":[68.274402001,63.007928550,63.783820692,65.475127133,60.456723205,68.231500501],\"state_hash\":7575268797291078131,\"iterations\":14,\"residual\":0.000000000857},\"pentapod\":{\"pose\":[0.000000000,500.000000000,300.000000000,0.010000000,-0.010000000],\"inverse\":[625.895566556,649.261562588,754.767615986,338.490149644,341.118326622],\"state_hash\":13978136356142463125,\"iterations\":12,\"residual\":0.000000001000},\"delta_edges\":{\"lineardelta\":{\"alternate_status\":0,\"alternate_branch\":1,\"alternate_pose\":[-0.000000000,-0.000000000,535.363415806],\"no_solution\":-702,\"limit_error\":-702,\"geometry_error\":-703,\"branch\":0,\"iterations\":0},\"rotarydelta\":{\"alternate_status\":0,\"alternate_branch\":1,\"alternate_pose\":[-0.000000000,-0.000000000,0.320396615],\"singular\":-704,\"geometry_error\":-703,\"branch\":0,\"iterations\":0},\"tripod\":{\"alternate_status\":0,\"alternate_branch\":1,\"alternate_pose\":[2.000000000,3.000000000,-4.000000000],\"no_solution\":-702,\"singular\":-704,\"limit_error\":-702,\"geometry_error\":-703,\"branch\":0,\"iterations\":0},\"genhex\":{\"alternate_status\":0,\"alternate_branch\":1,\"alternate_pose\":[10.000000000,-5.000000000,-60.000000000],\"nonpositive\":-702,\"iteration_limit\":-702,\"max_error\":-702,\"singular\":-704,\"limit_error\":-702,\"branch\":0,\"iterations\":14,\"residual\":0.000000000857},\"pentapod\":{\"alternate_status\":-702,\"alternate_branch\":1,\"alternate_pose\":[0.000000000,0.000000000,0.000000000],\"alternate_iterations\":1,\"nonpositive\":-702,\"nonpositive_iterations\":0,\"iteration_limit\":-702,\"iteration_limit_iterations\":1,\"max_error\":-702,\"max_error_iterations\":1,\"singular\":-704,\"singular_iterations\":0,\"limit_error\":-702,\"branch\":0,\"iterations\":12,\"residual\":0.000000001000}}}\n"
},
"native_registry": {
"command": "/home/mes006/linuxcncWebWASM/build-native/sim_kinematics_registry_test",
"returncode": 0,
"status": "verified",
"stderr": "",
"stdout": "{\"schema\":\"kinematics-registry-samples.v1\",\"entries\":[{\"name\":\"trivkins\",\"type\":1,\"required\":\"\",\"min\":1,\"max\":9,\"capabilities\":119,\"parameters\":3},{\"name\":\"xyzac-trt-kins\",\"type\":2,\"required\":\"XYZAC\",\"min\":5,\"max\":9,\"capabilities\":115,\"parameters\":15},{\"name\":\"xyzbc-trt-kins\",\"type\":3,\"required\":\"XYZBC\",\"min\":5,\"max\":9,\"capabilities\":115,\"parameters\":15},{\"name\":\"xyzbcw\",\"type\":4,\"required\":\"XYZBCW\",\"min\":6,\"max\":9,\"capabilities\":51,\"parameters\":19},{\"name\":\"corexykins\",\"type\":5,\"required\":\"XYZ\",\"min\":3,\"max\":9,\"capabilities\":51,\"parameters\":3},{\"name\":\"rosekins\",\"type\":6,\"required\":\"XYZ\",\"min\":3,\"max\":3,\"capabilities\":19,\"parameters\":3},{\"name\":\"maxkins\",\"type\":7,\"required\":\"XYZ\",\"min\":3,\"max\":9,\"capabilities\":51,\"parameters\":19},{\"name\":\"rotatekins\",\"type\":8,\"required\":\"XYZ\",\"min\":3,\"max\":9,\"capabilities\":51,\"parameters\":3},{\"name\":\"5axiskins\",\"type\":9,\"required\":\"XYZBCW\",\"min\":6,\"max\":9,\"capabilities\":115,\"parameters\":19},{\"name\":\"scarakins\",\"type\":10,\"required\":\"XYZCAB\",\"min\":6,\"max\":6,\"capabilities\":19,\"parameters\":35},{\"name\":\"pumakins\",\"type\":11,\"required\":\"XYZABC\",\"min\":6,\"max\":6,\"capabilities\":19,\"parameters\":35},{\"name\":\"scorbot-kins\",\"type\":12,\"required\":\"XYZAB\",\"min\":5,\"max\":5,\"capabilities\":19,\"parameters\":35},{\"name\":\"genserkins\",\"type\":13,\"required\":\"XYZABC\",\"min\":6,\"max\":6,\"capabilities\":27,\"parameters\":195},{\"name\":\"lineardeltakins\",\"type\":14,\"required\":\"XYZ\",\"min\":3,\"max\":9,\"capabilities\":51,\"parameters\":35},{\"name\":\"rotarydeltakins\",\"type\":15,\"required\":\"XYZ\",\"min\":3,\"max\":9,\"capabilities\":51,\"parameters\":35},{\"name\":\"tripodkins\",\"type\":16,\"required\":\"XYZ\",\"min\":3,\"max\":9,\"capabilities\":51,\"parameters\":35},{\"name\":\"genhexkins\",\"type\":17,\"required\":\"XYZABC\",\"min\":6,\"max\":6,\"capabilities\":27,\"parameters\":171},{\"name\":\"pentakins\",\"type\":18,\"required\":\"XYZAB\",\"min\":5,\"max\":5,\"capabilities\":27,\"parameters\":171}],\"count\":18,\"verified\":18,\"capability_union\":127,\"parameter_union\":255,\"registry_hash\":3966926008000628109,\"lookup_status\":0,\"iterative_require\":0,\"capability_error\":-711,\"parameter_error\":-711,\"type_mismatch\":-703,\"coordinate_error\":-703,\"joint_error\":-703,\"unknown_name\":-705,\"path_name\":-712,\"range_error\":-702}\n"
},
"oracle": {
"reason": "locked source does not contain linuxcnc/unit_tests/kinematics/**; no official golden is fabricated",
"status": "blocked"
},
"outputs": [
{
"bytes": 12375,
"path": "wasm-core/include/sim_kinematics.h",
"sha256": "34b08db612056432e08705951032418bf6f6cd2c285bde5743515588fbe484ec"
},
{
"bytes": 76636,
"path": "wasm-core/src/sim_kinematics.c",
"sha256": "316fe74604180b6e9ae7f66369f084278f1b54b7c4545ec9efa870186adc9600"
},
{
"bytes": 6495,
"path": "wasm-core/src/sim_kinematics_registry.c",
"sha256": "fa852e370b5fa52006afb9c04bd6bc4ebba798d9b1ab7f060d52ecf98326d97d"
},
{
"bytes": 43608,
"path": "wasm-core/tests/sim_kinematics_test.c",
"sha256": "715882c28ec242be652357d330a4b56d60f8e93f2e821193133911576e400aac"
},
{
"bytes": 3572,
"path": "wasm-core/tests/sim_kinematics_registry_test.c",
"sha256": "42d0952fdb94340e33b4a86a5f0707aa3330302ae3c5e2573785bf29ee8ac243"
}
],
"registry": {
"abi_version": 1,
"capability_union": 127,
"entry_count": 18,
"parameter_union": 255,
"state_hash_identical": true,
"verified_entries": 18
},
"report_sha256": "660a3083aae978f5c08ae561fbc32d7c0ccae3b57f8050dd7147cdcdb3b8db78",
"schema": "kinematics-base-report.v1",
"status": "verified",
"task_id": "P3-06",
"wasm_motion": {
"command": "node build-wasm/sim_kinematics_wasm_test.js",
"returncode": 0,
"status": "verified",
"stderr": "",
"stdout": "47296355,7.000000000],\"inverse\":[2.000000000,7.000000000,190.000000000],\"branch\":1,\"state_hash\":2438572543122669123},\"maxkins\":{\"pose\":[-4.000000000,3.000000000,5.000000000],\"inverse\":[3.000000000,4.000000000,5.000000000,0.000000000,30.000000000,90.000000000],\"state_hash\":9619955171041365392},\"rotatekins\":{\"pose\":[4.000000000,-3.000000000,5.000000000],\"inverse\":[3.000000000,4.000000000,5.000000000,0.000000000,0.000000000,90.000000000],\"state_hash\":4875770340631299468},\"fiveaxiskins\":{\"pose\":[118.967490359,111.434580971,76.850293016],\"inverse\":[10.000000000,20.000000000,30.000000000,35.000000000,40.000000000,-2.000000000,20.000000000],\"state_hash\":7748142909372720337},\"xyzac_trt\":{\"pose\":[142.826706376,9.689621386,163.102540378],\"inverse\":[100.000000000,50.000000000,200.000000000,30.000000000,45.000000000],\"state_hash\":13756563895642799233},\"xyzbc_trt\":{\"pose\":[44.740352549,25.970325570,227.671759760],\"inverse\":[100.000000000,50.000000000,200.000000000,30.000000000,45.000000000],\"state_hash\":16201786080257949760},\"scara\":{\"pose\":[590.460310444,130.945742721,465.000000000],\"inverse\":[-3.644300703,40.000000000,25.000000000,-31.355699297,5.000000000,-3.000000000],\"state_hash\":16144366080292311245},\"puma\":{\"pose\":[450.112320486,207.114833215,-612.180622409],\"inverse\":[10.000000000,20.000000000,-30.000000000,40.000000000,25.000000000,-15.000000000],\"state_hash\":3358632253473456540},\"scorbot\":{\"pose\":[366.786994761,171.035584569,191.173940759],\"inverse\":[25.000000000,35.000000000,-20.000000000,10.000000000,-5.000000000],\"state_hash\":7814353589808450675},\"genser\":{\"pose\":[619.051467462,30.411237800,-349.855537721],\"inverse\":[0.000000000,10.000000000,-20.000000000,29.999999999,15.000000000,-9.999999999],\"state_hash\":7456282805679296496,\"iterations\":0,\"residual\":0.000000000000},\"lineardelta\":{\"pose\":[0.000000000,0.000000000,64.636584194],\"inverse\":[300.000000000,300.000000000,300.000000000],\"state_hash\":5975346607623231017},\"rotarydelta\":{\"pose\":[0.000000000,0.000000000,-3.793360169],\"inverse\":[10.000000000,10.000000000,10.000000000],\"state_hash\":2370894419412951220},\"tripod\":{\"pose\":[2.000000000,3.000000000,4.000000000],\"inverse\":[5.385164807,9.433981132,6.447715952],\"state_hash\":15608486964708188096},\"genhex\":{\"pose\":[10.000000000,-5.000000000,60.000000000,4.999999999,-3.000000001,10.000000000],\"inverse\":[68.274402001,63.007928550,63.783820692,65.475127133,60.456723205,68.231500501],\"state_hash\":7575268797291078131,\"iterations\":14,\"residual\":0.000000000857},\"pentapod\":{\"pose\":[0.000000000,500.000000000,300.000000000,0.010000000,-0.010000000],\"inverse\":[625.895566556,649.261562588,754.767615986,338.490149644,341.118326622],\"state_hash\":13978136356142463125,\"iterations\":12,\"residual\":0.000000001000},\"delta_edges\":{\"lineardelta\":{\"alternate_status\":0,\"alternate_branch\":1,\"alternate_pose\":[-0.000000000,-0.000000000,535.363415806],\"no_solution\":-702,\"limit_error\":-702,\"geometry_error\":-703,\"branch\":0,\"iterations\":0},\"rotarydelta\":{\"alternate_status\":0,\"alternate_branch\":1,\"alternate_pose\":[-0.000000000,-0.000000000,0.320396615],\"singular\":-704,\"geometry_error\":-703,\"branch\":0,\"iterations\":0},\"tripod\":{\"alternate_status\":0,\"alternate_branch\":1,\"alternate_pose\":[2.000000000,3.000000000,-4.000000000],\"no_solution\":-702,\"singular\":-704,\"limit_error\":-702,\"geometry_error\":-703,\"branch\":0,\"iterations\":0},\"genhex\":{\"alternate_status\":0,\"alternate_branch\":1,\"alternate_pose\":[10.000000000,-5.000000000,-60.000000000],\"nonpositive\":-702,\"iteration_limit\":-702,\"max_error\":-702,\"singular\":-704,\"limit_error\":-702,\"branch\":0,\"iterations\":14,\"residual\":0.000000000857},\"pentapod\":{\"alternate_status\":-702,\"alternate_branch\":1,\"alternate_pose\":[0.000000000,0.000000000,0.000000000],\"alternate_iterations\":1,\"nonpositive\":-702,\"nonpositive_iterations\":0,\"iteration_limit\":-702,\"iteration_limit_iterations\":1,\"max_error\":-702,\"max_error_iterations\":1,\"singular\":-704,\"singular_iterations\":0,\"limit_error\":-702,\"branch\":0,\"iterations\":12,\"residual\":0.000000001000}}}\n"
},
"wasm_registry": {
"command": "node build-wasm/sim_kinematics_registry_wasm_test.js",
"returncode": 0,
"status": "verified",
"stderr": "",
"stdout": "{\"schema\":\"kinematics-registry-samples.v1\",\"entries\":[{\"name\":\"trivkins\",\"type\":1,\"required\":\"\",\"min\":1,\"max\":9,\"capabilities\":119,\"parameters\":3},{\"name\":\"xyzac-trt-kins\",\"type\":2,\"required\":\"XYZAC\",\"min\":5,\"max\":9,\"capabilities\":115,\"parameters\":15},{\"name\":\"xyzbc-trt-kins\",\"type\":3,\"required\":\"XYZBC\",\"min\":5,\"max\":9,\"capabilities\":115,\"parameters\":15},{\"name\":\"xyzbcw\",\"type\":4,\"required\":\"XYZBCW\",\"min\":6,\"max\":9,\"capabilities\":51,\"parameters\":19},{\"name\":\"corexykins\",\"type\":5,\"required\":\"XYZ\",\"min\":3,\"max\":9,\"capabilities\":51,\"parameters\":3},{\"name\":\"rosekins\",\"type\":6,\"required\":\"XYZ\",\"min\":3,\"max\":3,\"capabilities\":19,\"parameters\":3},{\"name\":\"maxkins\",\"type\":7,\"required\":\"XYZ\",\"min\":3,\"max\":9,\"capabilities\":51,\"parameters\":19},{\"name\":\"rotatekins\",\"type\":8,\"required\":\"XYZ\",\"min\":3,\"max\":9,\"capabilities\":51,\"parameters\":3},{\"name\":\"5axiskins\",\"type\":9,\"required\":\"XYZBCW\",\"min\":6,\"max\":9,\"capabilities\":115,\"parameters\":19},{\"name\":\"scarakins\",\"type\":10,\"required\":\"XYZCAB\",\"min\":6,\"max\":6,\"capabilities\":19,\"parameters\":35},{\"name\":\"pumakins\",\"type\":11,\"required\":\"XYZABC\",\"min\":6,\"max\":6,\"capabilities\":19,\"parameters\":35},{\"name\":\"scorbot-kins\",\"type\":12,\"required\":\"XYZAB\",\"min\":5,\"max\":5,\"capabilities\":19,\"parameters\":35},{\"name\":\"genserkins\",\"type\":13,\"required\":\"XYZABC\",\"min\":6,\"max\":6,\"capabilities\":27,\"parameters\":195},{\"name\":\"lineardeltakins\",\"type\":14,\"required\":\"XYZ\",\"min\":3,\"max\":9,\"capabilities\":51,\"parameters\":35},{\"name\":\"rotarydeltakins\",\"type\":15,\"required\":\"XYZ\",\"min\":3,\"max\":9,\"capabilities\":51,\"parameters\":35},{\"name\":\"tripodkins\",\"type\":16,\"required\":\"XYZ\",\"min\":3,\"max\":9,\"capabilities\":51,\"parameters\":35},{\"name\":\"genhexkins\",\"type\":17,\"required\":\"XYZABC\",\"min\":6,\"max\":6,\"capabilities\":27,\"parameters\":171},{\"name\":\"pentakins\",\"type\":18,\"required\":\"XYZAB\",\"min\":5,\"max\":5,\"capabilities\":27,\"parameters\":171}],\"count\":18,\"verified\":18,\"capability_union\":127,\"parameter_union\":255,\"registry_hash\":3966926008000628109,\"lookup_status\":0,\"iterative_require\":0,\"capability_error\":-711,\"parameter_error\":-711,\"type_mismatch\":-703,\"coordinate_error\":-703,\"joint_error\":-703,\"unknown_name\":-705,\"path_name\":-712,\"range_error\":-702}\n"
}
}