# Thoughts on the Software

First of all I am not trying to criticize anyone or anything. I just keep thinking about “is there another way?”

I’m thinking about a different approach to the calibration and software. Goes like this.

What if you just assemble your Maslow and put in your measurements of sheet size, location of motor shaft as you measure it, from the center of the sheet, height above the sheet, and distance outside of edge of sheet. (or whatever this method would require you to measure.)

Next set up a full size sheet. This sheet would have lines drawn on it to make 12" squares on the sheet. 3 horizontal and 7 vertical. Including the edges, there would be 5 x 9 = 45 points to measure.

Next you would put a bevel cutter into the Maslow, and tell it to go to each of those 45 points and cut a small mark. (Probably the edges would need to be in from the edge 2 or 3 inches.)

Next you would measure the delta x and delta y for each between the actual cut mark and the planned mark, for each of the 45 points, and enter them into the “software”.

The software would compute some type of curve fit on the deltas, and derive the balancing equation.

Next time tell the Maslow to cut the same 45 points, with the software making an “adjustment” to the chain payouts based on the “curve fit” results.

This would take into account all of the things we are currently trying to calculate individually, chain stretch, sag, wear, rotational thing, etc.

AT 74 years old its too late for me to learn all of these programming languages. I was trained on Fortran IV in 1968. But we did solve problems by doing “end arounds” like this when nature followed consistent rules, and built many products that worked perfectly. I think this motion follows nature… things would be 2nd order curves (no inflections or 3rd order), and no end points are out of consistency

This would also fit your goals of anybody could build one, any size, anywhere, any material, any country, with the same software. The only thing, as you point out many times, is the motor points must be level and rigid to each other and the sheet.

Just my some of my thoughts watching all of the frustrations we are going through.

Ed

8 Likes

Something like this has been proposed, but way more complicated. I’m no coder, bit this seems like a feasable approach, if someone finds the time to do it

It’s a valid idea… I worked on a way to use camera-based position recognition (using regularly spaced squares) to pretty much do this, but it turned into a lot of work and life got in the way. I think interpolation between measured points might be good enough (just assuming it might be less computational intensive… though maybe curvefitting is simpler… don’t know)

The advantage of this is that it also allows for accommodation of other variables such as an imperfectly centered triangulation kit, chain wear, variable weight of the vacuum hose (more downward pull as the sled rises)…

The disadvantage is that the accuracy of this is dependent upon the ability of the user to accurately mark the lines and accurately measure the x,y offset from the planned mark and actual mark… and each of those steps is subject to error. I think if you could print out a large sheet with grid lines to place on the board, then this would be much more accurate.

As a hobbyist with zero knowledge of how to code anything, the calibration process is simple-stupid enough for me to understand BUT, I do feel like it could be improved upon to be less labor intensive. It takes a pretty long time to calibrate, and some of us have had to do it a lotttttt of times.

It would be nice if the machine could self calibrate and you didn’t have to measure any distance. I don’t know how to get there without the machine being able to determine precisely where it really is. I think a camera system (as I mentioned above) could facilitate it, but that will take time.

Could we not put a sharp tip (pencil…) in the router, manually jog the sled precisely to each corner and center position (marked by running a straight edge or string diagonally between corners) and simply calibrate this way? Seems simple, no measuring, no cutting.

3 Likes

Or just a v-bit. I’m wondering if the router behaves differently when it’s running vs stopped

There are vibration that might change the friction, and the force caused by the bit biting into the stock (depending on cut direction).

I’m thinking of using limit switches for homing and calibration.

That is very hard to do on a maslow style machine. If you don’t know where you
are, do you need to feed out chain or retract chain? you can’t have one motor
retract chain without the other one feeding out chain if you are along the top,
but if you are along the bottom, feeding out the chain will run the chain off
the sprocket.

David Lang

This is intriguing… Any reason why it wouldn’t work? That would give it 5 data points to locate itself and rely more on how precisely you measured the center (I assume the corners would be pretty easy/obvious).

