<p>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?</p>
<p>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.</p>
<p>Am I wrong that inertia has a large effect? Would this be theoretically impossible for some reason I'm not thinking about?</p>

[{'answer_id': 15620, 'author': 'Trish', 'author_id': 8884, 'author_profile': 'https://3dprinting.stackexchange.com/users/8884', 'pm_score': 0, 'selected': False, 'text': '<h1>Inertia is not what you think it is</h1>\n<p>Inertia is technically speaking something that in physics is not what you commonly understand under the term. There is no mysterious &quot;Inertia Force&quot; that slows your actions on a setup. Inertia is not what makes you overshoot a print\'s endpoint.</p>\n<p>Inertia is just the principle <em>why</em> you need to <em>break</em> (negative acceleration) before you reach the endpoint of travel and how much you need to and <em>how fast you can step on the break</em> (jerk).</p>\n<h2>Recap on Newtonian Motion Mechanics</h2>\n<p>Inertia is the fact that an item that is under movement and does not get acted upon just does nothing, as Newton\'s first law prescribes. That your applied force only takes effect on a body over time (the <em>common</em> thing understood under inertia) follows directly from the description of the 2nd Law of Newtonian Mechanics:</p>\n<blockquote>\n<p>Mutationem motus proportionalem esse vi motrici impressae, et fieri secundum\nlineam rectam qua vis illa imprimitur.</p>\n</blockquote>\n<blockquote>\n<p>The alteration of motion is ever proportional to the motive force impressed; and is\nmade in the direction of the right line in which that force is impressed.</p>\n</blockquote>\n<p><span class="math-container">$$F=\\frac{d}{dt} (m\\times v)$$</span></p>\n<p>The <strong>F</strong>orce onto a body is the change over time(<span class="math-container">$\\frac{d}{dt}$</span>) of <strong>m</strong>ass and <strong>v</strong>elocity. In the classics physical case with constant mass, this becomes the much more well known formulation: <span class="math-container">$$F=m\\times \\frac{d}{dt} v=m\\times\\dot v=m\\times a$$</span></p>\n<p>Now, we have an item of known mass and a known initial velocity <span class="math-container">$v_0$</span>. The speed of the item at any moment is thus <span class="math-container">$$v(t)=v_0-(\\frac F m\\times t)=v_0-(a\\times t)$$</span></p>\n<h3>Momentum</h3>\n<p>Another thing that is often mingled into the therm inertia is actually the momentum of an item. It follows directly from the newton text: the force is proportional to the change of momentum. <span class="math-container">$$F=\\frac{d}{dt}p=\\frac{d}{dt}(m\\times v)$$</span><span class="math-container">$$p=m\\times v$$</span> Momentum can be best understood as an amount of &quot;energy&quot; (it\'s not, energy is <span class="math-container">$E_\\text{kin}=m\\times v^2$</span>)</p>\n<h1>The <em>principle of inertia</em> is looked at in the slicer</h1>\n<p>Most slicers set a <em>maximum acceleration</em> for machines and <em>jerk</em> for machines. These values are decided based on the mass of the printhead: Maximum acceleration times the mass of the printhead is the maximum force. <a href="https://en.wikipedia.org/wiki/Jerk_(physics)" rel="nofollow noreferrer">Jerk is the derivate of acceleration over time</a>, so it flows into motion mechanics back as <span class="math-container">$F(t)=m\\times j\\times t$</span>. So choosing the Jerk and Max-acceleration does include information about the mass of the printhead, without expressly stating it.</p>\n<p>One <em>could</em> write the code in reverse and decide on a maximum allowable <strong>Force</strong> and include the mass of the printhead, resulting in automatically calculated settings for the maximum allowable 2nd and 3rd derivate of the position, acceleration and jerk.</p>\n<h1>Printer control boards just throttle</h1>\n<p>Likewise, printer control boards just throttle acceleration and jerk to a value in their firmware. They don\'t need to know the mass of the printhead if they put maximum values on both, and those account for the behavior wanted.</p>\n<p>There is no accuracy to be gained from doing the calculation the other way around in the firmware: Even knowing the mass and some allowable force would not get you any way closer but spend quite some code on a function that is called for a few static values.</p>\n<p>What is more influential, the acceleration and jerk settings are very heavily influenced by how your printhead is mounted, not just the mass of the printhead: Do you have a feather mounted on linear rails and moved with a screw? Or do we have a kilo chunk of lead mounted on a cross of 2\xa0mm aluminium rod rails, pulled with a super soft rubber twist?</p>\n'}, {'answer_id': 15623, 'author': 'FarO', 'author_id': 2338, 'author_profile': 'https://3dprinting.stackexchange.com/users/2338', 'pm_score': 2, 'selected': False, 'text': "<p>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.</p>\n<p>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.</p>\n<p>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.</p>\n<p>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.</p>\n<p>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.</p>\n<p>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.</p>\n<p>How to know how much to limit the acceleration and speed? the only way is trying.</p>\n"}]
['https://3dprinting.stackexchange.com/questions/15619', 'https://3dprinting.stackexchange.com', 'https://3dprinting.stackexchange.com/users/26814/']