RepRapFirmware 3.4.0rc2 with input shaping released

760 views
Skip to first unread message

dc42

unread,
Feb 23, 2022, 4:22:03 PM2/23/22
to OpenPnP
This post may be of interest to users of OpenPnP on Duet hardware in particular.

Does vibration of the pickup head after head movement affect accuracy of placing in OpenPnP? These vibrations certainly affect the quality of 3D printing, so I would be surprised if they don't also affect the placement accuracy of small components (e.g. 0402 and small QFN packages) when using OpenPnP.

Input shaping is a technique that modifies the acceleration and deceleration profiles of a move to avoid exciting resonances of the mechanics that supports and drives the tool head. Previous releases of RepRapFirmware supported an input shaping technique called Dynamic Acceleration Adjustment; however it could cancel only one frequency at a time and required precise tuning to be effective.

Release 3.4.0rc2 of RRF now supports ZVD, ZVDD, ZVDDD, EI2, EI3 and MZV input shaping algorithms, allowing cancellation of resonances over a much wider frequency band. An accelerometer can be attached to the tool head to measure the resonances, making it easier to tune input shaping to avoid exciting them.

bert shivaan

unread,
Feb 23, 2022, 8:30:23 PM2/23/22
to OpenPnP
This is awesome news DC42!!
I don't face this here, but there are a lot of folks that use input shaping as an argument for Klipper and not Duet/RRF.
So is it correct to say that Duet/RRF now is equal to Klipper in that respect?

--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/b8f963f8-7103-4a24-927d-dc4d8090a826n%40googlegroups.com.

bert shivaan

unread,
Feb 23, 2022, 8:33:34 PM2/23/22
to OpenPnP
Next question, the Voron folks claim with Rpi/Klipper and a BTT/whoever control they can set their accels to 100K and the printer will scream. I am unclear how to compare that to the settings in RRF. Are you able to shed any light for me here? What is the equal accel in RRF?

bert shivaan

unread,
Feb 24, 2022, 4:49:29 AM2/24/22
to OpenPnP
Third question, it is not clear to me if this will do multiple axis?
will it do multiple frequencies or just a wider band centered around a single frequency?

mark maker

unread,
Feb 24, 2022, 5:22:26 AM2/24/22
to ope...@googlegroups.com

Hi dc42

That sounds very sophisticated. Unfortunately, only the DAA principle seems to be really documented, so I might be completely wrong with what I say below.

If I understand your text and the linked documentation correctly, it works something like this:

  1. Segment the planned moves into slices (slicing must be fine enough to reasonably chop up the resonant wave period into multiple parts).
  2. For each planned slice, record the acceleration (positive and negative, i.e. also decelerations).
  3. For each planned slice, reduce the (absolute) acceleration limit by the negative, delayed by resonant period, and damped "echo" of the acceleration recorded earlier.

If this understanding is more or less correct, I see how it helps with 3D printing, but I wonder if it helps with PnP. 😕

Our problem is not ringing during a move. Our problem is ringing/vibration after a move. When a part is picked from a feeder, aligned over the up-looking camera or placed on the PCB, or when the down-looking camera needs to be still to precisely detect a fiducial or feeder position. These are all just straight or rectangular moves, followed by critical positioning in still-stand. The vibration-inducing deceleration in X/Y is only followed by a move in Z down to pick, align or place, or by no move at all. There is no opportunity for anything to be "shaped" (I assume it does not help to shape acceleration in Z to cancel out vibrations in X/Y).

So for this to work with PnP, it would have to be reversed, i.e. planned from the end, and the shaper would have to shape the acceleration leading up to the stop. Right?

_Mark

dc42

unread,
Feb 24, 2022, 8:32:54 AM2/24/22
to OpenPnP
@cncmachineguy we do IS slightly differently from Klipper, so I can't yet say how we compare. We do know that it is effective at reducing ghosting in 3D prints, including the ringing tower that Klipper uses as an example. We still need to do some more work on the input shaping plugin for Duet Web Control in order to make it easier to tune IS, but already we can graph the resonances, so it's not difficult.

We don't support separate frequencies for different axes, for the simple reason that if you do that, then in any situation in which both axes are moving you will get non-square corners and other artefacts if you do. The more advanced forms of IS are effective over a wide frequency band, so it's usually possible to configure input shaping to cancel multiple frequencies of interest. We may possibly support different IS on X and Y in future, but as I said it would be of limited use.

@mark, IS changes only the acceleration and deceleration phases. RRF segments those dynamically when generating the move. The main problem with resonances in 3D printers is ringing after the end of a move, the same as for OpenPnP.  IS is effective at reducing this.

We haven't documented the newer forms of input shaping in details because they are all standard approaches described in research papers, except MZV which seems to be unique to Klipper and now RRF. I'll add some links in the documentation. You can see the effectiveness of IS by looking at the resonance reduction plots at https://docs.google.com/spreadsheets/d/1R23r0KRFosGNWJEqsnCXL6ylpuayGqDvm8ocOszalV4/edit?usp=sharing.

mark maker

unread,
Jul 6, 2022, 12:53:56 PM7/6/22
to ope...@googlegroups.com

@dc42

