Skip to content

Repository files navigation

KlipperVisuals

Interactive, browser-based visualizations of the motion-control internals of Klipper and Kalicopressure advance, input shaping, and resonance compensation.

Each page reproduces the actual firmware math in JavaScript, so you can drag a slider and watch how a parameter — or an algorithm choice — changes the result.

Live site No build step Charts

▶ Live site

https://hannott.github.io/KlipperVisuals/

Visualizations

Page What it shows
Pressure advance The tanh and recipr nonlinear pressure-advance models — advance vs velocity, extruder flow rate, and acceleration demand over a test move, with the firmware's parabolic extruder smoother and a time-offset control.
Input shaper response Residual-vibration curves for every input shaper (ZV, MZV, ZVD, EI, 2hump/3hump EI), plus an impulse view and a damping-ratio sweep. Highlights the 3hump_ei coefficient fix.
Two-mode input shaper A prototype shaper for axes with two resonances — the convolution of a single-mode shaper tuned to each peak — vs single-mode and broadband alternatives.
Smoothers vs shapers Kalico's polynomial input smoothers vs classic impulse shapers, on shared vibration-reduction axes and in the time domain.
Extruder smoother kernel fit The polynomial kernel that keeps pressure advance synchronized with input shaping, fitted before vs after the extruder_smoother.py rework, per shaper.
Resonance test excitation The motion TEST_RESONANCES generates — frequency sweep, per-cycle acceleration, and the optional sweeping oscillation — with the enforced accel/velocity limits derived from the real sequence vs the fixed formula.
Shaper estimation How SHAPER_CALIBRATE scores a shaper: the old finite-difference of the step response vs an analytic velocity with kink-exact evaluation and a parabola-refined minimum.

Every chart has an interactive legend — click a series to hide or show it.

How it works

  • Each page is a single self-contained HTML file — no framework, no build step, no bundler. Styling adapts to light and dark mode.
  • The physics and algorithms are ported directly from the firmware source (klippy/chelper/kin_extruder.c, klippy/extras/shaper_defs.py, extruder_smoother.py, shaper_calibrate.py, resonance_tester.py), with the exact formulas noted in each page's footer.
  • Charts are rendered with Chart.js loaded from a CDN, so an internet connection is required to view them.

A note on accuracy

Several pages contrast proposed fixes to the shaper pipeline against the current upstream Kalico (bleeding-edge-v2) behaviour — for example the 3hump_ei coefficient bug and the resonance-test limit derivation. These are labelled fixed / upstream (or equivalent) on each page. The pressure-advance page models a custom nonlinear-PA implementation (tanh/recipr) that is not part of mainline Klipper or upstream Kalico.

The visualizations are a faithful reproduction of the math but are not the firmware itself — treat them as an intuition-building and teaching aid, not a substitute for on-machine calibration.

Running locally

The pages are static files. Clone the repo and open any .html directly, or serve the folder:

git clone https://github.com/Hannott/KlipperVisuals.git
cd KlipperVisuals
python -m http.server 8000
# then open http://localhost:8000/

Attribution

Reproduces algorithms from Klipper (© Kevin O'Connor and contributors) and Kalico, both licensed under the GNU GPLv3. Input-shaper and pressure-advance math are the work of Dmitry Butyugin and the Klipper/Kalico projects.

About

Interactive visualizations of functions in Klipper

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages