A question for the firmware guru’s and has to do with jerk settings. sigh I know.
Anyway is the jerk setting a percentage of the max acceleration. So if would a 3000 acceleration and 10 jerk be faster jerk setting than 1000 Acceleration and 20 jerk?
IE
1000/20 = 50
&
3000/10 = 300
And also smoothie has a different way calling it junction deviation and has settings like 0.05 any idea how that relates?
In layman’ terms… jerk is how fast the printer turns corners, while acceleration is how hard the printer hits the gas and brakes. So they’re related but not connected in an intuitive way. You can have high jerk and low acceleration or vice versa. I would say about 100:1-200:1 is a good starting point for XY but it’s a personal preference and machine specific thing.
High jerk: good for extruder volume control and print speed but bad for ringing
Extreme jerk: printer runs at constant speed and never slows down for corners, probably losing position eventually
High accel: good for print speed but bad for extruder volume control and ringing
Extreme accel: basically the same as high jerk, the printer doesn’t get enough time to change speed so it’s pretty much just a corner jerk
Junction deviation is like jerk but a different way of calculating the corner speed. It incorporates accel in the calculation so changing accel will also change corner speed for Smoothie and modern GRBL machines.
Prusa calculator has a graph for showing acceleration/jerk curves. Not sure if they’re much useful anymore as marlin changed their algorithm and smoothieboard uses an entirely different method, but it will give you some idea of how it works.
@Stephanie_A What’s Marlin doing differently now? (I suppose I could go look it up, but motion planner code tends to be hard to parse)
I don’t know exactly what they changed, but the old jerk settings don’t work on newer firmware. Say if the old jerk was 15mm/s, on the new firmware it would equate to around 5mm/s.
@Stephanie_A Looks like Marlin started doing what Sailfish has always done, which is look at change in speed of each axis at the corner (which is scalar addition/subtraction and computationally simple), rather than calculating the change in velocity vector (which requires a square root). I’m not sure whether “axis” for Marlin means motor (like Sailfish) or XYZ coordinate axis in this case. Don’t really care enough to hunt that down tbh. It makes a pretty big difference to delta motion though. Calculating jerk at the end-effector versus carriages will give different corner speeds.
I’m not sure what you mean, but isn’t a change in velocity vector the most accurate method?
I am having a hard time finding out what the algorithm changed from, so I can’t confirm what is different.
@Stephanie_A the benefit to per-axis jerk limits is that machine axes with different masses can have different settings. Why would a heavy Y-bed have the same jerk limit as a light X-bridge? Why should a velocity change on the Y bed change how large of a velocity change can be used on the X bridge?
When the axes are mechanically decoupled to some degree, it makes perfect sense. Each Cartesian drivetrain has its own limits and those limits don’t really effect the other drivetrains.
The velocity change vector approach makes more sense for deltas where the nozzle’s jerk isn’t the same as the columns’ jerks. But in that case, you should really do acceleration constraint checks on BOTH the carriages and the end-effector because sometimes carriages move much faster than the effector.
Back in the day, Marlin’s delta mode would calculate the velocity change vector for the “X” and “Y” COLUMNS, which was just stupid. Johann’s original delta support hack only did kinematics, not delta acceleration, and nobody bothered upgrading it for a loooong time.