I noticed just today, that this plugin existed. Must have been two days before release or so that I wrote a macro myself for doing this. (see below)
Turns out I basically hit bullseye by accident with my shaper settings after running my macro and now comparing the results with the plugin, just because I did not know that MZV would dampen two frequency amplitudes and the second one did luckily coincide perfectly with the amplitude of my x-axis
But the user Interface of the plugin is very good especially the merged frequency analyses of multiple axis and the damping curves preview for the shapers.
Only thing I would like to add though are inputs for the acceleration and speed at which the accelerometer data is collected.
Just a little QOL thing with e.g. a tickbox for "use maximum speeds and accelerations from current config" and if you untick it, you can enter your own values so that they are set before starting the sequence automatically instead of the user having to enter them manually before going to the plugin.
Oh and returning the printhead back to the center position after the last move would not trigger my OCD
Also a little sidenote if a dev reads this:
We now have Height Map in the Control tab
The Accelerometer Viewer in Machine Specific under the Settings tab
and the Input Shaping Plugin under the Plugins tab
One could also debate about the G-Code Viewer (I personally like it under the Job tab) but at least the above three (and maybe even the Object Model browser) are pretty similar and thus should be under the same tab IMO.
Please feel free to discuss my opinion though.
the macro if anyone is interested:
var origXAccel = move.axes[0].acceleration
var origYAccel = move.axes[1].acceleration
var feedrate = move.axes[0].speed
if exists(param.F)
set var.feedrate = {param.F}
echo "speed for accelerometer data collection:", {var.feedrate/60}, "mm/s"
else
echo "param.F not provided, instead maximum speed (X) is used for accelerometer data collection:", {var.feedrate/60}, "mm/s"
G28
G1 X{move.axes[0].max/2} Y{move.axes[1].max/2} F9000
if exists(param.A)
echo "setting X and Y acceleration to", {param.A}, "mm/s^2"
M201 X{param.A} Y{param.A}
M201
else
echo "param.A not provided, using current accelerations X:", {var.origXAccel}, "mm/s^2, Y:", {var.origXAccel}, "mm/s^2"
echo "collecting acceleration data for X-Axis"
G91 ; relative positioning
G1 X-50 F9000
G4 S2
M956 P21.0 S1000 A1 F"inputShapingX.csv"
G1 X100 F{var.feedrate}
G4 S2
echo "collecting acceleration data for Y-Axis"
G1 X-50 Y-50 F9000
G4 S2
M956 P21.0 S1000 A1 F"inputShapingY.csv"
G1 Y100 F{var.feedrate}
G4 S2
G1 Y-50 F9000
G90 ; absolute positioning
if exists(param.A)
echo "reverting changes in acceleration"
M201 X{var.origXAccel} Y{var.origYAccel}
M201