Skip to main content

Extra Smooth Moves

  In an effort to provide a no compromises motion controller, one major milestone is converting the trajectory planner and motion control from constant acceleration to minimum jerk.  For simplicities sake, the original Kynetic motion controller was done as constant acceleration.  I have now completed the work to make it use the much smoother minimum jerk algorithm.
  Below is a velocity plot of a simple move that starts and ends at a stop.

Fig 1. Constant acceleration velocity profile

  This simple velocity ramp is what most consumer 3D printer firmwares use (Marlin, Repetier, Smoothieware and anything based off of Grbl).  It works reasonably well, and is easy to compute.  This is critical for low computational power microcontrollers.  The weakness in this strategy is the sharp corners seen at the start and end points of the velocity changes.  These sudden changes cause a shock in the drive system that encourage vibrations.  Vibrations in the machine have a negative impact on print quality.  This is of highest concern with machines that have long drive belts and heavy heads (think direct drive extruder in a CoreXY machine).  Shocks that cause vibrations in the belts will likely have a more pronounced surface waviness after a direction change due to the abruptness of the velocity change.
  As a side note, the above mentioned firmwares have a setting for jerk.  Their use of this terminology is borderline criminal, in my opinion.  They use this jerk setting as a way to reduce smoothness by instantly changing velocity.  This may save a miniscule amount of time, but induces more opportunities for "shocking" the drive system which does not help with improving print quality.  This setting has no relation to minimum jerk trajectory planning.  This is a "cheat" used to help compensate for the inadequate processing power of the microcontrollers being used.

Fig 2. Minimum jerk velocity profile

  In fig 2 above you can see the velocity profile of Kynetic's new minimum jerk trajectory planner.  Notice the smooth velocity transitions.  These S-shaped velocity curves minimize shocks to the system and reduce vibrations.  This can all be done with no loss of time by increasing the acceleration in the middle of each transition to compensate for the "easing" into and out of the velocity ramp.

Fig 3. Both velocity profiles

  Overlaying both velocity curves in fig 3 shows the contrast between the two.  Kynetic smoothly changes velocity without any abrupt shocks or acceleration discontinuities.

  Please let me know what you think and if you have any questions.  If you are interested in this project, please follow by clicking on the "Subscribe" link at the top or using the "Follow by Email" option on the sidebar.




  1. Wonderful article, Your article is very interesting and I really enjoyed reading it. I would like to thank you for sharing this article here. roxtec


Post a Comment

Popular posts from this blog

Computing Junction Deviation for Marlin Firmware

  As part of developing my own 3D printer firmware, I also keep an eye on what is happening in other firmware.  One feature that is causing confusion in the Marlin community is the junction deviation setting.  Up until recently, Marlin used the jerk method (hence forth referred to as "archaic jerk") it inherited from Grbl for computing corning speed (junction velocity).  With the option now in Marlin to use junction deviation instead of jerk, there are many people who want to know what are good settings for junction deviation to insure they get reasonable movement while printing.  In this post I will give an equation for converting the jerk values into junction deviation and my derivation of this equation.

Introduction to Kynetic CNC

  This project started as a result of the the wildly successful Teensy 3.5/3.6 kickstarter .  At the time I was amazed by the specifications of these microcontrollers and thought, "With all of that processing power, could I create from the ground up a completely new 32bit 3D print engine that would improve upon the capabilities of the current 8 bit printer controllers?"  Soon after that, I started making notes about how I would do motion control if not limited by the power of the processor.   After two years of part time work on this project (I have a full time job and full time family),  I'm now ready to discuss the details and where it is going.