Quantifying Frame Flex

We’ve been seeing some folks struggle to get good calibration values and I think that one factor could be frame flex. We saw our calibration fitness values drop across the board post 0.72 when we increased the tension in the belts during the calibration process which points to frame flex being a factor.

I’ve just released 0.74.1 which adds starts to explore an automated system for measuring how rigid a frame is.

The way it works is that:

The question is how do we want to use this and is it useful?

Do we want to do this at the beginning of the calibration process and warn users or fail the process if the anchors aren’t rigid enough?

Do we want to add a standalone button for it? (Is it worth cluttering up the UI for that?)

Do we want to leave it as a part of “Take Slack?”

How do everyone else’s results compare?

3 Likes

If you are able to calculate frame flex, can it be used in operation to increase accuracy? If so, it makes sense to include it as a calibration step. If the only outcome is “you built a bad frame” it may be worth communicating that as “given frame constraints your best accuracy is probably +/- XXmm”. Either way it seems like a good addition but better if it can be accounted for in operation. It would also be interesting to understand across a data set of users what are the biggest contributing factors to frame flex (ie surprisingly a metal frame may flex more).

3 Likes

I think that it should be possible to at least partly account for it. We can pretty easily (at least roughly) compute the tension in each belt and if we know how much flex we are getting we can correct for it…to some extent

2 Likes

To correct for it, we would probably need to do the default / default + 500 exercise at several locations, since the geometry and materials of a frame might make it rigid in one direction and not-so-rigid in another. But yes, material flex is generally a linear and very reproducible effect (as long as you don’t exceed the elastic limit).

2 Likes

I was wondering if we could use the calibration data to account for it? Like when we are trying to fit our calibration data points to reality we assume that the frame has no flex at all, but if we allow for some flex we might be able to compute the amount of flex as a variable in the calculations based on the tension in each belt at each measurement point. You are 100% correct that it might be rigid in one direction and not in the other or something like that which could be hard to account for, but it might be better than now where we assume no flex in any direction

2 Likes

Bar wrote:

It seems pretty repeatable to me. My default frame consistently gives a result of 0.1mm of flex while my steel frame is consistently worse at 0.6+mm of flex.

IIRC your steel frame does not have vertical supports at the outside, so this
makes sense.

The question is how do we want to use this and is it useful?

very useful

Do we want to do this at the beginning of the calibration process and warn users or fail the process if the anchors aren’t rigid enough?

I think this needs to be done at the beginning of the calibration process and
reported. We don’t yet know how much flex people are having or how much flex is
‘too much’, we may also figure a way to compute the flex at different places to
correct for it.

but that’s all for the future, initially we just need to report it so we can
start gathering info.

Do we want to add a standalone button for it? (Is it worth cluttering up the UI for that?)

we need to have an ‘advanced’ menu that lets us do special stuff like this,
releasing tension, control of individual belts (including retracting/extending
individual belts), and other things that are not in the normal workflow, but
useful for troubleshooting.

For a short time, it may be worth having this as a separate button as we want to
gather extra data, but do it as part of calibration and long term put it in an
advanced menu

Do we want to leave it as a part of “Take Slack?”

it would not be bad to report it there.

How do everyone else’s results compare?

This is a big thing, especially to compare those who are having horrid times
doing calibration vs those who are not.

David Lang

4 Likes

I love this.

IMO, this measurement should just be part of apply tension (or the equivalent in calibrate) and reported for now.

I have thoughts about the UI in general now and will start another topic on that (I started typing it here, and this is not the right place, but TLDR is that I think we need a wizard that gets the machine “ready to cut” either from a “non-homed, but calibrated” state or from a “not calibrated” state).

5 Likes

I’ve pondered this same issue, and was already considering an experiment- but your measurement is fantastic.

So- fresh files- set the approximate table dimensions in the calibration config, retract all, extend all, connect the anchors, and then apply tension- and I get-

[MSG:INFO: Proceeding to take a measurement with calibrationCurrentThreshold set to 1500]
[MSG:INFO: Measured waypoint 0]
[MSG:INFO: Center point deviation: TL: 0.115 TR: 0.383 BL: -9.845 BR: -10.908]
[MSG:INFO: Center point deviation: TL: 0.115 TR: 0.383 BL: -9.845 BR: -10.908]
[MSG:INFO: Proceeding to take a second measurement with calibrationCurrentThreshold set to 2000]
[MSG:INFO: Zeroing z-axis position]
[MSG:INFO: Measured waypoint 1]
[MSG:INFO: Change in TL: 0.097 TR: 0.021 BL: 0.030 BR: -3.001]
[MSG:INFO: Total change: 0.787]

