GANTRY(9)
okay bestie, sit down, hydrate, and let me tell you about GANTRY(9) β she's a HAL component in the LinuxCNC ecosystem and honestly? she's doing the most in the best way π β¨
β¨ NAME β¨
gantry β a LinuxCNC HAL component for driving multiple joints from a single axis. one axis in, whole squad of motors out. multitasking queen behavior π
πΈ SYNOPSIS πΈ
loadrt gantry [count=N|names=name1[,name2...]] [personality=P1,P2,...]
π¦ DESCRIPTION π¦
so what does she actually do? she drives multiple physical motors (the joints, babes) from just ONE single axis input. one input. many joints. iconic π
the personality value is literally just how many joints she's gonna control. two is the typical vibe, but up to seven is supported β and yes, a three-joint setup has been tested with actual hardware, so this isn't just theoretical. fr fr π₯
π the homing tea π
all the joints she controls track the commanded position (each one with its own per-joint offset) unless she's in the process of homing. and what even IS homing? okay so: homing is when the commanded position is moving towards the homing switches (this is determined by the sign of search-vel) and the joint home switches are not all in the same state. that specific combination. that's the moment.
so when the system is homing and a joint home switch activates, the command value sent to that particular joint gets FROZEN π₯Ά and the joint offset value is updated instead. periodt.
and once all the home switches are active? no more adjustments get made to the offset values, and all the joints run in lock-step once more. the squad is reunited. the harmony is restored π«Ά
π for best results π
set HOME_SEARCH_VEL and HOME_LATCH_VEL to the same direction and as slow as practical. trust me on this one.
heads up though bestie: when a joint home switch trips, the commanded velocity drops immediately from HOME_SEARCH_VEL to zero, with no limit on acceleration. no easing, no gentle slope, just straight to zero. it's giving abrupt π not a bug, just how she is.
π₯ FUNCTIONS π₯
gantry.N.read(requires a floating-point thread) β updatesposition-fband the home/limit outputs, based on the joint values. she reads, she reports, she slays.gantry.N.write(requires a floating-point thread) β updates the jointpos-cmdoutputs based onposition-cmdin. writing era βοΈ
both of these NEED a floating-point thread, okay? that's not optional, that's the requirement π
π PINS π
gantry.N.joint.MM.pos-cmdfloat out (MM=00..personality) β per-joint commanded positiongantry.N.joint.MM.pos-fbfloat in (MM=00..personality) β per-joint position feedbackgantry.N.joint.MM.homebit in (MM=00..personality) β per-joint home switchgantry.N.joint.MM.offsetfloat out (MM=00..personality) β (debugging) per-joint offset value, updated when hominggantry.N.position-cmdfloat in β commanded position from motiongantry.N.position-fbfloat out β position feedback to motiongantry.N.homebit out β combined home signal, true if all joint home inputs are truegantry.N.limitbit out β combined limit signal, true if any joint home input is truegantry.N.search-velfloat in βHOME_SEARCH_VELfrom the INI file
π AUTHOR π
Charles Steinkuehler π
π LICENSE π
GPL
and that's the whole page, bestie π§ the source of all this wisdom is the LinuxCNC Documentation, and this particular page is dated 2026-03-17 β so if you're reading it, you're reading the version from that day. stay frosty, go set your velocities slow, and go slay your gantry setup β¨ππ¦
π¦ where this page comes from
- ubuntu resolute: linuxcnc-uspace 1:2.9.4-2ubuntu4 Β· GFDL-1.1-or-later
- ubuntu stonking: linuxcnc-uspace 1:2.9.4-2ubuntu4 Β· GFDL-1.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms