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. Emperor Casino – Shootercasino
    Experience real casino matchpoint games at LeoVegas casino and have the best 온카지노 experience with online slots. Join us 제왕카지노 now and gain free spins and bonus funds!

  2. You carefully crafted this post, which is valuable to us. I learned something new from your essay, and I will recommend it to everyone who needs this information Laser Cutting Company. Thank you for sharing it with us.

  3. The fabric is printed in French and has a typical European type. The red and black quantity squares additionally form traces round them. By putting a chip on the street between 2 numbers, called a break up guess, you'll win if either one of them comes up on the spin. Each of 파라오카지노 도메인 the hollow slots in front of a quantity where the ball can land discover out} the profitable quantity and colour.

  4. The resultant listing was broadly publicized for marketing functions . Some symbols might turn into scatters, bonuses or wilds and give your play a lift. You may set off free spin rounds or win free spins immediately. 토토사이트 Many online on line casino websites may give out free spins in numerous ways, including cashback, deposit incentives, offers, and jackpots.

  5. Smoothness of the Velocity path should be applied according to the belt "spring" action and the mass that it is moving. Any spring mass pair has a self frequency of oscillation independent of any shape of applied force curve. This oscillation will be dumped by any "shock absorber" that is connected to the spring mass pair. In 3D printers there are not any shock absorbers, except the belt internal friction, bearing friction and aerodynamic forces on moving parts. All these are two small to stop fast any oscillation that will be generated, as a shock absorber does in a car. This is the cause that we see artifacts in our prints. And it is obvious that as we lower the acceleration, the applied forces are also lower and the oscillation amplitude will be smaller.
    Making a simulation on the constant acceleration curve using Gates data for the belt and the Prusa i3 MK3S+ belt length and head mass, I found that the self oscillation frequency is about 100 Hz. So using the "typical" speed of 100 mm/s, the peaks of oscillation should be shown at every 1 mm. But the "quality" print setup has lower the external perimeter speed to 25 mm/s, so practically this oscillation is not visible. Probably this is an answer to my "question" why they lower so much the external perimeter speed.
    Then I tried to found the proper acceleration slope that could eliminate totally the oscillation. Making some calculations, I found that the acceleration must be linearly increased to the desired value within the time of oscillation period (for the above example in 10 msec). And reaching the desired speed, we must reduce linearly the acceleration within one period of self oscillation frequency, (Meaning the acceleration curve is like that of speed from zero to the end during acceleration, and the same in negative direction during deceleration). Keeping that acceleration slope "function", there is not any ringing at any speed / acceleration combination.
    My future project is to build a big 3D printer (600 mm cube printing volume). So I am going to use an accelerometer on the print head in order to measure that frequency in X and Y axis in order to eliminate any ringing in any speed. But it has to be designed so both axis have similar frequencies, in order to have similar acceleration slopes. And that means it can't be a CoreXY system, but it must have a much more stiff belt in Y axis ...


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.