Well, this is going to be faster than doing multiple calibrations, so I simply apply tension again -

[MSG:INFO: Proceeding to take a measurement with calibrationCurrentThreshold set to 1500]
[MSG:INFO: Measured waypoint 0]
[MSG:INFO: Center point deviation: TL: -0.003 TR: 0.112 BL: -2.574 BR: -10.092]
[MSG:INFO: Center point deviation: TL: -0.003 TR: 0.112 BL: -2.574 BR: -10.092]
[MSG:INFO: Proceeding to take a second measurement with calibrationCurrentThreshold set to 2000]
[MSG:INFO: Measured waypoint 1]
[MSG:INFO: Change in TL: 0.172 TR: 0.067 BL: -2.842 BR: -3.860]
[MSG:INFO: Total change: 1.735]

and again

[MSG:INFO: Proceeding to take a measurement with calibrationCurrentThreshold set to 1500]
[MSG:INFO: Measured waypoint 0]
[MSG:INFO: Center point deviation: TL: -0.046 TR: 0.064 BL: -2.188 BR: -10.057]
[MSG:INFO: Center point deviation: TL: -0.046 TR: 0.064 BL: -2.188 BR: -10.057]
[MSG:INFO: Proceeding to take a second measurement with calibrationCurrentThreshold set to 2000]
[MSG:INFO: Measured waypoint 1]
[MSG:INFO: Change in TL: 0.185 TR: 0.097 BL: -2.620 BR: -3.870]
[MSG:INFO: Total change: 1.693]

and again

[MSG:INFO: Proceeding to take a measurement with calibrationCurrentThreshold set to 1500]
[MSG:INFO: Measured waypoint 0]
[MSG:INFO: Center point deviation: TL: -0.022 TR: 0.018 BL: -2.408 BR: -10.189]
[MSG:INFO: Center point deviation: TL: -0.022 TR: 0.018 BL: -2.408 BR: -10.189]
[MSG:INFO: Proceeding to take a second measurement with calibrationCurrentThreshold set to 2000]
[MSG:INFO: Measured waypoint 1]
[MSG:INFO: Change in TL: 0.150 TR: 0.110 BL: -2.587 BR: -3.827]
[MSG:INFO: Total change: 1.669]

I then slacked the belts and wrapped a heavy duty ratchet strap around the perimeter of the table and cranked it down, pulling on different sections to ensure roughly equal tension all the way around. This pre-tenssions the frame- maybe (probably) less than the M4, maybe more, but definitely significantly.

And apply tension again-

[MSG:INFO: Proceeding to take a measurement with calibrationCurrentThreshold set to 1500]
[MSG:INFO: Measured waypoint 0]
[MSG:INFO: Center point deviation: TL: 0.018 TR: 0.010 BL: -3.055 BR: -11.094]
[MSG:INFO: Center point deviation: TL: 0.018 TR: 0.010 BL: -3.055 BR: -11.094]
[MSG:INFO: Proceeding to take a second measurement with calibrationCurrentThreshold set to 2000]
[MSG:INFO: Measured waypoint 1]
[MSG:INFO: Change in TL: 0.067 TR: 0.129 BL: -3.183 BR: -2.977]
[MSG:INFO: Total change: 1.589]

Hey, it looks like a marginal improvement- so again-

[MSG:INFO: Proceeding to take a measurement with calibrationCurrentThreshold set to 1500]
[MSG:INFO: Measured waypoint 0]
[MSG:INFO: Center point deviation: TL: -0.121 TR: -0.003 BL: -2.596 BR: -10.181]
[MSG:INFO: Center point deviation: TL: -0.121 TR: -0.003 BL: -2.596 BR: -10.181]
[MSG:INFO: Proceeding to take a second measurement with calibrationCurrentThreshold set to 2000]
[MSG:INFO: Measured waypoint 1]
[MSG:INFO: Change in TL: 0.156 TR: 0.132 BL: -4.273 BR: -3.844]
[MSG:INFO: Total change: 2.101]

Unexpected - so-

