Files
linuxcncWebWASM/coverage/axis3-tutorial-native-web-tool-comparison.report.json

307 lines
60 KiB
JSON

{
"boundaries": [
"simulation-only",
"native process uses POSIX non-realtime fallback",
"Web visual uses Chromium SwiftShader",
"real hardware and full LinuxCNC parity are outside selected-case tool comparison"
],
"case": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini",
"checks": {
"native_tool_verified": {
"report": "coverage/axis3-tutorial-manual-ui-verification.report.json",
"status": "verified"
},
"same_case_and_context": {
"case": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"native_source_files": "coverage/axis3-tutorial-native-run.report.json",
"program": "linuxcnc/nc_files/3dtest.ngc",
"status": "verified",
"wasm_source_files": "coverage/axis3-tutorial-web-wasm-complete-parity.report.json"
},
"same_operation_intent": {
"native": [
"WINDOW_VISIBLE",
"ESTOP_RESET",
"ON",
"ALL_HOMED_REQUESTED",
"AUTO_RUN_REQUESTED"
],
"status": "verified",
"web_labels": [
"ready",
"estop",
"power",
"homed",
"running",
"complete"
]
},
"visual_evidence_nonempty": {
"native_screenshots": 4,
"status": "verified",
"web_screenshots": 4
},
"wasm_acceptance_regression": {
"passed": 20,
"required": 20,
"status": "verified"
},
"web_tool_verified": {
"report": "coverage/axis3-tutorial-web-manual-verification.report.json",
"status": "verified"
}
},
"conclusion": "native_and_web_tools_match_selected_case_workflow",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"report_sha256": "292a386579c313e96e1fc004b22a79605a014714439c8d6ad4be6c34a9aac7d4",
"schema": "axis3-tutorial-native-web-tool-comparison.v1",
"shared_inputs": {
"case": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"native_source_files": "coverage/axis3-tutorial-native-run.report.json",
"program": "linuxcnc/nc_files/3dtest.ngc",
"wasm_source_files": "coverage/axis3-tutorial-web-wasm-complete-parity.report.json"
},
"status": "verified",
"task_id": "AXIS3-NATIVE-WEB-TOOL-COMPARISON-01",
"tools": {
"native": {
"report": "coverage/axis3-tutorial-manual-ui-verification.report.json",
"screenshots": [
{
"bytes": 160022,
"path": "coverage/axis3-tutorial-manual-ui.png",
"returncode": 0,
"sha256": "76a0c7ac9f97d008087635033a1a18b01a75f6efd11a46f7a65b4897005cdea5",
"stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"bytes": 162410,
"path": "coverage/axis3-tutorial-manual-ui-homed.png",
"returncode": 0,
"sha256": "72d776a812e21175df939cd84804dc8a452e75efdce2c8b0c0892692f63bed5e",
"stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"bytes": 162410,
"path": "coverage/axis3-tutorial-manual-ui-running.png",
"returncode": 0,
"sha256": "72d776a812e21175df939cd84804dc8a452e75efdce2c8b0c0892692f63bed5e",
"stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"bytes": 162410,
"path": "coverage/axis3-tutorial-manual-ui-complete.png",
"returncode": 0,
"sha256": "72d776a812e21175df939cd84804dc8a452e75efdce2c8b0c0892692f63bed5e",
"stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}
],
"tool": "tool/linuxcnc-axis-manual-execution",
"transitions": [
{
"height": 1297,
"state": "WINDOW_VISIBLE",
"title": "3dtest.ngc - AXIS 2.10.0~pre1 on 3axis-tutorial",
"width": 1300
},
{
"input": "F1",
"state": "ESTOP_RESET"
},
{
"input": "F2",
"state": "ON"
},
{
"input": "Ctrl+Home",
"state": "ALL_HOMED_REQUESTED"
},
{
"input": "r",
"state": "AUTO_RUN_REQUESTED"
}
],
"window": {
"class": "axis",
"height": 1297,
"instance": "Axis",
"title": "3dtest.ngc - AXIS 2.10.0~pre1 on 3axis-tutorial",
"width": 1300
}
},
"web": {
"browser": "Google Chrome headless",
"report": "coverage/axis3-tutorial-web-manual-verification.report.json",
"screenshots": [
{
"bytes": 112654,
"label": "ready",
"path": "coverage/axis3-tutorial-web-ready.png",
"sha256": "8090814b1b5351952822f27d9b5927ae36fa3dd71355eda12127c9525984743f"
},
{
"bytes": 145174,
"label": "homed",
"path": "coverage/axis3-tutorial-web-homed.png",
"sha256": "127d0ce429d83bf410b7f5461b8223771a1a0374d04ed40a81e005fad8a04fca"
},
{
"bytes": 144461,
"label": "running",
"path": "coverage/axis3-tutorial-web-running.png",
"sha256": "0ed52562d7f5e07f64743ec85fc1db7cc323eb357a075a2dbd688de205a817fb"
},
{
"bytes": 144492,
"label": "complete",
"path": "coverage/axis3-tutorial-web-complete.png",
"sha256": "3713af13105514ab8478dcb548d9766361cafb2a3453765e9cc000b1de4ecc78"
}
],
"states": [
{
"axis_state": "IDLE",
"canvases": [
{
"height": 471,
"width": 941
}
],
"case_status": "ready to load",
"connection": "READY",
"error_text": "TASK_READYTick 0Hash fnv1a64:034bfe70d581f786Startup resourcesEntrypoint: linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.iniResources: 4 resolved / 0 blockedHAL: 37 records / 0 blockedDisabled operationsrunaxis_taskfile_missingstepaxis_taskfile_missingpauseaxis_pause_state_gateresumeaxis_resume_state_gateabortaxis_stop_state_gaterestartaxis_taskfile_missingSource diagnosticsNo startup diagnostics",
"footer": "Idle",
"href": "http://127.0.0.1:5175/",
"label": "ready",
"machine_state": "Machine ON",
"operation_state": "Operation IDLE",
"position": "X0.000 Y0.000 Z0.000",
"program_status": "idle",
"ready_state": "complete",
"root_html": "<main class=\"axis-app\" data-axis-feature=\"AXIS-UI-01\" data-axis-run-enabled=\"false\" data-axis-homed=\"[false,false,false]",
"task": "IDLE",
"title": "LinuxCNC Web/WASM"
},
{
"axis_state": "ESTOP",
"canvases": [
{
"height": 471,
"width": 941
}
],
"case_status": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini + linuxcnc/configs/nc_files/3dtest.ngc loaded",
"connection": "BLOCKED",
"error_text": "sim_io_estop{\"status\":\"blocked\",\"code\":\"sim_io_estop\",\"state_hash\":\"fnv1a64:a8a64faf9056dd4a\",\"state\":{\"ready\":false,\"estop\":true,\"fault\":false,\"fault_reason\":0,\"tick\":0,\"recovery_epoch\":0,\"spindle_count\":1,\"tool_capacity\":1001,\"spindles\":[{\"command_rpm\":0,\"speed_rpm\":0,\"at_speed\":true,\"enabled\":false,\"inhibit\":false,\"amp_fault\":false,\"brake\":true,\"orient\":false,\"locked\":false,\"is_oriented\":false,\"orient_angle\":0,\"orient_mode\":0,\"orient_fault\":0,\"index_enable\":false,\"revs\":0}],\"tool\":{\"state\":\"aborted\",\"current\":0,\"prepared\":null,\"pocket\":null,\"prepare\":false,\"prepared_ack\":false,\"changed\":false,\"fault\":false,\"reason\":0},\"probe\":{\"state\":\"idle\",\"type\":0,\"input\":false,\"tripped\":false,\"tick\":0,\"position\":null},\"limits\":{},\"last_error\":\"sim_io_estop\"},\"command\":\"ESTOP\",\"task\":{\"schema\":\"sim_task.v1\",\"context_id\":\"linuxcnc-2.10.0-pre0-wasm-m1-py-c1\",\"session_id\":\"react-1787548616528\",\"state\":\"ESTOP\",\"mode\":\"MANUAL\",\"program_status\":\"loaded\",\"seq\":5,\"simulation_tick\":0,\"current_line\":0,\"state_hash\":\"fnv1a64:1a57f1f5238d2f52\"},\"device_io\":{\"schema\":\"sim_device_io.v1\",\"tick\":0,\"cycle_time\":0.1,\"encoders\":[{\"registered\":true,\"speed_rps\":0,\"ppr\":1000,\"scale\":1,\"raw_count\":0,\"count\":0,\"position\":0,\"velocity\":0,\"phase_a\":1,\"phase_b\":0,\"phase_z\":1,\"index_enable\":false,\"index_pulse\":false,\"tick\":0,\"phase\":0}],\"coolant\":{\"mist_requested\":false,\"flood_requested\":false,\"lube_requested\":false,\"mist\":false,\"flood\":false,\"lube\":false,\"fault\":false},\"safety\":{\"door_open\":false,\"input_ok\":true,\"estop\":true,\"fault\":false,\"interlock_ok\":false,\"latched_fault\":true,\"recovery_epoch\":0},\"acks\":[],\"last_error\":\"device_interlock\",\"state_hash\":\"fnv1a64:ce4118c3bc1885ae\"},\"motion\":{\"schema\":\"sim_motion.v1\",\"tick\":0,\"axes\":{\"x\":0,\"y\":0,\"z\":0},\"joints\":[0,0,0],\"velocity\":0,\"feed_override\":1,\"spindle_override\":1,\"homed\":false,\"homed_axes\":[false,false,false],\"limits\":{\"x\":false,\"y\":false,\"z\":false},\"following_error\":0,\"jog\":null,\"estop\":true,\"fault\":\"estop\",\"state_hash\":\"fnv1a64:443e61c260f56116\"},\"operation_id\":\"axis-estop-000003\",\"simulation_tick\":0,\"panel_snapshot\":{\"schema\":\"axis-panel-snapshot.v1\",\"context_id\":\"linuxcnc-2.10.0-pre0-wasm-m1-py-c1\",\"session_id\":\"react-1787548616528\",\"simulation_tick\":0,\"task\":{\"schema\":\"sim_task.v1\",\"context_id\":\"linuxcnc-2.10.0-pre0-wasm-m1-py-c1\",\"session_id\":\"react-1787548616528\",\"state\":\"ESTOP\",\"mode\":\"MANUAL\",\"program_status\":\"loaded\",\"seq\":5,\"simulation_tick\":0,\"current_line\":0,\"state_hash\":\"fnv1a64:1a57f1f5238d2f52\"},\"program\":{\"status\":\"verified\",\"program_status\":\"loaded\",\"path\":\"linuxcnc/configs/nc_files/3dtest.ngc\",\"line\":0,\"line_count\":54,\"source_hash\":\"fnv1a64:8b2a1284793c8ba6\",\"state\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0,\"feed\":0,\"speed\":0,\"line\":0,\"units\":21,\"distance_mode\":90,\"plane\":17,\"motion_mode\":1,\"spindle_mode\":5,\"program_end\":0,\"status\":0},\"canonical\":\"{\\\"a\\\":0,\\\"b\\\":0,\\\"c\\\":0,\\\"distance_mode\\\":90,\\\"feed\\\":0,\\\"line\\\":0,\\\"modal_hash\\\":13626864533805933641,\\\"motion_mode\\\":1,\\\"plane\\\":17,\\\"program_end\\\":0,\\\"speed\\\":0,\\\"spindle_mode\\\":5,\\\"status\\\":0,\\\"units\\\":21,\\\"u\\\":0,\\\"v\\\":0,\\\"w\\\":0,\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0}\",\"interpreter_state_hash\":\"fnv1a64:00000000dee1b045\",\"block_hash\":\"fnv1a64:0000000000000000\",\"modal_hash\":\"fnv1a64:0000000063df2449\",\"motion_control\":{\"mode\":\"continuous\",\"path_tolerance\":0,\"naive_cam_tolerance\":0},\"motion_control_hash\":\"fnv1a64:86c2707fd428abc3\",\"active_gcodes\":\"G21 G90 G17 G1 M5\",\"error_column\":0,\"error_code\":0,\"error\":null},\"motion\":{\"schema\":\"sim_motion.v1\",\"tick\":0,\"axes\":{\"x\":0,\"y\":0,\"z\":0},\"joints\":[0,0,0],\"velocity\":0,\"feed_override\":1,\"spindle_override\":1,\"homed\":false,\"homed_axes\":[false,false,false],\"limits\":{\"x\":false,\"y\":false,\"z\":false},\"following_error\":0,\"jog\":null,\"estop\":true,\"fault\":\"estop\",\"state_hash\":\"fnv1a64:443e61c260f56116\"},\"coordinates\":{\"machine\":[0,0,0],\"relative\":[0,0,0],\"commanded\":[0,0,0]},\"overrides\":{\"feed\":1,\"spindle\":[1]},\"wasm_motion\":{\"status\":\"verified\",\"state\":{\"position\":{\"x\":0,\"y\":0,\"z\":0},\"velocity\":0,\"progress\":0,\"tick\":0,\"queue_depth\":0,\"active_id\":0,\"active_tag\":0,\"motion_type\":0,\"status\":0,\"source\":\"wasm_motion_queue\"}},\"home_limit\":{\"status\":\"verified\",\"state\":{\"schema\":\"sim_home_limit_state.v1\",\"source\":\"wasm_home_limit\",\"pose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"joints\":[0,0,0],\"joint_count\":3,\"homed\":false,\"home_sequence\":0,\"tick\":0,\"last_error\":0,\"limit_error\":0,\"kinematics_error\":0}},\"hal\":{\"configuration\":null,\"runtime\":{\"schema\":\"sim_hal_runtime.v1\",\"tick\":0,\"threads\":{},\"pins\":{},\"params\":{},\"components\":[],\"links\":[],\"last_error\":null,\"state_hash\":\"fnv1a64:97a922c8c30099fa\"}},\"devices\":{\"ready\":false,\"estop\":true,\"fault\":false,\"fault_reason\":0,\"tick\":0,\"recovery_epoch\":0,\"spindle_count\":1,\"tool_capacity\":1001,\"spindles\":[{\"command_rpm\":0,\"speed_rpm\":0,\"at_speed\":true,\"enabled\":false,\"inhibit\":false,\"amp_fault\":false,\"brake\":true,\"orient\":false,\"locked\":false,\"is_oriented\":false,\"orient_angle\":0,\"orient_mode\":0,\"orient_fault\":0,\"index_enable\":false,\"revs\":0}],\"tool\":{\"state\":\"aborted\",\"current\":0,\"prepared\":null,\"pocket\":null,\"prepare\":false,\"prepared_ack\":false,\"changed\":false,\"fault\":false,\"reason\":0},\"probe\":{\"state\":\"idle\",\"type\":0,\"input\":false,\"tripped\":false,\"tick\":0,\"position\":null},\"limits\":{},\"last_error\":\"sim_io_estop\"},\"device_io\":{\"schema\":\"sim_device_io.v1\",\"tick\":0,\"cycle_time\":0.1,\"encoders\":[{\"registered\":true,\"speed_rps\":0,\"ppr\":1000,\"scale\":1,\"raw_count\":0,\"count\":0,\"position\":0,\"velocity\":0,\"phase_a\":1,\"phase_b\":0,\"phase_z\":1,\"index_enable\":false,\"index_pulse\":false,\"tick\":0,\"phase\":0}],\"coolant\":{\"mist_requested\":false,\"flood_requested\":false,\"lube_requested\":false,\"mist\":false,\"flood\":false,\"lube\":false,\"fault\":false},\"safety\":{\"door_open\":false,\"input_ok\":true,\"estop\":true,\"fault\":false,\"interlock_ok\":false,\"latched_fault\":true,\"recovery_epoch\":0},\"acks\":[],\"last_error\":\"device_interlock\",\"state_hash\":\"fnv1a64:ce4118c3bc1885ae\"},\"configuration\":{\"schema\":\"configuration-startup-runtime.v1\",\"entrypoint\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini\",\"state\":\"TASK_READY\",\"transitions\":[{\"from\":null,\"to\":\"NEW\"},{\"from\":\"NEW\",\"to\":\"MOUNTED\"},{\"from\":\"MOUNTED\",\"to\":\"PARSED\"},{\"from\":\"PARSED\",\"to\":\"RESOLVED\"},{\"from\":\"RESOLVED\",\"to\":\"CORE_CREATED\"},{\"from\":\"CORE_CREATED\",\"to\":\"HAL_READY\"},{\"from\":\"HAL_READY\",\"to\":\"TASK_READY\"}],\"diagnostics\":[],\"ini\":{\"state_hash\":\"fnv1a64:9b3137b6f127a443\",\"graph\":[\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini\"],\"includes\":[]},\"resources\":{\"state_hash\":\"fnv1a64:a290bb863dfc0823\",\"resolved_count\":4,\"optional_count\":0,\"blocked_count\":0,\"generated_files\":{},\"resources\":[{\"status\":\"resolved\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"type\":\"hal\",\"path\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini\",\"line\":106,\"key\":\"HALFILE\",\"bytes\":2447,\"data_hash\":\"fnv1a64:db08170a12259698\",\"capability\":\"SIM-CORE\"},{\"status\":\"resolved\",\"resource_id\":\"image:linuxcnc/linuxcnc.gif\",\"type\":\"image\",\"path\":\"linuxcnc/linuxcnc.gif\",\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini\",\"line\":49,\"key\":\"INTRO_GRAPHIC\",\"bytes\":15534,\"data_hash\":\"fnv1a64:1cceab19ad1eaab6\",\"capability\":\"SIM-CORE\"},{\"status\":\"resolved\",\"resource_id\":\"parameter_file:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial_mm.var\",\"type\":\"parameter_file\",\"path\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial_mm.var\",\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini\",\"line\":70,\"key\":\"PARAMETER_FILE\",\"bytes\":0,\"data_hash\":\"fnv1a64:14650fb0739d0383\",\"capability\":\"SIM-CORE\"},{\"status\":\"resolved\",\"resource_id\":\"tool_table:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/tool.tbl\",\"type\":\"tool_table\",\"path\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/tool.tbl\",\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini\",\"line\":155,\"key\":\"TOOL_TABLE\",\"bytes\":115,\"data_hash\":\"fnv1a64:70a77dcff5889cad\",\"capability\":\"SIM-CORE\"}]},\"hal\":{\"schema\":\"hal-configuration-preflight.v1\",\"status\":\"ready\",\"record_count\":37,\"blocked_count\":0,\"records\":[{\"schema\":\"hal-configuration-preflight.v1\",\"line\":5,\"command\":\"loadrt\",\"module\":\"trivkins\",\"instances\":[],\"status\":\"declared\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":8,\"command\":\"loadrt\",\"module\":\"motmod\",\"instances\":[],\"status\":\"declared\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":10,\"command\":\"loadrt\",\"module\":\"ddt\",\"instances\":[\"ddt_x\",\"ddt_xv\",\"ddt_y\",\"ddt_yv\",\"ddt_z\",\"ddt_zv\"],\"status\":\"declared\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":12,\"command\":\"loadrt\",\"module\":\"hypot\",\"instances\":[\"vel_xy\",\"vel_xyz\"],\"status\":\"declared\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":15,\"command\":\"addf\",\"function\":\"motion-command-handler\",\"thread\":\"servo-thread\",\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":16,\"command\":\"addf\",\"function\":\"motion-controller\",\"thread\":\"servo-thread\",\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":18,\"command\":\"addf\",\"function\":\"ddt_x\",\"thread\":\"servo-thread\",\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":19,\"command\":\"addf\",\"function\":\"ddt_xv\",\"thread\":\"servo-thread\",\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":20,\"command\":\"addf\",\"function\":\"ddt_y\",\"thread\":\"servo-thread\",\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":21,\"command\":\"addf\",\"function\":\"ddt_yv\",\"thread\":\"servo-thread\",\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":22,\"command\":\"addf\",\"function\":\"ddt_z\",\"thread\":\"servo-thread\",\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":23,\"command\":\"addf\",\"function\":\"ddt_zv\",\"thread\":\"servo-thread\",\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":24,\"command\":\"addf\",\"function\":\"vel_xy\",\"thread\":\"servo-thread\",\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":25,\"command\":\"addf\",\"function\":\"vel_xyz\",\"thread\":\"servo-thread\",\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":29,\"command\":\"net\",\"tokens\":[\"Xpos\",\"joint.0.motor-pos-cmd\",\"=>\",\"joint.0.motor-pos-fb\",\"ddt_x.in\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":30,\"command\":\"net\",\"tokens\":[\"Ypos\",\"joint.1.motor-pos-cmd\",\"=>\",\"joint.1.motor-pos-fb\",\"ddt_y.in\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":31,\"command\":\"net\",\"tokens\":[\"Zpos\",\"joint.2.motor-pos-cmd\",\"=>\",\"joint.2.motor-pos-fb\",\"ddt_z.in\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":35,\"command\":\"net\",\"tokens\":[\"Xvel\",\"ddt_x.out\",\"=>\",\"ddt_xv.in\",\"vel_xy.in0\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":36,\"command\":\"net\",\"tokens\":[\"Xacc\",\"<=\",\"ddt_xv.out\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":37,\"command\":\"net\",\"tokens\":[\"Yvel\",\"ddt_y.out\",\"=>\",\"ddt_yv.in\",\"vel_xy.in1\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":38,\"command\":\"net\",\"tokens\":[\"Yacc\",\"<=\",\"ddt_yv.out\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":39,\"command\":\"net\",\"tokens\":[\"Zvel\",\"ddt_z.out\",\"=>\",\"ddt_zv.in\",\"vel_xyz.in0\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":40,\"command\":\"net\",\"tokens\":[\"Zacc\",\"<=\",\"ddt_zv.out\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":43,\"command\":\"net\",\"tokens\":[\"XYvel\",\"vel_xy.out\",\"=>\",\"vel_xyz.in1\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":44,\"command\":\"net\",\"tokens\":[\"XYZvel\",\"<=\",\"vel_xyz.out\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":47,\"command\":\"net\",\"tokens\":[\"estop-loop\",\"iocontrol.0.user-enable-out\",\"iocontrol.0.emc-enable-in\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":49,\"command\":\"loadusr\",\"status\":\"checked\",\"code\":null,\"program\":\"hal_manualtoolchange\",\"capability\":\"SIM-ADAPTER\",\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":50,\"command\":\"net\",\"tokens\":[\"tool-change\",\"iocontrol.0.tool-change\",\"=>\",\"hal_manualtoolchange.change\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":51,\"command\":\"net\",\"tokens\":[\"tool-changed\",\"iocontrol.0.tool-changed\",\"<=\",\"hal_manualtoolchange.changed\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":52,\"command\":\"net\",\"tokens\":[\"tool-number\",\"iocontrol.0.tool-prep-number\",\"=>\",\"hal_manualtoolchange.number\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":53,\"command\":\"net\",\"tokens\":[\"tool-prepare-loopback\",\"iocontrol.0.tool-prepare\",\"=>\",\"iocontrol.0.tool-prepared\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":56,\"command\":\"loadusr\",\"status\":\"checked\",\"code\":null,\"program\":\"./3axis-tutorial\",\"capability\":\"WEB-EQUIV\",\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":59,\"command\":\"net\",\"tokens\":[\"j0\",\"joint.0.pos-fb\",\"=>\",\"3axis-tutorial.jointX\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":60,\"command\":\"net\",\"tokens\":[\"j1\",\"joint.1.pos-fb\",\"=>\",\"3axis-tutorial.jointY\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":61,\"command\":\"net\",\"tokens\":[\"j2\",\"joint.2.pos-fb\",\"=>\",\"3axis-tutorial.jointZ\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":64,\"command\":\"net\",\"tokens\":[\"tool_len\",\"3axis-tutorial.toollength\",\"<=\",\"motion.tooloffset.z\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"},{\"schema\":\"hal-configuration-preflight.v1\",\"line\":65,\"command\":\"net\",\"tokens\":[\"tool_rad\",\"halui.tool.diameter\",\"3axis-tutorial.tooldiameter\"],\"status\":\"checked\",\"code\":null,\"source\":\"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\",\"resource_id\":\"hal:linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal\"}]},\"core\":{\"result\":0},\"status\":\"ready\",\"state_hash\":\"fnv1a64:a7f7c05da5d79f9d\"},\"axis_state\":{\"state\":\"ESTOP\",\"machine_state\":\"ESTOP\",\"operation_state\":\"IDLE\",\"source_task_state\":\"STATE_ESTOP\",\"source_interp_state\":\"INTERP_IDLE\",\"source_mode\":\"MANUAL\",\"states\":[\"ESTOP\",\"ESTOP_RESET\",\"OFF\",\"ON\",\"HOME\",\"IDLE\",\"RUNNING\",\"PAUSED\"]},\"gates\":{\"load\":{\"action\":\"load\",\"enabled\":false,\"reason\":\"axis_fault_active\",\"taskState\":\"ESTOP\",\"interpState\":\"IDLE\"},\"run\":{\"action\":\"run\",\"enabled\":false,\"reason\":\"axis_fault_active\",\"taskState\":\"ESTOP\",\"interpState\":\"IDLE\"},\"step\":{\"action\":\"step\",\"enabled\":false,\"reason\":\"axis_fault_active\",\"taskState\":\"ESTOP\",\"interpState\":\"IDLE\"},\"pause\":{\"action\":\"pause\",\"enabled\":false,\"reason\":\"axis_fault_active\",\"taskState\":\"ESTOP\",\"interpState\":\"IDLE\"},\"resume\":{\"action\":\"resume\",\"enabled\":false,\"reason\":\"axis_fault_active\",\"taskState\":\"ESTOP\",\"interpState\":\"IDLE\"},\"abort\":{\"action\":\"abort\",\"enabled\":false,\"reason\":\"axis_fault_active\",\"taskState\":\"ESTOP\",\"interpState\":\"IDLE\"},\"restart\":{\"action\":\"restart\",\"enabled\":false,\"reason\":\"axis_fault_active\",\"taskState\":\"ESTOP\",\"interpState\":\"IDLE\"},\"mdi\":{\"action\":\"mdi\",\"enabled\":false,\"reason\":\"axis_fault_active\",\"taskState\":\"ESTOP\",\"interpState\":\"IDLE\"},\"jogStart\":{\"action\":\"jogStart\",\"enabled\":false,\"reason\":\"axis_fault_active\",\"taskState\":\"ESTOP\",\"interpState\":\"IDLE\"},\"jogStop\":{\"action\":\"jogStop\",\"enabled\":false,\"reason\":\"axis_fault_active\",\"taskState\":\"ESTOP\",\"interpState\":\"IDLE\"},\"home\":{\"action\":\"home\",\"enabled\":false,\"reason\":\"axis_fault_active\",\"taskState\":\"ESTOP\",\"interpState\":\"IDLE\"},\"estop\":{\"action\":\"estop\",\"enabled\":true,\"reason\":\"axis_estop_reset_available\",\"taskState\":\"ESTOP\",\"interpState\":\"IDLE\"},\"recover\":{\"action\":\"recover\",\"enabled\":true,\"reason\":\"axis_recover_available\",\"taskState\":\"ESTOP\",\"interpState\":\"IDLE\"},\"override\":{\"action\":\"override\",\"enabled\":false,\"reason\":\"axis_fault_active\",\"taskState\":\"ESTOP\",\"interpState\":\"IDLE\"},\"reset\":{\"action\":\"reset\",\"enabled\":false,\"reason\":\"axis_fault_active\",\"taskState\":\"ESTOP\",\"interpState\":\"IDLE\"},\"spindle\":{\"action\":\"spindle\",\"enabled\":false,\"reason\":\"axis_fault_active\",\"taskState\":\"ESTOP\",\"interpState\":\"IDLE\"},\"coolant\":{\"action\":\"coolant\",\"enabled\":false,\"reason\":\"axis_fault_active\",\"taskState\":\"ESTOP\",\"interpState\":\"IDLE\"}},\"visual\":{\"schema\":\"axis-visual.v1\",\"pose\":{\"x\":0,\"y\":0,\"z\":0},\"joints\":[0,0,0],\"toolpath\":[{\"id\":1,\"source_line\":5,\"start\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":25.4,\"y\":25.4,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":0,\"y\":0,\"z\":0},\"normal\":{\"x\":0,\"y\":0,\"z\":1},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":2,\"source_line\":6,\"start\":{\"x\":25.4,\"y\":25.4,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":25.4,\"y\":25.4,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":38.099999999999994,\"y\":38.099999999999994,\"z\":0},\"normal\":{\"x\":0,\"y\":0,\"z\":1},\"velocity\":762,\"acceleration\":0,\"motion_type\":2,\"turn\":-1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":3,\"source_line\":7,\"start\":{\"x\":25.4,\"y\":25.4,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":25.4,\"y\":25.4,\"z\":2.54,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":25.4,\"y\":25.4,\"z\":0},\"normal\":{\"x\":0,\"y\":0,\"z\":1},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":4,\"source_line\":8,\"start\":{\"x\":25.4,\"y\":25.4,\"z\":2.54,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":25.4,\"y\":44.449999999999996,\"z\":2.54,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":25.4,\"y\":25.4,\"z\":2.54},\"normal\":{\"x\":0,\"y\":0,\"z\":1},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":5,\"source_line\":9,\"start\":{\"x\":25.4,\"y\":44.449999999999996,\"z\":2.54,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":25.4,\"y\":44.449999999999996,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":25.4,\"y\":44.449999999999996,\"z\":2.54},\"normal\":{\"x\":0,\"y\":0,\"z\":1},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":6,\"source_line\":10,\"start\":{\"x\":25.4,\"y\":44.449999999999996,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":35.559999999999995,\"y\":31.75,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":25.4,\"y\":44.449999999999996,\"z\":0},\"normal\":{\"x\":0,\"y\":0,\"z\":1},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":7,\"source_line\":11,\"start\":{\"x\":35.559999999999995,\"y\":31.75,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":30.479999999999997,\"y\":38.099999999999994,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":35.559999999999995,\"y\":31.75,\"z\":0},\"normal\":{\"x\":0,\"y\":0,\"z\":1},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":8,\"source_line\":12,\"start\":{\"x\":30.479999999999997,\"y\":38.099999999999994,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":25.4,\"y\":31.75,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":30.479999999999997,\"y\":38.099999999999994,\"z\":0},\"normal\":{\"x\":0,\"y\":0,\"z\":1},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":9,\"source_line\":13,\"start\":{\"x\":25.4,\"y\":31.75,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":35.559999999999995,\"y\":44.449999999999996,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":25.4,\"y\":31.75,\"z\":0},\"normal\":{\"x\":0,\"y\":0,\"z\":1},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":10,\"source_line\":14,\"start\":{\"x\":35.559999999999995,\"y\":44.449999999999996,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":35.559999999999995,\"y\":44.449999999999996,\"z\":2.54,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":35.559999999999995,\"y\":44.449999999999996,\"z\":0},\"normal\":{\"x\":0,\"y\":0,\"z\":1},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":11,\"source_line\":15,\"start\":{\"x\":35.559999999999995,\"y\":44.449999999999996,\"z\":2.54,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":40.64,\"y\":44.449999999999996,\"z\":2.54,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":35.559999999999995,\"y\":44.449999999999996,\"z\":2.54},\"normal\":{\"x\":0,\"y\":0,\"z\":1},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":12,\"source_line\":16,\"start\":{\"x\":40.64,\"y\":44.449999999999996,\"z\":2.54,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":40.64,\"y\":44.449999999999996,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":40.64,\"y\":44.449999999999996,\"z\":2.54},\"normal\":{\"x\":0,\"y\":0,\"z\":1},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":13,\"source_line\":17,\"start\":{\"x\":40.64,\"y\":44.449999999999996,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":45.72,\"y\":38.099999999999994,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":40.64,\"y\":44.449999999999996,\"z\":0},\"normal\":{\"x\":0,\"y\":0,\"z\":1},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":14,\"source_line\":18,\"start\":{\"x\":45.72,\"y\":38.099999999999994,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":50.8,\"y\":44.449999999999996,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":45.72,\"y\":38.099999999999994,\"z\":0},\"normal\":{\"x\":0,\"y\":0,\"z\":1},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":15,\"source_line\":19,\"start\":{\"x\":50.8,\"y\":44.449999999999996,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":45.72,\"y\":38.099999999999994,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":50.8,\"y\":44.449999999999996,\"z\":0},\"normal\":{\"x\":0,\"y\":0,\"z\":1},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":16,\"source_line\":20,\"start\":{\"x\":45.72,\"y\":38.099999999999994,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":45.72,\"y\":31.75,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":45.72,\"y\":38.099999999999994,\"z\":0},\"normal\":{\"x\":0,\"y\":0,\"z\":1},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":17,\"source_line\":21,\"start\":{\"x\":45.72,\"y\":31.75,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":45.72,\"y\":31.75,\"z\":0},\"normal\":{\"x\":0,\"y\":0,\"z\":1},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":18,\"source_line\":22,\"start\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":25.4,\"y\":0,\"z\":25.4,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":0,\"y\":0,\"z\":0},\"normal\":{\"x\":0,\"y\":0,\"z\":1},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":19,\"source_line\":23,\"start\":{\"x\":25.4,\"y\":0,\"z\":25.4,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":25.4,\"y\":0,\"z\":25.4,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":38.099999999999994,\"y\":0,\"z\":38.099999999999994},\"normal\":{\"x\":0,\"y\":1,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":2,\"turn\":-1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":20,\"source_line\":24,\"start\":{\"x\":25.4,\"y\":0,\"z\":25.4,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":25.4,\"y\":2.54,\"z\":25.4,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":25.4,\"y\":0,\"z\":25.4},\"normal\":{\"x\":0,\"y\":1,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":21,\"source_line\":25,\"start\":{\"x\":25.4,\"y\":2.54,\"z\":25.4,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":25.4,\"y\":2.54,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":25.4,\"y\":2.54,\"z\":25.4},\"normal\":{\"x\":0,\"y\":1,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":22,\"source_line\":26,\"start\":{\"x\":25.4,\"y\":2.54,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":25.4,\"y\":0,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":25.4,\"y\":2.54,\"z\":44.449999999999996},\"normal\":{\"x\":0,\"y\":1,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":23,\"source_line\":27,\"start\":{\"x\":25.4,\"y\":0,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":35.559999999999995,\"y\":0,\"z\":31.75,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":25.4,\"y\":0,\"z\":44.449999999999996},\"normal\":{\"x\":0,\"y\":1,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":24,\"source_line\":28,\"start\":{\"x\":35.559999999999995,\"y\":0,\"z\":31.75,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":30.479999999999997,\"y\":0,\"z\":38.099999999999994,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":35.559999999999995,\"y\":0,\"z\":31.75},\"normal\":{\"x\":0,\"y\":1,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":25,\"source_line\":29,\"start\":{\"x\":30.479999999999997,\"y\":0,\"z\":38.099999999999994,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":25.4,\"y\":0,\"z\":31.75,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":30.479999999999997,\"y\":0,\"z\":38.099999999999994},\"normal\":{\"x\":0,\"y\":1,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":26,\"source_line\":30,\"start\":{\"x\":25.4,\"y\":0,\"z\":31.75,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":35.559999999999995,\"y\":0,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":25.4,\"y\":0,\"z\":31.75},\"normal\":{\"x\":0,\"y\":1,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":27,\"source_line\":31,\"start\":{\"x\":35.559999999999995,\"y\":0,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":35.559999999999995,\"y\":2.54,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":35.559999999999995,\"y\":0,\"z\":44.449999999999996},\"normal\":{\"x\":0,\"y\":1,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":28,\"source_line\":32,\"start\":{\"x\":35.559999999999995,\"y\":2.54,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":40.64,\"y\":2.54,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":35.559999999999995,\"y\":2.54,\"z\":44.449999999999996},\"normal\":{\"x\":0,\"y\":1,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":29,\"source_line\":33,\"start\":{\"x\":40.64,\"y\":2.54,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":40.64,\"y\":0,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":40.64,\"y\":2.54,\"z\":44.449999999999996},\"normal\":{\"x\":0,\"y\":1,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":30,\"source_line\":34,\"start\":{\"x\":40.64,\"y\":0,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":50.8,\"y\":0,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":40.64,\"y\":0,\"z\":44.449999999999996},\"normal\":{\"x\":0,\"y\":1,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":31,\"source_line\":35,\"start\":{\"x\":50.8,\"y\":0,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":40.64,\"y\":0,\"z\":31.75,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":50.8,\"y\":0,\"z\":44.449999999999996},\"normal\":{\"x\":0,\"y\":1,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":32,\"source_line\":36,\"start\":{\"x\":40.64,\"y\":0,\"z\":31.75,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":50.8,\"y\":0,\"z\":31.75,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":40.64,\"y\":0,\"z\":31.75},\"normal\":{\"x\":0,\"y\":1,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":33,\"source_line\":37,\"start\":{\"x\":50.8,\"y\":0,\"z\":31.75,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":50.8,\"y\":0,\"z\":31.75},\"normal\":{\"x\":0,\"y\":1,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":34,\"source_line\":38,\"start\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":0,\"y\":25.4,\"z\":25.4,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":0,\"y\":0,\"z\":0},\"normal\":{\"x\":0,\"y\":1,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":35,\"source_line\":39,\"start\":{\"x\":0,\"y\":25.4,\"z\":25.4,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":0,\"y\":25.4,\"z\":25.4,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":0,\"y\":38.099999999999994,\"z\":38.099999999999994},\"normal\":{\"x\":1,\"y\":0,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":2,\"turn\":-1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":36,\"source_line\":40,\"start\":{\"x\":0,\"y\":25.4,\"z\":25.4,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":2.54,\"y\":25.4,\"z\":25.4,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":0,\"y\":25.4,\"z\":25.4},\"normal\":{\"x\":1,\"y\":0,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":37,\"source_line\":41,\"start\":{\"x\":2.54,\"y\":25.4,\"z\":25.4,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":2.54,\"y\":25.4,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":2.54,\"y\":25.4,\"z\":25.4},\"normal\":{\"x\":1,\"y\":0,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":38,\"source_line\":42,\"start\":{\"x\":2.54,\"y\":25.4,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":0,\"y\":25.4,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":2.54,\"y\":25.4,\"z\":44.449999999999996},\"normal\":{\"x\":1,\"y\":0,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":39,\"source_line\":43,\"start\":{\"x\":0,\"y\":25.4,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":0,\"y\":30.479999999999997,\"z\":38.099999999999994,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":0,\"y\":25.4,\"z\":44.449999999999996},\"normal\":{\"x\":1,\"y\":0,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":40,\"source_line\":44,\"start\":{\"x\":0,\"y\":30.479999999999997,\"z\":38.099999999999994,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":0,\"y\":35.559999999999995,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":0,\"y\":30.479999999999997,\"z\":38.099999999999994},\"normal\":{\"x\":1,\"y\":0,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":41,\"source_line\":45,\"start\":{\"x\":0,\"y\":35.559999999999995,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":0,\"y\":30.479999999999997,\"z\":38.099999999999994,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":0,\"y\":35.559999999999995,\"z\":44.449999999999996},\"normal\":{\"x\":1,\"y\":0,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":42,\"source_line\":46,\"start\":{\"x\":0,\"y\":30.479999999999997,\"z\":38.099999999999994,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":0,\"y\":30.479999999999997,\"z\":31.75,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":0,\"y\":30.479999999999997,\"z\":38.099999999999994},\"normal\":{\"x\":1,\"y\":0,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":43,\"source_line\":47,\"start\":{\"x\":0,\"y\":30.479999999999997,\"z\":31.75,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":2.54,\"y\":30.479999999999997,\"z\":31.75,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":0,\"y\":30.479999999999997,\"z\":31.75},\"normal\":{\"x\":1,\"y\":0,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":44,\"source_line\":48,\"start\":{\"x\":2.54,\"y\":30.479999999999997,\"z\":31.75,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":2.54,\"y\":40.64,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":2.54,\"y\":30.479999999999997,\"z\":31.75},\"normal\":{\"x\":1,\"y\":0,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":45,\"source_line\":49,\"start\":{\"x\":2.54,\"y\":40.64,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":0,\"y\":40.64,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":2.54,\"y\":40.64,\"z\":44.449999999999996},\"normal\":{\"x\":1,\"y\":0,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":46,\"source_line\":50,\"start\":{\"x\":0,\"y\":40.64,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":0,\"y\":50.8,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":0,\"y\":40.64,\"z\":44.449999999999996},\"normal\":{\"x\":1,\"y\":0,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":47,\"source_line\":51,\"start\":{\"x\":0,\"y\":50.8,\"z\":44.449999999999996,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":0,\"y\":40.64,\"z\":31.75,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":0,\"y\":50.8,\"z\":44.449999999999996},\"normal\":{\"x\":1,\"y\":0,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":48,\"source_line\":52,\"start\":{\"x\":0,\"y\":40.64,\"z\":31.75,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":0,\"y\":50.8,\"z\":31.75,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":0,\"y\":40.64,\"z\":31.75},\"normal\":{\"x\":1,\"y\":0,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"},{\"id\":49,\"source_line\":53,\"start\":{\"x\":0,\"y\":50.8,\"z\":31.75,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"end\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"center\":{\"x\":0,\"y\":50.8,\"z\":31.75},\"normal\":{\"x\":1,\"y\":0,\"z\":0},\"velocity\":762,\"acceleration\":0,\"motion_type\":1,\"turn\":1,\"source\":\"wasm_interpreter_canonical_motion\"}],\"active_segment_id\":0,\"source\":\"wasm_canonical_motion\"},\"authoritative\":{\"schema\":\"sim_authoritative_runtime.v1\",\"tick\":0,\"status\":\"idle\",\"program_status\":\"idle\",\"kinematics\":{\"type\":\"trivkins\",\"joint_count\":3,\"pose\":{\"x\":0,\"y\":0,\"z\":0},\"joints\":[0,0,0],\"status\":0,\"blocked\":null},\"planner\":{\"next_id\":1,\"queue\":[],\"active\":null,\"active_id\":null,\"progress\":0,\"queue_depth\":0,\"last_error\":0},\"state_hash\":\"fnv1a64:4e24908a983412f4\"},\"motion_authority\":\"wasm\",\"task_authority\":\"wasm_task_canonical\",\"state_hash\":\"fnv1a64:0ef93407e9093297\"},\"motion_authority\":\"wasm\",\"task_authority\":\"wasm_task_canonical\",\"wasm_home_limit\":{\"status\":\"verified\",\"state\":{\"schema\":\"sim_home_limit_state.v1\",\"source\":\"wasm_home_limit\",\"pose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0,\"u\":0,\"v\":0,\"w\":0},\"joints\":[0,0,0],\"joint_count\":3,\"homed\":false,\"home_sequence\":0,\"tick\":0,\"last_error\":0,\"limit_error\":0,\"kinematics_error\":0}},\"axis_state\":{\"state\":\"ESTOP\",\"machine_state\":\"ESTOP\",\"operation_state\":\"IDLE\",\"source_task_state\":\"STATE_ESTOP\",\"source_interp_state\":\"INTERP_IDLE\",\"source_mode\":\"MANUAL\",\"states\":[\"ESTOP\",\"ESTOP_RESET\",\"OFF\",\"ON\",\"HOME\",\"IDLE\",\"RUNNING\",\"PAUSED\"]}}",
"footer": "Error: sim_io_estop",
"href": "http://127.0.0.1:5175/",
"label": "estop",
"machine_state": "Machine ESTOP",
"operation_state": "Operation IDLE",
"position": "X0.000 Y0.000 Z0.000",
"program_status": "loaded",
"ready_state": "complete",
"root_html": "<main class=\"axis-app\" data-axis-feature=\"AXIS-UI-01\" data-axis-run-enabled=\"false\" data-axis-homed=\"[false,false,false]",
"task": "ESTOP",
"title": "LinuxCNC Web/WASM"
},
{
"axis_state": "IDLE",
"canvases": [
{
"height": 471,
"width": 941
}
],
"case_status": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini + linuxcnc/configs/nc_files/3dtest.ngc loaded",
"connection": "READY",
"error_text": "TASK_READYTick 0Hash fnv1a64:2ef8fd3db1a2565cStartup resourcesEntrypoint: linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.iniResources: 4 resolved / 0 blockedHAL: 37 records / 0 blockedDisabled operationspauseaxis_pause_state_gateresumeaxis_resume_state_gateabortaxis_stop_state_gateSource diagnosticsNo startup diagnostics",
"footer": "IO_RECOVER acknowledged",
"href": "http://127.0.0.1:5175/",
"label": "power",
"machine_state": "Machine ON",
"operation_state": "Operation IDLE",
"position": "X0.000 Y0.000 Z0.000",
"program_status": "loaded",
"ready_state": "complete",
"root_html": "<main class=\"axis-app\" data-axis-feature=\"AXIS-UI-01\" data-axis-run-enabled=\"true\" data-axis-homed=\"[false,false,false]\"",
"task": "IDLE",
"title": "LinuxCNC Web/WASM"
},
{
"axis_state": "HOME",
"canvases": [
{
"height": 471,
"width": 941
}
],
"case_status": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini + linuxcnc/configs/nc_files/3dtest.ngc loaded",
"connection": "READY",
"error_text": "TASK_READYTick 0Hash fnv1a64:69eb35d2b981cf84Startup resourcesEntrypoint: linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.iniResources: 4 resolved / 0 blockedHAL: 37 records / 0 blockedDisabled operationspauseaxis_pause_state_gateresumeaxis_resume_state_gateabortaxis_stop_state_gateSource diagnosticsNo startup diagnostics",
"footer": "HOME acknowledged",
"href": "http://127.0.0.1:5175/",
"label": "homed",
"machine_state": "Machine ON",
"operation_state": "Operation HOME",
"position": "X0.000 Y0.000 Z0.000",
"program_status": "loaded",
"ready_state": "complete",
"root_html": "<main class=\"axis-app\" data-axis-feature=\"AXIS-UI-01\" data-axis-run-enabled=\"true\" data-axis-homed=\"[true,true,true]\" da",
"task": "HOME",
"title": "LinuxCNC Web/WASM"
},
{
"axis_state": "RUNNING",
"canvases": [
{
"height": 471,
"width": 941
}
],
"case_status": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini + linuxcnc/configs/nc_files/3dtest.ngc loaded",
"connection": "RUNNING",
"error_text": "TASK_READYTick 41Hash fnv1a64:8cf843955007c133Startup resourcesEntrypoint: linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.iniResources: 4 resolved / 0 blockedHAL: 37 records / 0 blockedDisabled operationsloadaxis_interp_runningrunaxis_interp_runningresumeaxis_resume_state_gaterestartaxis_restart_state_gatemdiaxis_interp_runningjogStartaxis_manual_mode_requiredjogStopaxis_manual_mode_requiredhomeaxis_manual_mode_requiredresetaxis_reset_state_gatespindleaxis_manual_mode_requiredcoolantaxis_manual_mode_requiredjogaxis_manual_mode_requiredSource diagnosticsNo startup diagnostics",
"footer": "PROGRAM_RUN acknowledged",
"href": "http://127.0.0.1:5175/",
"label": "running",
"machine_state": "Machine ON",
"operation_state": "Operation RUNNING",
"position": "X40.640 Y44.450 Z2.540",
"program_status": "running",
"ready_state": "complete",
"root_html": "<main class=\"axis-app\" data-axis-feature=\"AXIS-UI-01\" data-axis-run-enabled=\"false\" data-axis-homed=\"[true,true,true]\" d",
"task": "RUNNING",
"title": "LinuxCNC Web/WASM"
},
{
"axis_state": "IDLE",
"canvases": [
{
"height": 471,
"width": 941
}
],
"case_status": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini + linuxcnc/configs/nc_files/3dtest.ngc loaded",
"connection": "READY",
"error_text": "TASK_READYTick 162Hash fnv1a64:cadb2644a5944975Startup resourcesEntrypoint: linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.iniResources: 4 resolved / 0 blockedHAL: 37 records / 0 blockedDisabled operationspauseaxis_pause_state_gateresumeaxis_resume_state_gateabortaxis_stop_state_gatejogStartaxis_manual_mode_requiredjogStopaxis_manual_mode_requiredhomeaxis_manual_mode_requiredspindleaxis_manual_mode_requiredcoolantaxis_manual_mode_requiredjogaxis_manual_mode_requiredSource diagnosticsNo startup diagnostics",
"footer": "PROGRAM_RUN acknowledged",
"href": "http://127.0.0.1:5175/",
"label": "complete",
"machine_state": "Machine ON",
"operation_state": "Operation IDLE",
"position": "X0.000 Y0.000 Z0.000",
"program_status": "completed",
"ready_state": "complete",
"root_html": "<main class=\"axis-app\" data-axis-feature=\"AXIS-UI-01\" data-axis-run-enabled=\"true\" data-axis-homed=\"[true,true,true]\" da",
"task": "IDLE",
"title": "LinuxCNC Web/WASM"
}
],
"tool": "tool/linuxcnc-web-wasm-manual-execution"
}
}
}