{ "schema": "linuxcnc.five-axis-machine-catalog/1", "sourceRoot": "linuxcnc", "officialSources": [ { "title": "LinuxCNC 5-Axis Kinematics", "url": "https://linuxcnc.org/docs/html/motion/5-axis-kinematics.html" }, { "title": "LinuxCNC kins(9)", "url": "https://linuxcnc.org/docs/html/man/man9/kins.9.html" }, { "title": "LinuxCNC switchable kinematics", "url": "https://linuxcnc.org/docs/html/motion/switchkins.html" } ], "cases": [ { "id": "xyzac-trt", "label": "XYZAC · 转台倾转(A/C)", "family": "table-rotary-tilting", "machineClass": "five-axis-mill", "coordinates": "XYZAC", "joints": 5, "kinematics": "xyzac-trt-kins", "rtcp": "native", "webWasm": "supported", "description": "A 轴绕 X 倾转,C 轴绕 Z 回转,工件安装在复合转台上。", "localCases": [ "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini", "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/impeller-7bl-xyzac.ngc", "linuxcnc/configs/sim/gmoccapy/non_trivial_kinematics/table-rotary-tilting/xyzac-trt.ini", "linuxcnc/configs/sim/gmoccapy/non_trivial_kinematics/table-rotary-tilting/examples/boat-xyzac.ngc", "linuxcnc/configs/sim/gmoccapy/non_trivial_kinematics/table-rotary-tilting/examples/impeller-7bl-xyzac.ngc", "linuxcnc/configs/sim/gmoccapy/non_trivial_kinematics/table-rotary-tilting/examples/test-xyzac.ngc" ], "kinematicsSource": "linuxcnc/src/emc/kinematics/xyzac-trt-kins.c", "designParameters": ["rotaryPoint", "tiltToRotaryOffset", "toolOffset", "physicalZero"] }, { "id": "xyzbc-trt", "label": "XYZBC · 转台倾转(B/C)", "family": "table-rotary-tilting", "machineClass": "five-axis-mill", "coordinates": "XYZBC", "joints": 5, "kinematics": "xyzbc-trt-kins", "rtcp": "native", "webWasm": "supported", "description": "B 轴绕 Y 倾转,C 轴绕 Z 回转,适合 BC 类转台或相应摆头结构。", "localCases": [ "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini", "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzbc.ngc", "linuxcnc/configs/sim/gmoccapy/non_trivial_kinematics/table-rotary-tilting/examples/test-xyzbc.ngc", "linuxcnc/configs/sim/gmoccapy/non_trivial_kinematics/table-rotary-tilting/examples/boat-xyzbc.ngc" ], "kinematicsSource": "linuxcnc/src/emc/kinematics/xyzbc-trt-kins.c", "designParameters": ["rotaryPoint", "tiltToRotaryOffset", "toolOffset", "physicalZero"] }, { "id": "xyzab-tdr", "label": "XYZAB · 双转台(A/B)", "family": "table-dual-rotary", "machineClass": "five-axis-mill", "coordinates": "XYZAB", "joints": 5, "kinematics": "xyzab_tdr_kins", "rtcp": "native-linuxcnc", "webWasm": "adapter-required", "description": "A/B 两个转轴组成双转台,源码案例包含旋转点、X/Z 偏置和 TCP 演示。", "localCases": [ "linuxcnc/configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini", "linuxcnc/configs/sim/axis/vismach/5axis/table-dual-rotary/demos/xyzab-tdr-demo.ngc", "linuxcnc/configs/sim/gmoccapy/gmoccapy_XYZAB.ini", "linuxcnc/configs/sim/qtdragon/qtdragon_xyz45/qtdragon_xyzab.ini" ], "kinematicsSource": "linuxcnc/src/hal/components/xyzab_tdr_kins.comp", "designParameters": ["xRotPoint", "yRotPoint", "zRotPoint", "xOffset", "zOffset", "toolOffset", "physicalZero"] }, { "id": "bridge-mill-5axiskins", "label": "Bridge Mill · 5axiskins(XYZBCW/Y)", "family": "bridge-mill", "machineClass": "five-axis-mill-with-extra-coordinate", "coordinates": "XYZBCWY", "joints": 7, "kinematics": "5axiskins", "rtcp": "native-linuxcnc", "webWasm": "adapter-required", "description": "桥式五轴机床,B/C 为姿态轴,W 为刀具方向运动;示例还演示 Y 轴双关节。", "localCases": [ "linuxcnc/configs/sim/axis/vismach/5axis/bridgemill/5axis.ini", "linuxcnc/configs/sim/axis/vismach/5axis/bridgemill/5axisgui.ngc", "linuxcnc/configs/sim/gmoccapy/gmoccapy_XYZCW.ini" ], "kinematicsSource": "linuxcnc/src/emc/kinematics/5axiskins.c", "designParameters": ["jointCoordinateMap", "duplicateAxisMap", "toolDirectionAxis", "toolOffset", "physicalZero"] }, { "id": "max5-maxkins", "label": "MAX5 · maxkins(XYZBC)", "family": "table-and-head-rotary", "machineClass": "five-axis-mill", "coordinates": "XYZBC", "joints": 6, "kinematics": "maxkins", "rtcp": "native-linuxcnc", "webWasm": "adapter-required", "description": "LinuxCNC 的 MAX5 非恒等五轴案例;同时提供 trivkins 对照配置,适合验证坐标映射。", "localCases": [ "linuxcnc/configs/sim/axis/vismach/5axis/max5/max5kins.ini", "linuxcnc/configs/sim/axis/vismach/5axis/max5/max5triv.ini", "linuxcnc/configs/sim/axis/vismach/5axis/max5/README", "linuxcnc/configs/sim/gmoccapy/gmoccapy_XYZAB.ini" ], "kinematicsSource": "linuxcnc/src/emc/kinematics/maxkins.c", "designParameters": ["rotaryAxisOrder", "rotaryCenters", "uvwTransform", "toolOffset", "physicalZero"] }, { "id": "hexapod-genhexkins", "label": "Hexapod · genhexkins(Stewart 平台)", "family": "parallel-platform", "machineClass": "six-dof-rtcp-capable", "coordinates": "XYZABC", "joints": 6, "kinematics": "genhexkins", "rtcp": "native-linuxcnc", "webWasm": "adapter-required", "description": "六支链并联平台,具有 XYZABC 六自由度;它是五轴 CAM/RTCP 可覆盖的六自由度机型。", "localCases": [ "linuxcnc/configs/sim/axis/vismach/hexapod-sim/hexapod.ini", "linuxcnc/configs/sim/axis/vismach/hexapod-sim/kinematics.hal", "linuxcnc/configs/sim/axis/vismach/hexapod-sim/README", "linuxcnc/src/emc/kinematics/genhexkins.c" ], "kinematicsSource": "linuxcnc/src/emc/kinematics/genhexkins.c", "designParameters": ["baseJointPoints", "platformJointPoints", "spindleOffset", "screwLead", "iterationLimits", "physicalZero"] }, { "id": "pentapod-pentakins", "label": "Pentapod · pentakins(五支链平台)", "family": "parallel-platform", "machineClass": "five-axis-parallel", "coordinates": "XYZAB", "joints": 5, "kinematics": "pentakins", "rtcp": "native-linuxcnc", "webWasm": "adapter-required", "description": "五支链并联平台,LinuxCNC 源码提供 base/effector 几何参数和迭代求解案例。", "localCases": [ "linuxcnc/configs/sim/axis/pentapod/pentapod.ini", "linuxcnc/configs/sim/axis/pentapod/kinematics.hal", "linuxcnc/configs/sim/axis/pentapod/README", "linuxcnc/src/emc/kinematics/pentakins.c" ], "kinematicsSource": "linuxcnc/src/emc/kinematics/pentakins.c", "designParameters": ["baseJointPoints", "effectorGeometry", "toolOffset", "convergenceCriterion", "physicalZero"] }, { "id": "puma-pumakins", "label": "PUMA · pumakins(串联机器人)", "family": "serial-robot", "machineClass": "six-axis-robot", "coordinates": "XYZABC", "joints": 6, "kinematics": "pumakins", "rtcp": "robot-tool-center-point", "webWasm": "adapter-required", "description": "PUMA 型六关节串联机器人;可承载五轴刀具姿态任务,但不是五关节铣床拓扑。", "localCases": [ "linuxcnc/configs/sim/axis/vismach/puma/puma.ini", "linuxcnc/configs/sim/axis/vismach/puma/puma_cube.ini", "linuxcnc/configs/sim/axis/vismach/puma/puma_cube.ngc", "linuxcnc/src/emc/kinematics/pumakins.c" ], "kinematicsSource": "linuxcnc/src/emc/kinematics/pumakins.c", "designParameters": ["A2", "A3", "D3", "D4", "toolOffset", "physicalZero"] }, { "id": "puma-genserkins", "label": "PUMA 560 · genserkins(DH 串联)", "family": "serial-robot", "machineClass": "six-axis-robot", "coordinates": "XYZABC", "joints": 6, "kinematics": "genserkins", "rtcp": "robot-tool-center-point", "webWasm": "adapter-required", "description": "PUMA 560 的通用串联运动学案例,用 DH 参数描述各关节。", "localCases": [ "linuxcnc/configs/sim/axis/vismach/puma/puma560.ini", "linuxcnc/configs/sim/axis/vismach/puma/puma560_uvw.ini", "linuxcnc/configs/sim/axis/vismach/puma/puma560_dh.hal", "linuxcnc/src/emc/kinematics/genserkins.c" ], "kinematicsSource": "linuxcnc/src/emc/kinematics/genserkins.c", "designParameters": ["DHParameters", "jointLimits", "toolOffset", "physicalZero"] }, { "id": "trivkins-xyzab", "label": "XYZAB · trivkins(直角坐标映射基线)", "family": "identity-baseline", "machineClass": "five-axis-linear-or-rotary", "coordinates": "XYZAB", "joints": 5, "kinematics": "trivkins", "rtcp": "none", "webWasm": "identity-only", "description": "五轴一一对应的基线案例,用于校验 GLB 关节树和坐标映射;本身不提供非线性 RTCP。", "localCases": [ "linuxcnc/configs/sim/qtdragon/qtdragon_xyz45/qtdragon_xyzab.ini", "linuxcnc/configs/sim/woodpecker/woodpecker_xyzab.ini", "linuxcnc/configs/sim/axis/vismach/5axis/max5/max5triv.ini", "linuxcnc/src/emc/kinematics/trivkins.c" ], "kinematicsSource": "linuxcnc/src/emc/kinematics/trivkins.c", "designParameters": ["coordinateOrder", "duplicateAxisMap", "physicalZero"] } ] }