I'm sorry I don't understand that spread-sheet. And all the other documentation is very abstract.

Is this illustration about right?

_Mark

Jan

unread,
Jul 7, 2022, 8:48:58 AM7/7/22
to ope...@googlegroups.com
Hi Mark!
Maybe a crane on a construction side is a good example for a highly
fragil system that exhibits heavy ringing.
At start, the driver can accelerate as much as he likes as the load is
at rest and requires some time to follow. Then the load follows with a
distance as long as the acceleration continues. If the driver can not
accelerate anymore, the load will catch up. To avoid oscillations, the
driver has to let the load take overtake by decelerating rappidly and
then presicely accelerate again so that both reach the point where the
load neither accelerats nor decellerats at the same time.

Jan

On 06.07.2022 18:53, mark maker wrote:
> @dc42
>
> I'm sorry I don't understand that spread-sheet. And all the other
> documentation is very abstract.
>
> Is this illustration about right?
>
>> principle seems to be /really/ documented
>> <https://docs.duet3d.com/User_manual/Reference/Gcodes#m593-configure-input-shaping>,
>> so I might be completely wrong with what I say below.
>>
>> If I understand your text and the linked documentation correctly,
>> it works something like this:
>>
>> 1. Segment the planned moves into slices (slicing must be /fine/
>> enough to reasonably chop up the resonant wave period into
>> multiple parts).
>> 2. For each planned slice, record the acceleration (positive and
>> negative, i.e. also decelerations).
>> 3. For each planned slice, reduce the (absolute) acceleration
>> limit by the /negative,/ /delayed/ /by resonant period/, /and
>> damped/ "echo" of the acceleration recorded earlier.
>>
>> If this understanding is more or less correct, I see how it helps
>> with 3D printing, but I wonder if it helps with PnP. 😕
>>
>> Our problem is not ringing /during/ a move. Our problem is
>> ringing/vibration /after /a move. When a part is picked from a
>> feeder, aligned over the up-looking camera or placed on the PCB,
>> or when the down-looking camera needs to be still to precisely
>> detect a fiducial or feeder position. These are all just straight
>> or rectangular moves, followed by critical /positioning in
>> still-stand/. The vibration-inducing deceleration in X/Y is only
>> followed by a move in Z down to pick, align or place, or by /no
>> move at all/. There is no opportunity for anything to be "shaped"
>> (I assume it does not help to shape acceleration in Z to cancel
>> out vibrations in X/Y).
>>
>> So for this to work with PnP, it would have to be reversed, i.e.
>> planned from the end, and the shaper would have to shape the
>> acceleration /leading up /to the stop. Right?
>>> <https://groups.google.com/d/msgid/openpnp/b8f963f8-7103-4a24-927d-dc4d8090a826n%40googlegroups.com?utm_medium=email&utm_source=footer>.
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "OpenPnP" group.
>> To unsubscribe from this group and stop receiving emails from it, send
>> an email to openpnp+u...@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/openpnp/8f0b1b09-041e-43c7-8cf3-2f83e8b7b6d3n%40googlegroups.com
>> <https://groups.google.com/d/msgid/openpnp/8f0b1b09-041e-43c7-8cf3-2f83e8b7b6d3n%40googlegroups.com?utm_medium=email&utm_source=footer>.
>
> --
> You received this message because you are subscribed to the Google
> Groups "OpenPnP" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to openpnp+u...@googlegroups.com
> <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/openpnp/bed34d0c-882a-a92f-2876-2ae21d13886a%40makr.zone
> <https://groups.google.com/d/msgid/openpnp/bed34d0c-882a-a92f-2876-2ae21d13886a%40makr.zone?utm_medium=email&utm_source=footer>.

dc42

unread,
Jul 7, 2022, 8:51:56 AM7/7/22
to OpenPnP
That's somewhat representative of the primitive form of input shaping that we used to support in RepRapFirmware 3.3 and earlier. However, we've discontinued that form, in favour of the more advanced types of input shaping in RRF 3.4 that cancel resonances with low damping better and work over a wider frequency band.

Here are some references to input shaping in the literature:

mark maker

unread,
Jul 7, 2022, 2:26:37 PM7/7/22
to ope...@googlegroups.com

Thanks.

OK, so this increases the move times. Do you know (have typical experience) by how much?


Just out of curiosity. Does it work if Ventry and/or Vexit and/or aentry and aexit are non-zero?

_Mark

dc42

unread,
Jul 8, 2022, 8:36:05 AM7/8/22
to OpenPnP
When input shaping is applied, the acceleration and deceleration parts of the move are slowed down if necessary to have duration at least N times the period of ringing that is configured in the input shaper. The value of N depends on the shaper selected. N = 2.5 for ZVD and MZV shapers, 3.5 for ZVDD and EI2, and 4.5 for EI3 and ZVDDD.

RepRapFirmware doesn't apply input shaping to a move where this would reduce the average acceleration or deceleration below a user-defined value.

dc42

unread,
Jul 9, 2022, 10:56:47 AM7/9/22
to OpenPnP
PS - input shaping is applied when Ventry and/or Vexit are nonzero, but not if Aentry or Aexit is nonzero.
Reply all
Reply to author
Forward
0 new messages