Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Force steady speed segment in accelerate-decelerate moves to reduce vibration and facilitate input shaping #774

Closed
T3P3 opened this issue Apr 24, 2023 · 6 comments
Assignees
Labels
Done - Needs Testing enhancement Additional functionality, performance or other feature request
Milestone

Comments

@T3P3
Copy link
Contributor

T3P3 commented Apr 24, 2023

Also means input shaping can be applied to the short segments see "Input shaping with short moves"

https://forum.duet3d.com/topic/27840/input-shaping-why-not-effective-on-some-parts-at-all/17?_=1682277139833

@T3P3 T3P3 added this to the 3.5.1 milestone Apr 24, 2023
@dc42 dc42 modified the milestones: 3.5.1, 3.5.0-beta.4 May 15, 2023
@dc42
Copy link
Collaborator

dc42 commented May 15, 2023

This potentially comprises two parts: (a) if the move is long enough that input shaping is desirable, reduce the top speed so that input shaping can be applied; and (b) if the move is too short to sensibly apply input shaping (e.g. for short zigzag infill moves) or if input shaping is disabled, optionally reduce the top speed so as to reduce vibration at the expense of speed.

@dc42 dc42 changed the title Force steady speed segment in accelerate-decelerate moves to reduce vibration Force steady speed segment in accelerate-decelerate moves to reduce vibration and facilitate input shaping May 19, 2023
@T3P3 T3P3 modified the milestones: 3.5.0-beta.4, 3.5.0 May 31, 2023
@dc42 dc42 modified the milestones: 3.5.0, 3.5.0-rc.1 Jun 12, 2023
@T3P3 T3P3 modified the milestones: 3.5.0-rc.1, 3.5.0 Aug 2, 2023
@tombrazier
Copy link

@dc42 Short zigzag moves are the ones that most need input shaping. There is a common misunderstanding that it is just acceleration and deceleration ramps which cause layer shifts and ringing artifacts. The other major cause (which can be a lot worse than accel/decel) is the sudden change of velocity when cornering. (What is sometimes called "jerk", not to be confused with the "jerk" that is the derivative of acceleration.) And when step velocity changes happen in combination with acceleration/deceleration it is even worse. And the very worst is when it all happens repeatedly in quick succession at a frequency close to the resonant frequency. That's what short zigzags or short start-stops do.

This is why input shaping needs to be applied to the entire movement sequence as a convolution with a series of impulse functions. Or, in less technical language, scaling and time shifting multiple copies of the movement sequence and adding them together.

@dc42
Copy link
Collaborator

dc42 commented Aug 25, 2023

@tombrazier I take your point about jerk (in the sense of instantaneous velocity change) affecting input shaping. However, RRF only applies jerk when there is a change in direction with continues extrusion, and we have always recommended that jerk be set as low as possible while being able to print curves smoothly. Where jerk is applied, it is always between moves, so the IS in RRF could be extended to take account of it too. The disadvantage of using a continuous convolution that extends across moves is that it causes the tool head to no longer follow the requested path, which is why we have resisted it. Nevertheless, we are keeping this under review. Meanwhile, we have implemented input shaping on accelerate/decelerate moves.

@dc42
Copy link
Collaborator

dc42 commented Aug 25, 2023

IS is now implemented on many accelerate/decelerate moves in the 3.5-dev source. Results on toolchanger with Hemera tool are looking good. Further testing is needed. Limiting top speed for vibration reduction when no IS is applied has not yet been implemented.

@tombrazier
Copy link

The disadvantage of using a continuous convolution that extends across moves is that it causes the tool head to no longer follow the requested path, which is why we have resisted it.

Indeed. And linear movements can become curves, which has its issues for implementation.

However in terms of the physical dynamics of the printer, the print head diverges from the requested path regardless of whether input shaping is applied to corners. Without IS the trajectory will always overshoot on corners (unless movement comes to a complete stop which causes problems with extending print time and creating blobs). On the other hand, IS will instruct the print head to cut corners. With the two effects combined they somewhat ameliorate each other (although generally they do not exactly cancel each other). And both effects scale with the jerk and acceleration, so there is more overshoot from inertia on exactly the same corners where there is more undercut from IS.

In practice, I find that input shaping results in better conformity to the model than printing without input shaping.

@AndyEveritt
Copy link
Collaborator

Testing with this print object that has various short move lengths shows an improvement but there is still significant ringing following a short move.

For both images, the top part is using 3.5.0-b4, bottom part is using 3.5.0-b4+ with the changes

image

image

@T3P3 T3P3 closed this as completed Jan 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Done - Needs Testing enhancement Additional functionality, performance or other feature request
Projects
None yet
Development

No branches or pull requests

4 participants