The way Maslow works is by determining how much chain to feed out based upon the target x,y coordinates. If you jog to the top left and tell the machine its at , for example, -4 ft, +2 ft (i.e., top left corner) it will know how much chain it has let out to get there. That’s great information. You can then do that for the four corners and the center. So the question then becomes, how much chain do you put out in the bottom left center (1 ft, -2 ft). Do you just interpolate between values? The problem is that interpolation assume linearity and the machine is not linear (chain sag and chain around sprocket are not linear).

To mitigate, you need to either take multiple points and do a curve fit or take so many points that the interpolation error from assuming it’s linear is small enough that you accept it. If the former, you need a “curve” to fit and I still don’t know that we have a proper model for chain sag (this is what the calibration process actually does… curve fits an algorithm). If latter, that’s a potentially a lot of measurements. But if you had, say, a grid of 1/2-inch squares spaced 6-inches apart on a 4x8 sheet of vinyl and a camera installed where the router is located and can accurately determine the “error” through a python optical recognition routine, then you got something

I thought that we would remove all of the current code that tries to calculate say, chain sag, chain stretch, rotational radius, etc., and all the other variables that you were trying to calculate. I think the curve fit should be against the raw beast.

I thought we would just simply have the user put in measurements for his machine configuration as needed to do the curve fits (such as board size, motor height, motor to motor distance, sprocket type etc, and then plot the points on a board with the lines on it for the correct locations without any correction factors.

(For curve fit development it would be nice to see a few horizontal lines and vertical lines plotted without any of the current correction calculations, just raw machine measurement data. Seeing those “curves” would give insight into what type of curves fits to best fit the “raw machine”… for development, not every user.)

We would then do the curve fits just from straight measurements from the user not with any pre-calculated correction factors.

Yes, we need a slick way to measure each of the point deltas. Need some ideas there that are not expensive.

I think we will not need too many points if the raw curves are nice and orderly. Time will tell.

How many is “not too many”? Just trying to get a feel for what you think.

Any measurement error is a source of problem, so having a way to be accurate is critical. That’s why I said a large 4x8 sheet with a grid on it. Not that I see them being expensive (edit: inexpensive)

I would start with 12" centers, 9 across and 5 high, 45 points. But the edges would be in 2 or 3 inches so as not to put the bit/sled off of the sheet. But first I would make some full width and height cuts (plots) and see what it looks like, it all depends on how the “plots” would look like for some horizontal and vertical lines. If they are 2nd order (quadratic like), and follow a pattern, would need less points. If they are wavy, with one or more inflection points, that a higher order curve fit.

I also wonder how they look going different directions. IE, plot left to right, and then right to left, or top to bottom then bottom to top. If this is not consistent, then I think it would indicate the physical placement of the motors need to be relocated taller and wider, or the sled needs more weight. I would play getting “consistency” figured out first, then do the curve fits to a curve that doesn’t change with direction, vacuum hose weight, bit/wood type/ cut speed deltas. If this consistency doesn’t exist, then I don’t see how any program can calculate it.

I have several shop projects that must be completed before I can build my Maslow. I’ll do these tests when I do.

Even if that all works out still need a way for the users to “measure” their deltas.

I think that’s the key. 45 points is way to many to measure using a tape measure.

@dlang had suggested using optical mouse to track the position of the sled, but I did some research and it looses positional accuracy too quickly (and you’d have to use a pair of mice to know how the sled is tilted.

This compact CNC uses two strings and some kind of magnets attached to the top of the router seems like the same thing could be done with Maslow?

Just watched the video. Certainly is doing similar math to what we are. The two fixed points seem to be user defined where they are put by the user. But could very well be a “closed loop” control system this way, getting constant position feedback on where it is versus the position command.

Very nice, pricey compared to Maslow. I wonder if the wheels slip on the sawdust? If it really is a closed loop control, it would not care about a little burning rubber.!!!

how do they measure the strings? when the strings get long, how do they account
for them sagging?

David Lang

play around with the simulator and introduce the various types of error to see
how they interact with each other.

Keep in mind that the arduino has very limited storage and is a very slow
processor, doing a lot of calculations for a lot of different points will risk