{ "boundaries": [ "only this case is in scope", "exact paths are retained; basename substitution is forbidden", "host Python process is replaced by a source-mapped Web Vismach adapter", "real hardware and realtime scheduling are outside this pure simulation case" ], "capabilities": { "./3axis-tutorial": "WEB-EQUIV", "axis": "WEB-EQUIV", "hal_manualtoolchange": "SIM-ADAPTER", "trivkins": "SIM-CORE", "vismach_model": "WEB-EQUIV" }, "case": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial", "entrypoint": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini", "hal_entries": [ { "command": "loadrt", "line": 5, "raw": "loadrt [KINS]KINEMATICS", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "loadrt", "line": 8, "raw": "loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "loadrt", "line": 10, "raw": "loadrt ddt names=ddt_x,ddt_xv,ddt_y,ddt_yv,ddt_z,ddt_zv", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "loadrt", "line": 12, "raw": "loadrt hypot names=vel_xy,vel_xyz", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "addf", "line": 15, "raw": "addf motion-command-handler servo-thread", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "addf", "line": 16, "raw": "addf motion-controller servo-thread", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "addf", "line": 18, "raw": "addf ddt_x servo-thread", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "addf", "line": 19, "raw": "addf ddt_xv servo-thread", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "addf", "line": 20, "raw": "addf ddt_y servo-thread", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "addf", "line": 21, "raw": "addf ddt_yv servo-thread", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "addf", "line": 22, "raw": "addf ddt_z servo-thread", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "addf", "line": 23, "raw": "addf ddt_zv servo-thread", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "addf", "line": 24, "raw": "addf vel_xy servo-thread", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "addf", "line": 25, "raw": "addf vel_xyz servo-thread", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 29, "raw": "net Xpos joint.0.motor-pos-cmd => joint.0.motor-pos-fb ddt_x.in", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 30, "raw": "net Ypos joint.1.motor-pos-cmd => joint.1.motor-pos-fb ddt_y.in", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 31, "raw": "net Zpos joint.2.motor-pos-cmd => joint.2.motor-pos-fb ddt_z.in", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 35, "raw": "net Xvel ddt_x.out => ddt_xv.in vel_xy.in0", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 36, "raw": "net Xacc <= ddt_xv.out", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 37, "raw": "net Yvel ddt_y.out => ddt_yv.in vel_xy.in1", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 38, "raw": "net Yacc <= ddt_yv.out", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 39, "raw": "net Zvel ddt_z.out => ddt_zv.in vel_xyz.in0", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 40, "raw": "net Zacc <= ddt_zv.out", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 43, "raw": "net XYvel vel_xy.out => vel_xyz.in1", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 44, "raw": "net XYZvel <= vel_xyz.out", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 47, "raw": "net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "loadusr", "line": 49, "raw": "loadusr -W hal_manualtoolchange", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 50, "raw": "net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 51, "raw": "net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 52, "raw": "net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 53, "raw": "net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "loadusr", "line": 56, "raw": "loadusr -W ./3axis-tutorial", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 59, "raw": "net j0 joint.0.pos-fb => 3axis-tutorial.jointX", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 60, "raw": "net j1 joint.1.pos-fb => 3axis-tutorial.jointY", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 61, "raw": "net j2 joint.2.pos-fb => 3axis-tutorial.jointZ", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 64, "raw": "net tool_len 3axis-tutorial.toollength <= motion.tooloffset.z", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" }, { "command": "net", "line": 65, "raw": "net tool_rad halui.tool.diameter 3axis-tutorial.tooldiameter", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal" } ], "ini_entries": [ { "key": "VERSION", "line": 14, "section": "EMC", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini", "value": "1.0" }, { "key": "DISPLAY", "line": 27, "section": "DISPLAY", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini", "value": "axis" }, { "key": "INTRO_GRAPHIC", "line": 48, "section": "DISPLAY", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini", "value": "linuxcnc.gif" }, { "key": "PARAMETER_FILE", "line": 69, "section": "RS274NGC", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini", "value": "3axis-tutorial_mm.var" }, { "key": "HALFILE", "line": 105, "section": "HAL", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini", "value": "3axis-tutorial.hal" }, { "key": "COORDINATES", "line": 126, "section": "TRAJ", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini", "value": "X Y Z" }, { "key": "TOOL_TABLE", "line": 154, "section": "EMCIO", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini", "value": "tool.tbl" }, { "key": "KINEMATICS", "line": 159, "section": "KINS", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini", "value": "trivkins" }, { "key": "JOINTS", "line": 161, "section": "KINS", "source": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini", "value": "3" } ], "report_sha256": "fde31d4730cfd8a3345a550d32983c30ea9515493902a68b151352438de10c62", "runtime_generated": [ { "kind": "parameter_file", "path": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial_mm.var", "policy": "missing file starts with zero defaults and is created/updated at runtime", "source": "linuxcnc/src/emc/rs274ngc/rs274ngc_pre.cc::restore_parameters/save_parameters" }, { "kind": "parameter_backup", "path": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial_mm.var.bak", "policy": "native backup created on parameter save", "source": "linuxcnc/src/emc/rs274ngc/rs274ngc_pre.cc::save_parameters" }, { "kind": "position_file", "path": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/position_mm.txt", "policy": "runtime position persistence; not a source fixture", "source": "3axis-tutorial.ini:[TRAJ]POSITION_FILE" } ], "schema": "axis3-tutorial-resource-graph.v1", "shared_assets": [ { "configured_value": "linuxcnc.gif", "resolved_path": "linuxcnc/linuxcnc.gif", "scope": "DISPLAY.INTRO_GRAPHIC only" } ], "source_files": [ { "bytes": 5349, "path": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini", "role": "case_source", "sha256": "b801d4fb7a3d66fac7a4202d56c384f75b039f55c70cce64c2975c5454875388", "status": "present" }, { "bytes": 2447, "path": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal", "role": "case_source", "sha256": "6c01e40c2244d3b534c0d3c60f26a9cdc5232defc79611234c78477209cfda1f", "status": "present" }, { "bytes": 10203, "path": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial", "role": "case_source", "sha256": "da5f8266cecd79cdeaa01bf07c4fba17d5c748ccc7dedfc7efdf0354deee9cc7", "status": "present" }, { "bytes": 115, "path": "linuxcnc/configs/sim/axis/vismach/3axis-tutorial/tool.tbl", "role": "case_source", "sha256": "6a1736d9a44a30e62d7a8be4df960adc909e7ef026af10ab8e8abf6a613ce4ea", "status": "present" }, { "bytes": 8718, "path": "linuxcnc/linuxcnc.gif", "role": "source_dependency", "sha256": "6c6da4afc3ecdc1b812dd6878318da0120996bd6889b4dd2ddb480b905d9f4b1", "status": "present" }, { "bytes": 33242, "path": "linuxcnc/lib/python/vismach.py", "role": "source_dependency", "sha256": "e3b317eb8f4b17428ae0127850681c947fd3aecac4d23938d21449defe0d6998", "status": "present" }, { "bytes": 2332, "path": "linuxcnc/lib/python/hal.py", "role": "source_dependency", "sha256": "cb5ea7bae18114d17961d929ec0ce65f96a7bd5188e3181da7bc650d82ae4b39", "status": "present" }, { "bytes": 2274, "path": "linuxcnc/lib/hallib/basic_sim.tcl", "role": "source_dependency", "sha256": "d9851b0a8861e6d66de745a8ae230d4b38b65c34f8b05bdb6705792d2d4050be", "status": "present" }, { "bytes": 16117, "path": "linuxcnc/src/libnml/inifile/inifile.cc", "role": "source_dependency", "sha256": "7defe6abe023a1741bb465c05de09d529c0750c34dcd80d57be962c5cbea71c0", "status": "present" }, { "bytes": 94199, "path": "linuxcnc/src/emc/rs274ngc/rs274ngc_pre.cc", "role": "source_dependency", "sha256": "73935d127557c0e8f9da6267f629351ec5198fbce05c665c678819383901d61b", "status": "present" } ], "status": "verified", "task_id": "TUTORIAL-01", "vismach_python": { "component": [ "3axis-tutorial" ], "imports": [ [ "vismach", "" ], [ "", "hal" ], [ "", "math" ], [ "", "sys" ], [ "", "linuxcnc" ] ], "model_symbols": [ "HalTranslate", "HalToolCylinder", "CylinderZ", "Capture", "Collection", "main" ], "pins": [ { "direction": "HAL_IN", "name": "jointX", "type": "HAL_FLOAT" }, { "direction": "HAL_IN", "name": "jointY", "type": "HAL_FLOAT" }, { "direction": "HAL_IN", "name": "jointZ", "type": "HAL_FLOAT" }, { "direction": "HAL_IN", "name": "toollength", "type": "HAL_FLOAT" }, { "direction": "HAL_IN", "name": "tooldiameter", "type": "HAL_FLOAT" } ], "sha256": "da5f8266cecd79cdeaa01bf07c4fba17d5c748ccc7dedfc7efdf0354deee9cc7" } }