Do printer controllers take inertia into account when interpreting G-code into movement instructions? I've never built a 3D printer before, but I understand dynamical systems and control theory, and I imagine a lot of the distortion/inaccuracy that happens during the FDM process (especially at high speeds) is due to position inaccuracies because of inertia. For example, a heavy print head moving fast enough might overshoot its position target if the system expects it to stop instantly. Does any existing 3D printer controller software try to measure the mass of the print head/movement assembly and then use that to come up with better movement instructions?
To speculate a bit: This additional accuracy might not be useful with many normal stepper-driven printers because they lack resolution and/or control, but I think in some cases it would. I imagine with enough positional accuracy and acceleration control you could model the print head position with a dynamical system and get extremely precise movement right up to the mechanical limits of the system.
Am I wrong that inertia has a large effect? Would this be theoretically impossible for some reason I'm not thinking about?
Stepper motors &quot;want&quot; to keep their position as they are told to by the firmware, therefore they do whatever it's needed (accelerate and brake) to follow the orders they received.
The question is: is the firmware telling them to move/accelerate/brake faster/harder than they can? if yes, they won't keep up (because of inertia and much more) so you'll see artefacts. If not, they will follow the orders exactly (well, mostly, but it's not important now) and no distortions will be there.
Whether they keep up or not is up to you: you are setting their power (the motor current) and you are telling them how fast/hard to move/accelerate/brake. If you push them too much, the motors will try... and fail to keep up. That's why you have max acceleration, speed, jerk in the firmware and in the slicer.
Additional info: even if the motors keep the position as they are told to, the motors have no knowledge of anything past them: belts, leadscrews, and so on.
Imagine the X axis belt (which connects the motor to the printing head) is made of an elastic band: the motors will be where you order them to be, but the inertia of the printing head will stretch the elastic band and the printing head will NOT be where you expect it to be.
It is again up to you to reduce the max acceleration to a value below what the motors could be able to do, if needed. Motors are often not pushed to their limit also because other factors cause issues before the motors fail.
How to know how much to limit the acceleration and speed? the only way is trying.