[MSG:INFO: Proceeding to take a measurement with calibrationCurrentThreshold set to 1500]
[MSG:INFO: Measured waypoint 0]
[MSG:INFO: Center point deviation: TL: -0.132 TR: -0.070 BL: -2.301 BR: -10.294]
[MSG:INFO: Center point deviation: TL: -0.132 TR: -0.070 BL: -2.301 BR: -10.294]
[MSG:INFO: Proceeding to take a second measurement with calibrationCurrentThreshold set to 2000]
[MSG:INFO: Measured waypoint 1]
[MSG:INFO: Change in TL: 0.174 TR: 0.115 BL: -2.883 BR: -3.892]
[MSG:INFO: Total change: 1.766]

And finally -

[MSG:INFO: Proceeding to take a measurement with calibrationCurrentThreshold set to 1500]
[MSG:INFO: Measured waypoint 0]
[MSG:INFO: Center point deviation: TL: -0.175 TR: -0.100 BL: -2.376 BR: -10.138]
[MSG:INFO: Center point deviation: TL: -0.175 TR: -0.100 BL: -2.376 BR: -10.138]
[MSG:INFO: Proceeding to take a second measurement with calibrationCurrentThreshold set to 2000]
[MSG:INFO: Measured waypoint 1]
[MSG:INFO: Change in TL: 0.145 TR: 0.148 BL: -3.591 BR: -3.862]
[MSG:INFO: Total change: 1.937]

Pre-tensioning the frame obviously doesn’t prevent the differing angles of the belts from twisting the frame, but the results aren’t what I expected.

The folts that have anchors in concrete would really be ones to give a definitive result.

2 Likes

It does occur to me that if belt stretch is a factor, the larger the frame, the more belt there is to stretch.

1 Like

the problems are usually not something that can be fixed with a strap around it.

Bar’s metal frame looks like an H, and the ends of the arms aren’t supported, so
they can flex towards the other arm (Y direction) and ‘up’ from the workpiece in
the Z direction

for the standard frame, all the movement is up towards the Z direction

If your anchors are not extremely stiff, they can bend towards the sled. This is
why Bar defaults to having the anchors be very short (and my super-simple frame
idea puts the support for the anchors at the level of the anchors/belts, so
there is no Z direction force)

David Lang

3 Likes

Agreed, but the hourglass frame has a continuous top surface, with very solid load transfer from the anchors to the work area. But since it is built up from multiple pieces, there could be some shifting-and pre-tensioning will definitely improve that.

1 Like

C Peter Lotz wrote:

It does occur to me that if belt stretch is a factor, the larger the frame,
the more belt there is to stretch.

There is that, but I believe that the manufacturer gives a rating on belt
stretch

David Lang

2 Likes

C Peter Lotz wrote:

Agreed, but the hourglass frame has a continuous top surface, with very solid
load transfer from the anchors to the work area. But since it is built up from
multiple pieces, there could be some shifting-and pre-tensioning will
definitely improve that.

True, I’ll also point out that a torsion box is extremely stiff, and all that is
iss two layers of plywood spaced apart with something in between them to keep
them from buckling.

This is the same way cardboard boxes work, two very weak layers of paper, but
they are forced to move the same amount as you twist, and the one on the outside
doesn’t want to stretch and the one on the inside doesn’t want to collapse, so
the result is FAR stronger than the same amount of material in one flat sheet.

if you look for videos of people building torsion boxes, you will see them
putting fancy grids between them, you don’t have to get that fancy to get
benefits. so just adding even thin plywood to the back of your frame will
stiffen it up a remarkable amount

David Lang

4 Likes

I have been wondering about that:

Would it be better to have the anchors at the same height as the arms, or maybe all the same amount lower so there is still tension pulling the M4 down. I have the anchors on my sheds wall, so it would be easy to put them at any height, but I have put them all at the same height as they would be if I used a standard frame, because I thought the calibration is assuming they are at those locations and I didn’t want to mess up the calculations. So I guess my question is: What is the best height for the belts? And if I do adjust them do I need to adjust any z-values in the calculations to compensate?
Also the point you make with the anchors bending towards the machine if not stable enough is solved with my anchor points by using U-profile with a through bolt so it won’t bend up or down. The problem with my set up is: the walls of the shed are not concrete and with enough tension the whole wall comes in a bit…

2 Likes

Gijs wrote:

I have been wondering about that:

Would it be better to have the anchors at the same height as the arms, or
maybe all the same amount lower so there is still tension pulling the M4 down.
I have the anchors on my sheds wall, so it would be easy to put them at any
height, but I have put them all at the same height as they would be if I used
a standard frame, because I thought the calibration is assuming they are at
those locations and I didn’t want to mess up the calculations. So I guess my
question is: What is the best height for the belts? And if I do adjust them do
I need to adjust any z-values in the calculations to compensate?

