ILOWPASS(9)
π ILOWPASS β the low-pass filter with integer ins and integer outs π
okay bestie, this is a HAL Component page from the 9 section, and honestly? it's a little icon of a thing. it takes integers in, it takes integers out, and in between it just... vibes. smoothly. β¨
π¦ SYNOPSIS π¦
loadrt ilowpass [count=N|names=name1[,name2...]]
that's it. that's the whole summoning ritual. count=N if you want N of them, or names=name1[,name2...] if you're feeling specific about what you call your babies. π
πΈ DESCRIPTION πΈ
so like, this component could be used for other stuff, but fr fr it was written for one specific glow-up: making motion smoother while you're jogging with an MPG. no cap. πΉοΈ
here's the tea β β on a machine with high acceleration, a short jog can basically act like a step function. brutal. jumpy. it's giving "why is my machine yelling at me." π
the fix? slide the ilowpass component between the MPG encoder counts output and the axis jog-counts input, and suddenly everything is smoothed out. main character energy for your motion. π
now pay attention because these two choices actually matter:
- choose scale conservatively so that during a single session there will never be more than about
2e9/scalepulses seen on the MPG π - choose gain according to the smoothing level you want π§
and then β and this is the part people forget β divide the axis.N.jog-scale values by scale. do not skip that. do not.
π₯ FUNCTIONS π₯
ilowpass.N (requires a floating-point thread)
β οΈ bestie it requires a floating-point thread. it's not optional. it will not run in an integer thread. periodt.
Update the output based on the input and parameters. simple as. β¨
π PINS π
ilowpass.N.ins32in β the input. an integer. it arrives. πilowpass.N.outs32out β the output. also an integer.
out tracks in*scale through a low-pass filter of gain per period. so it's following the input, but it's doing it chill. it's the friend who doesn't sprint everywhere. π¦
π PARAMETERS π
ilowpass.N.scalefloatrw (default:1024) β a scale factor applied to the output value of the low-pass filter. β¨ilowpass.N.gainfloatrw (default:.5) β together with the period, this sets the rate at which the output changes. useful range is between0and1, and higher values make the input value get tracked more quickly. for instance, a setting of0.9causes the output value to go 90% of the way towards the input value in each period. she moves fast. πββοΈπ¨
π lowkey the mental model here:gain= how eageroutis to catch up toin.0? it's not moving, it's just existing.1? instant, no smoothing, why are you even here. pick somewhere in between and enjoy the butter. π§
π AUTHOR π
Jeff Epler
π LICENSE π
GPL
okay that's the whole page, bestie, go forth and smooth your jogs ππ¦πΈβ¨
this was LinuxCNC Documentation, dated 2026-03-17, and you were reading ILOWPASS(9) β slay, thanks for coming to my ted talk, ily π«Άπ
π¦ 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