Definition of jerk in RRF for Duet
Captain_sq last edited by
In the Gcode wiki, in the M566 paragraph which controls jerk, you can read:
M566: Set allowable instantaneous speed change
Xnnn Maximum instantaneous speed change of the X axis (mm/min)
Ynnn Maximum instantaneous speed change of the Y axis
Znnn Maximum instantaneous speed change of the Z axis
Ennn Maximum instantaneous speed change of the extruder drives
M566 X600 Y600 Z50 E600
In the explanatory section the unit-of-measure is said to be mm/min. This is however, the unit for speed. Acceleration is the derivative of speed. Jerk is the derivative of acceleration according to several wiki pages on the net and should be expressed as mm/min/min/min, or mm/min^3.
What unit of measure is used in Duet?
If I have jerk & acceleration parameters set like f ex
[[language]] M566 Z100 M201 Z150 ```how would that affect motion from start to stop when i send command (assume relative mode)``` [[language]] G1 Z100 ```expressed in a movement curve or similar?
deckingman last edited by
Jerk in 3d printers isn't the same as jerk in the physics sense. To my mind, it is a term that really shouldn't be used but it is. In 3D printers, Jerk is more correctly (and sometimes known as) Instantaneous Speed Change. It is in fact a speed threshold.
What happens is that when one moves follows another and there is a change of direction, rather than the print head coming to a complete stand still at the end of the first move, it slows down until it reaches the instantaneous speed threshold (Jerk in the 3D printing sense), then the next move starts at that same speed. Without this, arcs which are made up of many small segments would get printed very slowly because the print head would have to decelerate to a complete standstill at the end of every tiny segment, then accelerate up to speed for the next segment, decelerate down to zero etc etc.
Captain_sq last edited by
Let's see if I got this right.
If Z in the above example is moving along at 100mm/min or less a direction change could be immediate. If Z moves at higher speeds the controller must wait until it comes down to 100 mm/min before direction change. Is that correct?
In Marlin for example, jerk seems to have a much lower value (around or below 10). Does that mean that Marlin uses another unit-of-measure?
Marlin uses mm/sec as the jerk units. RRF uses mm/min for all speeds.
A jerk of 100mm/min means that a sudden change in speed is allowed as long as it is on more than 100mm/min. There are a few reasons for allowing nonzero jerk:
- XY jerk allows the head to move at constant speed when it it printing a circle that is approximated by line segments;
- Z jerk allows the X axis to change speed when you use mesh bed compensation and the head crosses a grid line of the mesh;
- E jerk is needed when using pressure advance, and to handle buggy slicers that fail to maintain a constant extrusion rate when they should do.