we don’t know for sure. The theory is that the belts level will be
the best option.

You are correct that the maslow assumes a standard height to the anchors, this
is set in the maslow.yaml file in the Maslow_??Z variables (one for each belt)

(this is where ‘testing needed’ comes into play, or a favorite quote of mine “In
theory, theory and practice are the same, in practice they are not” :slight_smile: )

Also the point you make with the anchors bending towards the machine if not
stable enough is solved with my anchor points by using U-profile with a
through bolt so it won’t bend up or down. The problem with my set up is: the
walls of the shed are not concrete and with enough tension the whole wall
comes in a bit…

yep, most people start off wtih the equivalent of a bolt with a stack of
washers, and even if the bolt is sold, a few inches of non-rigid standoffs will
let the bolt flex noticably.

David Lang

3 Likes

Thanks for your answer. So I would change this bit in the .yaml file:

Z axis values
These define the height of the anchor points in relation to each of the arms. You do not need to change these typically
Maslow_tlZ: 100
Maslow_trZ: 56
Maslow_blZ: 34
Maslow_brZ: 78

Change them to zero if I make them the same as arm height or 30 if I make them all armheight-30? I think a little down ward tension might be nice or do you think gravity is enough? Come to think of it, it should be, shouldn’t it, with a sharp enough bit of course.

One of my belts sometimes makes a rattling sound, you can only hear it of course when doing a dry run or calibration, the router drowns it out when it is on. It sounds to me like the edge of the belt is catching on something inside the arm. I wonder if, making the belts come in horizontally instead of at an angle, the sound would disappear… and of course how it would influence the accuracy.
When I have time I will try more cuts in the white and red area. I made a drawing of my setup and the lines on the waste board I have cut so far. (see my previous pictures) Right now I don’t have room yet to try the full size so my table is larger then I can use now and I messed up the first cuts (the purple in the drawing). They didn’t end up in the middle, which meant they already did cut through the white and almost red, more then i had thought. On that side (left in the drawing) of the table I have no more room left to try going into the red further, like you asked, so I will try it on the other side (right in the drawing) and measure there like i did before.


On the right side my table is much longer so i can go into the white and red very far there to see what happens. I cannot go too close to the corners because there is no support there, my setup is a big table in a small room and the walls hold the anchors.
A soon as I get a chance to I will first try this with the regular anchor heights like i have now, and then try with anchors at arm height and measure again. Will post when ready :slight_smile:

2 Likes

Would there be value in doing the default / default + 500 test at each point in a calibration?

2 Likes

That’s a really great point. I’ve built things that utilized a torsion box construction but never considered it in the context of the M4 frame. I could skin it in 1/8" hardboard to keep the additional weight down.

I’ll have to think about how that would work, both in construction and any effects, but that seems like a good avenue of investigation.

2 Likes

With regards to raising the anchors to eliminate Z axis force- if the frame can be flexed by the belts’ tension, then any arrangement where the anchors are attached to the frame will transfer the same net force to the frame- and the greater the anchor offset, the greater the moment arm- more leverage, more force on that point on the frame.

1 Like

Gijs wrote:

Thanks for your answer. So I would change this bit in the .yaml file:

Z axis values
These define the height of the anchor points in relation to each of the arms. You do not need to change these typically
Maslow_tlZ: 100
Maslow_trZ: 56
Maslow_blZ: 34
Maslow_brZ: 78

Change them to zero if I make them the same as arm height or 30 if I make them
all armheight-30?

yes.

I think a little down ward tension might be nice or do you think gravity is
enough? Come to think of it, it should be, shouldn’t it, with a sharp enough
bit of course. One of my belts sometimes makes a rattling sound, you can only
hear it of course when doing a dry run or calibration, the router drowns it
out when it is on. It sounds to me like the edge of the belt is catching on
something inside the arm. I wonder if, making the belts come in horizontally
instead of at an angle, the sound would disappear… and of course how it
would influence the accuracy.

the old maslow only had gravity in the vertical orientation, and the bricks and
heavier sled were not what made it work. As you said, with sharp bits it should
not matter :slight_smile:

you may hae a nut that came loose. If you shake it does it rattle?

When I have time I will try more cuts in the white and red area.

What I would expect to happen is that cuts in the red area will be distorted
away from the center of the machine and cuts in the white area will be distorted
towards the center of the machine. This may or may not be significant (you are
one of the first people to really test this)

David Lang