prusa3d / PrusaSlicer

G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)
https://www.prusa3d.com/prusaslicer/
GNU Affero General Public License v3.0
7.68k stars 1.93k forks source link

Per-axis acceleration and max torque control #12395

Open yshui opened 7 months ago

yshui commented 7 months ago

Rational

AFAIK acceleration limit is used for 2 things:

However, prusa's acceleration control is not sophisticated enough to match the reality of how printers are constructed today.

The reality is consumer grade printers usually have asymmetrical axes. A bed-slinger's X axis will have different acceleration limit and natural frequencies from its Y axis, just from the fact the print head is usually lighter than the bed. CoreXY printers are similar, since moving the print head in Y usually moves the X axis. And things are a bit more complicated for CoreXY because it also has less disposable torque moving the print head diagonally vs moving it in X or Y direction.

(I hope my understanding of these printer kinematics are not too mistaken. If I got them wrong this whole feature request would just be gibberish.)

Proposal

  1. Per-axis acceleration control This is to adapt to the different resonance profiles of the 2 axes.
  2. Max torque control. Instead of setting a blanket acceleration for moves in any direction, dynamically set acceleration based on how much torque is available in the move direction.
szlagi commented 7 months ago

The acceleration not work for MK4 printer. i.e. you will not permanently change the acceleration settings, e.g. Y axis 1200 mm/s in gcod step 1233, the M201 function sets the acceleration correctly, but in step 6723 it sets Y to 3998.88, this is absurd. For the MK3 printer, the m201 function is used once because there is no change in acceleration for the table load, but it does not change the fact that if we change the acceleration for the Y axis, the X axis will unfortunately also have the same acceleration if the axes will work together.

Why compensate for the acceleration of the X axis if the load is change only on the Y axis? MK4IS acceleration Y gcode page 1 MK4IS acceleration Y page 2 MK4IS acceleration Y